From b2b39e302ed7bdfe652f6d1e1f890ac5ba93f5db Mon Sep 17 00:00:00 2001 From: Blake Niemyjski Date: Wed, 12 Nov 2014 11:25:20 -0600 Subject: [PATCH 001/872] Added new open source project. --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 5c551a677..d0c7fa238 100644 --- a/README.md +++ b/README.md @@ -25,6 +25,7 @@ They are also many great open source .NET community projects, such as: * [MVVM Cross](https://github.com/MvvmCross/MvvmCross) * [MVVM Light Toolkit](http://www.mvvmlight.net) * [Glimpse](http://getglimpse.com) +* [Exceptionless](https://github.com/exceptionless/Exceptionless) ## How to Engage, Contribute and Provide Feedback From 5cc516a1009b3b51ede431422121527c5b4bb7c5 Mon Sep 17 00:00:00 2001 From: Stuart Lodge Date: Thu, 13 Nov 2014 09:30:23 +0000 Subject: [PATCH 002/872] More Community Project suggestions added Just adding some initial suggestions for additional "such as" community projects - there are so many fantastic ones out there... --- README.md | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/README.md b/README.md index d00f88040..9828aa47c 100644 --- a/README.md +++ b/README.md @@ -25,6 +25,30 @@ There are also many great open source .NET community projects, such as: * [MVVM Cross](https://github.com/MvvmCross/MvvmCross) * [MVVM Light Toolkit](http://www.mvvmlight.net) * [Glimpse](http://getglimpse.com) +* [TinyIoC](https://github.com/grumpydev/TinyIoC) +* [Fody](https://github.com/Fody/Fody) +* [Cimbalino](http://cimbalino.org/) +* [Simple Data](https://github.com/markrendle/Simple.Data) +* [NUnit](https://github.com/nunit/nunit) +* [xUnit](https://github.com/xunit/xunit) +* [NInject](http://www.ninject.org/) +* [Dapper](https://github.com/StackExchange/dapper-dot-net) +* [NHibernate](https://github.com/nhibernate) +* [NodaTime](http://nodatime.org/) +* [Autofac](http://autofac.org/) +* [moq](https://github.com/Moq/moq4) +* [Umbraco](http://umbraco.com/) +* [DotNetNuke](https://dotnetnuke.codeplex.com/) +* [Catel](http://catelproject.com/) +* [DotNetOpenAuth](https://github.com/DotNetOpenAuth) +* [FluentValidation](https://github.com/JeremySkinner/FluentValidation) +* [Simple Mvvm Toolkit](http://simplemvvmtoolkit.codeplex.com/) +* [Sqlite-net](https://github.com/praeclarum/sqlite-net) +* [Mini Profiler](http://miniprofiler.com/) +* [RestSharp](http://restsharp.org/) +* [Caliburn Micro](http://caliburnmicro.com/) +* [Castle Project](https://github.com/castleproject) +* [Protobuf-net](https://code.google.com/p/protobuf-net/) ## How to Engage, Contribute and Provide Feedback From 9a078cefb269141f4fe239e7acfcdd5cc2a6e436 Mon Sep 17 00:00:00 2001 From: Stuart Lodge Date: Thu, 13 Nov 2014 09:32:55 +0000 Subject: [PATCH 003/872] Added reactiveUI and Splat too So many more to add.... --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 9828aa47c..94b8c20b4 100644 --- a/README.md +++ b/README.md @@ -49,6 +49,8 @@ There are also many great open source .NET community projects, such as: * [Caliburn Micro](http://caliburnmicro.com/) * [Castle Project](https://github.com/castleproject) * [Protobuf-net](https://code.google.com/p/protobuf-net/) +* [Splat](https://github.com/paulcbetts/splat) +* [ReactiveUI](https://github.com/reactiveui/ReactiveUI) ## How to Engage, Contribute and Provide Feedback From 8a1625b95a2861ff42a67706dfef6fe29023caba Mon Sep 17 00:00:00 2001 From: Stuart Lodge Date: Thu, 13 Nov 2014 10:42:51 +0000 Subject: [PATCH 004/872] Formatting I can see this list getting out of hand... who decides what is "great"? --- README.md | 82 ++++++++++++++++++++++++++++++++++--------------------- 1 file changed, 51 insertions(+), 31 deletions(-) diff --git a/README.md b/README.md index 94b8c20b4..f575ba23b 100644 --- a/README.md +++ b/README.md @@ -20,37 +20,56 @@ that are published on [NuGet.org](http://nuget.org/). There are also many great open source .NET community projects, such as: -* [Mono Project](https://github.com/mono/) -* [JSON.NET](http://json.net/) -* [MVVM Cross](https://github.com/MvvmCross/MvvmCross) -* [MVVM Light Toolkit](http://www.mvvmlight.net) -* [Glimpse](http://getglimpse.com) -* [TinyIoC](https://github.com/grumpydev/TinyIoC) -* [Fody](https://github.com/Fody/Fody) -* [Cimbalino](http://cimbalino.org/) -* [Simple Data](https://github.com/markrendle/Simple.Data) -* [NUnit](https://github.com/nunit/nunit) -* [xUnit](https://github.com/xunit/xunit) -* [NInject](http://www.ninject.org/) -* [Dapper](https://github.com/StackExchange/dapper-dot-net) -* [NHibernate](https://github.com/nhibernate) -* [NodaTime](http://nodatime.org/) -* [Autofac](http://autofac.org/) -* [moq](https://github.com/Moq/moq4) -* [Umbraco](http://umbraco.com/) -* [DotNetNuke](https://dotnetnuke.codeplex.com/) -* [Catel](http://catelproject.com/) -* [DotNetOpenAuth](https://github.com/DotNetOpenAuth) -* [FluentValidation](https://github.com/JeremySkinner/FluentValidation) -* [Simple Mvvm Toolkit](http://simplemvvmtoolkit.codeplex.com/) -* [Sqlite-net](https://github.com/praeclarum/sqlite-net) -* [Mini Profiler](http://miniprofiler.com/) -* [RestSharp](http://restsharp.org/) -* [Caliburn Micro](http://caliburnmicro.com/) -* [Castle Project](https://github.com/castleproject) -* [Protobuf-net](https://code.google.com/p/protobuf-net/) -* [Splat](https://github.com/paulcbetts/splat) -* [ReactiveUI](https://github.com/reactiveui/ReactiveUI) + +* Platforms + * [Mono Project](https://github.com/mono/) + * [Castle Project](https://github.com/castleproject) + +* Web Platforms + * [Umbraco](http://umbraco.com/) + * [DotNetNuke](https://dotnetnuke.codeplex.com/) + +* Libraries + * [JSON.NET](http://json.net/) + * [NodaTime](http://nodatime.org/) + * [Cimbalino](http://cimbalino.org/) + * [DotNetOpenAuth](https://github.com/DotNetOpenAuth) + * [FluentValidation](https://github.com/JeremySkinner/FluentValidation) + * [Splat](https://github.com/paulcbetts/splat) + * [RestSharp](http://restsharp.org/) + +* Mvvm + * [MVVM Cross](https://github.com/MvvmCross/MvvmCross) + * [MVVM Light Toolkit](http://www.mvvmlight.net) + * [Catel](http://catelproject.com/) + * [Simple Mvvm Toolkit](http://simplemvvmtoolkit.codeplex.com/) + * [ReactiveUI](https://github.com/reactiveui/ReactiveUI) + * [Caliburn Micro](http://caliburnmicro.com/) + +* Tools + * [Fody](https://github.com/Fody/Fody) + * [Glimpse](http://getglimpse.com) + * [Mini Profiler](http://miniprofiler.com/) + * [Protobuf-net](https://code.google.com/p/protobuf-net/) + +* Testing + * [NUnit](https://github.com/nunit/nunit) + * [xUnit](https://github.com/xunit/xunit) + * [moq](https://github.com/Moq/moq4) + +* Dependency Injection + * [TinyIoC](https://github.com/grumpydev/TinyIoC) + * [NInject](http://www.ninject.org/) + * [Autofac](http://autofac.org/) + * [Funq](https://funq.codeplex.com/) + +* Data Access + * [Simple Data](https://github.com/markrendle/Simple.Data) + * [Dapper](https://github.com/StackExchange/dapper-dot-net) + * [NHibernate](https://github.com/nhibernate) + * [Sqlite-net](https://github.com/praeclarum/sqlite-net) + +This list is just a starting point - also take a look at all the projects on [CodePlex](http://www.codeplex.com/) and on [GitHub Trending C#](https://github.com/trending?l=csharp) ## How to Engage, Contribute and Provide Feedback @@ -92,3 +111,4 @@ the cloud, and runs on Windows, Linux and Mac. It uses the .NET Framework to run [ASP.NET 5](https://github.com/aspnet/home) and [.NET Core 5](https://github.com/dotnet/corefx) libraries are open source on GitHub. At present, only a few .NET Core 5 libraries are available on GitHub. The rest of the libraries, including the base runtime, will be added in the coming months. + From 6eb7c16e7f27b40662b7787437d65899bf1fa3ef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Krzysztof=20Hasi=C5=84ski?= Date: Thu, 13 Nov 2014 21:54:56 +0100 Subject: [PATCH 005/872] Minor style changes --- README.md | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index d00f88040..06c9a509d 100644 --- a/README.md +++ b/README.md @@ -47,13 +47,13 @@ projects license documentation and other forms of content under [Creative Commons Attribution 4.0](http://creativecommons.org/licenses/by/4.0/). See specific projects to understand the license used. -## Understanding the Relationship between .NET Core and the .NET Framework +## Understanding the relationship between .NET Core and the .NET Framework .NET Core and the .NET Framework have (for the most part) a subset-superset relationship. .NET Core is named "Core" since it contains the core features from the .NET Framework, for both the runtime and framework libraries. For example, .NET Core and the .NET Framework share the GC, the JIT and types such as String and List. We'll continue improving these components for both .NET Core and .NET Framework. .NET Core was created so that .NET could be open source, cross platform and be used in more resource-constrained environments. We have also published [.NET Reference Source](https://github.com/Microsoft/referencesource) under the MIT license, so that you and the community can port additional .NET Framework features to .NET Core. -## Understanding the Relationship between .NET Core and Mono +## Understanding the relationship between .NET Core and Mono Mono is an important part of the .NET ecosystem, particularly for client scenarios (ex: Xamarin). We will look for ways to collaborate with Mono developers and encourage them to take our code to improve Mono. We will also look for opportunities to improve .NET Core with MIT-licensed Mono code. @@ -61,8 +61,6 @@ An important collaboration opportunity is making .NET Core NuGet packages (produ ## Learning about ASP.NET 5 and .NET Core 5 -ASP.NET 5 is a new cross-platform version of ASP.NET that is designed for -the cloud, and runs on Windows, Linux and Mac. It uses the .NET Framework to run on Windows, and can also run on .NET Core 5 for greater deployment flexibility on Windows. It currently uses Mono for Linux and Mac support but will move to .NET Core 5 for those platforms when they are supported. - +ASP.NET 5 is a new cross-platform version of ASP.NET that is designed for the cloud, and runs on Windows, Linux and Mac. It uses the .NET Framework to run on Windows, and can also run on .NET Core 5 for greater deployment flexibility on Windows. It currently uses Mono for Linux and Mac support but will move to .NET Core 5 for those platforms when they are supported. [ASP.NET 5](https://github.com/aspnet/home) and [.NET Core 5](https://github.com/dotnet/corefx) libraries are open source on GitHub. At present, only a few .NET Core 5 libraries are available on GitHub. The rest of the libraries, including the base runtime, will be added in the coming months. From 2325579fea6653ceea1c4a71d1c33885c3a758b0 Mon Sep 17 00:00:00 2001 From: James Yu Date: Fri, 14 Nov 2014 12:53:25 -0600 Subject: [PATCH 006/872] grammer fix --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index d00f88040..7671d8429 100644 --- a/README.md +++ b/README.md @@ -55,7 +55,7 @@ See specific projects to understand the license used. ## Understanding the Relationship between .NET Core and Mono -Mono is an important part of the .NET ecosystem, particularly for client scenarios (ex: Xamarin). We will look for ways to collaborate with Mono developers and encourage them to take our code to improve Mono. We will also look for opportunities to improve .NET Core with MIT-licensed Mono code. +Mono is an important part of the .NET ecosystem, particularly for client scenarios (e.g. Xamarin). We will look for ways to collaborate with Mono developers and encourage them to take our code to improve Mono. We will also look for opportunities to improve .NET Core with MIT-licensed Mono code. An important collaboration opportunity is making .NET Core NuGet packages (produced from this code) work on Mono. The SIMD NuGet package is a perfect example. From 09e87e306a1e3338b9b4c35b283667a3ae45d2d7 Mon Sep 17 00:00:00 2001 From: Dean Ellis Date: Sat, 15 Nov 2014 12:17:05 +0000 Subject: [PATCH 007/872] Update README.md Added MonoGame project --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index d00f88040..784aa2234 100644 --- a/README.md +++ b/README.md @@ -25,6 +25,7 @@ There are also many great open source .NET community projects, such as: * [MVVM Cross](https://github.com/MvvmCross/MvvmCross) * [MVVM Light Toolkit](http://www.mvvmlight.net) * [Glimpse](http://getglimpse.com) +* [MonoGame](http://monogame.net) ## How to Engage, Contribute and Provide Feedback From e159b5a4f8ac372e560fd0305b3d09acdb439be9 Mon Sep 17 00:00:00 2001 From: Stuart Lodge Date: Sat, 15 Nov 2014 12:25:57 +0000 Subject: [PATCH 008/872] ILSpy and MonoGame added --- README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README.md b/README.md index f575ba23b..7f9130110 100644 --- a/README.md +++ b/README.md @@ -51,6 +51,7 @@ There are also many great open source .NET community projects, such as: * [Glimpse](http://getglimpse.com) * [Mini Profiler](http://miniprofiler.com/) * [Protobuf-net](https://code.google.com/p/protobuf-net/) + * [ILSpy](http://ilspy.net/) * Testing * [NUnit](https://github.com/nunit/nunit) @@ -69,6 +70,9 @@ There are also many great open source .NET community projects, such as: * [NHibernate](https://github.com/nhibernate) * [Sqlite-net](https://github.com/praeclarum/sqlite-net) +* Games + * [MonoGame](http://monogame.net) + This list is just a starting point - also take a look at all the projects on [CodePlex](http://www.codeplex.com/) and on [GitHub Trending C#](https://github.com/trending?l=csharp) ## How to Engage, Contribute and Provide Feedback From 2c89e3dbc632f0ef6349a5a8dc0ba696e1c92905 Mon Sep 17 00:00:00 2001 From: Richard Lander Date: Mon, 17 Nov 2014 06:48:03 -0800 Subject: [PATCH 009/872] Update links to correct ones. --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 7671d8429..4392f9af9 100644 --- a/README.md +++ b/README.md @@ -2,13 +2,13 @@ The dotnet repository is the starting point to engage in and learn about .NET open source projects from [Microsoft](http://microsoft.github.io) and the [.NET Foundation](http://dotnet.github.io). You can -read the more detailed [Introduction to .NET Open Source](http://blogs.msdn.com/dotnet) +read the more detailed [.NET Core is Open Source](http://blogs.msdn.com/b/dotnet/archive/2014/11/12/net-core-is-open-source.aspx) on the .NET blog. ## Finding .NET Open Source Projects There are several open source .NET projects from Microsoft on GitHub and -CodePlex: +CodePlex, including: * [ASP.NET 5](https://github.com/aspnet/home) * [EntityFramework](https://github.com/aspnet/EntityFramework) @@ -29,7 +29,7 @@ There are also many great open source .NET community projects, such as: ## How to Engage, Contribute and Provide Feedback .NET open source projects from Microsoft (gladly) accept PRs and other contributions. To contribute to -ASP.NET 5 or EntityFramework, see [the ASP.NET Contributing Guide](https://github.com/aspnet/Home/blob/master/CONTRIBUTING.md). To contribute to .NET Core 5, see the [.NET Core Contributing Guide](CONTRIBUTING.md). +ASP.NET 5 or EntityFramework, see [the ASP.NET Contributing Guide](https://github.com/aspnet/Home/blob/master/CONTRIBUTING.md). To contribute to .NET Core 5, see the [.NET Core Contributing Guide](https://github.com/dotnet/corefx/blob/master/CONTRIBUTING.md). You are also encouraged to start a discussion by posting on the [.NET Foundation Forums](http://forums.dotnetfoundation.org/) or filing an issue in the corresponding GitHub project. See the contributing guides for more details. From 9bb22499073666384ef209ad303a6cc790799ec0 Mon Sep 17 00:00:00 2001 From: Immo Landwerth Date: Mon, 17 Nov 2014 17:54:35 -0800 Subject: [PATCH 010/872] Add line breaks to README.md --- README.md | 60 ++++++++++++++++++++++++++++++++++++++++++------------- 1 file changed, 46 insertions(+), 14 deletions(-) diff --git a/README.md b/README.md index 0fd235ea2..44b50d822 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,9 @@ # .NET Home The dotnet repository is the starting point to engage in and learn about .NET -open source projects from [Microsoft](http://microsoft.github.io) and the [.NET Foundation](http://dotnet.github.io). You can -read the more detailed [.NET Core is Open Source](http://blogs.msdn.com/b/dotnet/archive/2014/11/12/net-core-is-open-source.aspx) +open source projects from [Microsoft](http://microsoft.github.io) and the +[.NET Foundation](http://dotnet.github.io). You can read the more detailed +[.NET Core is Open Source](http://blogs.msdn.com/b/dotnet/archive/2014/11/12/net-core-is-open-source.aspx) on the .NET blog. ## Finding .NET Open Source Projects @@ -15,7 +16,8 @@ CodePlex, including: * [.NET Core 5](https://github.com/dotnet/corefx) * [.NET Compiler Platform ("Roslyn")](https://roslyn.codeplex.com) -Each one of these projects maps to one or more [.NET NuGet packages](http://blogs.msdn.com/b/dotnet/p/nugetpackages.aspx) +Each one of these projects maps to one or more +[.NET NuGet packages](http://blogs.msdn.com/b/dotnet/p/nugetpackages.aspx) that are published on [NuGet.org](http://nuget.org/). There are also many great open source .NET community projects, such as: @@ -29,14 +31,22 @@ There are also many great open source .NET community projects, such as: ## How to Engage, Contribute and Provide Feedback -.NET open source projects from Microsoft (gladly) accept PRs and other contributions. To contribute to -ASP.NET 5 or EntityFramework, see [the ASP.NET Contributing Guide](https://github.com/aspnet/Home/blob/master/CONTRIBUTING.md). To contribute to .NET Core 5, see the [.NET Core Contributing Guide](https://github.com/dotnet/corefx/blob/master/CONTRIBUTING.md). +.NET open source projects from Microsoft (gladly) accept PRs and other +contributions. To contribute to ASP.NET 5 or EntityFramework, see +[the ASP.NET Contributing Guide](https://github.com/aspnet/Home/blob/master/CONTRIBUTING.md). +To contribute to .NET Core 5, see the +[.NET Core Contributing Guide](https://github.com/dotnet/corefx/blob/master/CONTRIBUTING.md). -You are also encouraged to start a discussion by posting on the [.NET Foundation Forums](http://forums.dotnetfoundation.org/) or filing an issue in the corresponding GitHub project. See the contributing guides for more details. +You are also encouraged to start a discussion by posting on the +[.NET Foundation Forums](http://forums.dotnetfoundation.org/) or filing an issue +in the corresponding GitHub project. See the contributing guides for more +details. ## .NET Foundation -Most .NET open source projects at Microsoft have been contributed to the [.NET Foundation](http://www.dotnetfoundation.org/projects). There are two main .NET Foundation projects for Microsoft open source projects: +Most .NET open source projects at Microsoft have been contributed to the +[.NET Foundation](http://www.dotnetfoundation.org/projects). There are two main +.NET Foundation projects for Microsoft open source projects: [ASP.NET Core 5 project](http://www.dotnetfoundation.org/aspnet-vnext) and the [.NET Core 5 project](http://www.dotnetfoundation.org/netcore5). @@ -50,18 +60,40 @@ See specific projects to understand the license used. ## Understanding the relationship between .NET Core and the .NET Framework -.NET Core and the .NET Framework have (for the most part) a subset-superset relationship. .NET Core is named "Core" since it contains the core features from the .NET Framework, for both the runtime and framework libraries. For example, .NET Core and the .NET Framework share the GC, the JIT and types such as String and List. We'll continue improving these components for both .NET Core and .NET Framework. +.NET Core and the .NET Framework have (for the most part) a subset-superset +relationship. .NET Core is named "Core" since it contains the core features from +the .NET Framework, for both the runtime and framework libraries. For example, +.NET Core and the .NET Framework share the GC, the JIT and types such as String +and List. We'll continue improving these components for both .NET Core and +.NET Framework. -.NET Core was created so that .NET could be open source, cross platform and be used in more resource-constrained environments. We have also published [.NET Reference Source](https://github.com/Microsoft/referencesource) under the MIT license, so that you and the community can port additional .NET Framework features to .NET Core. +.NET Core was created so that .NET could be open source, cross platform and be +used in more resource-constrained environments. We have also published [.NET +Reference Source](https://github.com/Microsoft/referencesource) under the MIT +license, so that you and the community can port additional .NET Framework +features to .NET Core. ## Understanding the relationship between .NET Core and Mono -Mono is an important part of the .NET ecosystem, particularly for client scenarios (e.g. Xamarin). We will look for ways to collaborate with Mono developers and encourage them to take our code to improve Mono. We will also look for opportunities to improve .NET Core with MIT-licensed Mono code. +Mono is an important part of the .NET ecosystem, particularly for client +scenarios (e.g. Xamarin). We will look for ways to collaborate with Mono +developers and encourage them to take our code to improve Mono. We will also +look for opportunities to improve .NET Core with MIT-licensed Mono code. -An important collaboration opportunity is making .NET Core NuGet packages (produced from this code) work on Mono. The SIMD NuGet package is a perfect example. +An important collaboration opportunity is making .NET Core NuGet packages +(produced from this code) work on Mono. The SIMD NuGet package is a perfect +example. ## Learning about ASP.NET 5 and .NET Core 5 -ASP.NET 5 is a new cross-platform version of ASP.NET that is designed for the cloud, and runs on Windows, Linux and Mac. It uses the .NET Framework to run on Windows, and can also run on .NET Core 5 for greater deployment flexibility on Windows. It currently uses Mono for Linux and Mac support but will move to .NET Core 5 for those platforms when they are supported. - -[ASP.NET 5](https://github.com/aspnet/home) and [.NET Core 5](https://github.com/dotnet/corefx) libraries are open source on GitHub. At present, only a few .NET Core 5 libraries are available on GitHub. The rest of the libraries, including the base runtime, will be added in the coming months. +ASP.NET 5 is a new cross-platform version of ASP.NET that is designed for the +cloud, and runs on Windows, Linux and Mac. It uses the .NET Framework to run on +Windows, and can also run on .NET Core 5 for greater deployment flexibility on +Windows. It currently uses Mono for Linux and Mac support but will move to .NET +Core 5 for those platforms when they are supported. + +[ASP.NET 5](https://github.com/aspnet/home) and +[.NET Core 5](https://github.com/dotnet/corefx) libraries are open source on +GitHub. At present, only a few .NET Core 5 libraries are available on GitHub. +The rest of the libraries, including the base runtime, will be added in the +coming months. From 4bc5614d6d75f101a817f08c2e25a7b3782dbb26 Mon Sep 17 00:00:00 2001 From: Immo Landwerth Date: Mon, 17 Nov 2014 17:58:05 -0800 Subject: [PATCH 011/872] Update links --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 44b50d822..a487659b7 100644 --- a/README.md +++ b/README.md @@ -13,7 +13,7 @@ CodePlex, including: * [ASP.NET 5](https://github.com/aspnet/home) * [EntityFramework](https://github.com/aspnet/EntityFramework) -* [.NET Core 5](https://github.com/dotnet/corefx) +* [.NET Core 5](https://github.com/dotnet/core) * [.NET Compiler Platform ("Roslyn")](https://roslyn.codeplex.com) Each one of these projects maps to one or more @@ -35,7 +35,7 @@ There are also many great open source .NET community projects, such as: contributions. To contribute to ASP.NET 5 or EntityFramework, see [the ASP.NET Contributing Guide](https://github.com/aspnet/Home/blob/master/CONTRIBUTING.md). To contribute to .NET Core 5, see the -[.NET Core Contributing Guide](https://github.com/dotnet/corefx/blob/master/CONTRIBUTING.md). +[.NET Core Contributing Guide](https://github.com/dotnet/corefx/wiki/Contributing). You are also encouraged to start a discussion by posting on the [.NET Foundation Forums](http://forums.dotnetfoundation.org/) or filing an issue @@ -93,7 +93,7 @@ Windows. It currently uses Mono for Linux and Mac support but will move to .NET Core 5 for those platforms when they are supported. [ASP.NET 5](https://github.com/aspnet/home) and -[.NET Core 5](https://github.com/dotnet/corefx) libraries are open source on +[.NET Core 5](https://github.com/dotnet/core) libraries are open source on GitHub. At present, only a few .NET Core 5 libraries are available on GitHub. The rest of the libraries, including the base runtime, will be added in the coming months. From 0eb951678253715b9245d400429603db1b8a933c Mon Sep 17 00:00:00 2001 From: Immo Landwerth Date: Mon, 17 Nov 2014 17:58:55 -0800 Subject: [PATCH 012/872] Remove redundant content Remove content that is also available in the .NET Core repository: https://github.com/dotnet/core --- README.md | 42 +----------------------------------------- 1 file changed, 1 insertion(+), 41 deletions(-) diff --git a/README.md b/README.md index a487659b7..c8b665064 100644 --- a/README.md +++ b/README.md @@ -56,44 +56,4 @@ and the [.NET Core 5 project](http://www.dotnetfoundation.org/netcore5). [Apache 2](http://www.apache.org/licenses/LICENSE-2.0) licenses for code. Some projects license documentation and other forms of content under [Creative Commons Attribution 4.0](http://creativecommons.org/licenses/by/4.0/). -See specific projects to understand the license used. - -## Understanding the relationship between .NET Core and the .NET Framework - -.NET Core and the .NET Framework have (for the most part) a subset-superset -relationship. .NET Core is named "Core" since it contains the core features from -the .NET Framework, for both the runtime and framework libraries. For example, -.NET Core and the .NET Framework share the GC, the JIT and types such as String -and List. We'll continue improving these components for both .NET Core and -.NET Framework. - -.NET Core was created so that .NET could be open source, cross platform and be -used in more resource-constrained environments. We have also published [.NET -Reference Source](https://github.com/Microsoft/referencesource) under the MIT -license, so that you and the community can port additional .NET Framework -features to .NET Core. - -## Understanding the relationship between .NET Core and Mono - -Mono is an important part of the .NET ecosystem, particularly for client -scenarios (e.g. Xamarin). We will look for ways to collaborate with Mono -developers and encourage them to take our code to improve Mono. We will also -look for opportunities to improve .NET Core with MIT-licensed Mono code. - -An important collaboration opportunity is making .NET Core NuGet packages -(produced from this code) work on Mono. The SIMD NuGet package is a perfect -example. - -## Learning about ASP.NET 5 and .NET Core 5 - -ASP.NET 5 is a new cross-platform version of ASP.NET that is designed for the -cloud, and runs on Windows, Linux and Mac. It uses the .NET Framework to run on -Windows, and can also run on .NET Core 5 for greater deployment flexibility on -Windows. It currently uses Mono for Linux and Mac support but will move to .NET -Core 5 for those platforms when they are supported. - -[ASP.NET 5](https://github.com/aspnet/home) and -[.NET Core 5](https://github.com/dotnet/core) libraries are open source on -GitHub. At present, only a few .NET Core 5 libraries are available on GitHub. -The rest of the libraries, including the base runtime, will be added in the -coming months. +See specific projects to understand the license used. \ No newline at end of file From 020ea8164d1409417be65cab8456c5578a2acc5b Mon Sep 17 00:00:00 2001 From: Immo Landwerth Date: Mon, 17 Nov 2014 18:01:14 -0800 Subject: [PATCH 013/872] Remove CONTRIBUTING.md This is a meta-repository. The contributing guides are in project specific repositories. --- CONTRIBUTING.md | 86 ------------------------------------------------- 1 file changed, 86 deletions(-) delete mode 100644 CONTRIBUTING.md diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md deleted file mode 100644 index 9f7e3945e..000000000 --- a/CONTRIBUTING.md +++ /dev/null @@ -1,86 +0,0 @@ -# How to contribute - -We welcome contributions! However, we do have some requests on how contributions -should be done. Please read them in order to avoid surprises down the road. - -## Choosing something to work on - -The issue tracker of each project has a list of items that you can start -working on: - -* **Features**. Those are issues marked as 'enhancement'. - -* **Bugs**. Those are issues marked as 'bug'. - -In order to avoid overlap, it's always a good idea to comment on the item and -let everybody know that you want to work on it. - -## Creating a pull request - -1. Make sure that there is a corresponding issue for your change first. If there - is none, create one. -2. Create a fork in GitHub -3. Create a branch off the `master` branch. Name it something that that makes - sense, such as `issue-123` or `githubhandle-issue`. This makes it easy for everyone to figure out what - the branch is used for. It also makes it easier to isolate your change from incoming changes from the origin. -4. Commit your changes and push your changes to GitHub -5. Create a pull request against the origin's `master` branch - -## DOs and DON'Ts - -* **DO** follow our coding style (see below) -* **DO** include tests when adding new features. When fixing bugs, start with - adding a test that highlights how the current behavior is broken. -* **DO** keep the discussions focused. When a new or related topic comes up - it's often better to create new issue than to side track the discussion. -* **DO** blog and tweet (or whatever) about your contributions, frequently! -* **DON'T** surprise us with big pull requests. Instead, file an issue and start - a discussion so we can agree on a direction before you invest a large amount - of time. -* **DON'T** commit code that you didn't write. If you find MIT or Apache 2 licensed code that you think is a good fit to add to .NET Core, file an issue and start a discussion before proceeding. - - -## C# Coding Style - -The general rule we follow is "use Visual Studio defaults". - -1. We use Allman style braces -2. We use four spaces of indentation (no tabs) -3. We use "_camelCase" private members and use "readonly" where possible -4. We avoid `this.` unless absolutely necessary -5. We always specify the visibility, even if it's the default (i.e. - `private string _foo` not `string _foo`) -6. Namespace imports should be specified at the top of the file, *outside* of - `namespace` declarations and should be sorted alphabetically, with `System.` - namespaces at the top and blank lines between different top level groups - -### Example File: - -```C# -using System.Aardvarks; -using System.IO; -using System.Zebras; - -using Microsoft.CoolStuff; -using Microsoft.CoolStuff.Build; - -using Zebra.Crossing; - -namespace System.More.AndMore -{ - public class MyClass - { - private readonly IAbstraction _something; - - public MyClass(IAbstraction something) - { - _something = something; - } - - public IAbstraction SomethingService - { - get { return _something; } - } - } -} -``` From c04fbd04676297d3fc32e4fe4fb390bde3362689 Mon Sep 17 00:00:00 2001 From: Richard Lander Date: Wed, 19 Nov 2014 21:29:50 -0800 Subject: [PATCH 014/872] Fix spacing issue. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index b3946540b..048d5b4cc 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ open source projects from [Microsoft](http://microsoft.github.io) and the [.NET ## Finding .NET Open Source Projects -There are many [open source .NET projects](dotnet-projects.md). Check out the [list of projects](dotnet-projects.md)the community maintains. Please find one to engage in or add one. There's certainly one out there that could use your help. +There are many [open source .NET projects](dotnet-projects.md). Check out the [list of projects](dotnet-projects.md) the community maintains. Please find one to engage in or add one. There's certainly one out there that could use your help. There are several projects from Microsoft on GitHub and CodePlex, including: From 4c87c9ca2b0bef0195b426d18c10e479b66f2a2d Mon Sep 17 00:00:00 2001 From: Llewellyn Pritchard Date: Thu, 20 Nov 2014 07:38:46 +0200 Subject: [PATCH 015/872] Update dotnet-projects.md Add languages section. Add IronScheme --- dotnet-projects.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/dotnet-projects.md b/dotnet-projects.md index ee33a4b91..f6c3be2e2 100644 --- a/dotnet-projects.md +++ b/dotnet-projects.md @@ -55,6 +55,10 @@ There are many .NET open source projects. You can always use a search engine to * Games * [MonoGame](http://monogame.net) +* Languages + * [IronScheme](http://ironscheme.codeplex.com) + + This list is just a starting point - also take a look at all the projects on [CodePlex](http://www.codeplex.com/) and on [GitHub Trending C#](https://github.com/trending?l=csharp). -Thanks to @slodge for providing the initial list. \ No newline at end of file +Thanks to @slodge for providing the initial list. From 3e242243fe10510d016b73658da1a625d0daa6c3 Mon Sep 17 00:00:00 2001 From: Alexandre Mutel Date: Thu, 20 Nov 2014 15:08:57 +0900 Subject: [PATCH 016/872] Add SharpDX and Paradox --- dotnet-projects.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/dotnet-projects.md b/dotnet-projects.md index f6c3be2e2..00809aa94 100644 --- a/dotnet-projects.md +++ b/dotnet-projects.md @@ -19,6 +19,7 @@ There are many .NET open source projects. You can always use a search engine to * [FluentValidation](https://github.com/JeremySkinner/FluentValidation) * [Splat](https://github.com/paulcbetts/splat) * [RestSharp](http://restsharp.org/) + * [SharpDX](http://sharpdx.org) * Mvvm * [MVVM Cross](https://github.com/MvvmCross/MvvmCross) @@ -54,6 +55,7 @@ There are many .NET open source projects. You can always use a search engine to * Games * [MonoGame](http://monogame.net) + * [Paradox](http://paradox3d.net) * Languages * [IronScheme](http://ironscheme.codeplex.com) From 072e48b5ed82f9b8ba3367be6fcd62480e996a9b Mon Sep 17 00:00:00 2001 From: Brendan Forster Date: Thu, 20 Nov 2014 16:40:32 +1030 Subject: [PATCH 017/872] sprinkle some projects around --- dotnet-projects.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/dotnet-projects.md b/dotnet-projects.md index f6c3be2e2..52709b64c 100644 --- a/dotnet-projects.md +++ b/dotnet-projects.md @@ -10,6 +10,7 @@ There are many .NET open source projects. You can always use a search engine to * Web Platforms * [Umbraco](http://umbraco.com/) * [DotNetNuke](https://dotnetnuke.codeplex.com/) + * [Orchard](http://www.orchardproject.net/) * Libraries * [JSON.NET](http://json.net/) @@ -39,6 +40,7 @@ There are many .NET open source projects. You can always use a search engine to * [NUnit](https://github.com/nunit/nunit) * [xUnit](https://github.com/xunit/xunit) * [moq](https://github.com/Moq/moq4) + * [NSubstitute](http://nsubstitute.github.io/) * Dependency Injection * [TinyIoC](https://github.com/grumpydev/TinyIoC) From d3730eea1bf37282fca8f3a099efbdbd5cbec5ca Mon Sep 17 00:00:00 2001 From: Brendan Forster Date: Thu, 20 Nov 2014 16:41:10 +1030 Subject: [PATCH 018/872] typo --- dotnet-projects.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dotnet-projects.md b/dotnet-projects.md index 52709b64c..0445d9d48 100644 --- a/dotnet-projects.md +++ b/dotnet-projects.md @@ -44,7 +44,7 @@ There are many .NET open source projects. You can always use a search engine to * Dependency Injection * [TinyIoC](https://github.com/grumpydev/TinyIoC) - * [NInject](http://www.ninject.org/) + * [Ninject](http://www.ninject.org/) * [Autofac](http://autofac.org/) * [Funq](https://funq.codeplex.com/) From ace1ec994e183ffe35851e3a5d5201f63cf2215f Mon Sep 17 00:00:00 2001 From: Richard Lander Date: Wed, 19 Nov 2014 22:11:43 -0800 Subject: [PATCH 019/872] Add link to @quozd's Awesome list. --- dotnet-projects.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/dotnet-projects.md b/dotnet-projects.md index ee33a4b91..ab4dfcb9a 100644 --- a/dotnet-projects.md +++ b/dotnet-projects.md @@ -57,4 +57,6 @@ There are many .NET open source projects. You can always use a search engine to This list is just a starting point - also take a look at all the projects on [CodePlex](http://www.codeplex.com/) and on [GitHub Trending C#](https://github.com/trending?l=csharp). -Thanks to @slodge for providing the initial list. \ No newline at end of file +Thanks to @slodge for providing the initial list. + +@quozd hosts an [Awesome .NET!](https://github.com/quozd/awesome-dotnet) list. Also worth checking out. \ No newline at end of file From a0a77464e20d5098e16ebdc07488248c8e48d402 Mon Sep 17 00:00:00 2001 From: Brendan Forster Date: Thu, 20 Nov 2014 16:43:24 +1030 Subject: [PATCH 020/872] and one more --- dotnet-projects.md | 1 + 1 file changed, 1 insertion(+) diff --git a/dotnet-projects.md b/dotnet-projects.md index 0445d9d48..74d7c8f80 100644 --- a/dotnet-projects.md +++ b/dotnet-projects.md @@ -11,6 +11,7 @@ There are many .NET open source projects. You can always use a search engine to * [Umbraco](http://umbraco.com/) * [DotNetNuke](https://dotnetnuke.codeplex.com/) * [Orchard](http://www.orchardproject.net/) + * [Nancy](http://nancyfx.org) * Libraries * [JSON.NET](http://json.net/) From b6834bdc48d18772d8bfe0b63754ee5d03e19d83 Mon Sep 17 00:00:00 2001 From: Alexandre Mutel Date: Thu, 20 Nov 2014 15:26:41 +0900 Subject: [PATCH 021/872] Use github links for SharpDX and Paradox --- dotnet-projects.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dotnet-projects.md b/dotnet-projects.md index 00809aa94..a4d154b2c 100644 --- a/dotnet-projects.md +++ b/dotnet-projects.md @@ -19,7 +19,7 @@ There are many .NET open source projects. You can always use a search engine to * [FluentValidation](https://github.com/JeremySkinner/FluentValidation) * [Splat](https://github.com/paulcbetts/splat) * [RestSharp](http://restsharp.org/) - * [SharpDX](http://sharpdx.org) + * [SharpDX](https://github.com/sharpdx/SharpDX) * Mvvm * [MVVM Cross](https://github.com/MvvmCross/MvvmCross) @@ -55,7 +55,7 @@ There are many .NET open source projects. You can always use a search engine to * Games * [MonoGame](http://monogame.net) - * [Paradox](http://paradox3d.net) + * [Paradox](https://github.com/SiliconStudio/paradox) * Languages * [IronScheme](http://ironscheme.codeplex.com) From 81558d2a0d0869b508a4999ec922de8b64fd5783 Mon Sep 17 00:00:00 2001 From: Richard Lander Date: Wed, 19 Nov 2014 22:31:22 -0800 Subject: [PATCH 022/872] Merge PR. --- dotnet-projects.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/dotnet-projects.md b/dotnet-projects.md index 3aeb91f4b..1fb90316d 100644 --- a/dotnet-projects.md +++ b/dotnet-projects.md @@ -24,6 +24,7 @@ There are many .NET open source projects. You can always use a search engine to * [FluentValidation](https://github.com/JeremySkinner/FluentValidation) * [Splat](https://github.com/paulcbetts/splat) * [RestSharp](http://restsharp.org/) + * [SharpDX](https://github.com/sharpdx/SharpDX) * Mvvm * [MVVM Cross](https://github.com/MvvmCross/MvvmCross) @@ -60,9 +61,10 @@ There are many .NET open source projects. You can always use a search engine to * Games * [MonoGame](http://monogame.net) + * [Paradox](https://github.com/SiliconStudio/paradox) This list is just a starting point - also take a look at all the projects on [CodePlex](http://www.codeplex.com/) and on [GitHub Trending C#](https://github.com/trending?l=csharp). Thanks to @slodge for providing the initial list. -@quozd hosts an [Awesome .NET!](https://github.com/quozd/awesome-dotnet) list. Also worth checking out. \ No newline at end of file +@quozd hosts an [Awesome .NET!](https://github.com/quozd/awesome-dotnet) list. Also worth checking out. From f07e09c628e35974dc085283c3e8597653a811f1 Mon Sep 17 00:00:00 2001 From: Brendan Forster Date: Thu, 20 Nov 2014 17:14:22 +1030 Subject: [PATCH 023/872] sort projects alphabetically --- dotnet-projects.md | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/dotnet-projects.md b/dotnet-projects.md index 1fb90316d..2de05638d 100644 --- a/dotnet-projects.md +++ b/dotnet-projects.md @@ -1,62 +1,62 @@ # .NET Projects -There are many .NET open source projects. You can always use a search engine to find projects, and that's a good approach. This list is an intended to provide a showcase for projects that want it. It is itendeded to be community maintained. PR a change in and it will be accepted (modulo duplicates). +There are many .NET open source projects. You can always use a search engine to find projects, and that's a good approach. This list is an intended to provide a showcase for projects that want it. It is itendeded to be community maintained. PR a change in and it will be accepted (modulo duplicates). Projects should be sorted alphabetically. * Platforms * [.NET Core](https://github.com/dotnet/core) - * [Mono Project](https://github.com/mono/) * [Castle Project](https://github.com/castleproject) - + * [Mono Project](https://github.com/mono/) + * Languages * [IronScheme](http://ironscheme.codeplex.com) * Web Platforms - * [Umbraco](http://umbraco.com/) * [DotNetNuke](https://dotnetnuke.codeplex.com/) - * [Orchard](http://www.orchardproject.net/) * [Nancy](http://nancyfx.org) + * [Orchard](http://www.orchardproject.net/) + * [Umbraco](http://umbraco.com/) * Libraries - * [JSON.NET](http://json.net/) - * [NodaTime](http://nodatime.org/) * [Cimbalino](http://cimbalino.org/) * [DotNetOpenAuth](https://github.com/DotNetOpenAuth) * [FluentValidation](https://github.com/JeremySkinner/FluentValidation) - * [Splat](https://github.com/paulcbetts/splat) + * [JSON.NET](http://json.net/) + * [NodaTime](http://nodatime.org/) * [RestSharp](http://restsharp.org/) * [SharpDX](https://github.com/sharpdx/SharpDX) + * [Splat](https://github.com/paulcbetts/splat) * Mvvm + * [Caliburn Micro](http://caliburnmicro.com/) + * [Catel](http://catelproject.com/) * [MVVM Cross](https://github.com/MvvmCross/MvvmCross) * [MVVM Light Toolkit](http://www.mvvmlight.net) - * [Catel](http://catelproject.com/) - * [Simple Mvvm Toolkit](http://simplemvvmtoolkit.codeplex.com/) * [ReactiveUI](https://github.com/reactiveui/ReactiveUI) - * [Caliburn Micro](http://caliburnmicro.com/) + * [Simple Mvvm Toolkit](http://simplemvvmtoolkit.codeplex.com/) * Tools * [Fody](https://github.com/Fody/Fody) * [Glimpse](http://getglimpse.com) + * [ILSpy](http://ilspy.net/) * [Mini Profiler](http://miniprofiler.com/) * [Protobuf-net](https://code.google.com/p/protobuf-net/) - * [ILSpy](http://ilspy.net/) * Testing - * [NUnit](https://github.com/nunit/nunit) - * [xUnit](https://github.com/xunit/xunit) * [moq](https://github.com/Moq/moq4) * [NSubstitute](http://nsubstitute.github.io/) + * [NUnit](https://github.com/nunit/nunit) + * [xUnit](https://github.com/xunit/xunit) * Dependency Injection - * [TinyIoC](https://github.com/grumpydev/TinyIoC) - * [Ninject](http://www.ninject.org/) * [Autofac](http://autofac.org/) * [Funq](https://funq.codeplex.com/) + * [Ninject](http://www.ninject.org/) + * [TinyIoC](https://github.com/grumpydev/TinyIoC) * Data Access - * [Simple Data](https://github.com/markrendle/Simple.Data) * [Dapper](https://github.com/StackExchange/dapper-dot-net) * [NHibernate](https://github.com/nhibernate) + * [Simple Data](https://github.com/markrendle/Simple.Data) * [Sqlite-net](https://github.com/praeclarum/sqlite-net) * Games From 80f96e3c1b68ffdc3518aba67cfdb88db1dcb0c4 Mon Sep 17 00:00:00 2001 From: Morten Nielsen Date: Wed, 19 Nov 2014 23:30:48 -0800 Subject: [PATCH 024/872] Update dotnet-projects.md --- dotnet-projects.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/dotnet-projects.md b/dotnet-projects.md index 1fb90316d..e87ac8136 100644 --- a/dotnet-projects.md +++ b/dotnet-projects.md @@ -58,10 +58,14 @@ There are many .NET open source projects. You can always use a search engine to * [Dapper](https://github.com/StackExchange/dapper-dot-net) * [NHibernate](https://github.com/nhibernate) * [Sqlite-net](https://github.com/praeclarum/sqlite-net) + * [NMEA Parser](https://github.com/dotMorten/NmeaParser) * Games * [MonoGame](http://monogame.net) * [Paradox](https://github.com/SiliconStudio/paradox) + +* Control libraries +* [Callisto](https://github.com/timheuer/callisto) This list is just a starting point - also take a look at all the projects on [CodePlex](http://www.codeplex.com/) and on [GitHub Trending C#](https://github.com/trending?l=csharp). From 76edff70a15df0e87910a41ae984c781a9dfb07f Mon Sep 17 00:00:00 2001 From: martincostello Date: Thu, 20 Nov 2014 07:55:09 +0000 Subject: [PATCH 025/872] Added SQL LocalDB Wrapper to the list of .NET OSS projects under Data Access. --- dotnet-projects.md | 1 + 1 file changed, 1 insertion(+) diff --git a/dotnet-projects.md b/dotnet-projects.md index 1fb90316d..ec5fd4faa 100644 --- a/dotnet-projects.md +++ b/dotnet-projects.md @@ -58,6 +58,7 @@ There are many .NET open source projects. You can always use a search engine to * [Dapper](https://github.com/StackExchange/dapper-dot-net) * [NHibernate](https://github.com/nhibernate) * [Sqlite-net](https://github.com/praeclarum/sqlite-net) + * [SQL LocalDB Wrapper](https://github.com/martincostello/sqllocaldb) * Games * [MonoGame](http://monogame.net) From 9d3f3bf81203197f35ec93b99b2c940257bb46e0 Mon Sep 17 00:00:00 2001 From: hermitdave Date: Thu, 20 Nov 2014 08:59:33 +0000 Subject: [PATCH 026/872] Update dotnet-projects.md Added Coding4fun toolkit to the list of OSS projects --- dotnet-projects.md | 1 + 1 file changed, 1 insertion(+) diff --git a/dotnet-projects.md b/dotnet-projects.md index 1fb90316d..ae10b9ef6 100644 --- a/dotnet-projects.md +++ b/dotnet-projects.md @@ -25,6 +25,7 @@ There are many .NET open source projects. You can always use a search engine to * [Splat](https://github.com/paulcbetts/splat) * [RestSharp](http://restsharp.org/) * [SharpDX](https://github.com/sharpdx/SharpDX) + * [Coding4Fun Toolkit] (http://coding4fun.codeplex.com/) * Mvvm * [MVVM Cross](https://github.com/MvvmCross/MvvmCross) From dfe54590e07fff4754272d1fbb14414d168b7403 Mon Sep 17 00:00:00 2001 From: Stefan Kip Date: Thu, 20 Nov 2014 11:23:01 +0100 Subject: [PATCH 027/872] Added ImageProcessor Added ImageProcessor --- dotnet-projects.md | 1 + 1 file changed, 1 insertion(+) diff --git a/dotnet-projects.md b/dotnet-projects.md index 1fb90316d..0f8382677 100644 --- a/dotnet-projects.md +++ b/dotnet-projects.md @@ -25,6 +25,7 @@ There are many .NET open source projects. You can always use a search engine to * [Splat](https://github.com/paulcbetts/splat) * [RestSharp](http://restsharp.org/) * [SharpDX](https://github.com/sharpdx/SharpDX) + * [ImageProcessor](http://imageprocessor.org/) * Mvvm * [MVVM Cross](https://github.com/MvvmCross/MvvmCross) From 44705ccd1151a05d9d6ff395ea486062145791e1 Mon Sep 17 00:00:00 2001 From: Michael Denny Date: Thu, 20 Nov 2014 11:41:37 +0100 Subject: [PATCH 028/872] Update dotnet-projects.md * Radical (MVVM framework) * Snoop Wpf (The WPF Spy Utility) * EasyNetQ (fx for RabbitMQ) * AzureNetQ (porting of EasyNetQ for Azure service bus) * WpfToolkit (fork of MS WPF Toolkit with additional features) --- dotnet-projects.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/dotnet-projects.md b/dotnet-projects.md index 1fb90316d..ee4cd591c 100644 --- a/dotnet-projects.md +++ b/dotnet-projects.md @@ -25,6 +25,9 @@ There are many .NET open source projects. You can always use a search engine to * [Splat](https://github.com/paulcbetts/splat) * [RestSharp](http://restsharp.org/) * [SharpDX](https://github.com/sharpdx/SharpDX) + * [EasyNetQ](https://github.com/mikehadlow/EasyNetQ) + * [AzureNetQ](https://github.com/Roysvork/AzureNetQ) + * [WpfToolkit](https://github.com/dotnetprojects/wpftoolkit) * Mvvm * [MVVM Cross](https://github.com/MvvmCross/MvvmCross) @@ -33,6 +36,7 @@ There are many .NET open source projects. You can always use a search engine to * [Simple Mvvm Toolkit](http://simplemvvmtoolkit.codeplex.com/) * [ReactiveUI](https://github.com/reactiveui/ReactiveUI) * [Caliburn Micro](http://caliburnmicro.com/) + * [Radical](https://github.com/RadicalFx/radical) * Tools * [Fody](https://github.com/Fody/Fody) @@ -40,6 +44,7 @@ There are many .NET open source projects. You can always use a search engine to * [Mini Profiler](http://miniprofiler.com/) * [Protobuf-net](https://code.google.com/p/protobuf-net/) * [ILSpy](http://ilspy.net/) + * [Snoop Wpf](https://github.com/cplotts/snoopwpf) * Testing * [NUnit](https://github.com/nunit/nunit) From a4910fae75287a216ec53d97738697cd634292a5 Mon Sep 17 00:00:00 2001 From: Taryn Hill Date: Thu, 20 Nov 2014 07:35:15 -0600 Subject: [PATCH 029/872] Add the OpenRA project --- dotnet-projects.md | 1 + 1 file changed, 1 insertion(+) diff --git a/dotnet-projects.md b/dotnet-projects.md index 1fb90316d..66c8bb315 100644 --- a/dotnet-projects.md +++ b/dotnet-projects.md @@ -62,6 +62,7 @@ There are many .NET open source projects. You can always use a search engine to * Games * [MonoGame](http://monogame.net) * [Paradox](https://github.com/SiliconStudio/paradox) + * [OpenRA](http://www.openra.net/) This list is just a starting point - also take a look at all the projects on [CodePlex](http://www.codeplex.com/) and on [GitHub Trending C#](https://github.com/trending?l=csharp). From 3edffd03058a2b84b9a89250f21b4f94980c17f6 Mon Sep 17 00:00:00 2001 From: Florian Rappl Date: Thu, 20 Nov 2014 14:35:58 +0100 Subject: [PATCH 030/872] Included AngleSharp HTML DOM / CSSOM creation driven by W3C specifictions. --- dotnet-projects.md | 1 + 1 file changed, 1 insertion(+) diff --git a/dotnet-projects.md b/dotnet-projects.md index 1fb90316d..463cebaa6 100644 --- a/dotnet-projects.md +++ b/dotnet-projects.md @@ -25,6 +25,7 @@ There are many .NET open source projects. You can always use a search engine to * [Splat](https://github.com/paulcbetts/splat) * [RestSharp](http://restsharp.org/) * [SharpDX](https://github.com/sharpdx/SharpDX) + * [AngleSharp](https://github.com/FlorianRappl/AngleSharp) * Mvvm * [MVVM Cross](https://github.com/MvvmCross/MvvmCross) From e4dfd44640bd3d2f7faccf3f9302b289515a6728 Mon Sep 17 00:00:00 2001 From: Oren Novotny Date: Thu, 20 Nov 2014 09:29:59 -0500 Subject: [PATCH 031/872] Update dotnet-projects.md Added a reference to the Portable Ninject fork that works with Windows Store/Phone and Xamarin apps --- dotnet-projects.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/dotnet-projects.md b/dotnet-projects.md index 1fb90316d..9e6bfe107 100644 --- a/dotnet-projects.md +++ b/dotnet-projects.md @@ -49,7 +49,8 @@ There are many .NET open source projects. You can always use a search engine to * Dependency Injection * [TinyIoC](https://github.com/grumpydev/TinyIoC) - * [Ninject](http://www.ninject.org/) + * [Ninject for Desktop](http://www.ninject.org/) + * [Ninject for Portable Class Libraries, Universal apps and Xamarin](https://github.com/onovotny/ninject) * [Autofac](http://autofac.org/) * [Funq](https://funq.codeplex.com/) From f08d2a19928714b09608c8414c0dd4d2aae93776 Mon Sep 17 00:00:00 2001 From: Richard Lander Date: Thu, 20 Nov 2014 06:48:02 -0800 Subject: [PATCH 032/872] Merge PR. --- dotnet-projects.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/dotnet-projects.md b/dotnet-projects.md index 2de05638d..f1fc957c3 100644 --- a/dotnet-projects.md +++ b/dotnet-projects.md @@ -1,6 +1,6 @@ # .NET Projects -There are many .NET open source projects. You can always use a search engine to find projects, and that's a good approach. This list is an intended to provide a showcase for projects that want it. It is itendeded to be community maintained. PR a change in and it will be accepted (modulo duplicates). Projects should be sorted alphabetically. +There are many .NET open source projects. You can always use a search engine to find projects, and that's a good approach. This list is an intended to provide a showcase for projects that want it. It is itendeded to be community maintained. PR a change in and it will be accepted (modulo duplicates). Projects should be sorted alphabetically and GitHub links are preferred. * Platforms * [.NET Core](https://github.com/dotnet/core) @@ -36,6 +36,7 @@ There are many .NET open source projects. You can always use a search engine to * Tools * [Fody](https://github.com/Fody/Fody) + * [GitVersion](https://github.com/ParticularLabs/GitVersion) * [Glimpse](http://getglimpse.com) * [ILSpy](http://ilspy.net/) * [Mini Profiler](http://miniprofiler.com/) From 2b2400063019f4b3b5debdca6ca5fba41f5cc0cd Mon Sep 17 00:00:00 2001 From: Scott Lovegrove Date: Thu, 20 Nov 2014 15:02:34 +0000 Subject: [PATCH 033/872] Update dotnet-projects.md --- dotnet-projects.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/dotnet-projects.md b/dotnet-projects.md index 181325cdb..141a60a5b 100644 --- a/dotnet-projects.md +++ b/dotnet-projects.md @@ -26,6 +26,8 @@ There are many .NET open source projects. You can always use a search engine to * [RestSharp](http://restsharp.org/) * [SharpDX](https://github.com/sharpdx/SharpDX) * [Splat](https://github.com/paulcbetts/splat) + * [Coding4Fun](http://coding4fun.codeplex.com) + * [PocketSharp](https://github.com/ceee/PocketSharp) * Mvvm * [Caliburn Micro](http://caliburnmicro.com/) @@ -68,8 +70,7 @@ There are many .NET open source projects. You can always use a search engine to * [Paradox](https://github.com/SiliconStudio/paradox) * Control libraries - * [Callisto](https://github.com/timheuer/callisto) - * [OpenRA](https://github.com/OpenRA/OpenRA) +* [Callisto](https://github.com/timheuer/callisto) This list is just a starting point - also take a look at all the projects on [CodePlex](http://www.codeplex.com/) and on [GitHub Trending C#](https://github.com/trending?l=csharp). From 519a0fb5e3f14e917c41d7f453be16b706814366 Mon Sep 17 00:00:00 2001 From: Kristian Hellang Date: Thu, 20 Nov 2014 16:22:44 +0100 Subject: [PATCH 034/872] Added scriptcs --- dotnet-projects.md | 1 + 1 file changed, 1 insertion(+) diff --git a/dotnet-projects.md b/dotnet-projects.md index df8930875..1bc2e7f0c 100644 --- a/dotnet-projects.md +++ b/dotnet-projects.md @@ -46,6 +46,7 @@ There are many .NET open source projects. You can always use a search engine to * [ILSpy](http://ilspy.net/) * [Mini Profiler](http://miniprofiler.com/) * [Protobuf-net](https://code.google.com/p/protobuf-net/) + * [scriptcs](http://scriptcs.net/) * [Snoop Wpf](https://github.com/cplotts/snoopwpf) * Testing From 21bdb5bd9ffa8df93508596706521e098a82234f Mon Sep 17 00:00:00 2001 From: Mattias Karlsson Date: Thu, 20 Nov 2014 16:56:59 +0100 Subject: [PATCH 035/872] Added Sql Bulk Sync MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit A lightweight, performant non-intrusive SQL Server data sync tool. It doesn’t use any triggers or events, but instead uses the change tracking features available from SQL Server 2008 and up. The tool was developed primary for syncing on premise SQL server data to Azure in an efficient way, where only the changes are transferred. But it will also work just fine between non cloud instances. --- dotnet-projects.md | 1 + 1 file changed, 1 insertion(+) diff --git a/dotnet-projects.md b/dotnet-projects.md index 1bc2e7f0c..d12be89f0 100644 --- a/dotnet-projects.md +++ b/dotnet-projects.md @@ -48,6 +48,7 @@ There are many .NET open source projects. You can always use a search engine to * [Protobuf-net](https://code.google.com/p/protobuf-net/) * [scriptcs](http://scriptcs.net/) * [Snoop Wpf](https://github.com/cplotts/snoopwpf) + * [Sql Bulk Copy Sync](https://github.com/WCOMAB/SqlBulkSync) * Testing * [moq](https://github.com/Moq/moq4) From 4353d6bae8c2dd38e514438db16a45ab9ad394cc Mon Sep 17 00:00:00 2001 From: Jonathan Channon Date: Thu, 20 Nov 2014 16:06:27 +0000 Subject: [PATCH 036/872] Update dotnet-projects.md --- dotnet-projects.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/dotnet-projects.md b/dotnet-projects.md index 1bc2e7f0c..8f9bf344f 100644 --- a/dotnet-projects.md +++ b/dotnet-projects.md @@ -10,12 +10,14 @@ There are many .NET open source projects. You can always use a search engine to * Languages * [IronScheme](http://ironscheme.codeplex.com) -* Web Platforms +* Web CMS * [DotNetNuke](https://dotnetnuke.codeplex.com/) - * [Nancy](http://nancyfx.org) * [Orchard](http://www.orchardproject.net/) * [Umbraco](http://umbraco.com/) +* Web Frameworks +* [Nancy](http://nancyfx.org) + * Libraries * [AngleSharp](https://github.com/FlorianRappl/AngleSharp) * [AzureNetQ](https://github.com/Roysvork/AzureNetQ) From ac4d349ea3357e5bbd00d6ba3917d3053315e6ed Mon Sep 17 00:00:00 2001 From: Jonathan Channon Date: Thu, 20 Nov 2014 16:08:41 +0000 Subject: [PATCH 037/872] Update dotnet-projects.md --- dotnet-projects.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dotnet-projects.md b/dotnet-projects.md index 8f9bf344f..a69156aef 100644 --- a/dotnet-projects.md +++ b/dotnet-projects.md @@ -16,7 +16,7 @@ There are many .NET open source projects. You can always use a search engine to * [Umbraco](http://umbraco.com/) * Web Frameworks -* [Nancy](http://nancyfx.org) + * [Nancy](http://nancyfx.org) * Libraries * [AngleSharp](https://github.com/FlorianRappl/AngleSharp) From e0945375def8dc2871c038295b6e7f8f5d8d7c6b Mon Sep 17 00:00:00 2001 From: Tony Abell Date: Thu, 20 Nov 2014 08:45:36 -0800 Subject: [PATCH 038/872] Update dotnet-projects.md added items from http://fsharp.org/community/projects/ --- dotnet-projects.md | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/dotnet-projects.md b/dotnet-projects.md index 1bc2e7f0c..fd88ee8bd 100644 --- a/dotnet-projects.md +++ b/dotnet-projects.md @@ -15,6 +15,8 @@ There are many .NET open source projects. You can always use a search engine to * [Nancy](http://nancyfx.org) * [Orchard](http://www.orchardproject.net/) * [Umbraco](http://umbraco.com/) + * [Suave](https://github.com/SuaveIO/suave) A lightweight web server and a set of combinators to manipulate route flow and task composition. + * [WebSharper](https://bitbucket.org/IntelliFactory/websharper) Web programming platform including a compiler from F# code to JavaScript. * Libraries * [AngleSharp](https://github.com/FlorianRappl/AngleSharp) @@ -29,6 +31,9 @@ There are many .NET open source projects. You can always use a search engine to * [SharpDX](https://github.com/sharpdx/SharpDX) * [Splat](https://github.com/paulcbetts/splat) * [WpfToolkit](https://github.com/dotnetprojects/wpftoolkit) + * [Math.NET Numerics](http://numerics.mathdotnet.com/) Provides methods and algorithms for numerical computations in science, engineering and every day use. + * [DiffSharp](http://gbaydin.github.io/DiffSharp/) Automatic Differentiation Library + * [Cricket](http://fsprojects.github.io/Cricket/) Actor library * Mvvm * [Caliburn Micro](http://caliburnmicro.com/) @@ -48,12 +53,21 @@ There are many .NET open source projects. You can always use a search engine to * [Protobuf-net](https://code.google.com/p/protobuf-net/) * [scriptcs](http://scriptcs.net/) * [Snoop Wpf](https://github.com/cplotts/snoopwpf) + * [FsEye](http://www.swensensoftware.com/fseye) A visual object tree inspector for the F# Interactive. + * [FAKE](http://fsharp.github.io/FAKE/) Build automation system with capabilities which are similar to make and rake. + * [Paket](http://fsprojects.github.io/Paket/) Dependency manager for .NET and Mono projects, which is designed to work well with NuGet packages and also enables referencing files directly from GitHub repositories. + * [FsharpLint](http://fsprojects.github.io/FSharpLint/) Lint tool for F#. + * [FsPickler](http://nessos.github.io/FsPickler/) Serialization library that facilitates the distribution of .NET objects. + * [](http://nessos.github.io/Vagrant/) Automated dependency resolution and dynamic assembly compilation framework. * Testing * [moq](https://github.com/Moq/moq4) * [NSubstitute](http://nsubstitute.github.io/) * [NUnit](https://github.com/nunit/nunit) * [xUnit](https://github.com/xunit/xunit) + * [FsCheck](https://fsharp.github.io/FsCheck/) A tool for testing .NET programs automatically. + * [canopy](http://lefthandedgoat.github.io/canopy/) A web testing framework. + * [tickspec](http://tickspec.codeplex.com/) A lightweight Behaviour Driven Development (BDD) framework. * Dependency Injection * [Autofac](http://autofac.org/) From 4490eaff605894b44093cb02ad99d85fdca06cb2 Mon Sep 17 00:00:00 2001 From: Matthijs ter Woord Date: Thu, 20 Nov 2014 17:47:45 +0100 Subject: [PATCH 039/872] Add Cosmos to platforms. --- dotnet-projects.md | 1 + 1 file changed, 1 insertion(+) diff --git a/dotnet-projects.md b/dotnet-projects.md index 1bc2e7f0c..7a3ab1e14 100644 --- a/dotnet-projects.md +++ b/dotnet-projects.md @@ -5,6 +5,7 @@ There are many .NET open source projects. You can always use a search engine to * Platforms * [.NET Core](https://github.com/dotnet/core) * [Castle Project](https://github.com/castleproject) + * [Cosmos](http://cosmos.codeplex.com/) * [Mono Project](https://github.com/mono/) * Languages From 0c3698d86cbf838d9d8927dfc6e65ea8fb42129a Mon Sep 17 00:00:00 2001 From: Adeel Date: Thu, 20 Nov 2014 17:24:18 +0000 Subject: [PATCH 040/872] added Nemerle in languages section --- dotnet-projects.md | 1 + 1 file changed, 1 insertion(+) diff --git a/dotnet-projects.md b/dotnet-projects.md index 1bc2e7f0c..c257e0908 100644 --- a/dotnet-projects.md +++ b/dotnet-projects.md @@ -9,6 +9,7 @@ There are many .NET open source projects. You can always use a search engine to * Languages * [IronScheme](http://ironscheme.codeplex.com) + * [Nemerle](https://github.com/rsdn/nemerle) * Web Platforms * [DotNetNuke](https://dotnetnuke.codeplex.com/) From cf89af9a7d763b0f3e9900388722f730cb660f2c Mon Sep 17 00:00:00 2001 From: nulltoken Date: Thu, 20 Nov 2014 19:28:07 +0100 Subject: [PATCH 041/872] Add LibGit2Sharp Git + .Net/Mono = :heart: LibGit2Sharp brings all the might and speed of libgit2, a native Git implementation, to the managed world of .Net and Mono. --- dotnet-projects.md | 1 + 1 file changed, 1 insertion(+) diff --git a/dotnet-projects.md b/dotnet-projects.md index 1bc2e7f0c..82d680d9f 100644 --- a/dotnet-projects.md +++ b/dotnet-projects.md @@ -24,6 +24,7 @@ There are many .NET open source projects. You can always use a search engine to * [EasyNetQ](https://github.com/mikehadlow/EasyNetQ) * [FluentValidation](https://github.com/JeremySkinner/FluentValidation) * [JSON.NET](http://json.net/) + * [LibGit2Sharp](http://libgit2sharp.com/) * [NodaTime](http://nodatime.org/) * [RestSharp](http://restsharp.org/) * [SharpDX](https://github.com/sharpdx/SharpDX) From 921e4b0a73c6e4480ff21ce9e065c57fa3d59bc5 Mon Sep 17 00:00:00 2001 From: Tim Heuer Date: Thu, 20 Nov 2014 13:54:43 -0800 Subject: [PATCH 042/872] Added one-line description for projects since some have names that are meaningless. Also corrected some typos. --- dotnet-projects.md | 102 ++++++++++++++++++++++----------------------- 1 file changed, 51 insertions(+), 51 deletions(-) diff --git a/dotnet-projects.md b/dotnet-projects.md index 1bc2e7f0c..e469cb22e 100644 --- a/dotnet-projects.md +++ b/dotnet-projects.md @@ -1,36 +1,36 @@ -# .NET Projects +# .NET Open Source Projects -There are many .NET open source projects. You can always use a search engine to find projects, and that's a good approach. This list is an intended to provide a showcase for projects that want it. It is itendeded to be community maintained. PR a change in and it will be accepted (modulo duplicates). Projects should be sorted alphabetically and GitHub links are preferred. +There are many .NET Open Source projects. You can always use a search engine to find projects, and that's a good approach. This list is intended to provide a showcase for projects that want it and to be community maintained. PR a change in and it will be accepted (modulo duplicates). Projects should be sorted alphabetically provide a one-line description and GitHub (or source) links are preferred over marketing sites. * Platforms - * [.NET Core](https://github.com/dotnet/core) - * [Castle Project](https://github.com/castleproject) - * [Mono Project](https://github.com/mono/) + * [.NET Core](https://github.com/dotnet/core) - Core .NET Framework + * [Castle Project](https://github.com/castleproject) - Umbrella project for ActiveRecord, DynamicProxy, MonoRail, Windsor + * [Mono Project](https://github.com/mono/) - Cross-platform implementation of .NET Framework. * Languages - * [IronScheme](http://ironscheme.codeplex.com) + * [IronScheme](http://ironscheme.codeplex.com) - A R6RS conforming Scheme-like implementation based on the Microsoft DLR. * Web Platforms - * [DotNetNuke](https://dotnetnuke.codeplex.com/) - * [Nancy](http://nancyfx.org) - * [Orchard](http://www.orchardproject.net/) - * [Umbraco](http://umbraco.com/) + * [DotNetNuke](https://dotnetnuke.codeplex.com/) - Web content management platform (CMS). + * [Nancy](http://nancyfx.org) - A lightweight, low-ceremony, framework for building HTTP based services on .NET and Mono. + * [Orchard](http://www.orchardproject.net/) - A community-focused Content Management System built on the ASP.NET MVC platform. + * [Umbraco](http://umbraco.com/) - Web content management platform (CMS). * Libraries - * [AngleSharp](https://github.com/FlorianRappl/AngleSharp) - * [AzureNetQ](https://github.com/Roysvork/AzureNetQ) - * [Cimbalino](http://cimbalino.org/) - * [DotNetOpenAuth](https://github.com/DotNetOpenAuth) - * [EasyNetQ](https://github.com/mikehadlow/EasyNetQ) - * [FluentValidation](https://github.com/JeremySkinner/FluentValidation) - * [JSON.NET](http://json.net/) - * [NodaTime](http://nodatime.org/) - * [RestSharp](http://restsharp.org/) - * [SharpDX](https://github.com/sharpdx/SharpDX) - * [Splat](https://github.com/paulcbetts/splat) - * [WpfToolkit](https://github.com/dotnetprojects/wpftoolkit) + * [AngleSharp](https://github.com/FlorianRappl/AngleSharp) - Ultimate angle brackets parser library. It parses HTML5, MathML, SVG and CSS to construct a DOM based on the official W3C specification. + * [AzureNetQ](https://github.com/Roysvork/AzureNetQ) - An easy to use .NET API for Azure Service Bus. + * [Cimbalino](http://cimbalino.org/) - A set of useful and powerful tools that will help you build your Windows Platform applications. + * [DotNetOpenAuth](https://github.com/DotNetOpenAuth) - Library that adds support for your site visitors to login with their OpenIDs by just dropping an ASP.NET control onto your page. + * [EasyNetQ](https://github.com/mikehadlow/EasyNetQ) - An easy to use .NET API for RabbitMQ. + * [FluentValidation](https://github.com/JeremySkinner/FluentValidation) - A small validation library for .NET that uses a fluent interface and lambda expressions for building validation rules. + * [JSON.NET](http://json.net/) - Popular high-performance JSON framework for .NET + * [NodaTime](http://nodatime.org/) - A better date and time API for .NET + * [RestSharp](http://restsharp.org/) - Simple REST and HTTP API Client for .NET + * [SharpDX](https://github.com/sharpdx/SharpDX) - SharpDX is a project delivering the full DirectX API for .NET on all Windows platforms. + * [Splat](https://github.com/paulcbetts/splat) - A library to make things cross-platform that should be. + * [WpfToolkit](https://github.com/dotnetprojects/wpftoolkit) - Fork of the MS WPF Toolkit -* Mvvm +* Model-View-ViewModel (MVVM) Frameworks * [Caliburn Micro](http://caliburnmicro.com/) * [Catel](http://catelproject.com/) * [MVVM Cross](https://github.com/MvvmCross/MvvmCross) @@ -40,45 +40,45 @@ There are many .NET open source projects. You can always use a search engine to * [Simple Mvvm Toolkit](http://simplemvvmtoolkit.codeplex.com/) * Tools - * [Fody](https://github.com/Fody/Fody) - * [GitVersion](https://github.com/ParticularLabs/GitVersion) - * [Glimpse](http://getglimpse.com) - * [ILSpy](http://ilspy.net/) - * [Mini Profiler](http://miniprofiler.com/) - * [Protobuf-net](https://code.google.com/p/protobuf-net/) - * [scriptcs](http://scriptcs.net/) - * [Snoop Wpf](https://github.com/cplotts/snoopwpf) + * [Fody](https://github.com/Fody/Fody) - Extensible tool for weaving .NET assemblies. + * [GitVersion](https://github.com/ParticularLabs/GitVersion) - Use convention to derive a SemVer product version from a GitFlow based repository. + * [Glimpse](http://getglimpse.com) - Providing real time diagnostics & insights to the fingertips of hundreds of thousands of developers daily. + * [ILSpy](http://ilspy.net/) - ILSpy is the open-source .NET assembly browser and decompiler. + * [Mini Profiler](http://miniprofiler.com/) - A simple but effective mini-profiler for .NET and Ruby. + * [Protobuf-net](https://code.google.com/p/protobuf-net/) - A .NET implementation of protobuf, allowing you to serialize your .NET objects efficiently and easily. + * [scriptcs](http://scriptcs.net/) - scriptcs makes it easy to write and execute C# with a simple text editor. + * [Snoop WPF](https://github.com/cplotts/snoopwpf) - Snoop - The WPF Spy Utility * Testing - * [moq](https://github.com/Moq/moq4) - * [NSubstitute](http://nsubstitute.github.io/) - * [NUnit](https://github.com/nunit/nunit) - * [xUnit](https://github.com/xunit/xunit) + * [moq](https://github.com/Moq/moq4) - The most popular and friendly mocking framework for .NET + * [NSubstitute](http://nsubstitute.github.io/) - A friendly substitute for .NET mocking frameworks. + * [NUnit](https://github.com/nunit/nunit) - NUnit is a unit-testing framework for all .NET languages. + * [xUnit](https://github.com/xunit/xunit) - xUnit.net is a community-focused unit testing tool for the .NET Framework. * Dependency Injection - * [Autofac](http://autofac.org/) - * [Funq](https://funq.codeplex.com/) - * [Ninject for Desktop](http://www.ninject.org/) - * [Ninject for Portable Class Libraries, Universal apps and Xamarin](https://github.com/onovotny/ninject) - * [TinyIoC](https://github.com/grumpydev/TinyIoC) + * [Autofac](http://autofac.org/) - Autofac is an addictive Inversion of Control container for .NET 4.5, Silverlight 5, Windows Store apps, and Windows Phone 8 apps. + * [Funq](https://funq.codeplex.com/) - A fast DI container you can understand. + * [Ninject for Desktop](http://www.ninject.org/) - Dependency injector for .NET + * [Ninject for Portable Class Libraries, Universal apps and Xamarin](https://github.com/onovotny/ninject) + * [TinyIoC](https://github.com/grumpydev/TinyIoC) - An easy to use, hassle free, Inversion of Control Container for small projects, libraries and beginners alike. * Data Access - * [Dapper](https://github.com/StackExchange/dapper-dot-net) - * [NHibernate](https://github.com/nhibernate) - * [Simple Data](https://github.com/markrendle/Simple.Data) - * [Sqlite-net](https://github.com/praeclarum/sqlite-net) - * [NMEA Parser](https://github.com/dotMorten/NmeaParser) + * [Dapper](https://github.com/StackExchange/dapper-dot-net) - Dapper is a single file you can drop in to your project that will extend your IDbConnection interface. + * [NHibernate](https://github.com/nhibernate) - Object Relational Mapper + * [Simple Data](https://github.com/markrendle/Simple.Data) - A light-weight, dynamic data access component for C# 4.0. + * [Sqlite-net](https://github.com/praeclarum/sqlite-net) - Simple, powerful, cross-platform SQLite client and ORM. + * [NMEA Parser](https://github.com/dotMorten/NmeaParser) - Library for handling NMEA message in Windows Desktop, Store, Phone and Xamarin (Android + iOS), coming from files, Bluetooth, serial port or any stream. * Games - * [MonoGame](http://monogame.net) - * [Paradox](https://github.com/SiliconStudio/paradox) + * [MonoGame](http://monogame.net) - One framework for creating powerful cross-platform games. + * [Paradox](https://github.com/SiliconStudio/paradox) - Paradox is a versatile and engaging game engine. * Control libraries - * [Callisto](https://github.com/timheuer/callisto) - * [OpenRA](https://github.com/OpenRA/OpenRA) + * [Callisto](https://github.com/timheuer/callisto) - UI Control Toolkit for WinRT apps + * [OpenRA](https://github.com/OpenRA/OpenRA) - An open-source implementation of the Command & Conquer: Red Alert engine using .NET/Mono and OpenGL. This list is just a starting point - also take a look at all the projects on [CodePlex](http://www.codeplex.com/) and on [GitHub Trending C#](https://github.com/trending?l=csharp). -Thanks to @slodge for providing the initial list. +Thanks to [@slodge](http://twitter.com/slodge "@slodge on Twitter") for providing the initial list. -@quozd hosts an [Awesome .NET!](https://github.com/quozd/awesome-dotnet) list. Also worth checking out. +[@quozd](http://twitter.com/quozd "@quozd on Twitter") hosts an [Awesome .NET!](https://github.com/quozd/awesome-dotnet) list. Also worth checking out. From caccafedd59a8c57d7dff7842be37847ef79467f Mon Sep 17 00:00:00 2001 From: Dave Timmins Date: Fri, 21 Nov 2014 11:11:34 +1300 Subject: [PATCH 043/872] Update dotnet-projects.md Added ArcGIS.PCL and ColoredConsole --- dotnet-projects.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/dotnet-projects.md b/dotnet-projects.md index 1bc2e7f0c..a9e6329e3 100644 --- a/dotnet-projects.md +++ b/dotnet-projects.md @@ -18,8 +18,10 @@ There are many .NET open source projects. You can always use a search engine to * Libraries * [AngleSharp](https://github.com/FlorianRappl/AngleSharp) + * [ArcGIS.PCL](https://github.com/davetimmins/ArcGIS.PCL) * [AzureNetQ](https://github.com/Roysvork/AzureNetQ) * [Cimbalino](http://cimbalino.org/) + * [ColoredConsole](https://github.com/colored-console/colored-console) * [DotNetOpenAuth](https://github.com/DotNetOpenAuth) * [EasyNetQ](https://github.com/mikehadlow/EasyNetQ) * [FluentValidation](https://github.com/JeremySkinner/FluentValidation) From b46b9d7ffb3ebbbcc480d17567df92281a94734e Mon Sep 17 00:00:00 2001 From: Craig Deubler Date: Fri, 21 Nov 2014 09:13:36 +1100 Subject: [PATCH 044/872] Added: StackExchange.Redis, libgit2sharp, FakeItEasy, TopShelf & Quartz.Net Added a few projects I rely on. --- dotnet-projects.md | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/dotnet-projects.md b/dotnet-projects.md index 1bc2e7f0c..9923b96ff 100644 --- a/dotnet-projects.md +++ b/dotnet-projects.md @@ -42,6 +42,7 @@ There are many .NET open source projects. You can always use a search engine to * Tools * [Fody](https://github.com/Fody/Fody) * [GitVersion](https://github.com/ParticularLabs/GitVersion) + * [LibGit2Sharp](https://github.com/libgit2/libgit2sharp) * [Glimpse](http://getglimpse.com) * [ILSpy](http://ilspy.net/) * [Mini Profiler](http://miniprofiler.com/) @@ -54,6 +55,7 @@ There are many .NET open source projects. You can always use a search engine to * [NSubstitute](http://nsubstitute.github.io/) * [NUnit](https://github.com/nunit/nunit) * [xUnit](https://github.com/xunit/xunit) + * [FakeItEasy](https://github.com/FakeItEasy/FakeItEasy) * Dependency Injection * [Autofac](http://autofac.org/) @@ -68,7 +70,8 @@ There are many .NET open source projects. You can always use a search engine to * [Simple Data](https://github.com/markrendle/Simple.Data) * [Sqlite-net](https://github.com/praeclarum/sqlite-net) * [NMEA Parser](https://github.com/dotMorten/NmeaParser) - + * [StackExchange.Redis](https://github.com/StackExchange/StackExchange.Redis) + * Games * [MonoGame](http://monogame.net) * [Paradox](https://github.com/SiliconStudio/paradox) @@ -77,6 +80,14 @@ There are many .NET open source projects. You can always use a search engine to * [Callisto](https://github.com/timheuer/callisto) * [OpenRA](https://github.com/OpenRA/OpenRA) +* Windows Services + * [TopShelf](https://github.com/Topshelf/Topshelf) + +* Scheduling + * [Quartz.Net](https://github.com/quartznet/quartznet) + + + This list is just a starting point - also take a look at all the projects on [CodePlex](http://www.codeplex.com/) and on [GitHub Trending C#](https://github.com/trending?l=csharp). Thanks to @slodge for providing the initial list. From e428c27dffd935075362089808a61d959c31e5a2 Mon Sep 17 00:00:00 2001 From: Dave Glick Date: Thu, 20 Nov 2014 17:15:09 -0500 Subject: [PATCH 045/872] Update dotnet-projects.md Added FluentBootstrap --- dotnet-projects.md | 1 + 1 file changed, 1 insertion(+) diff --git a/dotnet-projects.md b/dotnet-projects.md index 1bc2e7f0c..75c8c8e2c 100644 --- a/dotnet-projects.md +++ b/dotnet-projects.md @@ -22,6 +22,7 @@ There are many .NET open source projects. You can always use a search engine to * [Cimbalino](http://cimbalino.org/) * [DotNetOpenAuth](https://github.com/DotNetOpenAuth) * [EasyNetQ](https://github.com/mikehadlow/EasyNetQ) + * [FluentBootstrap](https://github.com/somedave/FluentBootstrap) * [FluentValidation](https://github.com/JeremySkinner/FluentValidation) * [JSON.NET](http://json.net/) * [NodaTime](http://nodatime.org/) From 70c32a745f851f781d147863b92e2e62e87922e5 Mon Sep 17 00:00:00 2001 From: SLaks Date: Thu, 20 Nov 2014 17:51:06 -0500 Subject: [PATCH 046/872] Fix link to .Net Core repo --- dotnet-projects.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dotnet-projects.md b/dotnet-projects.md index 1bc2e7f0c..4b4befe8b 100644 --- a/dotnet-projects.md +++ b/dotnet-projects.md @@ -3,7 +3,7 @@ There are many .NET open source projects. You can always use a search engine to find projects, and that's a good approach. This list is an intended to provide a showcase for projects that want it. It is itendeded to be community maintained. PR a change in and it will be accepted (modulo duplicates). Projects should be sorted alphabetically and GitHub links are preferred. * Platforms - * [.NET Core](https://github.com/dotnet/core) + * [.NET Core](https://github.com/dotnet/corefx) * [Castle Project](https://github.com/castleproject) * [Mono Project](https://github.com/mono/) From 38d55f90db3325ccdc373908846ff6e6e844f1fe Mon Sep 17 00:00:00 2001 From: Joe Brinkman Date: Thu, 20 Nov 2014 21:32:53 -0500 Subject: [PATCH 047/872] Update dotnet-projects.md DotNetNuke was rebranded in July 2013 to DNN. --- dotnet-projects.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dotnet-projects.md b/dotnet-projects.md index 1bc2e7f0c..90e00a870 100644 --- a/dotnet-projects.md +++ b/dotnet-projects.md @@ -11,7 +11,7 @@ There are many .NET open source projects. You can always use a search engine to * [IronScheme](http://ironscheme.codeplex.com) * Web Platforms - * [DotNetNuke](https://dotnetnuke.codeplex.com/) + * [DNN (formerly DotNetNuke)](https://dotnetnuke.codeplex.com/) * [Nancy](http://nancyfx.org) * [Orchard](http://www.orchardproject.net/) * [Umbraco](http://umbraco.com/) From a70fd941424d35208ef734ea33ed11fd72bc1922 Mon Sep 17 00:00:00 2001 From: Christian Weyer Date: Fri, 21 Nov 2014 07:41:19 +0100 Subject: [PATCH 048/872] Update dotnet-projects.md --- dotnet-projects.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/dotnet-projects.md b/dotnet-projects.md index b9825af50..60efada25 100644 --- a/dotnet-projects.md +++ b/dotnet-projects.md @@ -12,6 +12,10 @@ There are many .NET open source projects. You can always use a search engine to * [IronScheme](http://ironscheme.codeplex.com) * [Nemerle](https://github.com/rsdn/nemerle) +* Security / Identity Management + * [Thinktecture IdentityServer](https://github.com/thinktecture/Thinktecture.IdentityServer.v3) + * [Thinktecture IdentityManager](https://github.com/thinktecture/Thinktecture.IdentityManager) + * Web CMS * [DNN (formerly DotNetNuke)](https://dotnetnuke.codeplex.com/) * [Orchard](http://www.orchardproject.net/) From 25fc88aba7943072d680503f1def6cbc94a3e333 Mon Sep 17 00:00:00 2001 From: Anders Abel Date: Fri, 21 Nov 2014 08:57:13 +0100 Subject: [PATCH 049/872] Added Kentor.AuthServices SAML2 Service Provider. --- dotnet-projects.md | 1 + 1 file changed, 1 insertion(+) diff --git a/dotnet-projects.md b/dotnet-projects.md index b9825af50..93ef40444 100644 --- a/dotnet-projects.md +++ b/dotnet-projects.md @@ -34,6 +34,7 @@ There are many .NET open source projects. You can always use a search engine to * [FluentBootstrap](https://github.com/somedave/FluentBootstrap) * [FluentValidation](https://github.com/JeremySkinner/FluentValidation) * [JSON.NET](http://json.net/) + * [Kentor.AuthServices](https://github.com/KentorIT/authservices) A SAML2 Service Provider for .NET. * [LibGit2Sharp](http://libgit2sharp.com/) * [NodaTime](http://nodatime.org/) * [PocketSharp](https://github.com/ceee/PocketSharp) From 3b968671edfec5d535e9f50a57662768103afed6 Mon Sep 17 00:00:00 2001 From: Frans Bouma Date: Fri, 21 Nov 2014 10:15:15 +0100 Subject: [PATCH 050/872] Added: - ADO.NET provider category - Npgsql & Firebird ADO.NET providers - Algorithmia library Didn't sort the contributions, but it's perhaps a good idea to sort them alphabetically and add 1 line descriptions? --- dotnet-projects.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/dotnet-projects.md b/dotnet-projects.md index b9825af50..d4d1cadd2 100644 --- a/dotnet-projects.md +++ b/dotnet-projects.md @@ -22,7 +22,12 @@ There are many .NET open source projects. You can always use a search engine to * Web Frameworks * [Nancy](http://nancyfx.org) +* ADO.NET providers + * [Npgsql] (https://github.com/npgsql/npgsql) PostgreSQL + * [Firebird .NET client] (https://sourceforge.net/p/firebird/NETProvider/) Firebird + * Libraries + * [Algorithmia] (https://github.com/SolutionsDesign/Algorithmia) Algorithms and Data structures * [AngleSharp](https://github.com/FlorianRappl/AngleSharp) * [ArcGIS.PCL](https://github.com/davetimmins/ArcGIS.PCL) * [AzureNetQ](https://github.com/Roysvork/AzureNetQ) From 66c894268dedb579a42d480ff5bc3de1db422019 Mon Sep 17 00:00:00 2001 From: Diego Guidi Date: Fri, 21 Nov 2014 11:23:33 +0100 Subject: [PATCH 051/872] Update dotnet-projects.md Added two GIS libraries that I contribute to --- dotnet-projects.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/dotnet-projects.md b/dotnet-projects.md index b9825af50..07fe62b4c 100644 --- a/dotnet-projects.md +++ b/dotnet-projects.md @@ -44,6 +44,8 @@ There are many .NET open source projects. You can always use a search engine to * [Math.NET Numerics](http://numerics.mathdotnet.com/) Provides methods and algorithms for numerical computations in science, engineering and every day use. * [DiffSharp](http://gbaydin.github.io/DiffSharp/) Automatic Differentiation Library * [Cricket](http://fsprojects.github.io/Cricket/) Actor library + * [NetTopologySuite](https://github.com/NetTopologySuite/NetTopologySuite/) A .NET GIS solution that is fast and reliable for the .NET platform + * [SharpMap](https://sharpmap.codeplex.com/) An easy-to-use mapping library for use in web and desktop applications * Mvvm * [Caliburn Micro](http://caliburnmicro.com/) From 5c9a920a6353da2a8c2731f5731803ab8f95b725 Mon Sep 17 00:00:00 2001 From: Ben Abelshausen Date: Fri, 21 Nov 2014 12:47:24 +0100 Subject: [PATCH 052/872] Added OsmSharp and NTS. --- dotnet-projects.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/dotnet-projects.md b/dotnet-projects.md index b9825af50..6c5c3ea49 100644 --- a/dotnet-projects.md +++ b/dotnet-projects.md @@ -35,7 +35,9 @@ There are many .NET open source projects. You can always use a search engine to * [FluentValidation](https://github.com/JeremySkinner/FluentValidation) * [JSON.NET](http://json.net/) * [LibGit2Sharp](http://libgit2sharp.com/) + * [NetTopologySuite](https://github.com/NetTopologySuite) A .NET port of the JTS Topology Suite. * [NodaTime](http://nodatime.org/) + * [OsmSharp](https://github.com/OsmSharp) Mapping & Routing library. * [PocketSharp](https://github.com/ceee/PocketSharp) * [RestSharp](http://restsharp.org/) * [SharpDX](https://github.com/sharpdx/SharpDX) From 6c23d540a7f0203394995590090ab2e55e0e6967 Mon Sep 17 00:00:00 2001 From: Adeel Date: Fri, 21 Nov 2014 13:17:46 +0000 Subject: [PATCH 053/872] added a description for Nemerle project --- dotnet-projects.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dotnet-projects.md b/dotnet-projects.md index b9825af50..333883300 100644 --- a/dotnet-projects.md +++ b/dotnet-projects.md @@ -10,7 +10,7 @@ There are many .NET open source projects. You can always use a search engine to * Languages * [IronScheme](http://ironscheme.codeplex.com) - * [Nemerle](https://github.com/rsdn/nemerle) + * [Nemerle](https://github.com/rsdn/nemerle) A high-level statically-typed programming language which offers functional, object-oriented and imperative features and has a simple C# like syntax and a powerful meta-programming system. * Web CMS * [DNN (formerly DotNetNuke)](https://dotnetnuke.codeplex.com/) From 698d82c77d9f235df2ae74b97ee8fb940dd494c9 Mon Sep 17 00:00:00 2001 From: Jan Karger Date: Fri, 21 Nov 2014 20:59:27 +0100 Subject: [PATCH 054/872] Add MahApps.Metro toolkit to Libraries also fix minor empty spaces.... --- dotnet-projects.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/dotnet-projects.md b/dotnet-projects.md index 2aad24aba..7aeb4c1ec 100644 --- a/dotnet-projects.md +++ b/dotnet-projects.md @@ -38,8 +38,8 @@ There are many .NET Open Source projects. You can always use a search engine to * [Cimbalino](http://cimbalino.org/) - A set of useful and powerful tools that will help you build your Windows Platform applications. * [Coding4Fun Toolkit](http://coding4fun.codeplex.com/) * [ColoredConsole](https://github.com/colored-console/colored-console) - * [Cricket](http://fsprojects.github.io/Cricket/) - Actor library -* [DiffSharp](http://gbaydin.github.io/DiffSharp/) Automatic Differentiation Library + * [Cricket](http://fsprojects.github.io/Cricket/) - Actor library + * [DiffSharp](http://gbaydin.github.io/DiffSharp/) Automatic Differentiation Library * [DotNetOpenAuth](https://github.com/DotNetOpenAuth) - Library that adds support for your site visitors to login with their OpenIDs by just dropping an ASP.NET control onto your page. * [EasyNetQ](https://github.com/mikehadlow/EasyNetQ) - An easy to use .NET API for RabbitMQ. * [FluentBootstrap](https://github.com/somedave/FluentBootstrap) @@ -58,6 +58,7 @@ There are many .NET Open Source projects. You can always use a search engine to * [SharpMap](https://sharpmap.codeplex.com/) An easy-to-use mapping library for use in web and desktop applications * [Splat](https://github.com/paulcbetts/splat) - A library to make things cross-platform that should be. * [WpfToolkit](https://github.com/dotnetprojects/wpftoolkit) - Fork of the MS WPF Toolkit + * [MahApps.Metro](https://github.com/MahApps/MahApps.Metro) - A toolkit for creating metro-style WPF applications. * Model-View-ViewModel (MVVM) Frameworks * [Caliburn Micro](http://caliburnmicro.com/) @@ -99,7 +100,7 @@ There are many .NET Open Source projects. You can always use a search engine to * [Autofac](http://autofac.org/) - Autofac is an addictive Inversion of Control container for .NET 4.5, Silverlight 5, Windows Store apps, and Windows Phone 8 apps. * [Funq](https://funq.codeplex.com/) - A fast DI container you can understand. * [Ninject for Desktop](http://www.ninject.org/) - Dependency injector for .NET - * [Ninject for Portable Class Libraries, Universal apps and Xamarin](https://github.com/onovotny/ninject) + * [Ninject for Portable Class Libraries, Universal apps and Xamarin](https://github.com/onovotny/ninject) * [TinyIoC](https://github.com/grumpydev/TinyIoC) - An easy to use, hassle free, Inversion of Control Container for small projects, libraries and beginners alike. * Data Access From 864cce4b4fbc094ccc5f6a2345c87b66dd007600 Mon Sep 17 00:00:00 2001 From: ScottIsAFool Date: Fri, 21 Nov 2014 21:58:03 +0000 Subject: [PATCH 055/872] Added commercial-projects.md Also corrected spelling mistake in dotnet-projects.md --- commercial-projects.md | 11 +++++++++++ dotnet-projects.md | 2 +- 2 files changed, 12 insertions(+), 1 deletion(-) create mode 100644 commercial-projects.md diff --git a/commercial-projects.md b/commercial-projects.md new file mode 100644 index 000000000..7634e7d95 --- /dev/null +++ b/commercial-projects.md @@ -0,0 +1,11 @@ +# .NET Commercial Projects + +There are many .NET based open source commercial projects. You can always use a search engine to find projects, and that's a good approach. This list is an intended to provide a showcase for projects that want it. It is intended to be community maintained. PR a change in and it will be accepted (modulo duplicates). Projects should be sorted alphabetically and project source links and product website are allowed. + +* Media Streaming + * [Media Browser](https://github.com/mediabrowser/) - [www.mediabrowser.tv](http://www.mediabrowser.tv) + + +This list is just a starting point - also take a look at all the projects on [CodePlex](http://www.codeplex.com/) and on [GitHub Trending C#](https://github.com/trending?l=csharp). + +Thanks to @scottisafool for providing the initial list. diff --git a/dotnet-projects.md b/dotnet-projects.md index 86a28432a..b9a48e419 100644 --- a/dotnet-projects.md +++ b/dotnet-projects.md @@ -1,6 +1,6 @@ # .NET Projects -There are many .NET open source projects. You can always use a search engine to find projects, and that's a good approach. This list is an intended to provide a showcase for projects that want it. It is itendeded to be community maintained. PR a change in and it will be accepted (modulo duplicates). Projects should be sorted alphabetically and GitHub links are preferred. +There are many .NET open source projects. You can always use a search engine to find projects, and that's a good approach. This list is an intended to provide a showcase for projects that want it. It is intended to be community maintained. PR a change in and it will be accepted (modulo duplicates). Projects should be sorted alphabetically and GitHub links are preferred. * Platforms * [.NET Core](https://github.com/dotnet/core) From 58bc98f7ec785fde05324b4ba6e672f1d7e18719 Mon Sep 17 00:00:00 2001 From: Jan Karger Date: Fri, 21 Nov 2014 23:03:03 +0100 Subject: [PATCH 056/872] Add GongSolutions.Wpf.DragDrop library and sort MahApps.Metro too... --- dotnet-projects.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/dotnet-projects.md b/dotnet-projects.md index 7aeb4c1ec..c39ed0981 100644 --- a/dotnet-projects.md +++ b/dotnet-projects.md @@ -44,9 +44,11 @@ There are many .NET Open Source projects. You can always use a search engine to * [EasyNetQ](https://github.com/mikehadlow/EasyNetQ) - An easy to use .NET API for RabbitMQ. * [FluentBootstrap](https://github.com/somedave/FluentBootstrap) * [FluentValidation](https://github.com/JeremySkinner/FluentValidation) - A small validation library for .NET that uses a fluent interface and lambda expressions for building validation rules. + * [GongSolutions.Wpf.DragDrop](https://github.com/punker76/gong-wpf-dragdrop) A drag'n'drop framework for WPF. * [ImageProcessor](http://imageprocessor.org/) * [Kentor.AuthServices](https://github.com/KentorIT/authservices) A SAML2 Service Provider for .NET. * [LibGit2Sharp](https://github.com/libgit2/libgit2sharp) + * [MahApps.Metro](https://github.com/MahApps/MahApps.Metro) - A toolkit for creating metro-style WPF applications. * [Math.NET Numerics](http://numerics.mathdotnet.com/) Provides methods and algorithms for numerical computations in science, engineering and every day use. * [NetTopologySuite](https://github.com/NetTopologySuite) A .NET port of the JTS Topology Suite. * [JSON.NET](http://json.net/) - Popular high-performance JSON framework for .NET @@ -58,7 +60,6 @@ There are many .NET Open Source projects. You can always use a search engine to * [SharpMap](https://sharpmap.codeplex.com/) An easy-to-use mapping library for use in web and desktop applications * [Splat](https://github.com/paulcbetts/splat) - A library to make things cross-platform that should be. * [WpfToolkit](https://github.com/dotnetprojects/wpftoolkit) - Fork of the MS WPF Toolkit - * [MahApps.Metro](https://github.com/MahApps/MahApps.Metro) - A toolkit for creating metro-style WPF applications. * Model-View-ViewModel (MVVM) Frameworks * [Caliburn Micro](http://caliburnmicro.com/) From aeb99576684dc40999a738f847d3aa45c180d328 Mon Sep 17 00:00:00 2001 From: Pedro Lamas Date: Sat, 22 Nov 2014 18:47:39 +0000 Subject: [PATCH 057/872] Corrected Cimbalino Toolkit naming --- dotnet-projects.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dotnet-projects.md b/dotnet-projects.md index c39ed0981..1560ae791 100644 --- a/dotnet-projects.md +++ b/dotnet-projects.md @@ -35,7 +35,7 @@ There are many .NET Open Source projects. You can always use a search engine to * [AngleSharp](https://github.com/FlorianRappl/AngleSharp) - Ultimate angle brackets parser library. It parses HTML5, MathML, SVG and CSS to construct a DOM based on the official W3C specification. * [ArcGIS.PCL](https://github.com/davetimmins/ArcGIS.PCL) * [AzureNetQ](https://github.com/Roysvork/AzureNetQ) - An easy to use .NET API for Azure Service Bus. - * [Cimbalino](http://cimbalino.org/) - A set of useful and powerful tools that will help you build your Windows Platform applications. + * [Cimbalino Toolkit](http://cimbalino.org/) - A set of useful and powerful tools that will help you build your Windows Platform applications. * [Coding4Fun Toolkit](http://coding4fun.codeplex.com/) * [ColoredConsole](https://github.com/colored-console/colored-console) * [Cricket](http://fsprojects.github.io/Cricket/) - Actor library From 77de8abbb95bc945eff42a1659a4760eb9abb658 Mon Sep 17 00:00:00 2001 From: Petar Repac Date: Sat, 22 Nov 2014 22:24:53 +0100 Subject: [PATCH 058/872] added Lucene.Net --- dotnet-projects.md | 1 + 1 file changed, 1 insertion(+) diff --git a/dotnet-projects.md b/dotnet-projects.md index c39ed0981..f0a57745a 100644 --- a/dotnet-projects.md +++ b/dotnet-projects.md @@ -48,6 +48,7 @@ There are many .NET Open Source projects. You can always use a search engine to * [ImageProcessor](http://imageprocessor.org/) * [Kentor.AuthServices](https://github.com/KentorIT/authservices) A SAML2 Service Provider for .NET. * [LibGit2Sharp](https://github.com/libgit2/libgit2sharp) + * [Lucene.Net](https://github.com/apache/lucene.net) * [MahApps.Metro](https://github.com/MahApps/MahApps.Metro) - A toolkit for creating metro-style WPF applications. * [Math.NET Numerics](http://numerics.mathdotnet.com/) Provides methods and algorithms for numerical computations in science, engineering and every day use. * [NetTopologySuite](https://github.com/NetTopologySuite) A .NET port of the JTS Topology Suite. From 0d2cb9053c582913014562002f649c378b3ef7b8 Mon Sep 17 00:00:00 2001 From: ScottIsAFool Date: Sun, 23 Nov 2014 15:57:47 +0000 Subject: [PATCH 059/872] Renamed from commercial projects to consumer --- commercial-projects.md | 11 ----------- consumer-projects.md | 11 +++++++++++ 2 files changed, 11 insertions(+), 11 deletions(-) delete mode 100644 commercial-projects.md create mode 100644 consumer-projects.md diff --git a/commercial-projects.md b/commercial-projects.md deleted file mode 100644 index 7634e7d95..000000000 --- a/commercial-projects.md +++ /dev/null @@ -1,11 +0,0 @@ -# .NET Commercial Projects - -There are many .NET based open source commercial projects. You can always use a search engine to find projects, and that's a good approach. This list is an intended to provide a showcase for projects that want it. It is intended to be community maintained. PR a change in and it will be accepted (modulo duplicates). Projects should be sorted alphabetically and project source links and product website are allowed. - -* Media Streaming - * [Media Browser](https://github.com/mediabrowser/) - [www.mediabrowser.tv](http://www.mediabrowser.tv) - - -This list is just a starting point - also take a look at all the projects on [CodePlex](http://www.codeplex.com/) and on [GitHub Trending C#](https://github.com/trending?l=csharp). - -Thanks to @scottisafool for providing the initial list. diff --git a/consumer-projects.md b/consumer-projects.md new file mode 100644 index 000000000..ecfe1ed47 --- /dev/null +++ b/consumer-projects.md @@ -0,0 +1,11 @@ +# .NET Consumer Projects + +There are many .NET based open source consumer projects. You can always use a search engine to find projects, and that's a good approach. This list is an intended to provide a showcase for projects that want it. It is intended to be community maintained. PR a change in and it will be accepted (modulo duplicates). Projects should be sorted alphabetically and project source links and product website are allowed. This list could include desktop applications, websites, mobile apps, etc. + +* Media Streaming + * [Media Browser](https://github.com/mediabrowser/) - [www.mediabrowser.tv](http://www.mediabrowser.tv) + + +This list is just a starting point - also take a look at all the projects on [CodePlex](http://www.codeplex.com/) and on [GitHub Trending C#](https://github.com/trending?l=csharp). + +Thanks to @scottisafool for providing the initial list. From 4a7ffce62e1c189c12456bdf83bd1b166ecd3a62 Mon Sep 17 00:00:00 2001 From: Rob Hruska Date: Sun, 23 Nov 2014 11:51:23 -0600 Subject: [PATCH 060/872] Add HudlFfmpeg and Mjolnir --- dotnet-projects.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/dotnet-projects.md b/dotnet-projects.md index c39ed0981..0c9c57bec 100644 --- a/dotnet-projects.md +++ b/dotnet-projects.md @@ -45,11 +45,13 @@ There are many .NET Open Source projects. You can always use a search engine to * [FluentBootstrap](https://github.com/somedave/FluentBootstrap) * [FluentValidation](https://github.com/JeremySkinner/FluentValidation) - A small validation library for .NET that uses a fluent interface and lambda expressions for building validation rules. * [GongSolutions.Wpf.DragDrop](https://github.com/punker76/gong-wpf-dragdrop) A drag'n'drop framework for WPF. + * [HudlFfmpeg](https://github.com/hudl/HudlFfmpeg) - A/V transcoding framework that helps build complex FFmpeg commands. * [ImageProcessor](http://imageprocessor.org/) * [Kentor.AuthServices](https://github.com/KentorIT/authservices) A SAML2 Service Provider for .NET. * [LibGit2Sharp](https://github.com/libgit2/libgit2sharp) * [MahApps.Metro](https://github.com/MahApps/MahApps.Metro) - A toolkit for creating metro-style WPF applications. * [Math.NET Numerics](http://numerics.mathdotnet.com/) Provides methods and algorithms for numerical computations in science, engineering and every day use. + * [Mjolnir](https://github.com/hudl/Mjolnir) - [Hystrix](https://github.com/Netflix/Hystrix)-inspired fault tolerance with circuit breakers and thread pools. * [NetTopologySuite](https://github.com/NetTopologySuite) A .NET port of the JTS Topology Suite. * [JSON.NET](http://json.net/) - Popular high-performance JSON framework for .NET * [NodaTime](http://nodatime.org/) - A better date and time API for .NET From 6cb3fef1263570aadf6c1b42d8b1c3031df646ff Mon Sep 17 00:00:00 2001 From: Geert van Horrik Date: Sun, 23 Nov 2014 22:01:13 +0100 Subject: [PATCH 061/872] Updated Catel info --- dotnet-projects.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/dotnet-projects.md b/dotnet-projects.md index d8549123c..d9602548b 100644 --- a/dotnet-projects.md +++ b/dotnet-projects.md @@ -5,6 +5,7 @@ There are many .NET Open Source projects. You can always use a search engine to * Platforms * [.NET Core](https://github.com/dotnet/corefx) - Core .NET Framework * [Castle Project](https://github.com/castleproject) - Umbrella project for ActiveRecord, DynamicProxy, MonoRail, Windsor + * [Catel](http://catelproject.com/) - Application platform with IoC, logging, reflection and much more that serves as a base for applications that must be ready for future growth. * [Cosmos](http://cosmos.codeplex.com/) * [Mono Project](https://github.com/mono/) - Cross-platform implementation of .NET Framework. @@ -66,7 +67,7 @@ There are many .NET Open Source projects. You can always use a search engine to * Model-View-ViewModel (MVVM) Frameworks * [Caliburn Micro](http://caliburnmicro.com/) - * [Catel](http://catelproject.com/) + * [Catel.MVVM](http://catelproject.com/) * [MVVM Cross](https://github.com/MvvmCross/MvvmCross) * [MVVM Light Toolkit](http://www.mvvmlight.net) * [Radical](https://github.com/RadicalFx/radical) From c26fe721544d0d6806b9c5051b2914776daef66e Mon Sep 17 00:00:00 2001 From: Geert van Horrik Date: Sun, 23 Nov 2014 22:05:16 +0100 Subject: [PATCH 062/872] Added GitLink to tools --- dotnet-projects.md | 1 + 1 file changed, 1 insertion(+) diff --git a/dotnet-projects.md b/dotnet-projects.md index d8549123c..1dae4fd21 100644 --- a/dotnet-projects.md +++ b/dotnet-projects.md @@ -79,6 +79,7 @@ There are many .NET Open Source projects. You can always use a search engine to * [FsEye](http://www.swensensoftware.com/fseye) A visual object tree inspector for the F# Interactive. * [FsPickler](http://nessos.github.io/FsPickler/) Serialization library that facilitates the distribution of .NET objects. * [FsharpLint](http://fsprojects.github.io/FSharpLint/) Lint tool for F#. + * [GitLink](https://github.com/CatenaLogic/GitLink) - Command-line tool to make .NET open source accessible without the need for a symbols server * [GitVersion](https://github.com/ParticularLabs/GitVersion) - Use convention to derive a SemVer product version from a GitFlow based repository. * [Glimpse](http://getglimpse.com) - Providing real time diagnostics & insights to the fingertips of hundreds of thousands of developers daily. * [ILSpy](http://ilspy.net/) - ILSpy is the open-source .NET assembly browser and decompiler. From 0c6d30540a7a1a4ef75ac2f6a15a952718aa6d45 Mon Sep 17 00:00:00 2001 From: Jason Roberts Date: Mon, 24 Nov 2014 11:33:06 +0800 Subject: [PATCH 063/872] Added FeatureToggle to libs --- dotnet-projects.md | 1 + 1 file changed, 1 insertion(+) diff --git a/dotnet-projects.md b/dotnet-projects.md index b204afc81..fa49fe910 100644 --- a/dotnet-projects.md +++ b/dotnet-projects.md @@ -43,6 +43,7 @@ There are many .NET Open Source projects. You can always use a search engine to * [DiffSharp](http://gbaydin.github.io/DiffSharp/) Automatic Differentiation Library * [DotNetOpenAuth](https://github.com/DotNetOpenAuth) - Library that adds support for your site visitors to login with their OpenIDs by just dropping an ASP.NET control onto your page. * [EasyNetQ](https://github.com/mikehadlow/EasyNetQ) - An easy to use .NET API for RabbitMQ. + * [FeatureToggle](https://github.com/jason-roberts/FeatureToggle) - Simple, reliable feature toggles in .NET. * [FluentBootstrap](https://github.com/somedave/FluentBootstrap) * [FluentValidation](https://github.com/JeremySkinner/FluentValidation) - A small validation library for .NET that uses a fluent interface and lambda expressions for building validation rules. * [GongSolutions.Wpf.DragDrop](https://github.com/punker76/gong-wpf-dragdrop) A drag'n'drop framework for WPF. From 1317a94a5fb7a9c1d6c21e58f26746338fd94418 Mon Sep 17 00:00:00 2001 From: Jeff Hardy Date: Mon, 24 Nov 2014 17:51:50 +0000 Subject: [PATCH 064/872] Add DLR, IronPython, and IronRuby. --- dotnet-projects.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/dotnet-projects.md b/dotnet-projects.md index fa49fe910..cd50cdbac 100644 --- a/dotnet-projects.md +++ b/dotnet-projects.md @@ -10,6 +10,9 @@ There are many .NET Open Source projects. You can always use a search engine to * [Mono Project](https://github.com/mono/) - Cross-platform implementation of .NET Framework. * Languages + * [Dynamic Language Runtime](http://www.github.com/IronLanguages/main.git) - A toolkit for building dynamic languages for .NET. + * [IronPython](http://ironpython.net) - A .NET implementation of the [Python](https://www.python.org) programming language, built on the DLR. + * [IronRuby](http://ironruby.net) - A .NET implementation of the [Ruby](https://www.ruby-lang.org) programming language, built on the DLR. * [IronScheme](http://ironscheme.codeplex.com) - A R6RS conforming Scheme-like implementation based on the Microsoft DLR. * [Nemerle](https://github.com/rsdn/nemerle) A high-level statically-typed programming language which offers functional, object-oriented and imperative features and has a simple C# like syntax and a powerful meta-programming system. From 56de41151373a8b0c2447e6016d78be87c882029 Mon Sep 17 00:00:00 2001 From: Taryn Hill Date: Mon, 24 Nov 2014 12:01:19 -0600 Subject: [PATCH 065/872] Fix incorrect merge changes. --- dotnet-projects.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dotnet-projects.md b/dotnet-projects.md index fa49fe910..867014ed5 100644 --- a/dotnet-projects.md +++ b/dotnet-projects.md @@ -122,10 +122,10 @@ There are many .NET Open Source projects. You can always use a search engine to * Games * [MonoGame](http://monogame.net) - One framework for creating powerful cross-platform games. * [Paradox](https://github.com/SiliconStudio/paradox) - Paradox is a versatile and engaging game engine. + * [OpenRA](https://github.com/OpenRA/OpenRA) - An open-source implementation of the Command & Conquer: Red Alert engine using .NET/Mono and OpenGL. * Control libraries * [Callisto](https://github.com/timheuer/callisto) - UI Control Toolkit for WinRT apps - * [OpenRA](https://github.com/OpenRA/OpenRA) - An open-source implementation of the Command & Conquer: Red Alert engine using .NET/Mono and OpenGL. * Windows Services * [TopShelf](https://github.com/Topshelf/Topshelf) From 703996f48cd6cb24dc0ee9bc47e8b15e0a0cd663 Mon Sep 17 00:00:00 2001 From: Richard Lander Date: Mon, 24 Nov 2014 19:31:34 -0800 Subject: [PATCH 066/872] Rename files. --- consumer-projects.md => dotnet-consumer-projects.md | 0 dotnet-projects.md => dotnet-developer-projects.md | 0 2 files changed, 0 insertions(+), 0 deletions(-) rename consumer-projects.md => dotnet-consumer-projects.md (100%) rename dotnet-projects.md => dotnet-developer-projects.md (100%) diff --git a/consumer-projects.md b/dotnet-consumer-projects.md similarity index 100% rename from consumer-projects.md rename to dotnet-consumer-projects.md diff --git a/dotnet-projects.md b/dotnet-developer-projects.md similarity index 100% rename from dotnet-projects.md rename to dotnet-developer-projects.md From b5fd6073fad569229877aed761d6e931c02a14b1 Mon Sep 17 00:00:00 2001 From: Richard Lander Date: Mon, 24 Nov 2014 19:34:17 -0800 Subject: [PATCH 067/872] Cross-link between files. --- dotnet-consumer-projects.md | 3 +++ dotnet-developer-projects.md | 5 ++++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/dotnet-consumer-projects.md b/dotnet-consumer-projects.md index 13d069c9f..8dc1a524a 100644 --- a/dotnet-consumer-projects.md +++ b/dotnet-consumer-projects.md @@ -4,6 +4,9 @@ There are many .NET based open source consumer projects. You can always use a se * Media Streaming * [Media Browser](https://github.com/mediabrowser/) - [www.mediabrowser.tv](http://www.mediabrowser.tv) + +* Developer projects + * [.NET open source developer projects list](https://github.com/Microsoft/dotnet/blob/master/dotnet-projects.md) This list is just a starting point - also take a look at all the projects on [CodePlex](http://www.codeplex.com/) and on [GitHub Trending C#](https://github.com/trending?l=csharp). diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 15911a3fb..b4b631391 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -137,7 +137,10 @@ There are many .NET open source developer projects. You can always use a search * Scheduling * [Quartz.Net](https://github.com/quartznet/quartznet) - + +* Consumer projects + * [.NET open source consumer projects list](https://github.com/Microsoft/dotnet/blob/master/consumer-projects.md) + This list is just a starting point - also take a look at all the projects on [CodePlex](http://www.codeplex.com/) and on [GitHub Trending C#](https://github.com/trending?l=csharp). Thanks to [@slodge](http://twitter.com/slodge "@slodge on Twitter") for providing the initial list. From 8e2aec3e28af74f4535a28a8f61c930ab857cd3b Mon Sep 17 00:00:00 2001 From: Richard Lander Date: Mon, 24 Nov 2014 19:36:09 -0800 Subject: [PATCH 068/872] Fix links. --- dotnet-consumer-projects.md | 2 +- dotnet-developer-projects.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/dotnet-consumer-projects.md b/dotnet-consumer-projects.md index 8dc1a524a..d603e4bc3 100644 --- a/dotnet-consumer-projects.md +++ b/dotnet-consumer-projects.md @@ -6,7 +6,7 @@ There are many .NET based open source consumer projects. You can always use a se * [Media Browser](https://github.com/mediabrowser/) - [www.mediabrowser.tv](http://www.mediabrowser.tv) * Developer projects - * [.NET open source developer projects list](https://github.com/Microsoft/dotnet/blob/master/dotnet-projects.md) + * [.NET open source developer projects list](dotnet-developer-projects.md) This list is just a starting point - also take a look at all the projects on [CodePlex](http://www.codeplex.com/) and on [GitHub Trending C#](https://github.com/trending?l=csharp). diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index b4b631391..4872e23ac 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -139,7 +139,7 @@ There are many .NET open source developer projects. You can always use a search * [Quartz.Net](https://github.com/quartznet/quartznet) * Consumer projects - * [.NET open source consumer projects list](https://github.com/Microsoft/dotnet/blob/master/consumer-projects.md) + * [.NET open source consumer projects list](dotnet-consumer-projects.md) This list is just a starting point - also take a look at all the projects on [CodePlex](http://www.codeplex.com/) and on [GitHub Trending C#](https://github.com/trending?l=csharp). From b3f888930fd821d6ed50fea47c20ad8850d29e98 Mon Sep 17 00:00:00 2001 From: Michael Nadel Date: Mon, 24 Nov 2014 21:49:39 -0600 Subject: [PATCH 069/872] Added ClojureCLR --- dotnet-developer-projects.md | 1 + 1 file changed, 1 insertion(+) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 4872e23ac..b5b00bb58 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -12,6 +12,7 @@ There are many .NET open source developer projects. You can always use a search * [Cosmos](http://cosmos.codeplex.com/) * Languages + * [ClojureCLR](https://github.com/clojure/clojure-clr) - A .NET implemention of the [Clojure](http://clojure.org) programming language, built on the DLR. * [Dynamic Language Runtime](http://www.github.com/IronLanguages/main.git) - A toolkit for building dynamic languages for .NET. * [IronPython](http://ironpython.net) - A .NET implementation of the [Python](https://www.python.org) programming language, built on the DLR. * [IronRuby](http://ironruby.net) - A .NET implementation of the [Ruby](https://www.ruby-lang.org) programming language, built on the DLR. From b422af39b6d764bc08ad263b4f258f0cf9e67a1c Mon Sep 17 00:00:00 2001 From: VladD2 Date: Tue, 25 Nov 2014 07:01:50 +0300 Subject: [PATCH 070/872] Update dotnet-developer-projects.md --- dotnet-developer-projects.md | 1 + 1 file changed, 1 insertion(+) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 4872e23ac..6ed95107b 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -31,6 +31,7 @@ There are many .NET open source developer projects. You can always use a search * Web Frameworks * [Nancy](http://nancyfx.org) - A lightweight, low-ceremony, framework for building HTTP based services on .NET and Mono. + * [NemerleWeb](https://github.com/NemerleWeb/NemerleWeb) - Web MVVM library for .Net. It uses reactive data model which allows creating rich internet applications. * ADO.NET providers * [Npgsql](https://github.com/npgsql/npgsql) PostgreSQL From 7d7364335417ef30cc2be8574d97c5f8f7dc9513 Mon Sep 17 00:00:00 2001 From: Joe Mistachkin Date: Mon, 24 Nov 2014 20:23:01 -0800 Subject: [PATCH 071/872] Update dotnet-developer-projects.md --- dotnet-developer-projects.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 4872e23ac..d6c1cec75 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -17,6 +17,7 @@ There are many .NET open source developer projects. You can always use a search * [IronRuby](http://ironruby.net) - A .NET implementation of the [Ruby](https://www.ruby-lang.org) programming language, built on the DLR. * [IronScheme](http://ironscheme.codeplex.com) - A R6RS conforming Scheme-like implementation based on the Microsoft DLR. * [Nemerle](https://github.com/rsdn/nemerle) A high-level statically-typed programming language which offers functional, object-oriented and imperative features and has a simple C# like syntax and a powerful meta-programming system. + * [Eagle](http://eagle.to) A .NET implementation of the [Tcl](https://www.tcl.tk) programming language, built on the CLR. * Security / Identity Management * [Thinktecture IdentityServer](https://github.com/thinktecture/Thinktecture.IdentityServer.v3) @@ -35,6 +36,7 @@ There are many .NET open source developer projects. You can always use a search * ADO.NET providers * [Npgsql](https://github.com/npgsql/npgsql) PostgreSQL * [Firebird .NET client](https://sourceforge.net/p/firebird/NETProvider/) Firebird + * [System.Data.SQLite](https://system.data.sqlite.org) SQLite * Libraries * [Algorithmia](https://github.com/SolutionsDesign/Algorithmia) Algorithms and Data structures From 85663b3d87d1f000e874fe606ca1260163870303 Mon Sep 17 00:00:00 2001 From: Joe Feser Date: Mon, 24 Nov 2014 23:24:13 -0500 Subject: [PATCH 072/872] Added 18 DI containers to the list along with a comparison page. --- dotnet-developer-projects.md | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 4872e23ac..09f1fdb42 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -110,10 +110,29 @@ There are many .NET open source developer projects. You can always use a search * Dependency Injection * [Autofac](http://autofac.org/) - Autofac is an addictive Inversion of Control container for .NET 4.5, Silverlight 5, Windows Store apps, and Windows Phone 8 apps. + * [DryIoc](https://bitbucket.org/dadhi/dryioc) - DryIoc is small, fast, capable IoC Container for .NET + * [fFastInjector](https://ffastinjector.codeplex.com/) - fFastInjector is a high-performing dependency injector, service locator, and/or IOC (inversion of control) container. * [Funq](https://funq.codeplex.com/) - A fast DI container you can understand. + * [Grace](https://github.com/ipjohnson/Grace) - Grace is a feature rich Dependency Injection container in a portable class library + * [Griffin](https://github.com/jgauffin/griffin.container) - Inversion of control container with (almost) zero configuration + * [HaveBox](https://bitbucket.org/Have/havebox/wiki/Home) - HaveBox is a very fast and lightweight IoC containter. The goal is to keep it fast and light, and at the same time easy to use. + * [Hiro](https://github.com/philiplaureano/Hiro) - An ultra-lightweight, inversion of control container compiler framework + * [IfInjector](https://github.com/iamahern/IfInjector) - High performance mobile micro-IoC container. + * [LightCore](http://lightcore.ch/de/default.aspx) - LightCore is a lightweight dependency injection container that can be used as a service locator and despite its simplicity and ease boasts numerous features. + * [LightInject](https://github.com/seesharper/LightInject) - A ultra lightweight IoC container + * [MicroSliver](https://microsliver.codeplex.com/) - MicroSliver is a micro, non-bloat, non-intimidating and speedy .NET (ASP.NET, Silverlight, RIA Services, WPF, Forms and Metro!) + * [Mugen Injection](http://mugeninjection.codeplex.com/) - The MugeniInjection is a lightweight and fast managed IoC (Inversion of Control) and DI (Dependency Injection) with support for constructor, property and method call injection * [Ninject for Desktop](http://www.ninject.org/) - Dependency injector for .NET * [Ninject for Portable Class Libraries, Universal apps and Xamarin](https://github.com/onovotny/ninject) + * [QuickInject](https://github.com/isabgol/QuickInject) - QuickInject is a Unity 3.5 based IoC container that aims to give the Unity container a performance advantage in basic scenarios. + * [Simple Injector](https://simpleinjector.org/index.html) - Simple Injector is an easy-to-use Dependency Injection (DI) library for .NET 4+ that supports Silverlight 4+, Windows Phone 8, Windows 8 including Universal apps and Mono. + * [Spring.NET](http://www.springframework.net/) - Spring.NET is an open source application framework that makes building enterprise .NET applications easier. + * [StructureMap](http://docs.structuremap.net/) - StructureMap is a Dependency Injection / Inversion of Control tool for .Net that can be used to improve the architectural qualities of an object oriented system by reducing the mechanical costs of good design techniques. + * [StyleMVVM](https://stylemvvm.codeplex.com/) - Style MVVM is a toolkit designed for the Windows Store platform around the idea of being light weight and fast. * [TinyIoC](https://github.com/grumpydev/TinyIoC) - An easy to use, hassle free, Inversion of Control Container for small projects, libraries and beginners alike. + * [Unity Container](http://msdn.microsoft.com/library/ff647202.aspx) - The Unity Container (Unity) is a lightweight, extensible dependency injection container with optional support for instance and type interception. + * [Castle Project/Windsor](http://www.castleproject.org/) - IOC / Proxy + * [IOC Comparison](http://www.palmmedia.de/blog/2011/8/30/ioc-container-benchmark-performance-comparison) - IoC Container Benchmark - Performance comparison * Data Access * [Dapper](https://github.com/StackExchange/dapper-dot-net) - Dapper is a single file you can drop in to your project that will extend your IDbConnection interface. From f4b093ba4a345c02b737d89353a7e2dccb5004dc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A1n=20Sokoly?= Date: Tue, 25 Nov 2014 05:46:36 +0100 Subject: [PATCH 073/872] Added Gmail Notifier Plus Added Gmail Notifier Plus to the list. --- dotnet-consumer-projects.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/dotnet-consumer-projects.md b/dotnet-consumer-projects.md index d603e4bc3..8bb19d3c2 100644 --- a/dotnet-consumer-projects.md +++ b/dotnet-consumer-projects.md @@ -4,6 +4,9 @@ There are many .NET based open source consumer projects. You can always use a se * Media Streaming * [Media Browser](https://github.com/mediabrowser/) - [www.mediabrowser.tv](http://www.mediabrowser.tv) + +* Utilieties + * [Gmail Notifier Plus](https://github.com/shellscape/Gmail-Notifier-Plus) - An app to monitor multiple Gmail and Google Apps Mail accounts from a single, compact point, sitting in Windows 7/8/8.1 taskbar. * Developer projects * [.NET open source developer projects list](dotnet-developer-projects.md) From 077eed4bbba49eb41a02964b9caea7306025036f Mon Sep 17 00:00:00 2001 From: Sunny Ahuwanya Date: Mon, 24 Nov 2014 23:46:52 -0500 Subject: [PATCH 074/872] Added RestBus (restbus.org) project. --- dotnet-developer-projects.md | 1 + 1 file changed, 1 insertion(+) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index b7fa9f505..07a7ec5ff 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -70,6 +70,7 @@ There are many .NET open source developer projects. You can always use a search * [OsmSharp](https://github.com/OsmSharp) Mapping & Routing library. * [PocketSharp](https://github.com/ceee/PocketSharp) * [RestSharp](http://restsharp.org/) - Simple REST and HTTP API Client for .NET + * [RestBus](http://restbus.org/) - Easy Asynchronous Messaging and Queueing for .NET * [SharpDX](https://github.com/sharpdx/SharpDX) - SharpDX is a project delivering the full DirectX API for .NET on all Windows platforms. * [SharpMap](https://sharpmap.codeplex.com/) An easy-to-use mapping library for use in web and desktop applications * [Splat](https://github.com/paulcbetts/splat) - A library to make things cross-platform that should be. From 0871c124d2b7621849c99f6c3eeb6bf700203379 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A1n=20Sokoly?= Date: Tue, 25 Nov 2014 05:47:32 +0100 Subject: [PATCH 075/872] Typo --- dotnet-consumer-projects.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dotnet-consumer-projects.md b/dotnet-consumer-projects.md index 8bb19d3c2..d96690a73 100644 --- a/dotnet-consumer-projects.md +++ b/dotnet-consumer-projects.md @@ -5,7 +5,7 @@ There are many .NET based open source consumer projects. You can always use a se * Media Streaming * [Media Browser](https://github.com/mediabrowser/) - [www.mediabrowser.tv](http://www.mediabrowser.tv) -* Utilieties +* Utilities * [Gmail Notifier Plus](https://github.com/shellscape/Gmail-Notifier-Plus) - An app to monitor multiple Gmail and Google Apps Mail accounts from a single, compact point, sitting in Windows 7/8/8.1 taskbar. * Developer projects From c10318f947cd904702455ec3e9642dbb2e48c8c5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A1n=20Sokoly?= Date: Tue, 25 Nov 2014 05:50:18 +0100 Subject: [PATCH 076/872] Google Apps is now Google Apps for Work --- dotnet-consumer-projects.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dotnet-consumer-projects.md b/dotnet-consumer-projects.md index d96690a73..60a5d3ee7 100644 --- a/dotnet-consumer-projects.md +++ b/dotnet-consumer-projects.md @@ -6,7 +6,7 @@ There are many .NET based open source consumer projects. You can always use a se * [Media Browser](https://github.com/mediabrowser/) - [www.mediabrowser.tv](http://www.mediabrowser.tv) * Utilities - * [Gmail Notifier Plus](https://github.com/shellscape/Gmail-Notifier-Plus) - An app to monitor multiple Gmail and Google Apps Mail accounts from a single, compact point, sitting in Windows 7/8/8.1 taskbar. + * [Gmail Notifier Plus](https://github.com/shellscape/Gmail-Notifier-Plus) - An app to monitor multiple Gmail and Google Apps for Work Gmail accounts from a single, compact point, sitting in Windows 7/8/8.1 taskbar. * Developer projects * [.NET open source developer projects list](dotnet-developer-projects.md) From 807a93b10956062558c7f632b9b9ee41a7070967 Mon Sep 17 00:00:00 2001 From: Daniel Ferreira Monteiro Alves Date: Tue, 25 Nov 2014 03:45:11 -0200 Subject: [PATCH 077/872] Update dotnet-developer-projects.md Just adding more two interesting projects. --- dotnet-developer-projects.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 07a7ec5ff..90397af8f 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -153,8 +153,10 @@ There are many .NET open source developer projects. You can always use a search * [Paradox](https://github.com/SiliconStudio/paradox) - Paradox is a versatile and engaging game engine. * [OpenRA](https://github.com/OpenRA/OpenRA) - An open-source implementation of the Command & Conquer: Red Alert engine using .NET/Mono and OpenGL. -* Control libraries +* UI and Control libraries * [Callisto](https://github.com/timheuer/callisto) - UI Control Toolkit for WinRT apps + * [Eto](https://github.com/picoe/Eto) - Cross platform GUI Toolkit for desktop and mobile apps + * [Mono XWT](https://github.com/mono/xwt) - A cross-platform UI toolkit for creating desktop apps * Windows Services * [TopShelf](https://github.com/Topshelf/Topshelf) From c7a3e71a6fa549381c3c1ba33268fad174bb977e Mon Sep 17 00:00:00 2001 From: Nikita Tsukanov Date: Tue, 25 Nov 2014 09:44:33 +0300 Subject: [PATCH 078/872] Fix link to dotnet-projects.md Was broken by 703996f --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 048d5b4cc..2bc835bf5 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ open source projects from [Microsoft](http://microsoft.github.io) and the [.NET ## Finding .NET Open Source Projects -There are many [open source .NET projects](dotnet-projects.md). Check out the [list of projects](dotnet-projects.md) the community maintains. Please find one to engage in or add one. There's certainly one out there that could use your help. +There are many [open source .NET projects](dotnet-developer-projects.md). Check out the [list of projects](dotnet-developer-projects.md) the community maintains. Please find one to engage in or add one. There's certainly one out there that could use your help. There are several projects from Microsoft on GitHub and CodePlex, including: @@ -56,4 +56,4 @@ An important collaboration opportunity is making .NET Core NuGet packages (produ ASP.NET 5 is a new cross-platform version of ASP.NET that is designed for the cloud, and runs on Windows, Linux and Mac. It uses the .NET Framework to run on Windows, and can also run on .NET Core 5 for greater deployment flexibility on Windows. It currently uses Mono for Linux and Mac support but will move to .NET Core 5 for those platforms when they are supported. -[ASP.NET 5](https://github.com/aspnet/home) and [.NET Core 5](https://github.com/dotnet/corefx) libraries are open source on GitHub. At present, only a few .NET Core 5 libraries are available on GitHub. The rest of the libraries, including the base runtime, will be added in the coming months. \ No newline at end of file +[ASP.NET 5](https://github.com/aspnet/home) and [.NET Core 5](https://github.com/dotnet/corefx) libraries are open source on GitHub. At present, only a few .NET Core 5 libraries are available on GitHub. The rest of the libraries, including the base runtime, will be added in the coming months. From 936b4776a8d3a1d67f959ff581d22535f9cbbf16 Mon Sep 17 00:00:00 2001 From: Nikos Baxevanis Date: Tue, 25 Nov 2014 11:34:14 +0200 Subject: [PATCH 079/872] Added AutoFixture to testing tools section. --- dotnet-developer-projects.md | 1 + 1 file changed, 1 insertion(+) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 90397af8f..3c70906e1 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -112,6 +112,7 @@ There are many .NET open source developer projects. You can always use a search * [NUnit](https://github.com/nunit/nunit) - NUnit is a unit-testing framework for all .NET languages. * [tickspec](http://tickspec.codeplex.com/) A lightweight Behaviour Driven Development (BDD) framework. * [xUnit](https://github.com/xunit/xunit) - xUnit.net is a community-focused unit testing tool for the .NET Framework. + * [AutoFixture](https://github.com/AutoFixture/AutoFixture) - An open source framework for .NET designed to minimize the 'Arrange' phase of your unit tests. Its primary goal is to allow developers to focus on what is being tested rather than how to setup the test scenario, by making it easier to create object graphs containing test data. * Dependency Injection * [Autofac](http://autofac.org/) - Autofac is an addictive Inversion of Control container for .NET 4.5, Silverlight 5, Windows Store apps, and Windows Phone 8 apps. From 253766adc3189c60fd20ec13ac1aefd24a53242b Mon Sep 17 00:00:00 2001 From: Scott Lovegrove Date: Tue, 25 Nov 2014 09:41:47 +0000 Subject: [PATCH 080/872] Added Media Browser description --- dotnet-consumer-projects.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dotnet-consumer-projects.md b/dotnet-consumer-projects.md index 60a5d3ee7..36bd5d716 100644 --- a/dotnet-consumer-projects.md +++ b/dotnet-consumer-projects.md @@ -3,7 +3,7 @@ There are many .NET based open source consumer projects. You can always use a search engine to find projects, and that's a good approach. This list is an intended to provide a showcase for projects that want it. It is intended to be community maintained. PR a change in and it will be accepted (modulo duplicates). Projects should be sorted alphabetically and project source links and product website are allowed. This list could include desktop applications, websites, mobile apps, etc. * Media Streaming - * [Media Browser](https://github.com/mediabrowser/) - [www.mediabrowser.tv](http://www.mediabrowser.tv) + * [Media Browser](https://github.com/mediabrowser/) - [www.mediabrowser.tv](http://www.mediabrowser.tv) - A client/server application that allows you to easily manage your own media content and present it in an eye catching way. Server runs on Windows, Linux and Mac. Clients are for WP, Android, iOS, Media Centre, Windows, Roku, etc. * Utilities * [Gmail Notifier Plus](https://github.com/shellscape/Gmail-Notifier-Plus) - An app to monitor multiple Gmail and Google Apps for Work Gmail accounts from a single, compact point, sitting in Windows 7/8/8.1 taskbar. From d429b48558ecd57d063d237ebdd12fb7b0d6ff79 Mon Sep 17 00:00:00 2001 From: Nikita Tsukanov Date: Tue, 25 Nov 2014 13:20:34 +0300 Subject: [PATCH 081/872] Added Banshee media player --- dotnet-consumer-projects.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/dotnet-consumer-projects.md b/dotnet-consumer-projects.md index 60a5d3ee7..1fd5a69ca 100644 --- a/dotnet-consumer-projects.md +++ b/dotnet-consumer-projects.md @@ -4,6 +4,9 @@ There are many .NET based open source consumer projects. You can always use a se * Media Streaming * [Media Browser](https://github.com/mediabrowser/) - [www.mediabrowser.tv](http://www.mediabrowser.tv) + +* Audio players + * [Banshee](https://github.com/GNOME/banshee) - A cross-platform multimedia player * Utilities * [Gmail Notifier Plus](https://github.com/shellscape/Gmail-Notifier-Plus) - An app to monitor multiple Gmail and Google Apps for Work Gmail accounts from a single, compact point, sitting in Windows 7/8/8.1 taskbar. From 9ce4a92464e8e0e487da85bcb5829e26bad87b1e Mon Sep 17 00:00:00 2001 From: Xanathar Date: Tue, 25 Nov 2014 15:35:51 +0100 Subject: [PATCH 082/872] added moonsharp --- dotnet-developer-projects.md | 1 + 1 file changed, 1 insertion(+) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 90397af8f..5163e8b86 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -19,6 +19,7 @@ There are many .NET open source developer projects. You can always use a search * [IronScheme](http://ironscheme.codeplex.com) - A R6RS conforming Scheme-like implementation based on the Microsoft DLR. * [Nemerle](https://github.com/rsdn/nemerle) A high-level statically-typed programming language which offers functional, object-oriented and imperative features and has a simple C# like syntax and a powerful meta-programming system. * [Eagle](http://eagle.to) A .NET implementation of the [Tcl](https://www.tcl.tk) programming language, built on the CLR. + * [MoonSharp](http://www.moonsharp.org) A Lua interpreter and remote debugger, written entirely in C#, easily embeddable in any application running on .NET 3.5+ and Mono. * Security / Identity Management * [Thinktecture IdentityServer](https://github.com/thinktecture/Thinktecture.IdentityServer.v3) From 5c18c2a232a9807792ead5b01f95065be72c5fc4 Mon Sep 17 00:00:00 2001 From: Nikita Tsukanov Date: Tue, 25 Nov 2014 13:14:02 +0300 Subject: [PATCH 083/872] Added linq2db --- dotnet-developer-projects.md | 1 + 1 file changed, 1 insertion(+) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 90397af8f..796b562bf 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -147,6 +147,7 @@ There are many .NET open source developer projects. You can always use a search * [NMEA Parser](https://github.com/dotMorten/NmeaParser) - Library for handling NMEA message in Windows Desktop, Store, Phone and Xamarin (Android + iOS), coming from files, Bluetooth, serial port or any stream. * [StackExchange.Redis](https://github.com/StackExchange/StackExchange.Redis) * [SQL LocalDB Wrapper](https://github.com/martincostello/sqllocaldb) + * [linq2db](https://github.com/linq2db/linq2db/) - Lightweight ORM and LINQ provider with support for various databases including MS SQL, PostgreSQL, Oracle and MySQL * Games * [MonoGame](http://monogame.net) - One framework for creating powerful cross-platform games. From ce478eb862a679bdc1214607783b3dd52a4459fa Mon Sep 17 00:00:00 2001 From: mcostello_expn Date: Tue, 25 Nov 2014 16:07:27 +0000 Subject: [PATCH 084/872] Added description for SQL LocalDB Wrapper. --- dotnet-developer-projects.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 793b232c3..44d67fb0d 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -148,7 +148,7 @@ There are many .NET open source developer projects. You can always use a search * [Sqlite-net](https://github.com/praeclarum/sqlite-net) - Simple, powerful, cross-platform SQLite client and ORM. * [NMEA Parser](https://github.com/dotMorten/NmeaParser) - Library for handling NMEA message in Windows Desktop, Store, Phone and Xamarin (Android + iOS), coming from files, Bluetooth, serial port or any stream. * [StackExchange.Redis](https://github.com/StackExchange/StackExchange.Redis) - * [SQL LocalDB Wrapper](https://github.com/martincostello/sqllocaldb) + * [SQL LocalDB Wrapper](https://github.com/martincostello/sqllocaldb) - SQL LocalDB Wrapper is an assembly providing interop with the SQL LocalDB native API from managed code using .NET APIs. * Games * [MonoGame](http://monogame.net) - One framework for creating powerful cross-platform games. From 9b02fec1852ff914f763cc75d01aa3ba8029678c Mon Sep 17 00:00:00 2001 From: Brian MacKay Date: Tue, 25 Nov 2014 14:19:05 -0500 Subject: [PATCH 085/872] Added two projects Added Outcomes.Net and the Weighted Selector. --- dotnet-developer-projects.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 9bb1cec7d..47cb4f306 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -103,6 +103,8 @@ There are many .NET open source developer projects. You can always use a search * [Snoop WPF](https://github.com/cplotts/snoopwpf) - Snoop - The WPF Spy Utility * [Sql Bulk Copy Sync](https://github.com/WCOMAB/SqlBulkSync) * [Vagrant](http://nessos.github.io/Vagrant/) Automated dependency resolution and dynamic assembly compilation framework. + * [Outcomes.Net](https://github.com/kinetiq/Ether.Outcomes/) Fluent wrapper that eliminates plumbing code around failure-prone functions. + * [Weighted Selector] (https://github.com/kinetiq/Ether.WeightedSelector/) Easy to use (but high performance!) weighted selection implementation. * Testing * [canopy](http://lefthandedgoat.github.io/canopy/) A web testing framework. From b59b7b8e12cbf21d2fa779fbd38ac2f11e1412e8 Mon Sep 17 00:00:00 2001 From: HellBrick Date: Tue, 25 Nov 2014 22:25:06 +0300 Subject: [PATCH 086/872] Added AsyncCollections to the Developer projects --- dotnet-developer-projects.md | 1 + 1 file changed, 1 insertion(+) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 9bb1cec7d..fbce00ef9 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -45,6 +45,7 @@ There are many .NET open source developer projects. You can always use a search * [Algorithmia](https://github.com/SolutionsDesign/Algorithmia) Algorithms and Data structures * [AngleSharp](https://github.com/FlorianRappl/AngleSharp) - Ultimate angle brackets parser library. It parses HTML5, MathML, SVG and CSS to construct a DOM based on the official W3C specification. * [ArcGIS.PCL](https://github.com/davetimmins/ArcGIS.PCL) + * [AsyncCollections](https://github.com/HellBrick/AsyncCollections) - A set of lock-free thread-safe collections designed to be used asynchronously. * [AzureNetQ](https://github.com/Roysvork/AzureNetQ) - An easy to use .NET API for Azure Service Bus. * [Cimbalino Toolkit](http://cimbalino.org/) - A set of useful and powerful tools that will help you build your Windows Platform applications. * [Coding4Fun Toolkit](http://coding4fun.codeplex.com/) From b43df4b18fe325aae4e5a13b7ace9939996df5e0 Mon Sep 17 00:00:00 2001 From: drieseng Date: Tue, 25 Nov 2014 21:14:37 +0100 Subject: [PATCH 087/872] Added entry for SSH.NET. --- dotnet-developer-projects.md | 1 + 1 file changed, 1 insertion(+) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 9bb1cec7d..ea37b17f1 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -75,6 +75,7 @@ There are many .NET open source developer projects. You can always use a search * [SharpDX](https://github.com/sharpdx/SharpDX) - SharpDX is a project delivering the full DirectX API for .NET on all Windows platforms. * [SharpMap](https://sharpmap.codeplex.com/) An easy-to-use mapping library for use in web and desktop applications * [Splat](https://github.com/paulcbetts/splat) - A library to make things cross-platform that should be. + * [SSH.NET](https://sshnet.codeplex.com/) - A client-side library for SSH, SCP and SFTP. * [WpfToolkit](https://github.com/dotnetprojects/wpftoolkit) - Fork of the MS WPF Toolkit * Model-View-ViewModel (MVVM) Frameworks From c826d93886e044707043be88639214b483df5e9a Mon Sep 17 00:00:00 2001 From: Nikos Baxevanis Date: Tue, 25 Nov 2014 23:15:02 +0200 Subject: [PATCH 088/872] Moved AutoFixture up, in alphabetical order. --- dotnet-developer-projects.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 9bb1cec7d..08650217f 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -105,6 +105,7 @@ There are many .NET open source developer projects. You can always use a search * [Vagrant](http://nessos.github.io/Vagrant/) Automated dependency resolution and dynamic assembly compilation framework. * Testing + * [AutoFixture](https://github.com/AutoFixture/AutoFixture) - An open source framework for .NET designed to minimize the 'Arrange' phase of your unit tests. Its primary goal is to allow developers to focus on what is being tested rather than how to setup the test scenario, by making it easier to create object graphs containing test data. * [canopy](http://lefthandedgoat.github.io/canopy/) A web testing framework. * [FakeItEasy](https://github.com/FakeItEasy/FakeItEasy) * [FsCheck](https://fsharp.github.io/FsCheck/) A tool for testing .NET programs automatically. @@ -113,7 +114,6 @@ There are many .NET open source developer projects. You can always use a search * [NUnit](https://github.com/nunit/nunit) - NUnit is a unit-testing framework for all .NET languages. * [tickspec](http://tickspec.codeplex.com/) A lightweight Behaviour Driven Development (BDD) framework. * [xUnit](https://github.com/xunit/xunit) - xUnit.net is a community-focused unit testing tool for the .NET Framework. - * [AutoFixture](https://github.com/AutoFixture/AutoFixture) - An open source framework for .NET designed to minimize the 'Arrange' phase of your unit tests. Its primary goal is to allow developers to focus on what is being tested rather than how to setup the test scenario, by making it easier to create object graphs containing test data. * Dependency Injection * [Autofac](http://autofac.org/) - Autofac is an addictive Inversion of Control container for .NET 4.5, Silverlight 5, Windows Store apps, and Windows Phone 8 apps. From 6611fb35fb00bef63b6f321c8fb972867e449f2d Mon Sep 17 00:00:00 2001 From: Nikos Baxevanis Date: Tue, 25 Nov 2014 23:18:05 +0200 Subject: [PATCH 089/872] Added ZeroToNine to tools section. --- dotnet-developer-projects.md | 1 + 1 file changed, 1 insertion(+) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 9bb1cec7d..f7f049bcd 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -103,6 +103,7 @@ There are many .NET open source developer projects. You can always use a search * [Snoop WPF](https://github.com/cplotts/snoopwpf) - Snoop - The WPF Spy Utility * [Sql Bulk Copy Sync](https://github.com/WCOMAB/SqlBulkSync) * [Vagrant](http://nessos.github.io/Vagrant/) Automated dependency resolution and dynamic assembly compilation framework. + * [ZeroToNine](https://github.com/ploeh/ZeroToNine) - A tool for maintaining .NET Assembly versions across multiple files. * Testing * [canopy](http://lefthandedgoat.github.io/canopy/) A web testing framework. From 4815a2a7c7e77bedb320eff2a1ffccf144c29d08 Mon Sep 17 00:00:00 2001 From: Nikos Baxevanis Date: Tue, 25 Nov 2014 23:19:53 +0200 Subject: [PATCH 090/872] Added Albedo to libraries section. --- dotnet-developer-projects.md | 1 + 1 file changed, 1 insertion(+) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 9bb1cec7d..c540cde05 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -42,6 +42,7 @@ There are many .NET open source developer projects. You can always use a search * [System.Data.SQLite](https://system.data.sqlite.org) SQLite * Libraries + * [Albedo](https://github.com/ploeh/Albedo) - A .NET library targeted at making Reflection programming more consistent, using a common set of abstractions and utilities. * [Algorithmia](https://github.com/SolutionsDesign/Algorithmia) Algorithms and Data structures * [AngleSharp](https://github.com/FlorianRappl/AngleSharp) - Ultimate angle brackets parser library. It parses HTML5, MathML, SVG and CSS to construct a DOM based on the official W3C specification. * [ArcGIS.PCL](https://github.com/davetimmins/ArcGIS.PCL) From 428d2abbb61c69389eb98d2e6af790ab604afbc7 Mon Sep 17 00:00:00 2001 From: Dave Timmins Date: Wed, 26 Nov 2014 10:40:03 +1300 Subject: [PATCH 091/872] Added descriptions for ArcGIS.PCL, ColoredConsole and FakeItEasy --- dotnet-developer-projects.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 9bb1cec7d..0791c1293 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -44,11 +44,11 @@ There are many .NET open source developer projects. You can always use a search * Libraries * [Algorithmia](https://github.com/SolutionsDesign/Algorithmia) Algorithms and Data structures * [AngleSharp](https://github.com/FlorianRappl/AngleSharp) - Ultimate angle brackets parser library. It parses HTML5, MathML, SVG and CSS to construct a DOM based on the official W3C specification. - * [ArcGIS.PCL](https://github.com/davetimmins/ArcGIS.PCL) + * [ArcGIS.PCL](https://github.com/davetimmins/ArcGIS.PCL) - Call ArcGIS Server REST API resources. You can also convert between ArcGIS features and GeoJSON. * [AzureNetQ](https://github.com/Roysvork/AzureNetQ) - An easy to use .NET API for Azure Service Bus. * [Cimbalino Toolkit](http://cimbalino.org/) - A set of useful and powerful tools that will help you build your Windows Platform applications. * [Coding4Fun Toolkit](http://coding4fun.codeplex.com/) - * [ColoredConsole](https://github.com/colored-console/colored-console) + * [ColoredConsole](https://github.com/colored-console/colored-console) - Add some color to your console. * [Cricket](http://fsprojects.github.io/Cricket/) - Actor library * [DiffSharp](http://gbaydin.github.io/DiffSharp/) Automatic Differentiation Library * [DotNetOpenAuth](https://github.com/DotNetOpenAuth) - Library that adds support for your site visitors to login with their OpenIDs by just dropping an ASP.NET control onto your page. @@ -106,7 +106,7 @@ There are many .NET open source developer projects. You can always use a search * Testing * [canopy](http://lefthandedgoat.github.io/canopy/) A web testing framework. - * [FakeItEasy](https://github.com/FakeItEasy/FakeItEasy) + * [FakeItEasy](https://github.com/FakeItEasy/FakeItEasy) - The easy mocking library for .NET. * [FsCheck](https://fsharp.github.io/FsCheck/) A tool for testing .NET programs automatically. * [moq](https://github.com/Moq/moq4) - The most popular and friendly mocking framework for .NET * [NSubstitute](http://nsubstitute.github.io/) - A friendly substitute for .NET mocking frameworks. From dcb9f9e5ad0f0a5ceffd3179d1c92d4bb9cd61b3 Mon Sep 17 00:00:00 2001 From: Immo Landwerth Date: Tue, 25 Nov 2014 13:45:32 -0800 Subject: [PATCH 092/872] Add line breaks for easier diffs --- README.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 1a1dc8231..841af4d37 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,10 @@ on the .NET blog. ## Finding .NET Open Source Projects -There are many [open source .NET projects](dotnet-developer-projects.md). Check out the [list of projects](dotnet-developer-projects.md) the community maintains. Please find one to engage in or add one. There's certainly one out there that could use your help. +There are many [open source .NET projects](dotnet-developer-projects.md). Check +out the [list of projects](dotnet-developer-projects.md) the community +maintains. Please find one to engage in or add one. There's certainly one out +there that could use your help. There are several projects from Microsoft on GitHub and CodePlex, including: From ab2ebfa3b4a9efb34ca057dc39a62cfb517dd345 Mon Sep 17 00:00:00 2001 From: jcant0n Date: Tue, 25 Nov 2014 23:19:03 +0100 Subject: [PATCH 093/872] Added Wave Engine as another powerful option for C# game developers. Wave Engine is a component based game engine to allow C# developers to create cross platform games. Currently the target platforms are Windows, Windows Store, Windows Phone, iOS, Android, OUYA, Linux and MacOS. --- dotnet-developer-projects.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 9bb1cec7d..f5ea57420 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -156,7 +156,8 @@ There are many .NET open source developer projects. You can always use a search * [MonoGame](http://monogame.net) - One framework for creating powerful cross-platform games. * [Paradox](https://github.com/SiliconStudio/paradox) - Paradox is a versatile and engaging game engine. * [OpenRA](https://github.com/OpenRA/OpenRA) - An open-source implementation of the Command & Conquer: Red Alert engine using .NET/Mono and OpenGL. - + * [WaveEngine](https://github.com/waveengine) - A powerful component based game engine for desktop and mobile platforms using C#. + * UI and Control libraries * [Callisto](https://github.com/timheuer/callisto) - UI Control Toolkit for WinRT apps * [Eto](https://github.com/picoe/Eto) - Cross platform GUI Toolkit for desktop and mobile apps From 38ad233f8822e0057c0c9598324634c921a045d0 Mon Sep 17 00:00:00 2001 From: ButchersBoy Date: Tue, 25 Nov 2014 23:05:59 +0000 Subject: [PATCH 094/872] Add Dragablz library to UI section --- dotnet-developer-projects.md | 1 + 1 file changed, 1 insertion(+) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 9bb1cec7d..1e3815315 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -161,6 +161,7 @@ There are many .NET open source developer projects. You can always use a search * [Callisto](https://github.com/timheuer/callisto) - UI Control Toolkit for WinRT apps * [Eto](https://github.com/picoe/Eto) - Cross platform GUI Toolkit for desktop and mobile apps * [Mono XWT](https://github.com/mono/xwt) - A cross-platform UI toolkit for creating desktop apps + * [Dragablz](http://github.com/ButchersBoy/Dragablz) - A tearable TabControl for WPF which also provides easy-to-use and implement docking features. * Windows Services * [TopShelf](https://github.com/Topshelf/Topshelf) From 6e536d50653ee91c10ecac1957685431e1a78c60 Mon Sep 17 00:00:00 2001 From: Richard Lander Date: Tue, 25 Nov 2014 21:33:14 -0800 Subject: [PATCH 095/872] Fix link in README. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 841af4d37..d0daf08e1 100644 --- a/README.md +++ b/README.md @@ -52,7 +52,7 @@ details. Most .NET open source projects at Microsoft have been contributed to the [.NET Foundation](http://www.dotnetfoundation.org/projects). There are two main .NET Foundation projects for Microsoft open source projects: -[ASP.NET Core 5 project](http://www.dotnetfoundation.org/aspnet-vnext) +[ASP.NET Core 5 project](http://www.dotnetfoundation.org/aspnet-5) and the [.NET Core 5 project](http://www.dotnetfoundation.org/netcore5). ## License From efae3b0727b215b26cce70c0d2988e976a06cce6 Mon Sep 17 00:00:00 2001 From: Richard Lander Date: Tue, 25 Nov 2014 21:41:15 -0800 Subject: [PATCH 096/872] Add one more link to community page. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index d0daf08e1..17b049bd4 100644 --- a/README.md +++ b/README.md @@ -24,7 +24,7 @@ Each one of these projects maps to one or more [.NET NuGet packages](http://blogs.msdn.com/b/dotnet/p/nugetpackages.aspx) that are published on [NuGet.org](http://nuget.org/). -There are also many great open source .NET community projects, such as: +There are also many great [open source .NET community projects](dotnet-developer-projects.md), such as: * [Mono Project](https://github.com/mono/) * [JSON.NET](http://json.net/) From c5e3552a3aefb5fc54d850700efc183cdf1ffe61 Mon Sep 17 00:00:00 2001 From: Hagashen Naidu Date: Wed, 26 Nov 2014 07:48:36 +0200 Subject: [PATCH 097/872] Update dotnet-developer-projects.md --- dotnet-developer-projects.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 29c4561fd..263771bad 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -175,6 +175,9 @@ There are many .NET open source developer projects. You can always use a search * Scheduling * [Quartz.Net](https://github.com/quartznet/quartznet) + +* Service Bus + * [Warewolf Easy Service Bus](https://github.com/Warewolf-ESB/Warewolf-ESB) - An open source easy to use service bus, built on numerous .Net technologies including WF (Windows Workflow Foundation), SignalR and WPF. * Consumer projects * [.NET open source consumer projects list](dotnet-consumer-projects.md) From a62721159c643a52ad9924096811bf31a964023a Mon Sep 17 00:00:00 2001 From: Matthijs ter Woord Date: Wed, 26 Nov 2014 08:35:17 +0100 Subject: [PATCH 098/872] Change Cosmos entry. --- dotnet-developer-projects.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 29c4561fd..3689aef17 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -5,11 +5,11 @@ There are many .NET open source developer projects. You can always use a search * .NET Implementations * [.NET Core](https://github.com/dotnet/corefx) - Core .NET Framework * [Mono Project](https://github.com/mono/) - Cross-platform implementation of .NET Framework. - + * [Cosmos](http://cosmos.codeplex.com/) - C# Open Source Managed Operating System, an operating system "construction kit". + * Platforms * [Castle Project](https://github.com/castleproject) - Umbrella project for ActiveRecord, DynamicProxy, MonoRail, Windsor * [Catel](http://catelproject.com/) - Application platform with IoC, logging, reflection and much more that serves as a base for applications that must be ready for future growth. - * [Cosmos](http://cosmos.codeplex.com/) * Languages * [ClojureCLR](https://github.com/clojure/clojure-clr) - A .NET implemention of the [Clojure](http://clojure.org) programming language, built on the DLR. From d2ff47c915567662c636ac68d378af6fa887dc94 Mon Sep 17 00:00:00 2001 From: Fanie Reynders Date: Wed, 26 Nov 2014 12:03:05 +0100 Subject: [PATCH 099/872] Added WebApiProxy to list --- dotnet-developer-projects.md | 1 + 1 file changed, 1 insertion(+) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 29c4561fd..02adbbaf5 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -78,6 +78,7 @@ There are many .NET open source developer projects. You can always use a search * [SharpMap](https://sharpmap.codeplex.com/) An easy-to-use mapping library for use in web and desktop applications * [Splat](https://github.com/paulcbetts/splat) - A library to make things cross-platform that should be. * [SSH.NET](https://sshnet.codeplex.com/) - A client-side library for SSH, SCP and SFTP. + * [WebApiProxy](https://github.com/faniereynders/WebApiProxy) - An automatic proxy provider for RESTful services built on ASP.NET Web API. Includes JavaScript & C# client generation. * [WpfToolkit](https://github.com/dotnetprojects/wpftoolkit) - Fork of the MS WPF Toolkit * Model-View-ViewModel (MVVM) Frameworks From e6cb9e8af57a9176cbb557b1718c3e0b338a39ba Mon Sep 17 00:00:00 2001 From: Andrey Kudashkin Date: Wed, 26 Nov 2014 17:29:51 +0600 Subject: [PATCH 100/872] Added Neyro.Data to Data Access section. --- dotnet-developer-projects.md | 1 + 1 file changed, 1 insertion(+) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 29c4561fd..2f67f1c89 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -154,6 +154,7 @@ There are many .NET open source developer projects. You can always use a search * [Simple Data](https://github.com/markrendle/Simple.Data) - A light-weight, dynamic data access component for C# 4.0. * [Sqlite-net](https://github.com/praeclarum/sqlite-net) - Simple, powerful, cross-platform SQLite client and ORM. * [NMEA Parser](https://github.com/dotMorten/NmeaParser) - Library for handling NMEA message in Windows Desktop, Store, Phone and Xamarin (Android + iOS), coming from files, Bluetooth, serial port or any stream. + * [Neyro.Data](https://github.com/neyromant/Neyro.Data) - Tiny, simple and fast ORM. * [StackExchange.Redis](https://github.com/StackExchange/StackExchange.Redis) * [SQL LocalDB Wrapper](https://github.com/martincostello/sqllocaldb) - SQL LocalDB Wrapper is an assembly providing interop with the SQL LocalDB native API from managed code using .NET APIs. From 480fe569195c02665bd56e8c465523b464a4eed6 Mon Sep 17 00:00:00 2001 From: Blake Niemyjski Date: Wed, 26 Nov 2014 11:23:37 -0600 Subject: [PATCH 101/872] Update dotnet-developer-projects.md --- dotnet-developer-projects.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 29c4561fd..517be725e 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -80,6 +80,9 @@ There are many .NET open source developer projects. You can always use a search * [SSH.NET](https://sshnet.codeplex.com/) - A client-side library for SSH, SCP and SFTP. * [WpfToolkit](https://github.com/dotnetprojects/wpftoolkit) - Fork of the MS WPF Toolkit +* Logging + * [Exceptionless](https://github.com/exceptionless/Exceptionless) - Provides real-time .NET error reporting for your ASP.NET, Web API, WebForms, WPF, Console, and MVC apps. It organizes the gathered information into simple actionable data that will help your app become exceptionless! + * Model-View-ViewModel (MVVM) Frameworks * [Caliburn Micro](http://caliburnmicro.com/) * [Catel.MVVM](http://catelproject.com/) From 5b7ebe2c0616fdc0ecf917d52023db6a6c87fa0c Mon Sep 17 00:00:00 2001 From: Konstantin Lepeshenkov Date: Wed, 26 Nov 2014 23:52:23 +0300 Subject: [PATCH 102/872] Update dotnet-developer-projects.md LINQ2DynamoDb is a type-safe data context for AWS DynamoDB with LINQ and in-memory caching support. Allows to combine DynamoDB's durability with cache speed and read consistency. Translates LINQ queries into corresponding DynamoDB Get/Query/Scan operations and stores query results in an in-memory cache. Data updates are propagated both to DynamoDB and cache. Bridges the gap between AWS SDK's object model and Microsoft's stack of data access technologies like data binding, ASP.Net datasources etc. Also allows to easily expose data from DynamoDB as an OData endpoint. --- dotnet-developer-projects.md | 1 + 1 file changed, 1 insertion(+) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 29c4561fd..0c83a4635 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -156,6 +156,7 @@ There are many .NET open source developer projects. You can always use a search * [NMEA Parser](https://github.com/dotMorten/NmeaParser) - Library for handling NMEA message in Windows Desktop, Store, Phone and Xamarin (Android + iOS), coming from files, Bluetooth, serial port or any stream. * [StackExchange.Redis](https://github.com/StackExchange/StackExchange.Redis) * [SQL LocalDB Wrapper](https://github.com/martincostello/sqllocaldb) - SQL LocalDB Wrapper is an assembly providing interop with the SQL LocalDB native API from managed code using .NET APIs. + * [LINQ2DynamoDB](http://linq2dynamodb.codeplex.com) - A type-safe data context for AWS DynamoDB with LINQ, in-memory caching and OData support. * Games From e0f442accdb5da12dbb9ec649f6efbc32208f114 Mon Sep 17 00:00:00 2001 From: Adam Date: Thu, 27 Nov 2014 23:56:07 +0100 Subject: [PATCH 103/872] Updated .Net Developer Projects Overview Added the Duality game framework to the Games sub-list of .Net Developer Projects. --- dotnet-developer-projects.md | 1 + 1 file changed, 1 insertion(+) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 29c4561fd..d72f0f9e4 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -160,6 +160,7 @@ There are many .NET open source developer projects. You can always use a search * Games * [MonoGame](http://monogame.net) - One framework for creating powerful cross-platform games. + * [Duality](https://github.com/AdamsLair/duality) - An Open Source 2D Game Engine + Visual Editor written entirely in C#. * [Paradox](https://github.com/SiliconStudio/paradox) - Paradox is a versatile and engaging game engine. * [OpenRA](https://github.com/OpenRA/OpenRA) - An open-source implementation of the Command & Conquer: Red Alert engine using .NET/Mono and OpenGL. * [WaveEngine](https://github.com/waveengine) - A powerful component based game engine for desktop and mobile platforms using C#. From 6a8e599ad608b8dd1c88e5f1e8d8c9e7b798c014 Mon Sep 17 00:00:00 2001 From: Lex Li Date: Fri, 28 Nov 2014 11:22:19 +0800 Subject: [PATCH 104/872] Added SharpSnmpLib and Obfuscar info. --- dotnet-developer-projects.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 29c4561fd..4e442d70b 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -76,6 +76,7 @@ There are many .NET open source developer projects. You can always use a search * [RestBus](http://restbus.org/) - Easy Asynchronous Messaging and Queueing for .NET * [SharpDX](https://github.com/sharpdx/SharpDX) - SharpDX is a project delivering the full DirectX API for .NET on all Windows platforms. * [SharpMap](https://sharpmap.codeplex.com/) An easy-to-use mapping library for use in web and desktop applications + * [SharpSnmpLib](https://sharpsnmplib.codeplex.com) - An easy-to-use SNMP library for use on all platforms (.NET/Mono/Xamarin) * [Splat](https://github.com/paulcbetts/splat) - A library to make things cross-platform that should be. * [SSH.NET](https://sshnet.codeplex.com/) - A client-side library for SSH, SCP and SFTP. * [WpfToolkit](https://github.com/dotnetprojects/wpftoolkit) - Fork of the MS WPF Toolkit @@ -106,6 +107,7 @@ There are many .NET open source developer projects. You can always use a search * [Snoop WPF](https://github.com/cplotts/snoopwpf) - Snoop - The WPF Spy Utility * [Sql Bulk Copy Sync](https://github.com/WCOMAB/SqlBulkSync) * [Vagrant](http://nessos.github.io/Vagrant/) Automated dependency resolution and dynamic assembly compilation framework. + * [Obfuscar](https://obfuscar.codeplex.com) - MSIL obfuscation utility for .NET assemblies. * [Outcomes.Net](https://github.com/kinetiq/Ether.Outcomes/) Fluent wrapper that eliminates plumbing code around failure-prone functions. * [Weighted Selector](https://github.com/kinetiq/Ether.WeightedSelector/) Easy to use (but high performance!) weighted selection implementation. * [ZeroToNine](https://github.com/ploeh/ZeroToNine) - A tool for maintaining .NET Assembly versions across multiple files. From 3c8004cb0878d0ca89cac10d4ebba3b271082c45 Mon Sep 17 00:00:00 2001 From: James South Date: Fri, 28 Nov 2014 10:42:05 +0000 Subject: [PATCH 105/872] Adding ImageProcessor description --- dotnet-developer-projects.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 0c63853b2..a16e08b1a 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -60,7 +60,7 @@ There are many .NET open source developer projects. You can always use a search * [FluentValidation](https://github.com/JeremySkinner/FluentValidation) - A small validation library for .NET that uses a fluent interface and lambda expressions for building validation rules. * [GongSolutions.Wpf.DragDrop](https://github.com/punker76/gong-wpf-dragdrop) A drag'n'drop framework for WPF. * [HudlFfmpeg](https://github.com/hudl/HudlFfmpeg) - A/V transcoding framework that helps build complex FFmpeg commands. - * [ImageProcessor](http://imageprocessor.org/) + * [ImageProcessor](http://imageprocessor.org/) - A .NET Library For On-The-Fly Processing Of Images. * [Kentor.AuthServices](https://github.com/KentorIT/authservices) A SAML2 Service Provider for .NET. * [LibGit2Sharp](https://github.com/libgit2/libgit2sharp) * [Lucene.Net](https://github.com/apache/lucene.net) From 9cab3079bd2db674d2d813ddbc53cb1ec283a7c5 Mon Sep 17 00:00:00 2001 From: RolandPheasant Date: Fri, 28 Nov 2014 12:37:04 +0000 Subject: [PATCH 106/872] Added Dynamic Data to the listing --- dotnet-developer-projects.md | 1 + 1 file changed, 1 insertion(+) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 0c63853b2..d4244bd70 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -54,6 +54,7 @@ There are many .NET open source developer projects. You can always use a search * [Cricket](http://fsprojects.github.io/Cricket/) - Actor library * [DiffSharp](http://gbaydin.github.io/DiffSharp/) Automatic Differentiation Library * [DotNetOpenAuth](https://github.com/DotNetOpenAuth) - Library that adds support for your site visitors to login with their OpenIDs by just dropping an ASP.NET control onto your page. + * [DynamicData](https://github.com/RolandPheasant/DynamicData) - Brings the power of Rx to collections * [EasyNetQ](https://github.com/mikehadlow/EasyNetQ) - An easy to use .NET API for RabbitMQ. * [FeatureToggle](https://github.com/jason-roberts/FeatureToggle) - Simple, reliable feature toggles in .NET. * [FluentBootstrap](https://github.com/somedave/FluentBootstrap) From f49dc6d488e9ab72a39217bb488cf1e7ce2a397a Mon Sep 17 00:00:00 2001 From: Nathanael Jones Date: Fri, 28 Nov 2014 10:45:10 -0500 Subject: [PATCH 107/872] Create graphics/image processing section, add libs --- dotnet-developer-projects.md | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 0c63853b2..c0c2f2329 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -60,7 +60,6 @@ There are many .NET open source developer projects. You can always use a search * [FluentValidation](https://github.com/JeremySkinner/FluentValidation) - A small validation library for .NET that uses a fluent interface and lambda expressions for building validation rules. * [GongSolutions.Wpf.DragDrop](https://github.com/punker76/gong-wpf-dragdrop) A drag'n'drop framework for WPF. * [HudlFfmpeg](https://github.com/hudl/HudlFfmpeg) - A/V transcoding framework that helps build complex FFmpeg commands. - * [ImageProcessor](http://imageprocessor.org/) * [Kentor.AuthServices](https://github.com/KentorIT/authservices) A SAML2 Service Provider for .NET. * [LibGit2Sharp](https://github.com/libgit2/libgit2sharp) * [Lucene.Net](https://github.com/apache/lucene.net) @@ -74,7 +73,6 @@ There are many .NET open source developer projects. You can always use a search * [PocketSharp](https://github.com/ceee/PocketSharp) * [RestSharp](http://restsharp.org/) - Simple REST and HTTP API Client for .NET * [RestBus](http://restbus.org/) - Easy Asynchronous Messaging and Queueing for .NET - * [SharpDX](https://github.com/sharpdx/SharpDX) - SharpDX is a project delivering the full DirectX API for .NET on all Windows platforms. * [SharpMap](https://sharpmap.codeplex.com/) An easy-to-use mapping library for use in web and desktop applications * [SharpSnmpLib](https://sharpsnmplib.codeplex.com) - An easy-to-use SNMP library for use on all platforms (.NET/Mono/Xamarin) * [Splat](https://github.com/paulcbetts/splat) - A library to make things cross-platform that should be. @@ -82,6 +80,13 @@ There are many .NET open source developer projects. You can always use a search * [WebApiProxy](https://github.com/faniereynders/WebApiProxy) - An automatic proxy provider for RESTful services built on ASP.NET Web API. Includes JavaScript & C# client generation. * [WpfToolkit](https://github.com/dotnetprojects/wpftoolkit) - Fork of the MS WPF Toolkit +* Graphics & Server-side Image Processing + * [ImageResizer](http://imageresizing.net/) - Add commands to image URLs to get altered versions in milliseconds. Edit, filter, touch-up images in real-time. (multiple backends - FreeImage, C++/CLI, GDI+, WIC). 45+ plugins available. ([Apache 2 / AGPL](https://github.com/imazen/resizer/blob/develop/LICENSE.md)) + * [.NET Image Processor](http://dotnetimageprocessor.codeplex.com/) - Extensible, chainable image processing library (GDI+ based) (Ms-PL). + * [DynamicImage](https://github.com/tgjones/dynamic-image) - WPF-based server-side image rendering system - lots of visual effects implemented as high-performance shaders. Has URL api, several plugins available. (Apache 2) + * [ImageProcessor](http://imageprocessor.org/) (GDI+ based) (Apache 2). + * [SharpDX](https://github.com/sharpdx/SharpDX) - SharpDX is a project delivering the full DirectX API for .NET on all Windows platforms. + * Logging * [Exceptionless](https://github.com/exceptionless/Exceptionless) - Provides real-time .NET error reporting for your ASP.NET, Web API, WebForms, WPF, Console, and MVC apps. It organizes the gathered information into simple actionable data that will help your app become exceptionless! From 4fce1c65882d87fb41ccd22335b02893434f6b60 Mon Sep 17 00:00:00 2001 From: Dennis Daume Date: Fri, 28 Nov 2014 18:26:13 +0100 Subject: [PATCH 108/872] Added Espera to the consumer projects --- dotnet-consumer-projects.md | 1 + 1 file changed, 1 insertion(+) diff --git a/dotnet-consumer-projects.md b/dotnet-consumer-projects.md index fa9e3f16d..912102b8f 100644 --- a/dotnet-consumer-projects.md +++ b/dotnet-consumer-projects.md @@ -7,6 +7,7 @@ There are many .NET based open source consumer projects. You can always use a se * Audio players * [Banshee](https://github.com/GNOME/banshee) - A cross-platform multimedia player + * [Espera](https://github.com/flagbug/Espera) - A media player that plays your music, YouTube videos, SoundCloud songs, has a special "party mode" and an Android remote control. * Utilities * [Gmail Notifier Plus](https://github.com/shellscape/Gmail-Notifier-Plus) - An app to monitor multiple Gmail and Google Apps for Work Gmail accounts from a single, compact point, sitting in Windows 7/8/8.1 taskbar. From cbad6a81b6e3157c4a3fbcf1eed7b1d6b47b1213 Mon Sep 17 00:00:00 2001 From: Kerry Jiang Date: Fri, 28 Nov 2014 10:09:16 -0800 Subject: [PATCH 109/872] Added SuperSocket and WebSocket4Net --- dotnet-developer-projects.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index b3bdd145c..3bba3ba51 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -78,7 +78,9 @@ There are many .NET open source developer projects. You can always use a search * [SharpSnmpLib](https://sharpsnmplib.codeplex.com) - An easy-to-use SNMP library for use on all platforms (.NET/Mono/Xamarin) * [Splat](https://github.com/paulcbetts/splat) - A library to make things cross-platform that should be. * [SSH.NET](https://sshnet.codeplex.com/) - A client-side library for SSH, SCP and SFTP. + * [SuperSocket](https://github.com/kerryjiang/SuperSocket) - An extensible socket server engine which supports .NET and Mono * [WebApiProxy](https://github.com/faniereynders/WebApiProxy) - An automatic proxy provider for RESTful services built on ASP.NET Web API. Includes JavaScript & C# client generation. + * [WebSocket4Net](https://websocket4net.codeplex.com/) - A C# websocket client for .NET, Mono and Xamarin * [WpfToolkit](https://github.com/dotnetprojects/wpftoolkit) - Fork of the MS WPF Toolkit * Graphics & Server-side Image Processing From 0fa01246da53c6096b10eb3d09a7684493d06ba6 Mon Sep 17 00:00:00 2001 From: Jan Karger Date: Fri, 28 Nov 2014 20:51:01 +0100 Subject: [PATCH 110/872] Add Simple Music Player to Audio players section --- dotnet-consumer-projects.md | 1 + 1 file changed, 1 insertion(+) diff --git a/dotnet-consumer-projects.md b/dotnet-consumer-projects.md index 912102b8f..70aec64c4 100644 --- a/dotnet-consumer-projects.md +++ b/dotnet-consumer-projects.md @@ -8,6 +8,7 @@ There are many .NET based open source consumer projects. You can always use a se * Audio players * [Banshee](https://github.com/GNOME/banshee) - A cross-platform multimedia player * [Espera](https://github.com/flagbug/Espera) - A media player that plays your music, YouTube videos, SoundCloud songs, has a special "party mode" and an Android remote control. + * [Simple Music Player](https://github.com/punker76/simple-music-player) SimpleMP or Simple Music Player is a simple and easy to use music player for free. It plays the most common music files (mp3, ogg, wma, wav) in a simple way. * Utilities * [Gmail Notifier Plus](https://github.com/shellscape/Gmail-Notifier-Plus) - An app to monitor multiple Gmail and Google Apps for Work Gmail accounts from a single, compact point, sitting in Windows 7/8/8.1 taskbar. From 525d6a620aa20d7a94124f1096171c7d1d2154c0 Mon Sep 17 00:00:00 2001 From: Mike Mooney Date: Fri, 28 Nov 2014 15:14:39 -0500 Subject: [PATCH 111/872] Update dotnet-developer-projects.md --- dotnet-developer-projects.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 3bba3ba51..a6864e38f 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -192,6 +192,11 @@ There are many .NET open source developer projects. You can always use a search * Scheduling * [Quartz.Net](https://github.com/quartznet/quartznet) + * [Hangfire] (http://hangfire.io/) + +* Scheduling + * [DropkicK](https://github.com/chucknorris/dropkick/) - A fluent deployment library for Windows applications + * [RoundHouse] (https://code.google.com/p/roundhouse/) - RoundhousE is a Database Migration Utility for .NET using sql files and versioning based on source control * Service Bus * [Warewolf Easy Service Bus](https://github.com/Warewolf-ESB/Warewolf-ESB) - An open source easy to use service bus, built on numerous .Net technologies including WF (Windows Workflow Foundation), SignalR and WPF. From a26a27fccde6c2d484398e19f64ef7a053c550ac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ha=CC=8Akan=20Edling?= Date: Fri, 28 Nov 2014 21:35:23 +0100 Subject: [PATCH 112/872] Added Piranha CMS to Web CMS section. --- dotnet-developer-projects.md | 1 + 1 file changed, 1 insertion(+) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 3bba3ba51..286ae21f8 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -28,6 +28,7 @@ There are many .NET open source developer projects. You can always use a search * Web CMS * [DNN (formerly DotNetNuke)](https://dotnetnuke.codeplex.com/) - Web content management platform (CMS). * [Orchard](http://www.orchardproject.net/) - A community-focused Content Management System built on the ASP.NET MVC platform. + * [Piranha CMS](http://piranhacms.org) - Lightweight CMS library for new and existing ASP.NET MVC & WebPages applications. * [Suave](https://github.com/SuaveIO/suave) A lightweight web server and a set of combinators to manipulate route flow and task composition. * [Umbraco](http://umbraco.com/) - Web content management platform (CMS). * [WebSharper](https://bitbucket.org/IntelliFactory/websharper) Web programming platform including a compiler from F# code to JavaScript. From d01c816f5c2962a5971926f34aa76411d0081cae Mon Sep 17 00:00:00 2001 From: Dejan Milicic Date: Fri, 28 Nov 2014 22:05:31 +0100 Subject: [PATCH 113/872] Web CMS addition : N2CMS --- dotnet-developer-projects.md | 1 + 1 file changed, 1 insertion(+) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 3bba3ba51..d34d4db72 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -31,6 +31,7 @@ There are many .NET open source developer projects. You can always use a search * [Suave](https://github.com/SuaveIO/suave) A lightweight web server and a set of combinators to manipulate route flow and task composition. * [Umbraco](http://umbraco.com/) - Web content management platform (CMS). * [WebSharper](https://bitbucket.org/IntelliFactory/websharper) Web programming platform including a compiler from F# code to JavaScript. + * [N2CMS](http://www.n2cms.com/) - Open source, lightweight, code-first CMS able to seamlessly integrate into any MVC project. * Web Frameworks * [Nancy](http://nancyfx.org) - A lightweight, low-ceremony, framework for building HTTP based services on .NET and Mono. From 92ac3076607e593e9784ec3b844520f6a25c9bde Mon Sep 17 00:00:00 2001 From: David Haney Date: Fri, 28 Nov 2014 20:00:42 -0500 Subject: [PATCH 114/872] Added "Distributed Caching and Computing" section with Dache --- dotnet-developer-projects.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 3bba3ba51..5b7f65120 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -196,6 +196,9 @@ There are many .NET open source developer projects. You can always use a search * Service Bus * [Warewolf Easy Service Bus](https://github.com/Warewolf-ESB/Warewolf-ESB) - An open source easy to use service bus, built on numerous .Net technologies including WF (Windows Workflow Foundation), SignalR and WPF. +* Distributed Caching and Computing + * [Dache](https://github.com/ironyx/dache) - An open source distributed caching service, built on .NET 4.0 and using TCP sockets for communication. + * Consumer projects * [.NET open source consumer projects list](dotnet-consumer-projects.md) From 48ef956913e38f771e812a60263561008657290f Mon Sep 17 00:00:00 2001 From: AdvancedREI Date: Sat, 29 Nov 2014 02:33:38 -0500 Subject: [PATCH 115/872] Add AdvancedREI's open source contributions. --- dotnet-developer-projects.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index d85229692..bc54e4480 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -50,6 +50,7 @@ There are many .NET open source developer projects. You can always use a search * [ArcGIS.PCL](https://github.com/davetimmins/ArcGIS.PCL) - Call ArcGIS Server REST API resources. You can also convert between ArcGIS features and GeoJSON. * [AsyncCollections](https://github.com/HellBrick/AsyncCollections) - A set of lock-free thread-safe collections designed to be used asynchronously. * [AzureNetQ](https://github.com/Roysvork/AzureNetQ) - An easy to use .NET API for Azure Service Bus. + * [Bing.RestClient](https://github.com/AdvancedREI/Bing.RestClient) - Access the Bing REST APIs from a unified client. * [Cimbalino Toolkit](http://cimbalino.org/) - A set of useful and powerful tools that will help you build your Windows Platform applications. * [Coding4Fun Toolkit](http://coding4fun.codeplex.com/) * [ColoredConsole](https://github.com/colored-console/colored-console) - Add some color to your console. @@ -74,6 +75,7 @@ There are many .NET open source developer projects. You can always use a search * [NodaTime](http://nodatime.org/) - A better date and time API for .NET * [OsmSharp](https://github.com/OsmSharp) Mapping & Routing library. * [PocketSharp](https://github.com/ceee/PocketSharp) + * [PortableRest](https://github.com/AdvancedREI/PortableRest) Portable library for building cross-platform REST API Clients for .NET and Xamarin. * [RestSharp](http://restsharp.org/) - Simple REST and HTTP API Client for .NET * [RestBus](http://restbus.org/) - Easy Asynchronous Messaging and Queueing for .NET * [SharpMap](https://sharpmap.codeplex.com/) An easy-to-use mapping library for use in web and desktop applications @@ -84,6 +86,8 @@ There are many .NET open source developer projects. You can always use a search * [WebApiProxy](https://github.com/faniereynders/WebApiProxy) - An automatic proxy provider for RESTful services built on ASP.NET Web API. Includes JavaScript & C# client generation. * [WebSocket4Net](https://websocket4net.codeplex.com/) - A C# websocket client for .NET, Mono and Xamarin * [WpfToolkit](https://github.com/dotnetprojects/wpftoolkit) - Fork of the MS WPF Toolkit + * [XamlEssentials](https://github.com/AdvancedREI/XamlEssentials) - Collection of helpers for Microsoft's XAML platforms. + * [Zlib.Portable](https://github.com/AdvancedREI/Zlib.Portable) - A Portable Class Library port of the Zlib library from http://dotnetzip.codeplex.com. * Graphics & Server-side Image Processing * [.NET Image Processor](http://dotnetimageprocessor.codeplex.com/) - Extensible, chainable image processing library (GDI+ based) (Ms-PL). From ed30fef4d4f135a1847b5b5244707365b78c05f3 Mon Sep 17 00:00:00 2001 From: Mike Mooney Date: Sat, 29 Nov 2014 05:36:15 -0500 Subject: [PATCH 116/872] Corrected second Scheduling section to Deployment --- dotnet-developer-projects.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index a6864e38f..7da63ddf7 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -194,7 +194,7 @@ There are many .NET open source developer projects. You can always use a search * [Quartz.Net](https://github.com/quartznet/quartznet) * [Hangfire] (http://hangfire.io/) -* Scheduling +* Deployment * [DropkicK](https://github.com/chucknorris/dropkick/) - A fluent deployment library for Windows applications * [RoundHouse] (https://code.google.com/p/roundhouse/) - RoundhousE is a Database Migration Utility for .NET using sql files and versioning based on source control From 844c439d835ad1fdff85e99d8a6f501b9b70ecdb Mon Sep 17 00:00:00 2001 From: Bar Arnon Date: Sat, 29 Nov 2014 14:15:53 +0200 Subject: [PATCH 117/872] Added YouCast to the Utilities list --- dotnet-consumer-projects.md | 1 + 1 file changed, 1 insertion(+) diff --git a/dotnet-consumer-projects.md b/dotnet-consumer-projects.md index 70aec64c4..3b82bb539 100644 --- a/dotnet-consumer-projects.md +++ b/dotnet-consumer-projects.md @@ -12,6 +12,7 @@ There are many .NET based open source consumer projects. You can always use a se * Utilities * [Gmail Notifier Plus](https://github.com/shellscape/Gmail-Notifier-Plus) - An app to monitor multiple Gmail and Google Apps for Work Gmail accounts from a single, compact point, sitting in Windows 7/8/8.1 taskbar. + * [YouCast](https://github.com/I3arnon/YouCast) - YouCast allows you to subscribe to video feeds on YouTube as podcasts in any standard podcatcher like iTunes, BeyondPod on Adroid or even Zune PC and so forth. * Developer projects * [.NET open source developer projects list](dotnet-developer-projects.md) From 362e37a3722a987f08c85533e4ee99916b67313b Mon Sep 17 00:00:00 2001 From: Marius Schulz Date: Sat, 29 Nov 2014 18:39:48 +0100 Subject: [PATCH 118/872] Adds the ExtraLINQ library to the list --- dotnet-developer-projects.md | 1 + 1 file changed, 1 insertion(+) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index d85229692..4212ae7e7 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -58,6 +58,7 @@ There are many .NET open source developer projects. You can always use a search * [DotNetOpenAuth](https://github.com/DotNetOpenAuth) - Library that adds support for your site visitors to login with their OpenIDs by just dropping an ASP.NET control onto your page. * [DynamicData](https://github.com/RolandPheasant/DynamicData) - Brings the power of Rx to collections * [EasyNetQ](https://github.com/mikehadlow/EasyNetQ) - An easy to use .NET API for RabbitMQ. + * [ExtraLINQ](https://github.com/mariusschulz/ExtraLINQ) - Various extension methods for working with .NET collections. * [FeatureToggle](https://github.com/jason-roberts/FeatureToggle) - Simple, reliable feature toggles in .NET. * [FluentBootstrap](https://github.com/somedave/FluentBootstrap) * [FluentValidation](https://github.com/JeremySkinner/FluentValidation) - A small validation library for .NET that uses a fluent interface and lambda expressions for building validation rules. From 5d87c96cf9cfd6fb7f9368243725e39f6e8b7ee4 Mon Sep 17 00:00:00 2001 From: Richard Lander Date: Sat, 29 Nov 2014 20:52:25 -0800 Subject: [PATCH 119/872] Clean up intro and linking between consumer and developer files. --- dotnet-consumer-projects.md | 10 ++++------ dotnet-developer-projects.md | 15 +++++++-------- 2 files changed, 11 insertions(+), 14 deletions(-) diff --git a/dotnet-consumer-projects.md b/dotnet-consumer-projects.md index 3b82bb539..f5539a0ad 100644 --- a/dotnet-consumer-projects.md +++ b/dotnet-consumer-projects.md @@ -1,6 +1,8 @@ # .NET Open Source Consumer Projects -There are many .NET based open source consumer projects. You can always use a search engine to find projects, and that's a good approach. This list is an intended to provide a showcase for projects that want it. It is intended to be community maintained. PR a change in and it will be accepted (modulo duplicates). Projects should be sorted alphabetically and project source links and product website are allowed. This list could include desktop applications, websites, mobile apps, etc. +This community maintained list showcases .NET open source consumer projects. It is intended to include projects that are useful for consumers, such as desktop applications, websites, mobile apps, etc. For developer projects, see the [.NET open source developer projects list](dotnet-developer-projects.md). PR a change into either list and it will be accepted (modulo duplicates). + +Please sort projects alphabetically and provide a one-line description. GitHub/CodePlex (or other source) links are preferred, but feel free to also include marketing sites. Create new sections, as appropriate. * Media Streaming * [Media Browser](https://github.com/mediabrowser/) - [www.mediabrowser.tv](http://www.mediabrowser.tv) - A client/server application that allows you to easily manage your own media content and present it in an eye catching way. Server runs on Windows, Linux and Mac. Clients are for WP, Android, iOS, Media Centre, Windows, Roku, etc. @@ -13,11 +15,7 @@ There are many .NET based open source consumer projects. You can always use a se * Utilities * [Gmail Notifier Plus](https://github.com/shellscape/Gmail-Notifier-Plus) - An app to monitor multiple Gmail and Google Apps for Work Gmail accounts from a single, compact point, sitting in Windows 7/8/8.1 taskbar. * [YouCast](https://github.com/I3arnon/YouCast) - YouCast allows you to subscribe to video feeds on YouTube as podcasts in any standard podcatcher like iTunes, BeyondPod on Adroid or even Zune PC and so forth. - -* Developer projects - * [.NET open source developer projects list](dotnet-developer-projects.md) - This list is just a starting point - also take a look at all the projects on [CodePlex](http://www.codeplex.com/) and on [GitHub Trending C#](https://github.com/trending?l=csharp). -Thanks to @scottisafool for providing the initial list. +Thanks to @scottisafool for providing the initial list. \ No newline at end of file diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 612ff2142..b887b342d 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -1,6 +1,8 @@ # .NET Open Source Developer Projects -There are many .NET open source developer projects. You can always use a search engine to find projects, and that's a good approach. This list is intended to provide a showcase for projects that want it and to be community maintained. PR a change in and it will be accepted (modulo duplicates). Projects should be sorted alphabetically provide a one-line description and GitHub (or source) links are preferred over marketing sites. +This community maintained list showcases .NET open source developer projects. It is intended to include projects that are useful for any aspect of the development process. For consumer projects, see the [.NET open source consumer projects list](dotnet-consumer-projects.md). PR a change into either list and it will be accepted (modulo duplicates). + +Please sort projects alphabetically and provide a one-line description. GitHub/CodePlex (or other source) links are preferred, but feel free to also include marketing sites. Create new sections, as appropriate. * .NET Implementations * [.NET Core](https://github.com/dotnet/corefx) - Core .NET Framework @@ -199,11 +201,11 @@ There are many .NET open source developer projects. You can always use a search * Scheduling * [Quartz.Net](https://github.com/quartznet/quartznet) - * [Hangfire] (http://hangfire.io/) + * [Hangfire](http://hangfire.io/) * Deployment * [DropkicK](https://github.com/chucknorris/dropkick/) - A fluent deployment library for Windows applications - * [RoundHouse] (https://code.google.com/p/roundhouse/) - RoundhousE is a Database Migration Utility for .NET using sql files and versioning based on source control + * [RoundHouse](https://code.google.com/p/roundhouse/) - RoundhousE is a Database Migration Utility for .NET using sql files and versioning based on source control * Service Bus * [Warewolf Easy Service Bus](https://github.com/Warewolf-ESB/Warewolf-ESB) - An open source easy to use service bus, built on numerous .Net technologies including WF (Windows Workflow Foundation), SignalR and WPF. @@ -211,11 +213,8 @@ There are many .NET open source developer projects. You can always use a search * Distributed Caching and Computing * [Dache](https://github.com/ironyx/dache) - An open source distributed caching service, built on .NET 4.0 and using TCP sockets for communication. -* Consumer projects - * [.NET open source consumer projects list](dotnet-consumer-projects.md) - This list is just a starting point - also take a look at all the projects on [CodePlex](http://www.codeplex.com/) and on [GitHub Trending C#](https://github.com/trending?l=csharp). -Thanks to [@slodge](http://twitter.com/slodge "@slodge on Twitter") for providing the initial list. - [@quozd](http://twitter.com/quozd "@quozd on Twitter") hosts an [Awesome .NET!](https://github.com/quozd/awesome-dotnet) list. Also worth checking out. + +Thanks to [@slodge](http://twitter.com/slodge "@slodge on Twitter") for providing the initial list. \ No newline at end of file From 89967976e0bd7acf143b6d899844b89f403535f4 Mon Sep 17 00:00:00 2001 From: Punit Ganshani Date: Sun, 30 Nov 2014 13:20:22 +0800 Subject: [PATCH 120/872] Added multiple open source frameworks Added - KonfDB, CInject, Workflow Extractor, dI.Hook --- dotnet-developer-projects.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 612ff2142..855927f5e 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -10,6 +10,7 @@ There are many .NET open source developer projects. You can always use a search * Platforms * [Castle Project](https://github.com/castleproject) - Umbrella project for ActiveRecord, DynamicProxy, MonoRail, Windsor * [Catel](http://catelproject.com/) - Application platform with IoC, logging, reflection and much more that serves as a base for applications that must be ready for future growth. + * [KonfDB](http://www.konfdb.com/) - Configuration Management as a Service for cross-platform, multi-tenant enterprise/hobby applications * Languages * [ClojureCLR](https://github.com/clojure/clojure-clr) - A .NET implemention of the [Clojure](http://clojure.org) programming language, built on the DLR. @@ -130,6 +131,7 @@ There are many .NET open source developer projects. You can always use a search * [Outcomes.Net](https://github.com/kinetiq/Ether.Outcomes/) Fluent wrapper that eliminates plumbing code around failure-prone functions. * [Weighted Selector](https://github.com/kinetiq/Ether.WeightedSelector/) Easy to use (but high performance!) weighted selection implementation. * [ZeroToNine](https://github.com/ploeh/ZeroToNine) - A tool for maintaining .NET Assembly versions across multiple files. + * [CInject](http://codeinject.codeplex.com) - A tool to inject your C#/VB.NET code into existing .NET assemblies and executables * Testing * [AutoFixture](https://github.com/AutoFixture/AutoFixture) - An open source framework for .NET designed to minimize the 'Arrange' phase of your unit tests. Its primary goal is to allow developers to focus on what is being tested rather than how to setup the test scenario, by making it easier to create object graphs containing test data. @@ -148,7 +150,8 @@ There are many .NET open source developer projects. You can always use a search * [fFastInjector](https://ffastinjector.codeplex.com/) - fFastInjector is a high-performing dependency injector, service locator, and/or IOC (inversion of control) container. * [Funq](https://funq.codeplex.com/) - A fast DI container you can understand. * [Grace](https://github.com/ipjohnson/Grace) - Grace is a feature rich Dependency Injection container in a portable class library - * [Griffin](https://github.com/jgauffin/griffin.container) - Inversion of control container with (almost) zero configuration + * [Griffin](https://github.com/jgauffin/griffin.container) - Inversion of control container with (almost) zero configuration + * [dI.Hook](http://dihook.codeplex.com) - DI container that allows invocation using AOP * [HaveBox](https://bitbucket.org/Have/havebox/wiki/Home) - HaveBox is a very fast and lightweight IoC containter. The goal is to keep it fast and light, and at the same time easy to use. * [Hiro](https://github.com/philiplaureano/Hiro) - An ultra-lightweight, inversion of control container compiler framework * [IfInjector](https://github.com/iamahern/IfInjector) - High performance mobile micro-IoC container. @@ -214,6 +217,9 @@ There are many .NET open source developer projects. You can always use a search * Consumer projects * [.NET open source consumer projects list](dotnet-consumer-projects.md) +* Windows Workflow + * [Workflow Extractor](http://workflowextractor.codeplex.com) - Document Windows Workflow logic into a Word document or Excel sheet. + This list is just a starting point - also take a look at all the projects on [CodePlex](http://www.codeplex.com/) and on [GitHub Trending C#](https://github.com/trending?l=csharp). Thanks to [@slodge](http://twitter.com/slodge "@slodge on Twitter") for providing the initial list. From 151f5f94d945bd2ecf6896000cdde3c522069306 Mon Sep 17 00:00:00 2001 From: Byte Date: Sun, 30 Nov 2014 06:43:54 +0000 Subject: [PATCH 121/872] Added Ember to the Utilities list. --- dotnet-consumer-projects.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/dotnet-consumer-projects.md b/dotnet-consumer-projects.md index 3b82bb539..6802e1b80 100644 --- a/dotnet-consumer-projects.md +++ b/dotnet-consumer-projects.md @@ -13,7 +13,8 @@ There are many .NET based open source consumer projects. You can always use a se * Utilities * [Gmail Notifier Plus](https://github.com/shellscape/Gmail-Notifier-Plus) - An app to monitor multiple Gmail and Google Apps for Work Gmail accounts from a single, compact point, sitting in Windows 7/8/8.1 taskbar. * [YouCast](https://github.com/I3arnon/YouCast) - YouCast allows you to subscribe to video feeds on YouTube as podcasts in any standard podcatcher like iTunes, BeyondPod on Adroid or even Zune PC and so forth. - + * [Ember](https://github.com/Embershot/Ember) - Simple & Beautiful Screenshot App + * * Developer projects * [.NET open source developer projects list](dotnet-developer-projects.md) From cb6c8c7fbf736c1bf34d5a5caec9bf4f2d98a93b Mon Sep 17 00:00:00 2001 From: "Mr. Byte" Date: Sun, 30 Nov 2014 14:36:36 +0000 Subject: [PATCH 122/872] Added TestStack.FluentMvcTesting to the Testing list. --- dotnet-developer-projects.md | 1 + 1 file changed, 1 insertion(+) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 919a7557f..6f71fed94 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -145,6 +145,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [NUnit](https://github.com/nunit/nunit) - NUnit is a unit-testing framework for all .NET languages. * [tickspec](http://tickspec.codeplex.com/) A lightweight Behaviour Driven Development (BDD) framework. * [xUnit](https://github.com/xunit/xunit) - xUnit.net is a community-focused unit testing tool for the .NET Framework. + * [TestStack.FluentMvcTesting](https://github.com/TestStack/TestStack.FluentMVCTesting) - Simple, terse, fluent unit testing for ASP.NET MVC Controllers * Dependency Injection * [Autofac](http://autofac.org/) - Autofac is an addictive Inversion of Control container for .NET 4.5, Silverlight 5, Windows Store apps, and Windows Phone 8 apps. From 3813930a24e3ff57c0d24eceb6488248ee535350 Mon Sep 17 00:00:00 2001 From: "Mr. Byte" Date: Sun, 30 Nov 2014 14:39:04 +0000 Subject: [PATCH 123/872] Added full stop. --- dotnet-developer-projects.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 6f71fed94..2a1a86e4f 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -145,7 +145,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [NUnit](https://github.com/nunit/nunit) - NUnit is a unit-testing framework for all .NET languages. * [tickspec](http://tickspec.codeplex.com/) A lightweight Behaviour Driven Development (BDD) framework. * [xUnit](https://github.com/xunit/xunit) - xUnit.net is a community-focused unit testing tool for the .NET Framework. - * [TestStack.FluentMvcTesting](https://github.com/TestStack/TestStack.FluentMVCTesting) - Simple, terse, fluent unit testing for ASP.NET MVC Controllers + * [TestStack.FluentMvcTesting](https://github.com/TestStack/TestStack.FluentMVCTesting) - Simple, terse, fluent unit testing for ASP.NET MVC Controllers. * Dependency Injection * [Autofac](http://autofac.org/) - Autofac is an addictive Inversion of Control container for .NET 4.5, Silverlight 5, Windows Store apps, and Windows Phone 8 apps. From 2c0557da3d1286c079fd9d791a735f4fce376211 Mon Sep 17 00:00:00 2001 From: "Mr. Byte" Date: Tue, 2 Dec 2014 13:03:02 +0000 Subject: [PATCH 124/872] Added more TestStack projects to the Testing list. --- dotnet-developer-projects.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 2a1a86e4f..c4510f988 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -146,6 +146,9 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [tickspec](http://tickspec.codeplex.com/) A lightweight Behaviour Driven Development (BDD) framework. * [xUnit](https://github.com/xunit/xunit) - xUnit.net is a community-focused unit testing tool for the .NET Framework. * [TestStack.FluentMvcTesting](https://github.com/TestStack/TestStack.FluentMVCTesting) - Simple, terse, fluent unit testing for ASP.NET MVC Controllers. + * [TestStack.Seleno](https://github.com/TestStack/TestStack.Seleno) - Seleno helps you write automated UI tests in the right way by implementing Page Objects and Page Components and by reading from and writing to web pages using strongly typed view models. + * [TestStack.BDDfy](https://github.com/TestStack/TestStack.BDDfy) - BDDfy is the simplest BDD framework to use, customize and extend! + * [TestStack.White](https://github.com/TestStack/White) - White is a framework for automating rich client applications based on Win32, WinForms, WPF, Silverlight and SWT (Java) platforms. * Dependency Injection * [Autofac](http://autofac.org/) - Autofac is an addictive Inversion of Control container for .NET 4.5, Silverlight 5, Windows Store apps, and Windows Phone 8 apps. From 544a62f73caef49e69b696eb0d9e630136239b6b Mon Sep 17 00:00:00 2001 From: Edward Nutting Date: Tue, 2 Dec 2014 18:57:01 +0000 Subject: [PATCH 125/872] Update dotnet-developer-projects.md --- dotnet-developer-projects.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index c4510f988..36e7aeca3 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -8,7 +8,8 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [.NET Core](https://github.com/dotnet/corefx) - Core .NET Framework * [Mono Project](https://github.com/mono/) - Cross-platform implementation of .NET Framework. * [Cosmos](http://cosmos.codeplex.com/) - C# Open Source Managed Operating System, an operating system "construction kit". - + * [Fling OS](http://www.flingos.co.uk/) - C# Operating System designed for people to learn low-level development from. + * Platforms * [Castle Project](https://github.com/castleproject) - Umbrella project for ActiveRecord, DynamicProxy, MonoRail, Windsor * [Catel](http://catelproject.com/) - Application platform with IoC, logging, reflection and much more that serves as a base for applications that must be ready for future growth. From c6ecddf7e913048e58d13803693fb5324a312134 Mon Sep 17 00:00:00 2001 From: artemlos Date: Tue, 2 Dec 2014 21:41:38 +0100 Subject: [PATCH 126/872] Update dotnet-developer-projects.md I've added one library for application protection (SKGL), one for expression parser (Mathos Parser) with support for expression to IL conversion, and a mathematical library (Mathos Core Library). --- dotnet-developer-projects.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index c4510f988..d5905c6b3 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -27,6 +27,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * Security / Identity Management * [Thinktecture IdentityServer](https://github.com/thinktecture/Thinktecture.IdentityServer.v3) * [Thinktecture IdentityManager](https://github.com/thinktecture/Thinktecture.IdentityManager) + * [SKGL - Serial Key Generating Library] (https://skgl.codeplex.com/) * Web CMS * [DNN (formerly DotNetNuke)](https://dotnetnuke.codeplex.com/) - Web content management platform (CMS). @@ -73,6 +74,8 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [Lucene.Net](https://github.com/apache/lucene.net) * [MahApps.Metro](https://github.com/MahApps/MahApps.Metro) - A toolkit for creating metro-style WPF applications. * [Math.NET Numerics](http://numerics.mathdotnet.com/) Provides methods and algorithms for numerical computations in science, engineering and every day use. + * [Mathos Core Libary](http://mathos.codeplex.com/) - A library with algorithms for numerical calcultations in finance, statistics, pattern recognition, and more. + * [Mathos Parser](http://mathosparser.codeplex.com/) - A simple parser for mathematical expressions before and at runtime. * [Mjolnir](https://github.com/hudl/Mjolnir) - [Hystrix](https://github.com/Netflix/Hystrix)-inspired fault tolerance with circuit breakers and thread pools. * [NetTopologySuite](https://github.com/NetTopologySuite) A .NET port of the JTS Topology Suite. * [JSON.NET](http://json.net/) - Popular high-performance JSON framework for .NET From d9c5e6b38734da5adbfcf3f5dea9f28cac260169 Mon Sep 17 00:00:00 2001 From: wasp Date: Tue, 2 Dec 2014 22:34:19 +0100 Subject: [PATCH 127/872] Added ELMAH, Eggado, MoreLINQ --- dotnet-developer-projects.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index c4510f988..809c0260f 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -74,6 +74,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [MahApps.Metro](https://github.com/MahApps/MahApps.Metro) - A toolkit for creating metro-style WPF applications. * [Math.NET Numerics](http://numerics.mathdotnet.com/) Provides methods and algorithms for numerical computations in science, engineering and every day use. * [Mjolnir](https://github.com/hudl/Mjolnir) - [Hystrix](https://github.com/Netflix/Hystrix)-inspired fault tolerance with circuit breakers and thread pools. + * [MoreLINQ](https://code.google.com/p/morelinq/) - LINQ to Objects is missing a few desirable features. This project will enhance LINQ to Objects with extra methods, in a manner which keeps to the spirit of LINQ. * [NetTopologySuite](https://github.com/NetTopologySuite) A .NET port of the JTS Topology Suite. * [JSON.NET](http://json.net/) - Popular high-performance JSON framework for .NET * [NodaTime](http://nodatime.org/) - A better date and time API for .NET @@ -102,7 +103,8 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * Logging * [Exceptionless](https://github.com/exceptionless/Exceptionless) - Provides real-time .NET error reporting for your ASP.NET, Web API, WebForms, WPF, Console, and MVC apps. It organizes the gathered information into simple actionable data that will help your app become exceptionless! - + * [ELMAH](https://code.google.com/p/elmah/) - ELMAH (Error Logging Modules and Handlers) is an application-wide error logging facility that is completely pluggable. It can be dynamically added to a running ASP.NET web application, or even all ASP.NET web applications on a machine, without any need for re-compilation or re-deployment. + * Model-View-ViewModel (MVVM) Frameworks * [Caliburn Micro](http://caliburnmicro.com/) * [Catel.MVVM](http://catelproject.com/) @@ -188,7 +190,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [StackExchange.Redis](https://github.com/StackExchange/StackExchange.Redis) * [SQL LocalDB Wrapper](https://github.com/martincostello/sqllocaldb) - SQL LocalDB Wrapper is an assembly providing interop with the SQL LocalDB native API from managed code using .NET APIs. * [LINQ2DynamoDB](http://linq2dynamodb.codeplex.com) - A type-safe data context for AWS DynamoDB with LINQ, in-memory caching and OData support. - + * [Eggado](https://code.google.com/p/eggado/) - C# and CLR have come a long way since their inception. ADO.NET has been around as long but not evolved nearly as much. Eggado takes generics, lambdas, expression trees, dynamic methods and DLR and uses them to breathe new life into data access using good old ADO.NET. It's for folks who can live with a SQL dialect. * Games * [MonoGame](http://monogame.net) - One framework for creating powerful cross-platform games. From db656e740837bc47cafab7adb9422873c87b1816 Mon Sep 17 00:00:00 2001 From: Jef King Date: Thu, 4 Dec 2014 08:50:43 -0800 Subject: [PATCH 128/872] Update dotnet-developer-projects.md --- dotnet-developer-projects.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 1d8444e74..310c0642c 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -104,6 +104,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [DynamicImage](https://github.com/tgjones/dynamic-image) - WPF-based server-side image rendering system - lots of visual effects implemented as high-performance shaders. Has URL api, several plugins available. (Apache 2) * [ImageProcessor](http://imageprocessor.org/) - A .NET Library For On-The-Fly Processing Of Images (GDI+ based) (Apache 2). * [SharpDX](https://github.com/sharpdx/SharpDX) - SharpDX is a project delivering the full DirectX API for .NET on all Windows platforms. + * [King.Azure.Imaging](https://github.com/jefking/King.Azure.Imaging) - Scalable image uploading and processing for Azure. * Logging * [Exceptionless](https://github.com/exceptionless/Exceptionless) - Provides real-time .NET error reporting for your ASP.NET, Web API, WebForms, WPF, Console, and MVC apps. It organizes the gathered information into simple actionable data that will help your app become exceptionless! @@ -195,6 +196,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [SQL LocalDB Wrapper](https://github.com/martincostello/sqllocaldb) - SQL LocalDB Wrapper is an assembly providing interop with the SQL LocalDB native API from managed code using .NET APIs. * [LINQ2DynamoDB](http://linq2dynamodb.codeplex.com) - A type-safe data context for AWS DynamoDB with LINQ, in-memory caching and OData support. * [Eggado](https://code.google.com/p/eggado/) - C# and CLR have come a long way since their inception. ADO.NET has been around as long but not evolved nearly as much. Eggado takes generics, lambdas, expression trees, dynamic methods and DLR and uses them to breathe new life into data access using good old ADO.NET. It's for folks who can live with a SQL dialect. + * [King.Mapper](https://github.com/jefking/King.Mapper) - High performance model mapping. * Games * [MonoGame](http://monogame.net) - One framework for creating powerful cross-platform games. @@ -210,7 +212,8 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [Dragablz](http://github.com/ButchersBoy/Dragablz) - A tearable TabControl for WPF which also provides easy-to-use and implement docking features. * Windows Services - * [TopShelf](https://github.com/Topshelf/Topshelf) + * [TopShelf](https://github.com/Topshelf/Topshelf) + * [King.Service](https://github.com/jefking/King.Service) - Task scheduling for Azure and Windows * Scheduling * [Quartz.Net](https://github.com/quartznet/quartznet) @@ -222,6 +225,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * Service Bus * [Warewolf Easy Service Bus](https://github.com/Warewolf-ESB/Warewolf-ESB) - An open source easy to use service bus, built on numerous .Net technologies including WF (Windows Workflow Foundation), SignalR and WPF. + * [King.Service.ServiceBus](https://github.com/jefking/King.Service.ServiceBus) - Task scheduling for Azure and Windows Servers: Service Bus. * Distributed Caching and Computing * [Dache](https://github.com/ironyx/dache) - An open source distributed caching service, built on .NET 4.0 and using TCP sockets for communication. From baac0318d02d6a836dc6d6b560f8ec19397d18b3 Mon Sep 17 00:00:00 2001 From: Andrey Shchekin Date: Sun, 7 Dec 2014 11:14:00 +1300 Subject: [PATCH 129/872] Added some of my libraries and link to DI feature tests --- dotnet-developer-projects.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 310c0642c..5209ec9ac 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -53,6 +53,8 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [Algorithmia](https://github.com/SolutionsDesign/Algorithmia) Algorithms and Data structures * [AngleSharp](https://github.com/FlorianRappl/AngleSharp) - Ultimate angle brackets parser library. It parses HTML5, MathML, SVG and CSS to construct a DOM based on the official W3C specification. * [ArcGIS.PCL](https://github.com/davetimmins/ArcGIS.PCL) - Call ArcGIS Server REST API resources. You can also convert between ArcGIS features and GeoJSON. + * [Argument](https://github.com/ashmind/Argument) - Argument validation microframework that does one thing in the simplest way possible. + * [AshMind.Extensions](https://github.com/ashmind/ashmind-extensions) - A set of very conservative extension methods most of which closely follow naming and design patterns of .NET Base Class Library. * [AsyncCollections](https://github.com/HellBrick/AsyncCollections) - A set of lock-free thread-safe collections designed to be used asynchronously. * [AzureNetQ](https://github.com/Roysvork/AzureNetQ) - An easy to use .NET API for Azure Service Bus. * [Bing.RestClient](https://github.com/AdvancedREI/Bing.RestClient) - Access the Bing REST APIs from a unified client. @@ -67,6 +69,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [ExtraLINQ](https://github.com/mariusschulz/ExtraLINQ) - Various extension methods for working with .NET collections. * [FeatureToggle](https://github.com/jason-roberts/FeatureToggle) - Simple, reliable feature toggles in .NET. * [FluentBootstrap](https://github.com/somedave/FluentBootstrap) + * [FluentConsole](https://github.com/ashmind/FluentConsole) - Alternative approach to colored console (`FluentConsole.Red.Text().Green.Text()`). * [FluentValidation](https://github.com/JeremySkinner/FluentValidation) - A small validation library for .NET that uses a fluent interface and lambda expressions for building validation rules. * [GongSolutions.Wpf.DragDrop](https://github.com/punker76/gong-wpf-dragdrop) A drag'n'drop framework for WPF. * [HudlFfmpeg](https://github.com/hudl/HudlFfmpeg) - A/V transcoding framework that helps build complex FFmpeg commands. @@ -183,6 +186,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [Unity Container](http://msdn.microsoft.com/library/ff647202.aspx) - The Unity Container (Unity) is a lightweight, extensible dependency injection container with optional support for instance and type interception. * [Castle Project/Windsor](http://www.castleproject.org/) - IOC / Proxy * [IOC Comparison](http://www.palmmedia.de/blog/2011/8/30/ioc-container-benchmark-performance-comparison) - IoC Container Benchmark - Performance comparison + * [DI Feature Tests](http://featuretests.apphb.com/DependencyInjection.html) - Tests that track commmon DI features among multiple containers * Data Access * [Dapper](https://github.com/StackExchange/dapper-dot-net) - Dapper is a single file you can drop in to your project that will extend your IDbConnection interface. From 05f9ab7a5588f4effcc3f3cfe98e011506d481e0 Mon Sep 17 00:00:00 2001 From: Patrik Svensson Date: Sun, 7 Dec 2014 01:44:35 +0100 Subject: [PATCH 130/872] Added Cake to the list of developer tools. --- dotnet-developer-projects.md | 1 + 1 file changed, 1 insertion(+) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 310c0642c..ffc5b3903 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -120,6 +120,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [Simple Mvvm Toolkit](http://simplemvvmtoolkit.codeplex.com/) * Tools + * [Cake](https://github.com/cake-build/cake) (C# Make) is a build automation system with C#/Roslyn driven build scripts. * [Fody](https://github.com/Fody/Fody) - Extensible tool for weaving .NET assemblies. * [FAKE](http://fsharp.github.io/FAKE/) Build automation system with capabilities which are similar to make and rake. * [FsEye](http://www.swensensoftware.com/fseye) A visual object tree inspector for the F# Interactive. From d95746e2285b123d5a396be78057a0f722448164 Mon Sep 17 00:00:00 2001 From: Stefan Andres Charsley Date: Mon, 8 Dec 2014 21:40:52 +1300 Subject: [PATCH 131/872] Update dotnet-developer-projects.md - Rearrange .NET Implementations section to sort alphabetically - Add MOSA Project to .NET Implementations section (though it could also go in the Platforms section) --- dotnet-developer-projects.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 1720701a6..988ed425c 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -6,9 +6,10 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * .NET Implementations * [.NET Core](https://github.com/dotnet/corefx) - Core .NET Framework - * [Mono Project](https://github.com/mono/) - Cross-platform implementation of .NET Framework. * [Cosmos](http://cosmos.codeplex.com/) - C# Open Source Managed Operating System, an operating system "construction kit". * [Fling OS](http://www.flingos.co.uk/) - C# Operating System designed for people to learn low-level development from. + * [Mono Project](https://github.com/mono/) - Cross-platform implementation of .NET Framework. + * [MOSA Project](https://github.com/mosa/MOSA-Project/) - Managed Operating System Alliance Project - C# Operating System. * Platforms * [Castle Project](https://github.com/castleproject) - Umbrella project for ActiveRecord, DynamicProxy, MonoRail, Windsor From 2302090756346021d733e5ce7a1bd5d95a8ca8b0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=94=D0=BC=D0=B8=D1=82=D1=80=D0=B8=D0=B9?= Date: Mon, 8 Dec 2014 23:21:05 +0600 Subject: [PATCH 132/872] Update dotnet-developer-projects.md --- dotnet-developer-projects.md | 1 + 1 file changed, 1 insertion(+) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 988ed425c..b05016eac 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -25,6 +25,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [Nemerle](https://github.com/rsdn/nemerle) A high-level statically-typed programming language which offers functional, object-oriented and imperative features and has a simple C# like syntax and a powerful meta-programming system. * [Eagle](http://eagle.to) A .NET implementation of the [Tcl](https://www.tcl.tk) programming language, built on the CLR. * [MoonSharp](http://www.moonsharp.org) A Lua interpreter and remote debugger, written entirely in C#, easily embeddable in any application running on .NET 3.5+ and Mono. + * [NiL.JS](https://github.com/nilproject/NiL.JS) A .NET implementation of the ECMAScript language and runtime. * Security / Identity Management * [Thinktecture IdentityServer](https://github.com/thinktecture/Thinktecture.IdentityServer.v3) From 7219758295809a6285f5544abc1349817e300563 Mon Sep 17 00:00:00 2001 From: Nick Hodge Date: Thu, 11 Dec 2014 21:36:28 +1100 Subject: [PATCH 133/872] Adding my BoxKite.Twitter Project Added underneath Bing API --- dotnet-developer-projects.md | 1 + 1 file changed, 1 insertion(+) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index b05016eac..1f7b32f51 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -60,6 +60,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [AsyncCollections](https://github.com/HellBrick/AsyncCollections) - A set of lock-free thread-safe collections designed to be used asynchronously. * [AzureNetQ](https://github.com/Roysvork/AzureNetQ) - An easy to use .NET API for Azure Service Bus. * [Bing.RestClient](https://github.com/AdvancedREI/Bing.RestClient) - Access the Bing REST APIs from a unified client. + * [BoxKite.Twitter]() - Twitter .NET Client Library for the 1.1 Twitter API, incorporating REST API, User streaming and Search Streaming. Uses Reactive Extensions (Rx) .Subscribe to Tweets! * [Cimbalino Toolkit](http://cimbalino.org/) - A set of useful and powerful tools that will help you build your Windows Platform applications. * [Coding4Fun Toolkit](http://coding4fun.codeplex.com/) * [ColoredConsole](https://github.com/colored-console/colored-console) - Add some color to your console. From ca4a95ddea1891fe96c008a3a67c815daa4fc71a Mon Sep 17 00:00:00 2001 From: Richard Lander Date: Thu, 11 Dec 2014 22:53:03 -0800 Subject: [PATCH 134/872] Simplify readme --- README.md | 27 ++++++++++----------------- 1 file changed, 10 insertions(+), 17 deletions(-) diff --git a/README.md b/README.md index 17b049bd4..7817083fc 100644 --- a/README.md +++ b/README.md @@ -8,31 +8,24 @@ on the .NET blog. ## Finding .NET Open Source Projects -There are many [open source .NET projects](dotnet-developer-projects.md). Check -out the [list of projects](dotnet-developer-projects.md) the community -maintains. Please find one to engage in or add one. There's certainly one out -there that could use your help. - -There are several projects from Microsoft on GitHub and CodePlex, including: +There are many [open source .NET projects](dotnet-developer-projects.md), a few of which are listed below. Please find one to engage in or add one to the list. * [.NET Compiler Platform ("Roslyn")](https://roslyn.codeplex.com) * [.NET Core 5](https://github.com/dotnet/core) * [ASP.NET 5](https://github.com/aspnet/home) * [EntityFramework](https://github.com/aspnet/EntityFramework) - -Each one of these projects maps to one or more -[.NET NuGet packages](http://blogs.msdn.com/b/dotnet/p/nugetpackages.aspx) -that are published on [NuGet.org](http://nuget.org/). - -There are also many great [open source .NET community projects](dotnet-developer-projects.md), such as: - -* [Mono Project](https://github.com/mono/) +* [Exceptionless](https://github.com/exceptionless/Exceptionless) +* [Glimpse](http://getglimpse.com) * [JSON.NET](http://json.net/) +* [MonoGame](http://monogame.net) +* [Mono Project](https://github.com/mono/) * [MVVM Cross](https://github.com/MvvmCross/MvvmCross) * [MVVM Light Toolkit](http://www.mvvmlight.net) -* [Glimpse](http://getglimpse.com) -* [MonoGame](http://monogame.net) -* [Exceptionless](https://github.com/exceptionless/Exceptionless) + +For a longer list, see: + +* [.NET developer projects](dotnet-developer-projects.md) +* [.NET consumer projects](dotnet-consumer-projects.md) ## How to Engage, Contribute and Provide Feedback From 5dbff6302f4b05b2368c2e37f4c0562a182c4323 Mon Sep 17 00:00:00 2001 From: Petr Onderka Date: Fri, 12 Dec 2014 16:25:53 +0100 Subject: [PATCH 135/872] General cleanup MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * sorted sections alphabetically * used the same format (with a hyphen) everywhere * removed link to an article, since that's not a project * other small fixes (shortened overlong descriptions, added missing URL, more specific URL, removed license from descriptions, …) --- dotnet-developer-projects.md | 111 +++++++++++++++++------------------ 1 file changed, 55 insertions(+), 56 deletions(-) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 1f7b32f51..5442441d1 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -19,40 +19,40 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * Languages * [ClojureCLR](https://github.com/clojure/clojure-clr) - A .NET implemention of the [Clojure](http://clojure.org) programming language, built on the DLR. * [Dynamic Language Runtime](http://www.github.com/IronLanguages/main.git) - A toolkit for building dynamic languages for .NET. + * [Eagle](http://eagle.to) - A .NET implementation of the [Tcl](https://www.tcl.tk) programming language, built on the CLR. * [IronPython](http://ironpython.net) - A .NET implementation of the [Python](https://www.python.org) programming language, built on the DLR. * [IronRuby](http://ironruby.net) - A .NET implementation of the [Ruby](https://www.ruby-lang.org) programming language, built on the DLR. * [IronScheme](http://ironscheme.codeplex.com) - A R6RS conforming Scheme-like implementation based on the Microsoft DLR. - * [Nemerle](https://github.com/rsdn/nemerle) A high-level statically-typed programming language which offers functional, object-oriented and imperative features and has a simple C# like syntax and a powerful meta-programming system. - * [Eagle](http://eagle.to) A .NET implementation of the [Tcl](https://www.tcl.tk) programming language, built on the CLR. - * [MoonSharp](http://www.moonsharp.org) A Lua interpreter and remote debugger, written entirely in C#, easily embeddable in any application running on .NET 3.5+ and Mono. - * [NiL.JS](https://github.com/nilproject/NiL.JS) A .NET implementation of the ECMAScript language and runtime. + * [MoonSharp](http://www.moonsharp.org) - A Lua interpreter and remote debugger, written entirely in C#, easily embeddable in any application running on .NET 3.5+ and Mono. + * [Nemerle](https://github.com/rsdn/nemerle) - A high-level statically-typed programming language which offers functional, object-oriented and imperative features and has a simple C# like syntax and a powerful meta-programming system. + * [NiL.JS](https://github.com/nilproject/NiL.JS) - A .NET implementation of the ECMAScript language and runtime. * Security / Identity Management - * [Thinktecture IdentityServer](https://github.com/thinktecture/Thinktecture.IdentityServer.v3) * [Thinktecture IdentityManager](https://github.com/thinktecture/Thinktecture.IdentityManager) - * [SKGL - Serial Key Generating Library] (https://skgl.codeplex.com/) + * [Thinktecture IdentityServer](https://github.com/thinktecture/Thinktecture.IdentityServer.v3) + * [SKGL - Serial Key Generating Library](https://skgl.codeplex.com/) * Web CMS * [DNN (formerly DotNetNuke)](https://dotnetnuke.codeplex.com/) - Web content management platform (CMS). + * [N2CMS](http://www.n2cms.com/) - Open source, lightweight, code-first CMS able to seamlessly integrate into any MVC project. * [Orchard](http://www.orchardproject.net/) - A community-focused Content Management System built on the ASP.NET MVC platform. * [Piranha CMS](http://piranhacms.org) - Lightweight CMS library for new and existing ASP.NET MVC & WebPages applications. * [Suave](https://github.com/SuaveIO/suave) A lightweight web server and a set of combinators to manipulate route flow and task composition. * [Umbraco](http://umbraco.com/) - Web content management platform (CMS). - * [WebSharper](https://bitbucket.org/IntelliFactory/websharper) Web programming platform including a compiler from F# code to JavaScript. - * [N2CMS](http://www.n2cms.com/) - Open source, lightweight, code-first CMS able to seamlessly integrate into any MVC project. + * [WebSharper](https://bitbucket.org/IntelliFactory/websharper) - Web programming platform including a compiler from F# code to JavaScript. * Web Frameworks * [Nancy](http://nancyfx.org) - A lightweight, low-ceremony, framework for building HTTP based services on .NET and Mono. * [NemerleWeb](https://github.com/NemerleWeb/NemerleWeb) - Web MVVM library for .Net. It uses reactive data model which allows creating rich internet applications. * ADO.NET providers - * [Npgsql](https://github.com/npgsql/npgsql) PostgreSQL - * [Firebird .NET client](https://sourceforge.net/p/firebird/NETProvider/) Firebird - * [System.Data.SQLite](https://system.data.sqlite.org) SQLite + * [Firebird .NET client](https://sourceforge.net/p/firebird/NETProvider/) - Firebird + * [Npgsql](https://github.com/npgsql/npgsql) - PostgreSQL + * [System.Data.SQLite](https://system.data.sqlite.org) - SQLite * Libraries * [Albedo](https://github.com/ploeh/Albedo) - A .NET library targeted at making Reflection programming more consistent, using a common set of abstractions and utilities. - * [Algorithmia](https://github.com/SolutionsDesign/Algorithmia) Algorithms and Data structures + * [Algorithmia](https://github.com/SolutionsDesign/Algorithmia) - Algorithms and Data structures * [AngleSharp](https://github.com/FlorianRappl/AngleSharp) - Ultimate angle brackets parser library. It parses HTML5, MathML, SVG and CSS to construct a DOM based on the official W3C specification. * [ArcGIS.PCL](https://github.com/davetimmins/ArcGIS.PCL) - Call ArcGIS Server REST API resources. You can also convert between ArcGIS features and GeoJSON. * [Argument](https://github.com/ashmind/Argument) - Argument validation microframework that does one thing in the simplest way possible. @@ -60,12 +60,12 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [AsyncCollections](https://github.com/HellBrick/AsyncCollections) - A set of lock-free thread-safe collections designed to be used asynchronously. * [AzureNetQ](https://github.com/Roysvork/AzureNetQ) - An easy to use .NET API for Azure Service Bus. * [Bing.RestClient](https://github.com/AdvancedREI/Bing.RestClient) - Access the Bing REST APIs from a unified client. - * [BoxKite.Twitter]() - Twitter .NET Client Library for the 1.1 Twitter API, incorporating REST API, User streaming and Search Streaming. Uses Reactive Extensions (Rx) .Subscribe to Tweets! + * [BoxKite.Twitter](https://github.com/NickHodge/BoxKite.Twitter/) - Twitter .NET Client Library for the 1.1 Twitter API, incorporating REST API, User streaming and Search Streaming. Uses Reactive Extensions (Rx). * [Cimbalino Toolkit](http://cimbalino.org/) - A set of useful and powerful tools that will help you build your Windows Platform applications. * [Coding4Fun Toolkit](http://coding4fun.codeplex.com/) * [ColoredConsole](https://github.com/colored-console/colored-console) - Add some color to your console. * [Cricket](http://fsprojects.github.io/Cricket/) - Actor library - * [DiffSharp](http://gbaydin.github.io/DiffSharp/) Automatic Differentiation Library + * [DiffSharp](http://gbaydin.github.io/DiffSharp/) - Automatic Differentiation Library * [DotNetOpenAuth](https://github.com/DotNetOpenAuth) - Library that adds support for your site visitors to login with their OpenIDs by just dropping an ASP.NET control onto your page. * [DynamicData](https://github.com/RolandPheasant/DynamicData) - Brings the power of Rx to collections * [EasyNetQ](https://github.com/mikehadlow/EasyNetQ) - An easy to use .NET API for RabbitMQ. @@ -74,26 +74,26 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [FluentBootstrap](https://github.com/somedave/FluentBootstrap) * [FluentConsole](https://github.com/ashmind/FluentConsole) - Alternative approach to colored console (`FluentConsole.Red.Text().Green.Text()`). * [FluentValidation](https://github.com/JeremySkinner/FluentValidation) - A small validation library for .NET that uses a fluent interface and lambda expressions for building validation rules. - * [GongSolutions.Wpf.DragDrop](https://github.com/punker76/gong-wpf-dragdrop) A drag'n'drop framework for WPF. + * [GongSolutions.Wpf.DragDrop](https://github.com/punker76/gong-wpf-dragdrop) - A drag'n'drop framework for WPF. * [HudlFfmpeg](https://github.com/hudl/HudlFfmpeg) - A/V transcoding framework that helps build complex FFmpeg commands. - * [Kentor.AuthServices](https://github.com/KentorIT/authservices) A SAML2 Service Provider for .NET. + * [JSON.NET](http://json.net/) - Popular high-performance JSON framework for .NET + * [Kentor.AuthServices](https://github.com/KentorIT/authservices) - A SAML2 Service Provider for .NET. * [LibGit2Sharp](https://github.com/libgit2/libgit2sharp) * [Lucene.Net](https://github.com/apache/lucene.net) * [MahApps.Metro](https://github.com/MahApps/MahApps.Metro) - A toolkit for creating metro-style WPF applications. - * [Math.NET Numerics](http://numerics.mathdotnet.com/) Provides methods and algorithms for numerical computations in science, engineering and every day use. + * [Math.NET Numerics](http://numerics.mathdotnet.com/) - Provides methods and algorithms for numerical computations in science, engineering and every day use. * [Mathos Core Libary](http://mathos.codeplex.com/) - A library with algorithms for numerical calcultations in finance, statistics, pattern recognition, and more. * [Mathos Parser](http://mathosparser.codeplex.com/) - A simple parser for mathematical expressions before and at runtime. * [Mjolnir](https://github.com/hudl/Mjolnir) - [Hystrix](https://github.com/Netflix/Hystrix)-inspired fault tolerance with circuit breakers and thread pools. * [MoreLINQ](https://code.google.com/p/morelinq/) - LINQ to Objects is missing a few desirable features. This project will enhance LINQ to Objects with extra methods, in a manner which keeps to the spirit of LINQ. - * [NetTopologySuite](https://github.com/NetTopologySuite) A .NET port of the JTS Topology Suite. - * [JSON.NET](http://json.net/) - Popular high-performance JSON framework for .NET + * [NetTopologySuite](https://github.com/NetTopologySuite) - A .NET port of the JTS Topology Suite. * [NodaTime](http://nodatime.org/) - A better date and time API for .NET - * [OsmSharp](https://github.com/OsmSharp) Mapping & Routing library. + * [OsmSharp](https://github.com/OsmSharp) - Mapping & Routing library. * [PocketSharp](https://github.com/ceee/PocketSharp) - * [PortableRest](https://github.com/AdvancedREI/PortableRest) Portable library for building cross-platform REST API Clients for .NET and Xamarin. + * [PortableRest](https://github.com/AdvancedREI/PortableRest) - Portable library for building cross-platform REST API Clients for .NET and Xamarin. * [RestSharp](http://restsharp.org/) - Simple REST and HTTP API Client for .NET * [RestBus](http://restbus.org/) - Easy Asynchronous Messaging and Queueing for .NET - * [SharpMap](https://sharpmap.codeplex.com/) An easy-to-use mapping library for use in web and desktop applications + * [SharpMap](https://sharpmap.codeplex.com/) - An easy-to-use mapping library for use in web and desktop applications * [SharpSnmpLib](https://sharpsnmplib.codeplex.com) - An easy-to-use SNMP library for use on all platforms (.NET/Mono/Xamarin) * [Splat](https://github.com/paulcbetts/splat) - A library to make things cross-platform that should be. * [SSH.NET](https://sshnet.codeplex.com/) - A client-side library for SSH, SCP and SFTP. @@ -105,12 +105,12 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [Zlib.Portable](https://github.com/AdvancedREI/Zlib.Portable) - A Portable Class Library port of the Zlib library from http://dotnetzip.codeplex.com. * Graphics & Server-side Image Processing - * [.NET Image Processor](http://dotnetimageprocessor.codeplex.com/) - Extensible, chainable image processing library (GDI+ based) (Ms-PL). - * [ImageResizer](http://imageresizing.net/) - Add commands to image URLs to get altered versions in milliseconds. Edit, filter, touch-up images in real-time. (multiple backends - FreeImage, C++/CLI, GDI+, WIC). 45+ plugins available. ([Apache 2 / AGPL](https://github.com/imazen/resizer/blob/develop/LICENSE.md)) - * [DynamicImage](https://github.com/tgjones/dynamic-image) - WPF-based server-side image rendering system - lots of visual effects implemented as high-performance shaders. Has URL api, several plugins available. (Apache 2) - * [ImageProcessor](http://imageprocessor.org/) - A .NET Library For On-The-Fly Processing Of Images (GDI+ based) (Apache 2). - * [SharpDX](https://github.com/sharpdx/SharpDX) - SharpDX is a project delivering the full DirectX API for .NET on all Windows platforms. + * [DynamicImage](https://github.com/tgjones/dynamic-image) - WPF-based server-side image rendering system - lots of visual effects implemented as high-performance shaders. Has URL api, several plugins available. + * [ImageProcessor](http://imageprocessor.org/) - A .NET Library For On-The-Fly Processing Of Images (GDI+ based). + * [ImageResizer](http://imageresizing.net/) - Add commands to image URLs to get altered versions in milliseconds. Edit, filter, touch-up images in real-time. (multiple backends - FreeImage, C++/CLI, GDI+, WIC). 45+ plugins available. * [King.Azure.Imaging](https://github.com/jefking/King.Azure.Imaging) - Scalable image uploading and processing for Azure. + * [.NET Image Processor](http://dotnetimageprocessor.codeplex.com/) - Extensible, chainable image processing library (GDI+ based). + * [SharpDX](https://github.com/sharpdx/SharpDX) - SharpDX is a project delivering the full DirectX API for .NET on all Windows platforms. * Logging * [Exceptionless](https://github.com/exceptionless/Exceptionless) - Provides real-time .NET error reporting for your ASP.NET, Web API, WebForms, WPF, Console, and MVC apps. It organizes the gathered information into simple actionable data that will help your app become exceptionless! @@ -126,52 +126,54 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [Simple Mvvm Toolkit](http://simplemvvmtoolkit.codeplex.com/) * Tools - * [Cake](https://github.com/cake-build/cake) (C# Make) is a build automation system with C#/Roslyn driven build scripts. + * [Cake](https://github.com/cake-build/cake) (C# Make) - A build automation system with C#/Roslyn driven build scripts. + * [CInject](http://codeinject.codeplex.com) - A tool to inject your C#/VB.NET code into existing .NET assemblies and executables + * [FAKE](http://fsharp.github.io/FAKE/) - Build automation system with capabilities which are similar to make and rake. * [Fody](https://github.com/Fody/Fody) - Extensible tool for weaving .NET assemblies. - * [FAKE](http://fsharp.github.io/FAKE/) Build automation system with capabilities which are similar to make and rake. - * [FsEye](http://www.swensensoftware.com/fseye) A visual object tree inspector for the F# Interactive. - * [FsPickler](http://nessos.github.io/FsPickler/) Serialization library that facilitates the distribution of .NET objects. - * [FsharpLint](http://fsprojects.github.io/FSharpLint/) Lint tool for F#. + * [FsEye](http://www.swensensoftware.com/fseye) - A visual object tree inspector for the F# Interactive. + * [FsharpLint](http://fsprojects.github.io/FSharpLint/) - Lint tool for F#. + * [FsPickler](http://nessos.github.io/FsPickler/) - Serialization library that facilitates the distribution of .NET objects. * [GitLink](https://github.com/CatenaLogic/GitLink) - Command-line tool to make .NET open source accessible without the need for a symbols server * [GitVersion](https://github.com/ParticularLabs/GitVersion) - Use convention to derive a SemVer product version from a GitFlow based repository. * [Glimpse](http://getglimpse.com) - Providing real time diagnostics & insights to the fingertips of hundreds of thousands of developers daily. * [ILSpy](http://ilspy.net/) - ILSpy is the open-source .NET assembly browser and decompiler. * [Mini Profiler](http://miniprofiler.com/) - A simple but effective mini-profiler for .NET and Ruby. - * [Paket](http://fsprojects.github.io/Paket/) Dependency manager for .NET and Mono projects, which is designed to work well with NuGet packages and also enables referencing files directly from GitHub repositories. + * [Obfuscar](https://obfuscar.codeplex.com) - MSIL obfuscation utility for .NET assemblies. + * [Outcomes.Net](https://github.com/kinetiq/Ether.Outcomes/) - Fluent wrapper that eliminates plumbing code around failure-prone functions. + * [Paket](http://fsprojects.github.io/Paket/) - Dependency manager for .NET and Mono projects, which is designed to work well with NuGet packages and also enables referencing files directly from GitHub repositories. * [Protobuf-net](https://code.google.com/p/protobuf-net/) - A .NET implementation of protobuf, allowing you to serialize your .NET objects efficiently and easily. * [scriptcs](http://scriptcs.net/) - scriptcs makes it easy to write and execute C# with a simple text editor. * [Snoop WPF](https://github.com/cplotts/snoopwpf) - Snoop - The WPF Spy Utility * [Sql Bulk Copy Sync](https://github.com/WCOMAB/SqlBulkSync) - * [Vagrant](http://nessos.github.io/Vagrant/) Automated dependency resolution and dynamic assembly compilation framework. - * [Obfuscar](https://obfuscar.codeplex.com) - MSIL obfuscation utility for .NET assemblies. - * [Outcomes.Net](https://github.com/kinetiq/Ether.Outcomes/) Fluent wrapper that eliminates plumbing code around failure-prone functions. - * [Weighted Selector](https://github.com/kinetiq/Ether.WeightedSelector/) Easy to use (but high performance!) weighted selection implementation. + * [Vagrant](http://nessos.github.io/Vagrant/) - Automated dependency resolution and dynamic assembly compilation framework. + * [Weighted Selector](https://github.com/kinetiq/Ether.WeightedSelector/) - Easy to use (but high performance!) weighted selection implementation. * [ZeroToNine](https://github.com/ploeh/ZeroToNine) - A tool for maintaining .NET Assembly versions across multiple files. - * [CInject](http://codeinject.codeplex.com) - A tool to inject your C#/VB.NET code into existing .NET assemblies and executables * Testing * [AutoFixture](https://github.com/AutoFixture/AutoFixture) - An open source framework for .NET designed to minimize the 'Arrange' phase of your unit tests. Its primary goal is to allow developers to focus on what is being tested rather than how to setup the test scenario, by making it easier to create object graphs containing test data. - * [canopy](http://lefthandedgoat.github.io/canopy/) A web testing framework. + * [canopy](http://lefthandedgoat.github.io/canopy/) - A web testing framework. * [FakeItEasy](https://github.com/FakeItEasy/FakeItEasy) - The easy mocking library for .NET. - * [FsCheck](https://fsharp.github.io/FsCheck/) A tool for testing .NET programs automatically. + * [FsCheck](https://fsharp.github.io/FsCheck/) - A tool for testing .NET programs automatically. * [moq](https://github.com/Moq/moq4) - The most popular and friendly mocking framework for .NET * [NSubstitute](http://nsubstitute.github.io/) - A friendly substitute for .NET mocking frameworks. * [NUnit](https://github.com/nunit/nunit) - NUnit is a unit-testing framework for all .NET languages. - * [tickspec](http://tickspec.codeplex.com/) A lightweight Behaviour Driven Development (BDD) framework. - * [xUnit](https://github.com/xunit/xunit) - xUnit.net is a community-focused unit testing tool for the .NET Framework. + * [tickspec](http://tickspec.codeplex.com/) - A lightweight Behaviour Driven Development (BDD) framework. + * [TestStack.BDDfy](https://github.com/TestStack/TestStack.BDDfy) - BDDfy is the simplest BDD framework to use, customize and extend! * [TestStack.FluentMvcTesting](https://github.com/TestStack/TestStack.FluentMVCTesting) - Simple, terse, fluent unit testing for ASP.NET MVC Controllers. * [TestStack.Seleno](https://github.com/TestStack/TestStack.Seleno) - Seleno helps you write automated UI tests in the right way by implementing Page Objects and Page Components and by reading from and writing to web pages using strongly typed view models. - * [TestStack.BDDfy](https://github.com/TestStack/TestStack.BDDfy) - BDDfy is the simplest BDD framework to use, customize and extend! * [TestStack.White](https://github.com/TestStack/White) - White is a framework for automating rich client applications based on Win32, WinForms, WPF, Silverlight and SWT (Java) platforms. + * [xUnit](https://github.com/xunit/xunit) - xUnit.net is a community-focused unit testing tool for the .NET Framework. * Dependency Injection * [Autofac](http://autofac.org/) - Autofac is an addictive Inversion of Control container for .NET 4.5, Silverlight 5, Windows Store apps, and Windows Phone 8 apps. + * [Castle Windsor](http://www.castleproject.org/projects/windsor/) - A mature Inversion of Control container available for .NET and Silverlight + * [DI Feature Tests](http://featuretests.apphb.com/DependencyInjection.html) - Tests that track commmon DI features among multiple containers + * [dI.Hook](http://dihook.codeplex.com) - DI container that allows invocation using AOP * [DryIoc](https://bitbucket.org/dadhi/dryioc) - DryIoc is small, fast, capable IoC Container for .NET * [fFastInjector](https://ffastinjector.codeplex.com/) - fFastInjector is a high-performing dependency injector, service locator, and/or IOC (inversion of control) container. * [Funq](https://funq.codeplex.com/) - A fast DI container you can understand. * [Grace](https://github.com/ipjohnson/Grace) - Grace is a feature rich Dependency Injection container in a portable class library * [Griffin](https://github.com/jgauffin/griffin.container) - Inversion of control container with (almost) zero configuration - * [dI.Hook](http://dihook.codeplex.com) - DI container that allows invocation using AOP * [HaveBox](https://bitbucket.org/Have/havebox/wiki/Home) - HaveBox is a very fast and lightweight IoC containter. The goal is to keep it fast and light, and at the same time easy to use. * [Hiro](https://github.com/philiplaureano/Hiro) - An ultra-lightweight, inversion of control container compiler framework * [IfInjector](https://github.com/iamahern/IfInjector) - High performance mobile micro-IoC container. @@ -182,18 +184,17 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [Ninject for Desktop](http://www.ninject.org/) - Dependency injector for .NET * [Ninject for Portable Class Libraries, Universal apps and Xamarin](https://github.com/onovotny/ninject) * [QuickInject](https://github.com/isabgol/QuickInject) - QuickInject is a Unity 3.5 based IoC container that aims to give the Unity container a performance advantage in basic scenarios. - * [Simple Injector](https://simpleinjector.org/index.html) - Simple Injector is an easy-to-use Dependency Injection (DI) library for .NET 4+ that supports Silverlight 4+, Windows Phone 8, Windows 8 including Universal apps and Mono. + * [Simple Injector](https://simpleinjector.org/index.html) - Simple Injector is an easy-to-use Dependency Injection library for .NET 4+ that supports Silverlight 4+, Windows Phone 8, Windows 8 including Universal apps and Mono. * [Spring.NET](http://www.springframework.net/) - Spring.NET is an open source application framework that makes building enterprise .NET applications easier. * [StructureMap](http://docs.structuremap.net/) - StructureMap is a Dependency Injection / Inversion of Control tool for .Net that can be used to improve the architectural qualities of an object oriented system by reducing the mechanical costs of good design techniques. * [StyleMVVM](https://stylemvvm.codeplex.com/) - Style MVVM is a toolkit designed for the Windows Store platform around the idea of being light weight and fast. * [TinyIoC](https://github.com/grumpydev/TinyIoC) - An easy to use, hassle free, Inversion of Control Container for small projects, libraries and beginners alike. * [Unity Container](http://msdn.microsoft.com/library/ff647202.aspx) - The Unity Container (Unity) is a lightweight, extensible dependency injection container with optional support for instance and type interception. - * [Castle Project/Windsor](http://www.castleproject.org/) - IOC / Proxy - * [IOC Comparison](http://www.palmmedia.de/blog/2011/8/30/ioc-container-benchmark-performance-comparison) - IoC Container Benchmark - Performance comparison - * [DI Feature Tests](http://featuretests.apphb.com/DependencyInjection.html) - Tests that track commmon DI features among multiple containers * Data Access * [Dapper](https://github.com/StackExchange/dapper-dot-net) - Dapper is a single file you can drop in to your project that will extend your IDbConnection interface. + * [Eggado](https://code.google.com/p/eggado/) - Eggado takes generics, lambdas, expression trees, dynamic methods and DLR and uses them to breathe new life into data access using good old ADO.NET. It's for folks who can live with a SQL dialect. + * [King.Mapper](https://github.com/jefking/King.Mapper) - High performance model mapping. * [linq2db](https://github.com/linq2db/linq2db/) - Lightweight ORM and LINQ provider with support for various databases including MS SQL, PostgreSQL, Oracle and MySQL * [NHibernate](https://github.com/nhibernate) - Object Relational Mapper * [Simple Data](https://github.com/markrendle/Simple.Data) - A light-weight, dynamic data access component for C# 4.0. @@ -203,37 +204,35 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [StackExchange.Redis](https://github.com/StackExchange/StackExchange.Redis) * [SQL LocalDB Wrapper](https://github.com/martincostello/sqllocaldb) - SQL LocalDB Wrapper is an assembly providing interop with the SQL LocalDB native API from managed code using .NET APIs. * [LINQ2DynamoDB](http://linq2dynamodb.codeplex.com) - A type-safe data context for AWS DynamoDB with LINQ, in-memory caching and OData support. - * [Eggado](https://code.google.com/p/eggado/) - C# and CLR have come a long way since their inception. ADO.NET has been around as long but not evolved nearly as much. Eggado takes generics, lambdas, expression trees, dynamic methods and DLR and uses them to breathe new life into data access using good old ADO.NET. It's for folks who can live with a SQL dialect. - * [King.Mapper](https://github.com/jefking/King.Mapper) - High performance model mapping. * Games - * [MonoGame](http://monogame.net) - One framework for creating powerful cross-platform games. * [Duality](https://github.com/AdamsLair/duality) - An Open Source 2D Game Engine + Visual Editor written entirely in C#. - * [Paradox](https://github.com/SiliconStudio/paradox) - Paradox is a versatile and engaging game engine. + * [MonoGame](http://monogame.net) - One framework for creating powerful cross-platform games. * [OpenRA](https://github.com/OpenRA/OpenRA) - An open-source implementation of the Command & Conquer: Red Alert engine using .NET/Mono and OpenGL. + * [Paradox](https://github.com/SiliconStudio/paradox) - Paradox is a versatile and engaging game engine. * [WaveEngine](https://github.com/waveengine) - A powerful component based game engine for desktop and mobile platforms using C#. * UI and Control libraries * [Callisto](https://github.com/timheuer/callisto) - UI Control Toolkit for WinRT apps + * [Dragablz](http://github.com/ButchersBoy/Dragablz) - A tearable TabControl for WPF which also provides easy-to-use and implement docking features. * [Eto](https://github.com/picoe/Eto) - Cross platform GUI Toolkit for desktop and mobile apps * [Mono XWT](https://github.com/mono/xwt) - A cross-platform UI toolkit for creating desktop apps - * [Dragablz](http://github.com/ButchersBoy/Dragablz) - A tearable TabControl for WPF which also provides easy-to-use and implement docking features. * Windows Services - * [TopShelf](https://github.com/Topshelf/Topshelf) * [King.Service](https://github.com/jefking/King.Service) - Task scheduling for Azure and Windows + * [TopShelf](https://github.com/Topshelf/Topshelf) * Scheduling - * [Quartz.Net](https://github.com/quartznet/quartznet) * [Hangfire](http://hangfire.io/) + * [Quartz.Net](https://github.com/quartznet/quartznet) * Deployment * [DropkicK](https://github.com/chucknorris/dropkick/) - A fluent deployment library for Windows applications * [RoundHouse](https://code.google.com/p/roundhouse/) - RoundhousE is a Database Migration Utility for .NET using sql files and versioning based on source control * Service Bus - * [Warewolf Easy Service Bus](https://github.com/Warewolf-ESB/Warewolf-ESB) - An open source easy to use service bus, built on numerous .Net technologies including WF (Windows Workflow Foundation), SignalR and WPF. * [King.Service.ServiceBus](https://github.com/jefking/King.Service.ServiceBus) - Task scheduling for Azure and Windows Servers: Service Bus. + * [Warewolf Easy Service Bus](https://github.com/Warewolf-ESB/Warewolf-ESB) - An open source easy to use service bus, built on numerous .Net technologies including WF (Windows Workflow Foundation), SignalR and WPF. * Distributed Caching and Computing * [Dache](https://github.com/ironyx/dache) - An open source distributed caching service, built on .NET 4.0 and using TCP sockets for communication. From a4b496375f0063b1a30f280a67b0200c577d6405 Mon Sep 17 00:00:00 2001 From: Petr Onderka Date: Fri, 12 Dec 2014 16:37:51 +0100 Subject: [PATCH 136/872] Added Roslyn and F# Roslyn and F# are both high profile open-source projects targeted at .Net developers. I don't see any reason why they should be omitted from this list. --- dotnet-developer-projects.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 1f7b32f51..4bd1ffec1 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -19,6 +19,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * Languages * [ClojureCLR](https://github.com/clojure/clojure-clr) - A .NET implemention of the [Clojure](http://clojure.org) programming language, built on the DLR. * [Dynamic Language Runtime](http://www.github.com/IronLanguages/main.git) - A toolkit for building dynamic languages for .NET. + * [F#](https://github.com/fsharp/fsharp) - A mature, open source, cross-platform, functional-first programming language. * [IronPython](http://ironpython.net) - A .NET implementation of the [Python](https://www.python.org) programming language, built on the DLR. * [IronRuby](http://ironruby.net) - A .NET implementation of the [Ruby](https://www.ruby-lang.org) programming language, built on the DLR. * [IronScheme](http://ironscheme.codeplex.com) - A R6RS conforming Scheme-like implementation based on the Microsoft DLR. @@ -26,6 +27,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [Eagle](http://eagle.to) A .NET implementation of the [Tcl](https://www.tcl.tk) programming language, built on the CLR. * [MoonSharp](http://www.moonsharp.org) A Lua interpreter and remote debugger, written entirely in C#, easily embeddable in any application running on .NET 3.5+ and Mono. * [NiL.JS](https://github.com/nilproject/NiL.JS) A .NET implementation of the ECMAScript language and runtime. + * [Roslyn (.NET Compiler Platform)](https://roslyn.codeplex.com/) - Open-source C# and Visual Basic compilers with rich code analysis APIs. * Security / Identity Management * [Thinktecture IdentityServer](https://github.com/thinktecture/Thinktecture.IdentityServer.v3) From fbb49d6363c8ea680082302e2e3247f5a39fcddc Mon Sep 17 00:00:00 2001 From: Petr Onderka Date: Fri, 12 Dec 2014 16:53:24 +0100 Subject: [PATCH 137/872] Added log4net --- dotnet-developer-projects.md | 1 + 1 file changed, 1 insertion(+) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 1f7b32f51..526760945 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -115,6 +115,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * Logging * [Exceptionless](https://github.com/exceptionless/Exceptionless) - Provides real-time .NET error reporting for your ASP.NET, Web API, WebForms, WPF, Console, and MVC apps. It organizes the gathered information into simple actionable data that will help your app become exceptionless! * [ELMAH](https://code.google.com/p/elmah/) - ELMAH (Error Logging Modules and Handlers) is an application-wide error logging facility that is completely pluggable. It can be dynamically added to a running ASP.NET web application, or even all ASP.NET web applications on a machine, without any need for re-compilation or re-deployment. + * [log4net](http://logging.apache.org/log4net/) - A tool to help the programmer output log statements to a variety of output targets. * Model-View-ViewModel (MVVM) Frameworks * [Caliburn Micro](http://caliburnmicro.com/) From f6e638c988e5a6e8dc2246895d3a8daf489cd1a7 Mon Sep 17 00:00:00 2001 From: Petr Onderka Date: Fri, 12 Dec 2014 16:56:12 +0100 Subject: [PATCH 138/872] Added ComparerExtensions I think that ComparerExtensions is very useful whenever you need to create IComparer, so it should be included in this list. --- dotnet-developer-projects.md | 1 + 1 file changed, 1 insertion(+) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 1f7b32f51..ba4983af9 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -64,6 +64,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [Cimbalino Toolkit](http://cimbalino.org/) - A set of useful and powerful tools that will help you build your Windows Platform applications. * [Coding4Fun Toolkit](http://coding4fun.codeplex.com/) * [ColoredConsole](https://github.com/colored-console/colored-console) - Add some color to your console. + * [ComparerExtensions](https://github.com/jehugaleahsa/comparerextensions) - Build IComparer and IEqualityComparer objects using natural language syntax. * [Cricket](http://fsprojects.github.io/Cricket/) - Actor library * [DiffSharp](http://gbaydin.github.io/DiffSharp/) Automatic Differentiation Library * [DotNetOpenAuth](https://github.com/DotNetOpenAuth) - Library that adds support for your site visitors to login with their OpenIDs by just dropping an ASP.NET control onto your page. From 8fa81db89803bbd37f1f30714de0843cd7ed9d5a Mon Sep 17 00:00:00 2001 From: Punit Ganshani Date: Tue, 16 Dec 2014 14:22:51 +0800 Subject: [PATCH 139/872] Updated Repository URLs to GitHub --- dotnet-developer-projects.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index fac596e73..e19ae05ed 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -131,7 +131,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * Tools * [Cake](https://github.com/cake-build/cake) (C# Make) - A build automation system with C#/Roslyn driven build scripts. - * [CInject](http://codeinject.codeplex.com) - A tool to inject your C#/VB.NET code into existing .NET assemblies and executables + * [CInject](https://github.com/punitganshani/CodeInject) - A tool to inject your C#/VB.NET code into existing .NET assemblies and executables * [FAKE](http://fsharp.github.io/FAKE/) - Build automation system with capabilities which are similar to make and rake. * [Fody](https://github.com/Fody/Fody) - Extensible tool for weaving .NET assemblies. * [FsEye](http://www.swensensoftware.com/fseye) - A visual object tree inspector for the F# Interactive. @@ -172,7 +172,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [Autofac](http://autofac.org/) - Autofac is an addictive Inversion of Control container for .NET 4.5, Silverlight 5, Windows Store apps, and Windows Phone 8 apps. * [Castle Windsor](http://www.castleproject.org/projects/windsor/) - A mature Inversion of Control container available for .NET and Silverlight * [DI Feature Tests](http://featuretests.apphb.com/DependencyInjection.html) - Tests that track commmon DI features among multiple containers - * [dI.Hook](http://dihook.codeplex.com) - DI container that allows invocation using AOP + * [dI.Hook](https://github.com/punitganshani/dI.Hook) - DI container that allows invocation using AOP * [DryIoc](https://bitbucket.org/dadhi/dryioc) - DryIoc is small, fast, capable IoC Container for .NET * [fFastInjector](https://ffastinjector.codeplex.com/) - fFastInjector is a high-performing dependency injector, service locator, and/or IOC (inversion of control) container. * [Funq](https://funq.codeplex.com/) - A fast DI container you can understand. @@ -242,7 +242,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [Dache](https://github.com/ironyx/dache) - An open source distributed caching service, built on .NET 4.0 and using TCP sockets for communication. * Windows Workflow - * [Workflow Extractor](http://workflowextractor.codeplex.com) - Document Windows Workflow logic into a Word document or Excel sheet. + * [Workflow Extractor](https://github.com/punitganshani/WorkflowExtractor) - Document Windows Workflow logic into a Word document or Excel sheet. This list is just a starting point - also take a look at all the projects on [CodePlex](http://www.codeplex.com/) and on [GitHub Trending C#](https://github.com/trending?l=csharp). From 18205bc3e37f192b129e0f9c542820145ce997bf Mon Sep 17 00:00:00 2001 From: Rafael Teixeira Date: Thu, 18 Dec 2014 14:56:02 -0200 Subject: [PATCH 140/872] Adding some language as per Sirinath suggestion http://forums.dotnetfoundation.org/users/sirinath @ http://forums.dotnetfoundation.org/t/list-of-net-open-source-projects/662 --- dotnet-developer-projects.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index e19ae05ed..565ac9fba 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -17,16 +17,21 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [KonfDB](http://www.konfdb.com/) - Configuration Management as a Service for cross-platform, multi-tenant enterprise/hobby applications * Languages + * [Boo](https://github.com/bamboo/boo) - A .NET language similar to Python but with static typing, and many meta-programming capabilities. * [ClojureCLR](https://github.com/clojure/clojure-clr) - A .NET implemention of the [Clojure](http://clojure.org) programming language, built on the DLR. + * [Cobra](http://cobra-language.com/) - Clean, high-level syntax (Boo/Python-like). Static and dynamic binding. First class support for unit tests and contracts. Compiled performance with scripting conveniences. Lambdas and closures. Extensions and mixins * [Dynamic Language Runtime](http://www.github.com/IronLanguages/main.git) - A toolkit for building dynamic languages for .NET. * [Eagle](http://eagle.to) - A .NET implementation of the [Tcl](https://www.tcl.tk) programming language, built on the CLR. + * [Essence#](https://essencesharp.codeplex.com/) - Essence# is a fully dynamic and highly polymorphic programming language which features pervasive message passing, pervasive dynamic and strong typing, pervasive and deep reflection and pervasive object orientation. * [F#](https://github.com/fsharp/fsharp) - A mature, open source, cross-platform, functional-first programming language. + * [F*](https://github.com/FStarLang/FStar) - An ML-like language with a type system for program verification. * [IronPython](http://ironpython.net) - A .NET implementation of the [Python](https://www.python.org) programming language, built on the DLR. * [IronRuby](http://ironruby.net) - A .NET implementation of the [Ruby](https://www.ruby-lang.org) programming language, built on the DLR. * [IronScheme](http://ironscheme.codeplex.com) - A R6RS conforming Scheme-like implementation based on the Microsoft DLR. * [MoonSharp](http://www.moonsharp.org) - A Lua interpreter and remote debugger, written entirely in C#, easily embeddable in any application running on .NET 3.5+ and Mono. * [Nemerle](https://github.com/rsdn/nemerle) - A high-level statically-typed programming language which offers functional, object-oriented and imperative features and has a simple C# like syntax and a powerful meta-programming system. * [NiL.JS](https://github.com/nilproject/NiL.JS) - A .NET implementation of the ECMAScript language and runtime. + * [Phalanger](http://www.php-compiler.net/) - full-featured PHP runtime & compiler for .NET/Mono frameworks. Phalanger is modern open-source implementation of PHP, compatible with the vast array of existing PHP code. * [Roslyn (.NET Compiler Platform)](https://roslyn.codeplex.com/) - Open-source C# and Visual Basic compilers with rich code analysis APIs. * Security / Identity Management From 98e0e7d5fde8292994155cb9947241e042444797 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Matos?= Date: Thu, 18 Dec 2014 20:47:27 +0000 Subject: [PATCH 141/872] Added CppSharp tool to dotnet-developer-projects.md --- dotnet-developer-projects.md | 1 + 1 file changed, 1 insertion(+) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 565ac9fba..2c14561f0 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -136,6 +136,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * Tools * [Cake](https://github.com/cake-build/cake) (C# Make) - A build automation system with C#/Roslyn driven build scripts. + * [CppSharp](https://github.com/mono/CppSharp) - C/C++ bindings generation for .NET. * [CInject](https://github.com/punitganshani/CodeInject) - A tool to inject your C#/VB.NET code into existing .NET assemblies and executables * [FAKE](http://fsharp.github.io/FAKE/) - Build automation system with capabilities which are similar to make and rake. * [Fody](https://github.com/Fody/Fody) - Extensible tool for weaving .NET assemblies. From 7c24c14157a3fb554586a4d8f701e44710ac35d4 Mon Sep 17 00:00:00 2001 From: Timotheus Pokorra Date: Fri, 19 Dec 2014 14:41:12 +0100 Subject: [PATCH 142/872] Adding OpenPetra to consumer projects list --- dotnet-consumer-projects.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/dotnet-consumer-projects.md b/dotnet-consumer-projects.md index 5f2d11ac9..b98e976ff 100644 --- a/dotnet-consumer-projects.md +++ b/dotnet-consumer-projects.md @@ -17,6 +17,9 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [YouCast](https://github.com/I3arnon/YouCast) - YouCast allows you to subscribe to video feeds on YouTube as podcasts in any standard podcatcher like iTunes, BeyondPod on Adroid or even Zune PC and so forth. * [Ember](https://github.com/Embershot/Ember) - Simple & Beautiful Screenshot App +* Administration + * [OpenPetra](https://github.com/openpetra/openpetra) - [www.openpetra.org](https://www.openpetra.org) - An administration software for charities that can be used to manage personnel, supporters, book keeping, gift receipting, accounts payable, conferences etc. + This list is just a starting point - also take a look at all the projects on [CodePlex](http://www.codeplex.com/) and on [GitHub Trending C#](https://github.com/trending?l=csharp). -Thanks to @scottisafool for providing the initial list. \ No newline at end of file +Thanks to @scottisafool for providing the initial list. From aa212ca489b2919e5e6c178504a094eb4a7a5862 Mon Sep 17 00:00:00 2001 From: Salar Khalilzadeh Date: Sat, 20 Dec 2014 12:07:23 +0330 Subject: [PATCH 143/872] Update dotnet-developer-projects.md GeckoFX is added. --- dotnet-developer-projects.md | 1 + 1 file changed, 1 insertion(+) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 2c14561f0..185ccc72f 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -83,6 +83,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [FluentConsole](https://github.com/ashmind/FluentConsole) - Alternative approach to colored console (`FluentConsole.Red.Text().Green.Text()`). * [FluentValidation](https://github.com/JeremySkinner/FluentValidation) - A small validation library for .NET that uses a fluent interface and lambda expressions for building validation rules. * [GongSolutions.Wpf.DragDrop](https://github.com/punker76/gong-wpf-dragdrop) - A drag'n'drop framework for WPF. + * [GeckoFX](https://bitbucket.org/geckofx) - Mozilla's Gecko layout engine wrapper in .NET. * [HudlFfmpeg](https://github.com/hudl/HudlFfmpeg) - A/V transcoding framework that helps build complex FFmpeg commands. * [JSON.NET](http://json.net/) - Popular high-performance JSON framework for .NET * [Kentor.AuthServices](https://github.com/KentorIT/authservices) - A SAML2 Service Provider for .NET. From 94d78b2cf63ef98d2bc2e76cffe993aff3e1679a Mon Sep 17 00:00:00 2001 From: Thomas Maierhofer Date: Sun, 21 Dec 2014 14:53:40 +0100 Subject: [PATCH 144/872] Update dotnet-developer-projects.md Added two of my open open source projects NHunspell and the my powershell besd build tools --- dotnet-developer-projects.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 185ccc72f..4e7876caf 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -96,6 +96,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [Mjolnir](https://github.com/hudl/Mjolnir) - [Hystrix](https://github.com/Netflix/Hystrix)-inspired fault tolerance with circuit breakers and thread pools. * [MoreLINQ](https://code.google.com/p/morelinq/) - LINQ to Objects is missing a few desirable features. This project will enhance LINQ to Objects with extra methods, in a manner which keeps to the spirit of LINQ. * [NetTopologySuite](https://github.com/NetTopologySuite) - A .NET port of the JTS Topology Suite. +* [NHunspell](http://www.crawler-lib.net/nhunspell) - Spell Checker, Hyphenation an Theasaurus * [NodaTime](http://nodatime.org/) - A better date and time API for .NET * [OsmSharp](https://github.com/OsmSharp) - Mapping & Routing library. * [PocketSharp](https://github.com/ceee/PocketSharp) @@ -141,6 +142,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [CInject](https://github.com/punitganshani/CodeInject) - A tool to inject your C#/VB.NET code into existing .NET assemblies and executables * [FAKE](http://fsharp.github.io/FAKE/) - Build automation system with capabilities which are similar to make and rake. * [Fody](https://github.com/Fody/Fody) - Extensible tool for weaving .NET assemblies. +* [Crawler-Lib Build Tools](http://www.crawler-lib.net/build-tools) - A PowerShell based toolbox for automating the software build process, autmated testing and integration. * [FsEye](http://www.swensensoftware.com/fseye) - A visual object tree inspector for the F# Interactive. * [FsharpLint](http://fsprojects.github.io/FSharpLint/) - Lint tool for F#. * [FsPickler](http://nessos.github.io/FsPickler/) - Serialization library that facilitates the distribution of .NET objects. From 150f6fb8360e2a8693748c549722b69b3e1b37d5 Mon Sep 17 00:00:00 2001 From: Reza Bazargan Date: Mon, 22 Dec 2014 12:20:46 +0000 Subject: [PATCH 145/872] Update dotnet-developer-projects.md --- dotnet-developer-projects.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 185ccc72f..5518d4638 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -151,13 +151,14 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [Mini Profiler](http://miniprofiler.com/) - A simple but effective mini-profiler for .NET and Ruby. * [Obfuscar](https://obfuscar.codeplex.com) - MSIL obfuscation utility for .NET assemblies. * [Outcomes.Net](https://github.com/kinetiq/Ether.Outcomes/) - Fluent wrapper that eliminates plumbing code around failure-prone functions. - * [Paket](http://fsprojects.github.io/Paket/) - Dependency manager for .NET and Mono projects, which is designed to work well with NuGet packages and also enables referencing files directly from GitHub repositories. + * [Paket](http://fsprojects.github.io/Paket/) - Dependency manager for .NET and Mono projmects, which is designed to work well with NuGet packages and also enables referencing files directly from GitHub repositories. * [Protobuf-net](https://code.google.com/p/protobuf-net/) - A .NET implementation of protobuf, allowing you to serialize your .NET objects efficiently and easily. * [scriptcs](http://scriptcs.net/) - scriptcs makes it easy to write and execute C# with a simple text editor. * [Snoop WPF](https://github.com/cplotts/snoopwpf) - Snoop - The WPF Spy Utility * [Sql Bulk Copy Sync](https://github.com/WCOMAB/SqlBulkSync) * [Vagrant](http://nessos.github.io/Vagrant/) - Automated dependency resolution and dynamic assembly compilation framework. * [Weighted Selector](https://github.com/kinetiq/Ether.WeightedSelector/) - Easy to use (but high performance!) weighted selection implementation. + * [XDav](https://github.com/rezabazargan/xDav) - A .net server mudole for webdav standard. * [ZeroToNine](https://github.com/ploeh/ZeroToNine) - A tool for maintaining .NET Assembly versions across multiple files. * Testing From 532ebbdc911fe36e86a7d49e941b481fe7c947fa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?H=C3=BCseyin=20Uslu?= Date: Mon, 22 Dec 2014 18:18:04 +0200 Subject: [PATCH 146/872] added coiniumserv --- dotnet-consumer-projects.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/dotnet-consumer-projects.md b/dotnet-consumer-projects.md index b98e976ff..b0da3be92 100644 --- a/dotnet-consumer-projects.md +++ b/dotnet-consumer-projects.md @@ -19,6 +19,9 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * Administration * [OpenPetra](https://github.com/openpetra/openpetra) - [www.openpetra.org](https://www.openpetra.org) - An administration software for charities that can be used to manage personnel, supporters, book keeping, gift receipting, accounts payable, conferences etc. + + * Bitcoin + * [CoiniumServ](https://github.com/CoiniumServ/CoiniumServ) - a high performance, extremely efficient, platform-agnostic, easy to setup bitcoin & alt-coin pool server implementation. It features stratum services, reward, payment, share processors, vardiff & ban managers, user-friendly embedded web-server & front-end and a full-stack API. This list is just a starting point - also take a look at all the projects on [CodePlex](http://www.codeplex.com/) and on [GitHub Trending C#](https://github.com/trending?l=csharp). From c0de7299472e3731fef08ad03fe169ffcd065bdb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?H=C3=BCseyin=20Uslu?= Date: Mon, 22 Dec 2014 18:19:02 +0200 Subject: [PATCH 147/872] Update dotnet-consumer-projects.md --- dotnet-consumer-projects.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dotnet-consumer-projects.md b/dotnet-consumer-projects.md index b0da3be92..196de3a1a 100644 --- a/dotnet-consumer-projects.md +++ b/dotnet-consumer-projects.md @@ -20,7 +20,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * Administration * [OpenPetra](https://github.com/openpetra/openpetra) - [www.openpetra.org](https://www.openpetra.org) - An administration software for charities that can be used to manage personnel, supporters, book keeping, gift receipting, accounts payable, conferences etc. - * Bitcoin +* Crypto Currency * [CoiniumServ](https://github.com/CoiniumServ/CoiniumServ) - a high performance, extremely efficient, platform-agnostic, easy to setup bitcoin & alt-coin pool server implementation. It features stratum services, reward, payment, share processors, vardiff & ban managers, user-friendly embedded web-server & front-end and a full-stack API. This list is just a starting point - also take a look at all the projects on [CodePlex](http://www.codeplex.com/) and on [GitHub Trending C#](https://github.com/trending?l=csharp). From 68c73f73a2851feae537661dd05d777cb27f08ed Mon Sep 17 00:00:00 2001 From: Itay Sagui Date: Tue, 23 Dec 2014 00:13:09 +0100 Subject: [PATCH 148/872] Added OneDriveRestAPI and DropBoxRestAPI --- dotnet-developer-projects.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 185ccc72f..2f9098b11 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -75,6 +75,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [Cricket](http://fsprojects.github.io/Cricket/) - Actor library * [DiffSharp](http://gbaydin.github.io/DiffSharp/) - Automatic Differentiation Library * [DotNetOpenAuth](https://github.com/DotNetOpenAuth) - Library that adds support for your site visitors to login with their OpenIDs by just dropping an ASP.NET control onto your page. + * [DropboxRestAPI](https://github.com/saguiitay/DropboxRestAPI) - DropBox .Net Client Library * [DynamicData](https://github.com/RolandPheasant/DynamicData) - Brings the power of Rx to collections * [EasyNetQ](https://github.com/mikehadlow/EasyNetQ) - An easy to use .NET API for RabbitMQ. * [ExtraLINQ](https://github.com/mariusschulz/ExtraLINQ) - Various extension methods for working with .NET collections. @@ -97,6 +98,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [MoreLINQ](https://code.google.com/p/morelinq/) - LINQ to Objects is missing a few desirable features. This project will enhance LINQ to Objects with extra methods, in a manner which keeps to the spirit of LINQ. * [NetTopologySuite](https://github.com/NetTopologySuite) - A .NET port of the JTS Topology Suite. * [NodaTime](http://nodatime.org/) - A better date and time API for .NET + * [OneDriveRestAPI](https://github.com/saguiitay/OneDriveRestAPI) - OneDrive .Net Client Library using the REST API. * [OsmSharp](https://github.com/OsmSharp) - Mapping & Routing library. * [PocketSharp](https://github.com/ceee/PocketSharp) * [PortableRest](https://github.com/AdvancedREI/PortableRest) - Portable library for building cross-platform REST API Clients for .NET and Xamarin. From dca84cbc2430be6804c96f3dc5143c491753ad2b Mon Sep 17 00:00:00 2001 From: Richard Lander Date: Mon, 22 Dec 2014 22:15:30 -0800 Subject: [PATCH 149/872] Replace marketing URLs with source URLs. --- dotnet-developer-projects.md | 60 ++++++++++++++++++------------------ 1 file changed, 30 insertions(+), 30 deletions(-) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 48a5be490..f7b4cdbec 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -5,33 +5,33 @@ This community maintained list showcases .NET open source developer projects. It Please sort projects alphabetically and provide a one-line description. GitHub/CodePlex (or other source) links are preferred, but feel free to also include marketing sites. Create new sections, as appropriate. * .NET Implementations - * [.NET Core](https://github.com/dotnet/corefx) - Core .NET Framework + * [.NET Core](https://github.com/dotnet/core) - Core .NET Framework * [Cosmos](http://cosmos.codeplex.com/) - C# Open Source Managed Operating System, an operating system "construction kit". - * [Fling OS](http://www.flingos.co.uk/) - C# Operating System designed for people to learn low-level development from. - * [Mono Project](https://github.com/mono/) - Cross-platform implementation of .NET Framework. + * [Fling OS](http://git.flingos.co.uk/fling-os/src) - C# Operating System designed for people to learn low-level development from. [Fling OS Site](http://www.flingos.co.uk/). + * [Mono](https://github.com/mono/mono) - Cross-platform implementation of .NET Framework. * [MOSA Project](https://github.com/mosa/MOSA-Project/) - Managed Operating System Alliance Project - C# Operating System. * Platforms * [Castle Project](https://github.com/castleproject) - Umbrella project for ActiveRecord, DynamicProxy, MonoRail, Windsor - * [Catel](http://catelproject.com/) - Application platform with IoC, logging, reflection and much more that serves as a base for applications that must be ready for future growth. - * [KonfDB](http://www.konfdb.com/) - Configuration Management as a Service for cross-platform, multi-tenant enterprise/hobby applications + * [Catel](https://github.com/catel/catel) - Application platform with IoC, logging, reflection and much more that serves as a base for applications that must be ready for future growth. + * [KonfDB](https://github.com/punitganshani/konfdb) - Configuration Management as a Service for cross-platform, multi-tenant enterprise/hobby applications. [KonfDB Site](http://www.konfdb.com/). * Languages * [Boo](https://github.com/bamboo/boo) - A .NET language similar to Python but with static typing, and many meta-programming capabilities. * [ClojureCLR](https://github.com/clojure/clojure-clr) - A .NET implemention of the [Clojure](http://clojure.org) programming language, built on the DLR. - * [Cobra](http://cobra-language.com/) - Clean, high-level syntax (Boo/Python-like). Static and dynamic binding. First class support for unit tests and contracts. Compiled performance with scripting conveniences. Lambdas and closures. Extensions and mixins - * [Dynamic Language Runtime](http://www.github.com/IronLanguages/main.git) - A toolkit for building dynamic languages for .NET. - * [Eagle](http://eagle.to) - A .NET implementation of the [Tcl](https://www.tcl.tk) programming language, built on the CLR. + * [Cobra](http://cobra-language.com/source/) - Clean, high-level syntax (Boo/Python-like). Static and dynamic binding. First class support for unit tests and contracts. Compiled performance with scripting conveniences. Lambdas and closures. Extensions and mixins + * [Dynamic Language Runtime](http://www.github.com/IronLanguages/main) - A toolkit for building dynamic languages for .NET. + * [Eagle](http://eagle.to/cgi-bin/eagle/dir?ci=trunk) - A .NET implementation of the [Tcl](https://www.tcl.tk) programming language, built on the CLR. [Eagle Site](http://eagle.to). * [Essence#](https://essencesharp.codeplex.com/) - Essence# is a fully dynamic and highly polymorphic programming language which features pervasive message passing, pervasive dynamic and strong typing, pervasive and deep reflection and pervasive object orientation. * [F#](https://github.com/fsharp/fsharp) - A mature, open source, cross-platform, functional-first programming language. * [F*](https://github.com/FStarLang/FStar) - An ML-like language with a type system for program verification. - * [IronPython](http://ironpython.net) - A .NET implementation of the [Python](https://www.python.org) programming language, built on the DLR. - * [IronRuby](http://ironruby.net) - A .NET implementation of the [Ruby](https://www.ruby-lang.org) programming language, built on the DLR. + * [IronPython](https://github.com/IronLanguages/main/tree/master/Languages/IronPython) - A .NET implementation of the [Python](https://www.python.org) programming language, built on the DLR. [IronPython Site](http://ironpython.net). + * [IronRuby](https://github.com/IronLanguages/main/tree/master/Languages/Ruby) - A .NET implementation of the [Ruby](https://www.ruby-lang.org) programming language, built on the DLR. [IronRuby Site](http://ironruby.net). * [IronScheme](http://ironscheme.codeplex.com) - A R6RS conforming Scheme-like implementation based on the Microsoft DLR. - * [MoonSharp](http://www.moonsharp.org) - A Lua interpreter and remote debugger, written entirely in C#, easily embeddable in any application running on .NET 3.5+ and Mono. + * [MoonSharp](https://github.com/xanathar/moonsharp/) - A Lua interpreter and remote debugger, written entirely in C#, easily embeddable in any application running on .NET 3.5+ and Mono. [MoonSharp Site](http://www.moonsharp.org). * [Nemerle](https://github.com/rsdn/nemerle) - A high-level statically-typed programming language which offers functional, object-oriented and imperative features and has a simple C# like syntax and a powerful meta-programming system. * [NiL.JS](https://github.com/nilproject/NiL.JS) - A .NET implementation of the ECMAScript language and runtime. - * [Phalanger](http://www.php-compiler.net/) - full-featured PHP runtime & compiler for .NET/Mono frameworks. Phalanger is modern open-source implementation of PHP, compatible with the vast array of existing PHP code. + * [Phalanger](https://github.com/DEVSENSE/Phalanger) - full-featured PHP runtime & compiler for .NET/Mono frameworks. Phalanger is modern open-source implementation of PHP, compatible with the vast array of existing PHP code. * [Roslyn (.NET Compiler Platform)](https://roslyn.codeplex.com/) - Open-source C# and Visual Basic compilers with rich code analysis APIs. * Security / Identity Management @@ -41,15 +41,15 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * Web CMS * [DNN (formerly DotNetNuke)](https://dotnetnuke.codeplex.com/) - Web content management platform (CMS). - * [N2CMS](http://www.n2cms.com/) - Open source, lightweight, code-first CMS able to seamlessly integrate into any MVC project. - * [Orchard](http://www.orchardproject.net/) - A community-focused Content Management System built on the ASP.NET MVC platform. - * [Piranha CMS](http://piranhacms.org) - Lightweight CMS library for new and existing ASP.NET MVC & WebPages applications. + * [N2CMS](http://n2cms.codeplex.com/) - Open source, lightweight, code-first CMS able to seamlessly integrate into any MVC project. [N2CMS Site](http://www.n2cms.com/). + * [Orchard](http://orchard.codeplex.com/) - A community-focused Content Management System built on the ASP.NET MVC platform. [Orchard Site](http://www.orchardproject.net/). + * [Piranha CMS](https://github.com/PiranhaCMS/Piranha) - Lightweight CMS library for new and existing ASP.NET MVC & WebPages applications. [Piranha CMS Site](http://piranhacms.org). * [Suave](https://github.com/SuaveIO/suave) A lightweight web server and a set of combinators to manipulate route flow and task composition. - * [Umbraco](http://umbraco.com/) - Web content management platform (CMS). + * [Umbraco](https://github.com/umbraco/Umbraco-CMS/) - Web content management platform (CMS). [Umbraco Site](http://umbraco.com/). * [WebSharper](https://bitbucket.org/IntelliFactory/websharper) - Web programming platform including a compiler from F# code to JavaScript. * Web Frameworks - * [Nancy](http://nancyfx.org) - A lightweight, low-ceremony, framework for building HTTP based services on .NET and Mono. + * [Nancy](https://github.com/NancyFx/Nancy) - A lightweight, low-ceremony, framework for building HTTP based services on .NET and Mono. [Nancy Site](http://nancyfx.org) * [NemerleWeb](https://github.com/NemerleWeb/NemerleWeb) - Web MVVM library for .Net. It uses reactive data model which allows creating rich internet applications. * ADO.NET providers @@ -68,12 +68,12 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [AzureNetQ](https://github.com/Roysvork/AzureNetQ) - An easy to use .NET API for Azure Service Bus. * [Bing.RestClient](https://github.com/AdvancedREI/Bing.RestClient) - Access the Bing REST APIs from a unified client. * [BoxKite.Twitter](https://github.com/NickHodge/BoxKite.Twitter/) - Twitter .NET Client Library for the 1.1 Twitter API, incorporating REST API, User streaming and Search Streaming. Uses Reactive Extensions (Rx). - * [Cimbalino Toolkit](http://cimbalino.org/) - A set of useful and powerful tools that will help you build your Windows Platform applications. + * [Cimbalino Toolkit](https://github.com/Cimbalino/Cimbalino-Toolkit) - A set of useful and powerful tools that will help you build your Windows Platform applications. * [Coding4Fun Toolkit](http://coding4fun.codeplex.com/) * [ColoredConsole](https://github.com/colored-console/colored-console) - Add some color to your console. * [ComparerExtensions](https://github.com/jehugaleahsa/comparerextensions) - Build IComparer and IEqualityComparer objects using natural language syntax. - * [Cricket](http://fsprojects.github.io/Cricket/) - Actor library - * [DiffSharp](http://gbaydin.github.io/DiffSharp/) - Automatic Differentiation Library + * [Cricket](https://github.com/fsprojects/Cricket) - Actor library + * [DiffSharp](https://github.com/gbaydin/DiffSharp) - Automatic Differentiation Library * [DotNetOpenAuth](https://github.com/DotNetOpenAuth) - Library that adds support for your site visitors to login with their OpenIDs by just dropping an ASP.NET control onto your page. * [DropboxRestAPI](https://github.com/saguiitay/DropboxRestAPI) - DropBox .Net Client Library * [DynamicData](https://github.com/RolandPheasant/DynamicData) - Brings the power of Rx to collections @@ -86,25 +86,25 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [GongSolutions.Wpf.DragDrop](https://github.com/punker76/gong-wpf-dragdrop) - A drag'n'drop framework for WPF. * [GeckoFX](https://bitbucket.org/geckofx) - Mozilla's Gecko layout engine wrapper in .NET. * [HudlFfmpeg](https://github.com/hudl/HudlFfmpeg) - A/V transcoding framework that helps build complex FFmpeg commands. - * [JSON.NET](http://json.net/) - Popular high-performance JSON framework for .NET + * [JSON.NET](https://github.com/JamesNK/Newtonsoft.Json) - Popular high-performance JSON framework for .NET * [Kentor.AuthServices](https://github.com/KentorIT/authservices) - A SAML2 Service Provider for .NET. * [LibGit2Sharp](https://github.com/libgit2/libgit2sharp) * [Lucene.Net](https://github.com/apache/lucene.net) * [MahApps.Metro](https://github.com/MahApps/MahApps.Metro) - A toolkit for creating metro-style WPF applications. - * [Math.NET Numerics](http://numerics.mathdotnet.com/) - Provides methods and algorithms for numerical computations in science, engineering and every day use. + * [Math.NET Numerics](https://github.com/mathnet/mathnet-numerics) - Provides methods and algorithms for numerical computations in science, engineering and every day use. * [Mathos Core Libary](http://mathos.codeplex.com/) - A library with algorithms for numerical calcultations in finance, statistics, pattern recognition, and more. * [Mathos Parser](http://mathosparser.codeplex.com/) - A simple parser for mathematical expressions before and at runtime. * [Mjolnir](https://github.com/hudl/Mjolnir) - [Hystrix](https://github.com/Netflix/Hystrix)-inspired fault tolerance with circuit breakers and thread pools. * [MoreLINQ](https://code.google.com/p/morelinq/) - LINQ to Objects is missing a few desirable features. This project will enhance LINQ to Objects with extra methods, in a manner which keeps to the spirit of LINQ. * [NetTopologySuite](https://github.com/NetTopologySuite) - A .NET port of the JTS Topology Suite. -* [NHunspell](http://www.crawler-lib.net/nhunspell) - Spell Checker, Hyphenation an Theasaurus - * [NodaTime](http://nodatime.org/) - A better date and time API for .NET +* [NHunspell](http://sourceforge.net/projects/nhunspell/) - Spell Checker, Hyphenation an Theasaurus + * [NodaTime](https://code.google.com/p/noda-time/) - A better date and time API for .NET * [OneDriveRestAPI](https://github.com/saguiitay/OneDriveRestAPI) - OneDrive .Net Client Library using the REST API. * [OsmSharp](https://github.com/OsmSharp) - Mapping & Routing library. * [PocketSharp](https://github.com/ceee/PocketSharp) * [PortableRest](https://github.com/AdvancedREI/PortableRest) - Portable library for building cross-platform REST API Clients for .NET and Xamarin. - * [RestSharp](http://restsharp.org/) - Simple REST and HTTP API Client for .NET - * [RestBus](http://restbus.org/) - Easy Asynchronous Messaging and Queueing for .NET + * [RestSharp](https://github.com/restsharp/RestSharp) - Simple REST and HTTP API Client for .NET + * [RestBus](https://github.com/tenor/RestBus) - Easy Asynchronous Messaging and Queueing for .NET * [SharpMap](https://sharpmap.codeplex.com/) - An easy-to-use mapping library for use in web and desktop applications * [SharpSnmpLib](https://sharpsnmplib.codeplex.com) - An easy-to-use SNMP library for use on all platforms (.NET/Mono/Xamarin) * [Splat](https://github.com/paulcbetts/splat) - A library to make things cross-platform that should be. @@ -118,8 +118,8 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * Graphics & Server-side Image Processing * [DynamicImage](https://github.com/tgjones/dynamic-image) - WPF-based server-side image rendering system - lots of visual effects implemented as high-performance shaders. Has URL api, several plugins available. - * [ImageProcessor](http://imageprocessor.org/) - A .NET Library For On-The-Fly Processing Of Images (GDI+ based). - * [ImageResizer](http://imageresizing.net/) - Add commands to image URLs to get altered versions in milliseconds. Edit, filter, touch-up images in real-time. (multiple backends - FreeImage, C++/CLI, GDI+, WIC). 45+ plugins available. + * [ImageProcessor](https://github.com/jimbobsquarepants/imageprocessor/) - A .NET Library For On-The-Fly Processing Of Images (GDI+ based). + * [ImageResizer](https://github.com/imazen/resizer) - Add commands to image URLs to get altered versions in milliseconds. Edit, filter, touch-up images in real-time. (multiple backends - FreeImage, C++/CLI, GDI+, WIC). 45+ plugins available. * [King.Azure.Imaging](https://github.com/jefking/King.Azure.Imaging) - Scalable image uploading and processing for Azure. * [.NET Image Processor](http://dotnetimageprocessor.codeplex.com/) - Extensible, chainable image processing library (GDI+ based). * [SharpDX](https://github.com/sharpdx/SharpDX) - SharpDX is a project delivering the full DirectX API for .NET on all Windows platforms. @@ -130,8 +130,8 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [log4net](http://logging.apache.org/log4net/) - A tool to help the programmer output log statements to a variety of output targets. * Model-View-ViewModel (MVVM) Frameworks - * [Caliburn Micro](http://caliburnmicro.com/) - * [Catel.MVVM](http://catelproject.com/) + * [Caliburn Micro](https://github.com/Caliburn-Micro/Caliburn.Micro) - A small, yet powerful framework, designed for building applications across all XAML platforms. + * [Catel.MVVM](https://github.com/catel/catel) - Catel is an application development platform with the focus on MVVM. * [MVVM Cross](https://github.com/MvvmCross/MvvmCross) * [MVVM Light Toolkit](http://www.mvvmlight.net) * [Radical](https://github.com/RadicalFx/radical) From a211e3fdb1ac5513c652d530dc6e19f0b968a05d Mon Sep 17 00:00:00 2001 From: Richard Lander Date: Mon, 22 Dec 2014 22:49:50 -0800 Subject: [PATCH 150/872] Update URLs to source URLs. Add project descriptions. --- dotnet-developer-projects.md | 80 ++++++++++++++++++------------------ 1 file changed, 40 insertions(+), 40 deletions(-) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index f7b4cdbec..bcfd4febc 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -7,28 +7,28 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * .NET Implementations * [.NET Core](https://github.com/dotnet/core) - Core .NET Framework * [Cosmos](http://cosmos.codeplex.com/) - C# Open Source Managed Operating System, an operating system "construction kit". - * [Fling OS](http://git.flingos.co.uk/fling-os/src) - C# Operating System designed for people to learn low-level development from. [Fling OS Site](http://www.flingos.co.uk/). + * [Fling OS](http://git.flingos.co.uk/fling-os/src) - [C# Operating System](http://www.flingos.co.uk/) designed for people to learn low-level development from. * [Mono](https://github.com/mono/mono) - Cross-platform implementation of .NET Framework. * [MOSA Project](https://github.com/mosa/MOSA-Project/) - Managed Operating System Alliance Project - C# Operating System. * Platforms * [Castle Project](https://github.com/castleproject) - Umbrella project for ActiveRecord, DynamicProxy, MonoRail, Windsor * [Catel](https://github.com/catel/catel) - Application platform with IoC, logging, reflection and much more that serves as a base for applications that must be ready for future growth. - * [KonfDB](https://github.com/punitganshani/konfdb) - Configuration Management as a Service for cross-platform, multi-tenant enterprise/hobby applications. [KonfDB Site](http://www.konfdb.com/). + * [KonfDB](https://github.com/punitganshani/konfdb) - Configuration Management as a Service for cross-platform, multi-tenant enterprise/hobby applications. * Languages * [Boo](https://github.com/bamboo/boo) - A .NET language similar to Python but with static typing, and many meta-programming capabilities. * [ClojureCLR](https://github.com/clojure/clojure-clr) - A .NET implemention of the [Clojure](http://clojure.org) programming language, built on the DLR. * [Cobra](http://cobra-language.com/source/) - Clean, high-level syntax (Boo/Python-like). Static and dynamic binding. First class support for unit tests and contracts. Compiled performance with scripting conveniences. Lambdas and closures. Extensions and mixins * [Dynamic Language Runtime](http://www.github.com/IronLanguages/main) - A toolkit for building dynamic languages for .NET. - * [Eagle](http://eagle.to/cgi-bin/eagle/dir?ci=trunk) - A .NET implementation of the [Tcl](https://www.tcl.tk) programming language, built on the CLR. [Eagle Site](http://eagle.to). + * [Eagle](http://eagle.to/cgi-bin/eagle/dir?ci=trunk) - [A .NET implementation](http://eagle.to) of the [Tcl](https://www.tcl.tk) programming language, built on the CLR. * [Essence#](https://essencesharp.codeplex.com/) - Essence# is a fully dynamic and highly polymorphic programming language which features pervasive message passing, pervasive dynamic and strong typing, pervasive and deep reflection and pervasive object orientation. * [F#](https://github.com/fsharp/fsharp) - A mature, open source, cross-platform, functional-first programming language. * [F*](https://github.com/FStarLang/FStar) - An ML-like language with a type system for program verification. * [IronPython](https://github.com/IronLanguages/main/tree/master/Languages/IronPython) - A .NET implementation of the [Python](https://www.python.org) programming language, built on the DLR. [IronPython Site](http://ironpython.net). * [IronRuby](https://github.com/IronLanguages/main/tree/master/Languages/Ruby) - A .NET implementation of the [Ruby](https://www.ruby-lang.org) programming language, built on the DLR. [IronRuby Site](http://ironruby.net). * [IronScheme](http://ironscheme.codeplex.com) - A R6RS conforming Scheme-like implementation based on the Microsoft DLR. - * [MoonSharp](https://github.com/xanathar/moonsharp/) - A Lua interpreter and remote debugger, written entirely in C#, easily embeddable in any application running on .NET 3.5+ and Mono. [MoonSharp Site](http://www.moonsharp.org). + * [MoonSharp](https://github.com/xanathar/moonsharp/) - A Lua interpreter and remote debugger, written entirely in C#, easily embeddable in any application running on .NET 3.5+ and Mono. * [Nemerle](https://github.com/rsdn/nemerle) - A high-level statically-typed programming language which offers functional, object-oriented and imperative features and has a simple C# like syntax and a powerful meta-programming system. * [NiL.JS](https://github.com/nilproject/NiL.JS) - A .NET implementation of the ECMAScript language and runtime. * [Phalanger](https://github.com/DEVSENSE/Phalanger) - full-featured PHP runtime & compiler for .NET/Mono frameworks. Phalanger is modern open-source implementation of PHP, compatible with the vast array of existing PHP code. @@ -41,15 +41,15 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * Web CMS * [DNN (formerly DotNetNuke)](https://dotnetnuke.codeplex.com/) - Web content management platform (CMS). - * [N2CMS](http://n2cms.codeplex.com/) - Open source, lightweight, code-first CMS able to seamlessly integrate into any MVC project. [N2CMS Site](http://www.n2cms.com/). - * [Orchard](http://orchard.codeplex.com/) - A community-focused Content Management System built on the ASP.NET MVC platform. [Orchard Site](http://www.orchardproject.net/). - * [Piranha CMS](https://github.com/PiranhaCMS/Piranha) - Lightweight CMS library for new and existing ASP.NET MVC & WebPages applications. [Piranha CMS Site](http://piranhacms.org). + * [N2CMS](https://github.com/n2cms/n2cms) - Open source, lightweight, code-first CMS able to seamlessly integrate into any MVC project. + * [Orchard](http://orchard.codeplex.com/) - A community-focused Content Management System built on the ASP.NET MVC platform. + * [Piranha CMS](https://github.com/PiranhaCMS/Piranha) - Lightweight CMS library for new and existing ASP.NET MVC & WebPages applications. * [Suave](https://github.com/SuaveIO/suave) A lightweight web server and a set of combinators to manipulate route flow and task composition. - * [Umbraco](https://github.com/umbraco/Umbraco-CMS/) - Web content management platform (CMS). [Umbraco Site](http://umbraco.com/). + * [Umbraco](https://github.com/umbraco/Umbraco-CMS/) - Web content management platform (CMS). * [WebSharper](https://bitbucket.org/IntelliFactory/websharper) - Web programming platform including a compiler from F# code to JavaScript. * Web Frameworks - * [Nancy](https://github.com/NancyFx/Nancy) - A lightweight, low-ceremony, framework for building HTTP based services on .NET and Mono. [Nancy Site](http://nancyfx.org) + * [Nancy](https://github.com/NancyFx/Nancy) - A lightweight, low-ceremony, framework for building HTTP based services on .NET and Mono. * [NemerleWeb](https://github.com/NemerleWeb/NemerleWeb) - Web MVVM library for .Net. It uses reactive data model which allows creating rich internet applications. * ADO.NET providers @@ -132,11 +132,11 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * Model-View-ViewModel (MVVM) Frameworks * [Caliburn Micro](https://github.com/Caliburn-Micro/Caliburn.Micro) - A small, yet powerful framework, designed for building applications across all XAML platforms. * [Catel.MVVM](https://github.com/catel/catel) - Catel is an application development platform with the focus on MVVM. - * [MVVM Cross](https://github.com/MvvmCross/MvvmCross) - * [MVVM Light Toolkit](http://www.mvvmlight.net) - * [Radical](https://github.com/RadicalFx/radical) - * [ReactiveUI](https://github.com/reactiveui/ReactiveUI) - * [Simple Mvvm Toolkit](http://simplemvvmtoolkit.codeplex.com/) + * [MVVM Cross](https://github.com/MvvmCross/MvvmCross) - A cross-platform mobile MVVM development framework. + * [MVVM Light Toolkit](http://www.mvvmlight.net) - A cross-platform desktop and mobile MVVM development framework. + * [Radical](https://github.com/RadicalFx/radical) - An infrastructure framework whose primary role is to help in the development of composite WPF/Silverlight/WP/WinRT applications based on the Model View ViewModel pattern. + * [ReactiveUI](https://github.com/reactiveui/ReactiveUI) - An MVVM framework that integrates with the Reactive Extensions for .NET to create elegant, testable User Interfaces that run on any mobile or desktop platform. + * [Simple Mvvm Toolkit](http://simplemvvmtoolkit.codeplex.com/) - Provides a simple framework and set of tools for getting up to speed quickly with applications based on the MVVM design pattern. * Tools * [Cake](https://github.com/cake-build/cake) (C# Make) - A build automation system with C#/Roslyn driven build scripts. @@ -144,34 +144,34 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [CInject](https://github.com/punitganshani/CodeInject) - A tool to inject your C#/VB.NET code into existing .NET assemblies and executables * [FAKE](http://fsharp.github.io/FAKE/) - Build automation system with capabilities which are similar to make and rake. * [Fody](https://github.com/Fody/Fody) - Extensible tool for weaving .NET assemblies. -* [Crawler-Lib Build Tools](http://www.crawler-lib.net/build-tools) - A PowerShell based toolbox for automating the software build process, autmated testing and integration. - * [FsEye](http://www.swensensoftware.com/fseye) - A visual object tree inspector for the F# Interactive. - * [FsharpLint](http://fsprojects.github.io/FSharpLint/) - Lint tool for F#. - * [FsPickler](http://nessos.github.io/FsPickler/) - Serialization library that facilitates the distribution of .NET objects. +* [Crawler-Lib Build Tools](http://download.crawler-lib.net/BuildTools/) - [A PowerShell based toolbox](http://www.crawler-lib.net/build-tools) for automating the software build process, autmated testing and integration. + * [FsEye](https://code.google.com/p/fseye/) - A visual object tree inspector for the F# Interactive. + * [FsharpLint](https://github.com/fsprojects/FSharpLint) - Lint tool for F#. + * [FsPickler](https://github.com/nessos/FsPickler) - Serialization library that facilitates the distribution of .NET objects. * [GitLink](https://github.com/CatenaLogic/GitLink) - Command-line tool to make .NET open source accessible without the need for a symbols server * [GitVersion](https://github.com/ParticularLabs/GitVersion) - Use convention to derive a SemVer product version from a GitFlow based repository. - * [Glimpse](http://getglimpse.com) - Providing real time diagnostics & insights to the fingertips of hundreds of thousands of developers daily. - * [ILSpy](http://ilspy.net/) - ILSpy is the open-source .NET assembly browser and decompiler. - * [Mini Profiler](http://miniprofiler.com/) - A simple but effective mini-profiler for .NET and Ruby. + * [Glimpse](https://github.com/Glimpse/Glimpse) - Providing real time diagnostics & insights to the fingertips of hundreds of thousands of developers daily. + * [ILSpy](https://github.com/icsharpcode/ILSpy) - ILSpy is the open-source .NET assembly browser and decompiler. + * [Mini Profiler](https://github.com/MiniProfiler/dotnet) - A simple but effective mini-profiler for .NET. * [Obfuscar](https://obfuscar.codeplex.com) - MSIL obfuscation utility for .NET assemblies. * [Outcomes.Net](https://github.com/kinetiq/Ether.Outcomes/) - Fluent wrapper that eliminates plumbing code around failure-prone functions. - * [Paket](http://fsprojects.github.io/Paket/) - Dependency manager for .NET and Mono projmects, which is designed to work well with NuGet packages and also enables referencing files directly from GitHub repositories. + * [Paket](https://github.com/fsprojects/Paket) - Dependency manager for .NET and Mono projmects, which is designed to work well with NuGet packages and also enables referencing files directly from GitHub repositories. * [Protobuf-net](https://code.google.com/p/protobuf-net/) - A .NET implementation of protobuf, allowing you to serialize your .NET objects efficiently and easily. - * [scriptcs](http://scriptcs.net/) - scriptcs makes it easy to write and execute C# with a simple text editor. + * [scriptcs](https://github.com/scriptcs/scriptcs) - scriptcs makes it easy to write and execute C# with a simple text editor. * [Snoop WPF](https://github.com/cplotts/snoopwpf) - Snoop - The WPF Spy Utility * [Sql Bulk Copy Sync](https://github.com/WCOMAB/SqlBulkSync) - * [Vagrant](http://nessos.github.io/Vagrant/) - Automated dependency resolution and dynamic assembly compilation framework. + * [Vagrant](https://github.com/nessos/Vagrant) - Automated dependency resolution and dynamic assembly compilation framework. * [Weighted Selector](https://github.com/kinetiq/Ether.WeightedSelector/) - Easy to use (but high performance!) weighted selection implementation. * [XDav](https://github.com/rezabazargan/xDav) - A .net server mudole for webdav standard. * [ZeroToNine](https://github.com/ploeh/ZeroToNine) - A tool for maintaining .NET Assembly versions across multiple files. * Testing * [AutoFixture](https://github.com/AutoFixture/AutoFixture) - An open source framework for .NET designed to minimize the 'Arrange' phase of your unit tests. Its primary goal is to allow developers to focus on what is being tested rather than how to setup the test scenario, by making it easier to create object graphs containing test data. - * [canopy](http://lefthandedgoat.github.io/canopy/) - A web testing framework. + * [canopy](https://github.com/lefthandedgoat/canopy) - A web testing framework. * [FakeItEasy](https://github.com/FakeItEasy/FakeItEasy) - The easy mocking library for .NET. - * [FsCheck](https://fsharp.github.io/FsCheck/) - A tool for testing .NET programs automatically. + * [FsCheck](https://github.com/fsharp/FsCheck) - A tool for testing .NET programs automatically. * [moq](https://github.com/Moq/moq4) - The most popular and friendly mocking framework for .NET - * [NSubstitute](http://nsubstitute.github.io/) - A friendly substitute for .NET mocking frameworks. + * [NSubstitute](https://github.com/nsubstitute/NSubstitute) - A friendly substitute for .NET mocking frameworks. * [NUnit](https://github.com/nunit/nunit) - NUnit is a unit-testing framework for all .NET languages. * [tickspec](http://tickspec.codeplex.com/) - A lightweight Behaviour Driven Development (BDD) framework. * [TestStack.BDDfy](https://github.com/TestStack/TestStack.BDDfy) - BDDfy is the simplest BDD framework to use, customize and extend! @@ -181,9 +181,9 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [xUnit](https://github.com/xunit/xunit) - xUnit.net is a community-focused unit testing tool for the .NET Framework. * Dependency Injection - * [Autofac](http://autofac.org/) - Autofac is an addictive Inversion of Control container for .NET 4.5, Silverlight 5, Windows Store apps, and Windows Phone 8 apps. - * [Castle Windsor](http://www.castleproject.org/projects/windsor/) - A mature Inversion of Control container available for .NET and Silverlight - * [DI Feature Tests](http://featuretests.apphb.com/DependencyInjection.html) - Tests that track commmon DI features among multiple containers + * [Autofac](https://github.com/autofac/Autofac) - Autofac is an addictive Inversion of Control container for .NET 4.5, Silverlight 5, Windows Store apps, and Windows Phone 8 apps. + * [Castle Windsor](https://github.com/castleproject/Windsor) - A mature Inversion of Control container available for .NET and Silverlight + * [DI Feature Tests](https://github.com/ashmind/net-feature-tests) - Tests that track commmon DI features among multiple containers * [dI.Hook](https://github.com/punitganshani/dI.Hook) - DI container that allows invocation using AOP * [DryIoc](https://bitbucket.org/dadhi/dryioc) - DryIoc is small, fast, capable IoC Container for .NET * [fFastInjector](https://ffastinjector.codeplex.com/) - fFastInjector is a high-performing dependency injector, service locator, and/or IOC (inversion of control) container. @@ -193,19 +193,19 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [HaveBox](https://bitbucket.org/Have/havebox/wiki/Home) - HaveBox is a very fast and lightweight IoC containter. The goal is to keep it fast and light, and at the same time easy to use. * [Hiro](https://github.com/philiplaureano/Hiro) - An ultra-lightweight, inversion of control container compiler framework * [IfInjector](https://github.com/iamahern/IfInjector) - High performance mobile micro-IoC container. - * [LightCore](http://lightcore.ch/de/default.aspx) - LightCore is a lightweight dependency injection container that can be used as a service locator and despite its simplicity and ease boasts numerous features. + * [LightCore](https://peterbucher.kilnhg.com/Code/LightCore/Group/Default?nr=) - [A lightweight dependency injection container](http://lightcore.ch/en/default.aspx) that can be used as a service locator and despite its simplicity and ease boasts numerous features. * [LightInject](https://github.com/seesharper/LightInject) - A ultra lightweight IoC container * [MicroSliver](https://microsliver.codeplex.com/) - MicroSliver is a micro, non-bloat, non-intimidating and speedy .NET (ASP.NET, Silverlight, RIA Services, WPF, Forms and Metro!) * [Mugen Injection](http://mugeninjection.codeplex.com/) - The MugeniInjection is a lightweight and fast managed IoC (Inversion of Control) and DI (Dependency Injection) with support for constructor, property and method call injection - * [Ninject for Desktop](http://www.ninject.org/) - Dependency injector for .NET + * [Ninject for Desktop](https://github.com/ninject/ninject) - Dependency injector for .NET * [Ninject for Portable Class Libraries, Universal apps and Xamarin](https://github.com/onovotny/ninject) * [QuickInject](https://github.com/isabgol/QuickInject) - QuickInject is a Unity 3.5 based IoC container that aims to give the Unity container a performance advantage in basic scenarios. - * [Simple Injector](https://simpleinjector.org/index.html) - Simple Injector is an easy-to-use Dependency Injection library for .NET 4+ that supports Silverlight 4+, Windows Phone 8, Windows 8 including Universal apps and Mono. - * [Spring.NET](http://www.springframework.net/) - Spring.NET is an open source application framework that makes building enterprise .NET applications easier. - * [StructureMap](http://docs.structuremap.net/) - StructureMap is a Dependency Injection / Inversion of Control tool for .Net that can be used to improve the architectural qualities of an object oriented system by reducing the mechanical costs of good design techniques. + * [Simple Injector](https://simpleinjector.codeplex.com/) - Simple Injector is an easy-to-use Dependency Injection library for .NET 4+ that supports Silverlight 4+, Windows Phone 8, Windows 8 including Universal apps and Mono. + * [Spring.NET](https://github.com/spring-projects/spring-net) - Spring.NET is an open source application framework that makes building enterprise .NET applications easier. + * [StructureMap](https://github.com/structuremap/structuremap) - StructureMap is a Dependency Injection / Inversion of Control tool for .Net that can be used to improve the architectural qualities of an object oriented system by reducing the mechanical costs of good design techniques. * [StyleMVVM](https://stylemvvm.codeplex.com/) - Style MVVM is a toolkit designed for the Windows Store platform around the idea of being light weight and fast. * [TinyIoC](https://github.com/grumpydev/TinyIoC) - An easy to use, hassle free, Inversion of Control Container for small projects, libraries and beginners alike. - * [Unity Container](http://msdn.microsoft.com/library/ff647202.aspx) - The Unity Container (Unity) is a lightweight, extensible dependency injection container with optional support for instance and type interception. + * [Unity Container](http://unity.codeplex.com/) - The Unity Container (Unity) is a lightweight, extensible dependency injection container with optional support for instance and type interception. * Data Access * [Dapper](https://github.com/StackExchange/dapper-dot-net) - Dapper is a single file you can drop in to your project that will extend your IDbConnection interface. @@ -223,7 +223,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * Games * [Duality](https://github.com/AdamsLair/duality) - An Open Source 2D Game Engine + Visual Editor written entirely in C#. - * [MonoGame](http://monogame.net) - One framework for creating powerful cross-platform games. + * [MonoGame](https://github.com/mono/MonoGame) - One framework for creating powerful cross-platform games. * [OpenRA](https://github.com/OpenRA/OpenRA) - An open-source implementation of the Command & Conquer: Red Alert engine using .NET/Mono and OpenGL. * [Paradox](https://github.com/SiliconStudio/paradox) - Paradox is a versatile and engaging game engine. * [WaveEngine](https://github.com/waveengine) - A powerful component based game engine for desktop and mobile platforms using C#. @@ -236,11 +236,11 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * Windows Services * [King.Service](https://github.com/jefking/King.Service) - Task scheduling for Azure and Windows - * [TopShelf](https://github.com/Topshelf/Topshelf) + * [TopShelf](https://github.com/Topshelf/Topshelf) - An easy service hosting framework for building Windows services using .NET. * Scheduling - * [Hangfire](http://hangfire.io/) - * [Quartz.Net](https://github.com/quartznet/quartznet) + * [Hangfire](https://github.com/HangfireIO/Hangfire) - An easy way to perform fire-and-forget, delayed and recurring tasks inside ASP.NET applications. + * [Quartz.Net](https://github.com/quartznet/quartznet) - A full-featured, open source job scheduling system that can be used from smallest apps to large scale enterprise systems. * Deployment * [DropkicK](https://github.com/chucknorris/dropkick/) - A fluent deployment library for Windows applications From 74a37b2bbad1e80e7ba04dea9c782821a2a5a0ef Mon Sep 17 00:00:00 2001 From: Vladislav Karamfilov Date: Tue, 23 Dec 2014 17:18:00 +0200 Subject: [PATCH 151/872] Update dotnet-consumer-projects.md --- dotnet-consumer-projects.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/dotnet-consumer-projects.md b/dotnet-consumer-projects.md index 196de3a1a..686109c75 100644 --- a/dotnet-consumer-projects.md +++ b/dotnet-consumer-projects.md @@ -23,6 +23,9 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * Crypto Currency * [CoiniumServ](https://github.com/CoiniumServ/CoiniumServ) - a high performance, extremely efficient, platform-agnostic, easy to setup bitcoin & alt-coin pool server implementation. It features stratum services, reward, payment, share processors, vardiff & ban managers, user-friendly embedded web-server & front-end and a full-stack API. +* Online Algorithm Competitions + * [OpenJudgeSystem](https://github.com/NikolayIT/OpenJudgeSystem) - an open source system for online algorithm competitions. The algorithm competitions (currently available in C#, C++, JavaScript, Java and PHP programming languages) are timed contests where all contestants compete online and are given the same algorithmic problems to solve under the same time and memory constraints. + This list is just a starting point - also take a look at all the projects on [CodePlex](http://www.codeplex.com/) and on [GitHub Trending C#](https://github.com/trending?l=csharp). Thanks to @scottisafool for providing the initial list. From 6b320e94ce1c3efedf202401580164308b8138c1 Mon Sep 17 00:00:00 2001 From: Florian Greinacher Date: Thu, 25 Dec 2014 01:21:00 +0100 Subject: [PATCH 152/872] Fix some indents NHunspell and Crawler-Lib Build Tools missed one level of indent and messed up the list. --- dotnet-developer-projects.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index bcfd4febc..cf3d7f83f 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -97,7 +97,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [Mjolnir](https://github.com/hudl/Mjolnir) - [Hystrix](https://github.com/Netflix/Hystrix)-inspired fault tolerance with circuit breakers and thread pools. * [MoreLINQ](https://code.google.com/p/morelinq/) - LINQ to Objects is missing a few desirable features. This project will enhance LINQ to Objects with extra methods, in a manner which keeps to the spirit of LINQ. * [NetTopologySuite](https://github.com/NetTopologySuite) - A .NET port of the JTS Topology Suite. -* [NHunspell](http://sourceforge.net/projects/nhunspell/) - Spell Checker, Hyphenation an Theasaurus + * [NHunspell](http://sourceforge.net/projects/nhunspell/) - Spell Checker, Hyphenation an Theasaurus * [NodaTime](https://code.google.com/p/noda-time/) - A better date and time API for .NET * [OneDriveRestAPI](https://github.com/saguiitay/OneDriveRestAPI) - OneDrive .Net Client Library using the REST API. * [OsmSharp](https://github.com/OsmSharp) - Mapping & Routing library. @@ -144,7 +144,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [CInject](https://github.com/punitganshani/CodeInject) - A tool to inject your C#/VB.NET code into existing .NET assemblies and executables * [FAKE](http://fsharp.github.io/FAKE/) - Build automation system with capabilities which are similar to make and rake. * [Fody](https://github.com/Fody/Fody) - Extensible tool for weaving .NET assemblies. -* [Crawler-Lib Build Tools](http://download.crawler-lib.net/BuildTools/) - [A PowerShell based toolbox](http://www.crawler-lib.net/build-tools) for automating the software build process, autmated testing and integration. + * [Crawler-Lib Build Tools](http://download.crawler-lib.net/BuildTools/) - [A PowerShell based toolbox](http://www.crawler-lib.net/build-tools) for automating the software build process, autmated testing and integration. * [FsEye](https://code.google.com/p/fseye/) - A visual object tree inspector for the F# Interactive. * [FsharpLint](https://github.com/fsprojects/FSharpLint) - Lint tool for F#. * [FsPickler](https://github.com/nessos/FsPickler) - Serialization library that facilitates the distribution of .NET objects. From 36752670aba194ca5708d34cffef82185fcadb9f Mon Sep 17 00:00:00 2001 From: Andrew Wilkinson Date: Sun, 28 Dec 2014 12:11:34 +0000 Subject: [PATCH 153/872] Add Okra App Framework to the MVVM category --- dotnet-developer-projects.md | 1 + 1 file changed, 1 insertion(+) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index cf3d7f83f..cc72aecbd 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -134,6 +134,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [Catel.MVVM](https://github.com/catel/catel) - Catel is an application development platform with the focus on MVVM. * [MVVM Cross](https://github.com/MvvmCross/MvvmCross) - A cross-platform mobile MVVM development framework. * [MVVM Light Toolkit](http://www.mvvmlight.net) - A cross-platform desktop and mobile MVVM development framework. + * [Okra App Framework](https://github.com/OkraFramework/Okra.Core) - An MVVM framework for Windows Store applications including MVVM templates for Visual Studio. * [Radical](https://github.com/RadicalFx/radical) - An infrastructure framework whose primary role is to help in the development of composite WPF/Silverlight/WP/WinRT applications based on the Model View ViewModel pattern. * [ReactiveUI](https://github.com/reactiveui/ReactiveUI) - An MVVM framework that integrates with the Reactive Extensions for .NET to create elegant, testable User Interfaces that run on any mobile or desktop platform. * [Simple Mvvm Toolkit](http://simplemvvmtoolkit.codeplex.com/) - Provides a simple framework and set of tools for getting up to speed quickly with applications based on the MVVM design pattern. From 12ae019008d87c54289c38123c476e1a2dd89e9c Mon Sep 17 00:00:00 2001 From: William Gross Date: Wed, 31 Dec 2014 19:26:16 -0500 Subject: [PATCH 154/872] Added Enterprise Web Library to developer projects list --- dotnet-developer-projects.md | 1 + 1 file changed, 1 insertion(+) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index cf3d7f83f..91261427b 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -14,6 +14,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * Platforms * [Castle Project](https://github.com/castleproject) - Umbrella project for ActiveRecord, DynamicProxy, MonoRail, Windsor * [Catel](https://github.com/catel/catel) - Application platform with IoC, logging, reflection and much more that serves as a base for applications that must be ready for future growth. + * [Enterprise Web Library (EWL)](https://github.com/enduracode/enterprise-web-library) - An extremely opinionated platform for web applications that trades off performance, scalability, and development flexibility for an ease of maintenance you won't find anywhere else. [Enterprise Web Library site](http://www.enterpriseweblibrary.org/). * [KonfDB](https://github.com/punitganshani/konfdb) - Configuration Management as a Service for cross-platform, multi-tenant enterprise/hobby applications. * Languages From 81dc60c17843918707b418e3c1d066334628fede Mon Sep 17 00:00:00 2001 From: thefiddler Date: Fri, 2 Jan 2015 16:38:57 +0100 Subject: [PATCH 155/872] Update dotnet-developer-projects.md Added OpenTK and MonoGame libraries. --- dotnet-developer-projects.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 63301faf7..dc42f640c 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -122,7 +122,9 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [ImageProcessor](https://github.com/jimbobsquarepants/imageprocessor/) - A .NET Library For On-The-Fly Processing Of Images (GDI+ based). * [ImageResizer](https://github.com/imazen/resizer) - Add commands to image URLs to get altered versions in milliseconds. Edit, filter, touch-up images in real-time. (multiple backends - FreeImage, C++/CLI, GDI+, WIC). 45+ plugins available. * [King.Azure.Imaging](https://github.com/jefking/King.Azure.Imaging) - Scalable image uploading and processing for Azure. + * [MonoGame](http://www.monogame.net/) - MonoGame is a cross-platform, open-source implementation of the XNA Game Framework. * [.NET Image Processor](http://dotnetimageprocessor.codeplex.com/) - Extensible, chainable image processing library (GDI+ based). + * [OpenTK](https://github.com/opentk/opentk) - OpenTK is a low-level, cross-platform binding to OpenGL, OpenGL ES, OpenCL and OpenAL, available for Windows, Linux, Mac OS X, BSD, Android and iOS. * [SharpDX](https://github.com/sharpdx/SharpDX) - SharpDX is a project delivering the full DirectX API for .NET on all Windows platforms. * Logging From 64c798d73ed52d92d1030822d55f2f08c00319d5 Mon Sep 17 00:00:00 2001 From: Andrew Wilkinson Date: Sun, 4 Jan 2015 20:25:15 +0000 Subject: [PATCH 156/872] Add free services and tools for open source .NET projects --- README.md | 4 ++++ dotnet-free-oss-services.md | 41 +++++++++++++++++++++++++++++++++++++ 2 files changed, 45 insertions(+) create mode 100644 dotnet-free-oss-services.md diff --git a/README.md b/README.md index 7817083fc..864647abb 100644 --- a/README.md +++ b/README.md @@ -27,6 +27,10 @@ For a longer list, see: * [.NET developer projects](dotnet-developer-projects.md) * [.NET consumer projects](dotnet-consumer-projects.md) +For a list of free services and tools for open source .NET projects, see: + +* [Free Services & Tools for Open Source .NET Projects](dotnet-free-oss-services.md) + ## How to Engage, Contribute and Provide Feedback .NET open source projects from Microsoft (gladly) accept PRs and other diff --git a/dotnet-free-oss-services.md b/dotnet-free-oss-services.md new file mode 100644 index 000000000..945c6163b --- /dev/null +++ b/dotnet-free-oss-services.md @@ -0,0 +1,41 @@ +# Free Services & Tools for Open Source .NET Projects + +This community maintained list showcases free tools and services for open source software development on .NET. If you know of any additions to this list PR a change. This list focuses on services specifically supporting .NET development - a list covering a wide range of platforms is available at [OSS Perks](http://ossperks.com/). + +Please sort projects alphabetically and provide a one-line description. Where possible links should be to a page showing free open source plans (for example a web page, blog post or pricing page with open source plan detailed). Create new sections, as appropriate. + +* IDEs + * [ReSharper](http://www.jetbrains.com/resharper/buy/choose_edition.jsp?license=OPEN_SOURCE) - Visual Studio extension providing code analysis, formatting, refactoring and more. + * [Visual Studio Community](http://www.visualstudio.com/en-gb/products/visual-studio-community-vs) - Full version of Visual Studio available free + * [VS Anywhere](https://vsanywhere.com/open_source_students_and_educational_centers.aspx) - Visual Studio extension for in IDE collaborative development. + +* Cross Platform Development + * [Xamarin](http://resources.xamarin.com/open-source-contributor.html) - Share .Net code across Windows, iOS, Android and Mac. + +* Hosted Build and Continous Integration + * [AppVeyor](http://www.appveyor.com/pricing) - Windows based cloud build/CI servers tailored for .Net developers. + * [TeamCity at CodeBetter](http://codebetter.com/codebetter-ci) - JetBrains TeamCity CI server made available for open source projects by CodeBetter. + * [TravisCI](https://travis-ci.com/plans) - Hosted CI service supporting .Net builds via Mono on Linux. + +* Profilers + * [ANTS Memory Profiler](http://reflectorblog.red-gate.com/2013/07/open-source) - .Net memory profiler from redgate. + * [ANTS Performance Profiler](http://reflectorblog.red-gate.com/2013/07/open-source) - .Net performance profiler from redgate. + * [dotTrace](http://www.jetbrains.com/profiler/buy/choose_edition.jsp?license=OPEN_SOURCE) - Performance profiler for .Net applications + +* Aspect Oriented Programming + * [PostSharp](http://www.postsharp.net/purchase#discounts) - Aspect-oriented programming tool to eradicate boilerplate code. + +* Code Analysis + * [Coverity Scan](https://scan.coverity.com) - Static analysis service to identify defects in C# code. + * [dotCover](http://www.jetbrains.com/dotcover/buy/choose_edition.jsp?license=OPEN_SOURCE) - Code coverage tool integrated with Visual Studio. + * [.Net Reflector](http://reflectorblog.red-gate.com/2013/07/open-source) - Browse, analyse and decompiler IL code. + +* Package Management + * [MyGet](https://www.myget.org/opensource) - Publish public NuGet feeds of your packages for free. + +* Analytics and Error Reporting + * [Bugsnag](https://bugsnag.com/blog/bugsnag-loves-open-source) - Cross platform error reporting. + +* Misc + * [Crowdin](https://crowdin.com/page/open-source-project-setup-request) - Localisation management platform. + * [Transifex](https://www.transifex.com/pricing/) - Localisation management platform. \ No newline at end of file From 515c16d1d7d082be09dd4c8cfe80acc8b5f5fe36 Mon Sep 17 00:00:00 2001 From: Richard Lander Date: Tue, 6 Jan 2015 11:43:22 -0800 Subject: [PATCH 157/872] Add current version of platforms.json --- data/platforms.json | 331 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 331 insertions(+) create mode 100644 data/platforms.json diff --git a/data/platforms.json b/data/platforms.json new file mode 100644 index 000000000..934c7ad4f --- /dev/null +++ b/data/platforms.json @@ -0,0 +1,331 @@ +{ +"vsversions": +[ +{"alias":"VS2010", +"name":"Visual Studio 2010", +"download":"http://www.visualstudio.com/en-us/downloads/download-visual-studio-vs#DownloadFamilies_4"}, +{"alias":"VS2012", +"name":"Visual Studio 2012", +"download":"http://www.microsoft.com/en-us/download/details.aspx?id=30682"}, +{"alias":"VS2013", +"name":"Visual Studio 2013", +"download":"http://www.visualstudio.com/en-us/downloads/download-visual-studio-vs.aspx" +} +] +, +"platformcategories": +[ +{"alias":"netfx", +"name":".NET Framework"}, +{"alias":"services", +"name":"Services"}, +{"alias":"devices", +"name":"Devices"}, +{"alias":"libraries", +"name":"Libraries"}, +{"alias":"silverlight", +"name":"Silverlight"} +], + +"platforms": +[ +{ +"platform":".NET Framework 4.5.2", +"category":"netfx", +"info":"http://go.microsoft.com/fwlink/?LinkID=309958", +"includedIn":[], +"supportedBy":["VS2013","VS2012"], +"runtime":[ +{"name":".NET Framework 4.5.2","link":"http://go.microsoft.com/fwlink/?LinkId=397674"}], +"tools":[ +{"name":".NET Framework 4.5.2 Developer Pack","link":"http://go.microsoft.com/fwlink/?LinkId=328857","description":"The .NET 4.5.2 Developer pack includes the .NET framework 4.5.2 runtime and targeting pack."}, +{"name":".NET Framework 4.5.2 Language Packs","link":"http://go.microsoft.com/fwlink/?LinkId=328858","description":"Resources to support languages other than English."}, +{"name":"Visual Studio Express 2013 for Windows Desktop","link":"http://www.visualstudio.com/downloads/download-visual-studio-vs#d-express-windows-desktop"}, +{"name":"Visual Studio Express 2013 for Web","link":"http://www.visualstudio.com/downloads/download-visual-studio-vs#d-express-web"} +] + }, + { +"platform":".NET Framework 4.5.1", +"category":"netfx", +"info":"http://go.microsoft.com/fwlink/?LinkID=309958", +"includedIn":["VS2013"], +"supportedBy":["VS2012"], +"runtime":[ +{"name":".NET Framework 4.5.1","link":"http://go.microsoft.com/fwlink/?LinkId=306592"}], +"tools":[ +{"name":".NET Framework 4.5.1 Developer Pack","link":"http://www.microsoft.com/en-us/download/details.aspx?id=40772","description":"The .NET 4.5.1 Developer pack includes the .NET framework 4.5.1 runtime and targeting pack."}, +{"name":"Windows Software Development Kit for Windows 8.1","link":"http://go.microsoft.com/fwlink/?LinkID=310212"}] + }, +{ +"platform":".NET Framework 4.5", +"category":"netfx", +"info":"http://blogs.msdn.com/b/dotnet/archive/2012/08/15/announcing-the-release-of-net-framework-4-5-rtm-product-and-source-code.aspx", +"includedIn":["VS2013","VS2012"], +"supportedBy":[], +"runtime":[ +{"name":".NET Framework 4.5","link":"http://go.microsoft.com/fwlink/?LinkId=306591"}], +"tools":[ +{"name":"Windows Software Development Kit (SDK) for Windows 8","link":"http://go.microsoft.com/fwlink/?LinkID=310216"}] + }, + +{ +"platform":".NET Framework 4.0.3", +"category":"netfx", +"info":"http://blogs.msdn.com/b/dotnet/archive/2012/03/05/update-4-0-3-for-the-microsoft-net-framework-4.aspx", +"includedIn":[], +"supportedBy":["VS2013","VS2012", "VS2010"], +"runtime":[ +{"name":".NET Framework 4.0.3","link":"http://go.microsoft.com/fwlink/?LinkID=226775"} +], +"tools":[ +{"name":".NET Framework 4.0.3 Targeting Pack","link":"http://go.microsoft.com/fwlink/?LinkID=245232"}, +{"name":".NET Framework 4.0.3 -- Design-time Update","link":"http://go.microsoft.com/fwlink/?LinkID=226778"} +] +}, + +{ +"platform":".NET Framework 4", +"category":"netfx", +"info":"http://blogs.msdn.com/b/dotnet/archive/2012/08/15/announcing-the-release-of-net-framework-4-5-rtm-product-and-source-code.aspx", +"includedIn":["VS2013","VS2012","VS2010"], +"supportedBy":[], +"runtime":[ +{"name":".NET Framework 4","link":"http://go.microsoft.com/fwlink/?LinkID=306589"}], +"tools":[ +{"name":"Windows SDK for Windows 7 and .NET Framework 4","link":"http://go.microsoft.com/fwlink/?LinkID=229188"} +] +}, + + { +"platform":".NET Framework 3.5 SP1", +"category":"netfx", +"info":"http://msdn.microsoft.com/library/w0x726c2(VS.90).aspx", +"includedIn":[], +"supportedBy":["VS2013","VS2012","VS2010"], +"runtime":[ +{"name":".NET Framework 3.5 SP1","link":"http://go.microsoft.com/fwlink/?LinkID=229190"}, +{"name":".NET Framework 3.5 SP1 (Windows 8+)","link":"http://msdn.microsoft.com/en-us/library/hh506443(v=vs.110).aspx"}], +"tools":[] + }, + +{ +"platform":"Microsoft Azure", +"category":"services", +"info":"http://msdn.microsoft.com/library/azure", +"includedIn":[], +"supportedBy":["VS2013","VS2012"], +"tools":[ +{"name":"Azure SDK for .NET","link":"http://go.microsoft.com/fwlink/?LinkID=254336"}, +{"name":"Visual Studio Express 2013 for Web","link":"http://www.visualstudio.com/downloads/download-visual-studio-vs#d-express-web"} +] + }, + +{ +"platform":"Team Foundation Server", +"category":"services", +"info":"http://go.microsoft.com/fwlink/?LinkID=308920", +"includedIn":[], +"supportedBy":["VS2010"], +"tools":[ +{"name":"Visual Studio 2010 SP1 Team Foundation Server Compatibility GDR ","link":"http://go.microsoft.com/fwlink/?LinkID=308924"}] + }, + +{ +"platform":"Team Foundation Server", +"category":"services", +"info":"http://go.microsoft.com/fwlink/?LinkID=308920", +"includedIn":["VS2012", "VS2013"], +"supportedBy":[] + }, + +{ +"platform":"Office 365, Office and SharePoint", +"category":"services", +"info":"http://go.microsoft.com/fwlink/?LinkID=308921", +"includedIn":["VS2013"], +"supportedBy":[] +} +, +{ +"platform":"OneDrive", +"category":"services", +"info":"http://msdn.microsoft.com/onedrive/dn630256", +"includedIn":[], +"supportedBy":["VS2013","VS2012"], +"tools":[{"name":"Live SDK","link":"http://go.microsoft.com/fwlink/?LinkID=306598"}] +}, + +{ +"platform":"Bing", +"category":"services", +"info":"http://msdn.microsoft.com/onedrive/dn630256", +"includedIn":[], +"supportedBy":["VS2013"], +"tools":[{"name":"Maps WPF Control","link":"http://go.microsoft.com/fwlink/?LinkID=306597"}, +{"name":"Bing Maps SDK for Windows 8.1","link":"http://go.microsoft.com/fwlink/?LinkID=309954"}, +{"name":"Bing Optical Character Recognition Control","link":"http://go.microsoft.com/fwlink/?LinkID=309953"}, +{"name":"Bing Translator Control","link":"http://go.microsoft.com/fwlink/?LinkID=309952"} +] +}, + +{ +"platform":"Bing", +"category":"services", +"info":"http://msdn.microsoft.com/onedrive/dn630256", +"includedIn":[], +"supportedBy":["VS2012"], +"tools":[{"name":"Maps WPF Control","link":"http://go.microsoft.com/fwlink/?LinkID=306597"}, +{"name":"Bing Maps SDK for Windows 8","link":"http://go.microsoft.com/fwlink/?LinkID=309950"}, +{"name":"Bing Optical Character Recognition Control","link":"http://go.microsoft.com/fwlink/?LinkID=309953"}, +{"name":"Bing Translator Control","link":"http://go.microsoft.com/fwlink/?LinkID=309952"} +] +}, + +{ +"platform":"Bing", +"category":"services", +"info":"http://msdn.microsoft.com/onedrive/dn630256", +"includedIn":[], +"supportedBy":["VS2010"], +"tools":[{"name":"Maps WPF Control","link":"http://go.microsoft.com/fwlink/?LinkID=306597"}] +}, + +{ +"platform":"Microsoft Advertising", +"category":"Services", +"info":"http://services.microsoft.com/onedrive/dn630256", +"includedIn":[], +"supportedBy":["VS2013","VS2012"], +"tools":[ +{"name":"Microsoft Ad SDK for Windows 8","link":"http://go.microsoft.com/fwlink/?LinkID=309951"} +] +}, + +{ +"platform":"Windows Store", +"category":"devices", +"info":"http://msdn.microsoft.com/windows/apps", +"includedIn":["VS2013"], +"supportedBy":[], +"tools":[{"name":"Visual Studio Express 2013 for Windows with Update 2 RC ","link":"http://www.microsoft.com/download/details.aspx?id=42305"}, + {"name":"Microsoft .NET Native","link":"http://msdn.microsoft.com/vstudio/dotnetnative"} +] +}, + +{ +"platform":"Windows Store", +"category":"devices", +"info":"http://msdn.microsoft.com/windows/apps", +"includedIn":["VS2012"], +"supportedBy":[], +"tools":[{"name":"Visual Studio Express 2013 for Windows with Update 2 RC ","link":"http://www.microsoft.com/download/details.aspx?id=42305"}] +}, + +{ +"platform":"Windows Phone", +"category":"devices", +"info":"http://msdn.microsoft.com/library/windowsphone/develop/ff402535(v=vs.105).aspx", +"includedIn":["VS2013"], +"supportedBy":[], +"tools":[{"name":"Visual Studio Express 2013 for Windows with Update 2 RC ","link":"http://www.microsoft.com/download/details.aspx?id=42305"} +] +}, + +{ +"platform":"Windows Phone 7.5", +"category":"devices", +"info":"http://dev.windowsphone.com/develop", +"includedIn":[], +"supportedBy":["VS2012","VS2010"], +"tools":[ + {"name":"Windows Phone SDK 7.1","link":"http://go.microsoft.com/fwlink/?LinkID=229195"}, + {"name":"Visual Studio Express 2012 for Windows Phone","link":"http://www.visualstudio.com/downloads/download-visual-studio-vs#d-express-windows-phone"}, + {"name":"Visual Studio Express 2013 for Windows with Update 2 RC ","link":"http://www.microsoft.com/download/details.aspx?id=42305"} +] +}, + +{ +"platform":"XBOX 360", +"category":"devices", +"info":"http://xbox.create.msdn.com/", +"includedIn":[], +"supportedBy":["VS2010"], +"tools":[ + {"name":"XNA Game Studio 4.0","link":"http://go.microsoft.com/fwlink/?LinkID=229196"} +] +}, + +{ +"platform":"Kinect for Windows", +"category":"devices", +"info":"http://www.microsoft.com/en-us/kinectforwindows/develop", +"includedIn":[], +"supportedBy":["VS2013", "VS2012"], +"tools":[{"name":"Kinect for Windows SDK","link":"http://go.microsoft.com/fwlink/?LinkID=324285"} +] +}, +{ +"platform":"Portable Class Library", +"category":"libraries", +"info":"http://msdn.microsoft.com/library/gg597391(v=vs.110)", +"includedIn":["VS2013", "VS2012"], +"supportedBy":[] +}, +{ +"platform":"Portable Class Library", +"category":"libraries", +"info":"http://msdn.microsoft.com/library/gg597391(v=vs.110)", +"includedIn":[], +"supportedBy":["VS2010"], +"tools":[{"name":"Portable Library Tools","link":"http://go.microsoft.com/fwlink/?LinkID=229189"}] +}, + +{ +"platform":".NET NuGet Packages", +"category":"libraries", +"info":"http://msdn.microsoft.com/library/gg597391(v=vs.110)", +"includedIn":["VS2013"], +"supportedBy":["VS2013"] +}, +{ +"platform":"Silverlight 5", +"category":"silverlight", +"info":"http://msdn.microsoft.com/library/cc838158.aspx)", +"includedIn":["VS2013","VS2012"], +"supportedBy":[], +"runtime":[ +{"name":"Silverlight 5","link":"http://go.microsoft.com/fwlink/?LinkID=310211"}] +}, + +{ +"platform":"Silverlight 5", +"category":"silverlight", +"info":"http://msdn.microsoft.com/library/cc838158.aspx", +"includedIn":[], +"supportedBy":["VS2010"], +"runtime":[ +{"name":"Silverlight 5","link":"http://go.microsoft.com/fwlink/?LinkID=310211"}], +"tools":[ +{"name":"Silverlight 5 Tools for Visual Studio 2010 SP1","link":"http://go.microsoft.com/fwlink/?LinkID=229193"}] +}, +{ +"platform":"Xamarin", +"category":"devices", +"info":"http://xamarin.com/", +"includedIn":[], +"supportedBy":["VS2013","VS2012","VS2010"], +"runtime":[], +"tools":[ +{"name":"Xamarin Tools for iOS and Android","link":"http://go.microsoft.com/fwlink/?LinkID=398052"}] +}, +{ +"platform":".NET Micro Framework", +"category":"devices", +"info":"http://www.netmf.com/", +"includedIn":[], +"supportedBy":["VS2012"], +"runtime":[{"name":".NET MF 4.3 RTM QFE1","link":"http://netmf.codeplex.com/releases/view/118283"}], +"tools":[] +} +] +} \ No newline at end of file From 218435f2bd827b0dc79d6a1d00ae9011c5a5b854 Mon Sep 17 00:00:00 2001 From: Richard Lander Date: Tue, 6 Jan 2015 22:16:04 -0800 Subject: [PATCH 158/872] Add .NET Framework 4.6 and Visual Studio 2015 to platforms.json --- data/platforms.json | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/data/platforms.json b/data/platforms.json index 934c7ad4f..e05a9f6fe 100644 --- a/data/platforms.json +++ b/data/platforms.json @@ -10,6 +10,10 @@ {"alias":"VS2013", "name":"Visual Studio 2013", "download":"http://www.visualstudio.com/en-us/downloads/download-visual-studio-vs.aspx" +}, +{"alias":"VS2015", +"name":"Visual Studio 2015", +"download":"http://www.visualstudio.com/downloads/visual-studio-2015-downloads-vs" } ] , @@ -30,6 +34,19 @@ "platforms": [ { +"platform":".NET Framework 4.6", +"category":"netfx", +"info":"http://blogs.msdn.com/b/dotnet/archive/2014/11/12/announcing-net-2015-preview-a-new-era-for-net.aspx#_.NET_Framework_4.6", +"includedIn":["VS2015"], +"supportedBy":["VS2013","VS2012"], +"runtime":[ +{"name":".NET Framework 4.6","link":"http://go.microsoft.com/fwlink/?LinkId=399417"}], +"tools":[ +{"name":"Visual Studio Community 2013 (free)","link":"http://www.visualstudio.com/en-us/downloads/download-visual-studio-vs#DownloadFamilies_2"}, +{"name":"Visual Studio Express 2013 (free)","link":"http://www.visualstudio.com/en-us/downloads/download-visual-studio-vs#DownloadFamilies_2"} +] + }, +{ "platform":".NET Framework 4.5.2", "category":"netfx", "info":"http://go.microsoft.com/fwlink/?LinkID=309958", @@ -39,9 +56,7 @@ {"name":".NET Framework 4.5.2","link":"http://go.microsoft.com/fwlink/?LinkId=397674"}], "tools":[ {"name":".NET Framework 4.5.2 Developer Pack","link":"http://go.microsoft.com/fwlink/?LinkId=328857","description":"The .NET 4.5.2 Developer pack includes the .NET framework 4.5.2 runtime and targeting pack."}, -{"name":".NET Framework 4.5.2 Language Packs","link":"http://go.microsoft.com/fwlink/?LinkId=328858","description":"Resources to support languages other than English."}, -{"name":"Visual Studio Express 2013 for Windows Desktop","link":"http://www.visualstudio.com/downloads/download-visual-studio-vs#d-express-windows-desktop"}, -{"name":"Visual Studio Express 2013 for Web","link":"http://www.visualstudio.com/downloads/download-visual-studio-vs#d-express-web"} +{"name":".NET Framework 4.5.2 Language Packs","link":"http://go.microsoft.com/fwlink/?LinkId=328858","description":"Resources to support languages other than English."} ] }, { From 5546980100301f6776293bce54d5209b3172edd6 Mon Sep 17 00:00:00 2001 From: jbe2277 Date: Thu, 8 Jan 2015 18:25:16 +0100 Subject: [PATCH 159/872] Add WPF Application Framework (WAF) to dotnet-developer-projects.md --- dotnet-developer-projects.md | 1 + 1 file changed, 1 insertion(+) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index dc42f640c..b7c0bced8 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -141,6 +141,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [Radical](https://github.com/RadicalFx/radical) - An infrastructure framework whose primary role is to help in the development of composite WPF/Silverlight/WP/WinRT applications based on the Model View ViewModel pattern. * [ReactiveUI](https://github.com/reactiveui/ReactiveUI) - An MVVM framework that integrates with the Reactive Extensions for .NET to create elegant, testable User Interfaces that run on any mobile or desktop platform. * [Simple Mvvm Toolkit](http://simplemvvmtoolkit.codeplex.com/) - Provides a simple framework and set of tools for getting up to speed quickly with applications based on the MVVM design pattern. + * [WPF Application Framework (WAF)](http://waf.codeplex.com) - A lightweight Framework that helps you to create well structured WPF Applications. It supports you in applying a Layered Architecture and the Model-View-ViewModel pattern. * Tools * [Cake](https://github.com/cake-build/cake) (C# Make) - A build automation system with C#/Roslyn driven build scripts. From 6f7a1ab5011945e1f9f447a94250416bdbcc7136 Mon Sep 17 00:00:00 2001 From: weitzhandler Date: Sat, 10 Jan 2015 23:51:36 +0200 Subject: [PATCH 160/872] Adding NAudio Added [NAudio](http://naudio.codeplex.com/) to list of libraries. --- dotnet-developer-projects.md | 1 + 1 file changed, 1 insertion(+) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index b7c0bced8..3e1ce89b0 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -97,6 +97,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [Mathos Parser](http://mathosparser.codeplex.com/) - A simple parser for mathematical expressions before and at runtime. * [Mjolnir](https://github.com/hudl/Mjolnir) - [Hystrix](https://github.com/Netflix/Hystrix)-inspired fault tolerance with circuit breakers and thread pools. * [MoreLINQ](https://code.google.com/p/morelinq/) - LINQ to Objects is missing a few desirable features. This project will enhance LINQ to Objects with extra methods, in a manner which keeps to the spirit of LINQ. + * [NAudio](http://naudio.codeplex.com/) - An open source .NET audio and MIDI library. * [NetTopologySuite](https://github.com/NetTopologySuite) - A .NET port of the JTS Topology Suite. * [NHunspell](http://sourceforge.net/projects/nhunspell/) - Spell Checker, Hyphenation an Theasaurus * [NodaTime](https://code.google.com/p/noda-time/) - A better date and time API for .NET From 8786108abceeb0b2e82048da27bb8a2c2d52bd7a Mon Sep 17 00:00:00 2001 From: Virgile Bello Date: Sun, 11 Jan 2015 22:30:31 +0900 Subject: [PATCH 161/872] Add SharpLang to list of .NET Implementations. --- dotnet-developer-projects.md | 1 + 1 file changed, 1 insertion(+) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index b7c0bced8..ae94ac0b4 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -10,6 +10,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [Fling OS](http://git.flingos.co.uk/fling-os/src) - [C# Operating System](http://www.flingos.co.uk/) designed for people to learn low-level development from. * [Mono](https://github.com/mono/mono) - Cross-platform implementation of .NET Framework. * [MOSA Project](https://github.com/mosa/MOSA-Project/) - Managed Operating System Alliance Project - C# Operating System. + * [SharpLang](https://github.com/xen2/SharpLang) - Compiles C# & .NET to native machine code, using [LLVM](http://llvm.org) as a backend. * Platforms * [Castle Project](https://github.com/castleproject) - Umbrella project for ActiveRecord, DynamicProxy, MonoRail, Windsor From a399be6d45685ad7829f2a8931d40a409467797b Mon Sep 17 00:00:00 2001 From: Joe Mistachkin Date: Sun, 11 Jan 2015 10:19:07 -0800 Subject: [PATCH 162/872] Update dotnet-developer-projects.md --- dotnet-developer-projects.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index b7c0bced8..69951fc15 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -22,7 +22,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [ClojureCLR](https://github.com/clojure/clojure-clr) - A .NET implemention of the [Clojure](http://clojure.org) programming language, built on the DLR. * [Cobra](http://cobra-language.com/source/) - Clean, high-level syntax (Boo/Python-like). Static and dynamic binding. First class support for unit tests and contracts. Compiled performance with scripting conveniences. Lambdas and closures. Extensions and mixins * [Dynamic Language Runtime](http://www.github.com/IronLanguages/main) - A toolkit for building dynamic languages for .NET. - * [Eagle](http://eagle.to/cgi-bin/eagle/dir?ci=trunk) - [A .NET implementation](http://eagle.to) of the [Tcl](https://www.tcl.tk) programming language, built on the CLR. + * [Eagle](http://eagle.to) - A .NET implementation of the [Tcl](https://www.tcl.tk) programming language, built on the CLR. * [Essence#](https://essencesharp.codeplex.com/) - Essence# is a fully dynamic and highly polymorphic programming language which features pervasive message passing, pervasive dynamic and strong typing, pervasive and deep reflection and pervasive object orientation. * [F#](https://github.com/fsharp/fsharp) - A mature, open source, cross-platform, functional-first programming language. * [F*](https://github.com/FStarLang/FStar) - An ML-like language with a type system for program verification. From 661f3cb013cb8deace3003367f9d336efc083728 Mon Sep 17 00:00:00 2001 From: Andreu Correa Casablanca Date: Wed, 14 Jan 2015 00:13:05 +0100 Subject: [PATCH 163/872] Update dotnet-developer-projects.md --- dotnet-developer-projects.md | 1 + 1 file changed, 1 insertion(+) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 407f32ea8..209cfa6d8 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -73,6 +73,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [Cimbalino Toolkit](https://github.com/Cimbalino/Cimbalino-Toolkit) - A set of useful and powerful tools that will help you build your Windows Platform applications. * [Coding4Fun Toolkit](http://coding4fun.codeplex.com/) * [ColoredConsole](https://github.com/colored-console/colored-console) - Add some color to your console. + * [ColorSharp](https://github.com/Litipk/ColorSharp) - Library to handle color spaces and light spectrums. * [ComparerExtensions](https://github.com/jehugaleahsa/comparerextensions) - Build IComparer and IEqualityComparer objects using natural language syntax. * [Cricket](https://github.com/fsprojects/Cricket) - Actor library * [DiffSharp](https://github.com/gbaydin/DiffSharp) - Automatic Differentiation Library From a292814f3b52ef09dec0c4e8f733e7a1a30ffff4 Mon Sep 17 00:00:00 2001 From: jbe2277 Date: Wed, 14 Jan 2015 18:05:13 +0100 Subject: [PATCH 164/872] Add Waf applications to dotnet-consumer-projects.md --- dotnet-consumer-projects.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/dotnet-consumer-projects.md b/dotnet-consumer-projects.md index 686109c75..38a61eddc 100644 --- a/dotnet-consumer-projects.md +++ b/dotnet-consumer-projects.md @@ -11,11 +11,14 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [Banshee](https://github.com/GNOME/banshee) - A cross-platform multimedia player * [Espera](https://github.com/flagbug/Espera) - A media player that plays your music, YouTube videos, SoundCloud songs, has a special "party mode" and an Android remote control. * [Simple Music Player](https://github.com/punker76/simple-music-player) SimpleMP or Simple Music Player is a simple and easy to use music player for free. It plays the most common music files (mp3, ogg, wma, wav) in a simple way. + * [Waf Music Manager](http://wmm.codeplex.com) – is a simple and fast application that makes fun to manage the local music collection. * Utilities * [Gmail Notifier Plus](https://github.com/shellscape/Gmail-Notifier-Plus) - An app to monitor multiple Gmail and Google Apps for Work Gmail accounts from a single, compact point, sitting in Windows 7/8/8.1 taskbar. * [YouCast](https://github.com/I3arnon/YouCast) - YouCast allows you to subscribe to video feeds on YouTube as podcasts in any standard podcatcher like iTunes, BeyondPod on Adroid or even Zune PC and so forth. * [Ember](https://github.com/Embershot/Ember) - Simple & Beautiful Screenshot App + * [Waf Stopwatch](http://wafstopwatch.codeplex.com) - is an advanced stopwatch with a lap recording feature. Additionally, it provides a Countdown with alert sound. + * [Waf File Hash Generator](http://fhg.codeplex.com) - is a simple tool to generate the hash values of one or more files. It supports: SHA512, SHA256, SHA1 and MD5 in hexadecimal or Base64 format. * Administration * [OpenPetra](https://github.com/openpetra/openpetra) - [www.openpetra.org](https://www.openpetra.org) - An administration software for charities that can be used to manage personnel, supporters, book keeping, gift receipting, accounts payable, conferences etc. From cb7926349019fb9d5e27b047cd054a57f0d74fb8 Mon Sep 17 00:00:00 2001 From: MyvarHD Date: Mon, 19 Jan 2015 09:36:37 +0200 Subject: [PATCH 165/872] Update dotnet-developer-projects.md --- dotnet-developer-projects.md | 1 + 1 file changed, 1 insertion(+) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 209cfa6d8..5c1493b58 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -6,6 +6,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * .NET Implementations * [.NET Core](https://github.com/dotnet/core) - Core .NET Framework + * [C# Native](https://csnative.codeplex.com) - Compiles C# to native. * [Cosmos](http://cosmos.codeplex.com/) - C# Open Source Managed Operating System, an operating system "construction kit". * [Fling OS](http://git.flingos.co.uk/fling-os/src) - [C# Operating System](http://www.flingos.co.uk/) designed for people to learn low-level development from. * [Mono](https://github.com/mono/mono) - Cross-platform implementation of .NET Framework. From 914a464f3b3ac47ebaeb28719821f95ae1657ae0 Mon Sep 17 00:00:00 2001 From: Robert Herbig Date: Mon, 19 Jan 2015 14:49:54 -0500 Subject: [PATCH 166/872] Fixed Roslyn link in README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 864647abb..1ac7b47b0 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@ on the .NET blog. There are many [open source .NET projects](dotnet-developer-projects.md), a few of which are listed below. Please find one to engage in or add one to the list. -* [.NET Compiler Platform ("Roslyn")](https://roslyn.codeplex.com) +* [.NET Compiler Platform ("Roslyn")](https://github.com/dotnet/roslyn) * [.NET Core 5](https://github.com/dotnet/core) * [ASP.NET 5](https://github.com/aspnet/home) * [EntityFramework](https://github.com/aspnet/EntityFramework) @@ -58,4 +58,4 @@ and the [.NET Core 5 project](http://www.dotnetfoundation.org/netcore5). [Apache 2](http://www.apache.org/licenses/LICENSE-2.0) licenses for code. Some projects license documentation and other forms of content under [Creative Commons Attribution 4.0](http://creativecommons.org/licenses/by/4.0/). -See specific projects to understand the license used. \ No newline at end of file +See specific projects to understand the license used. From 59cbb7477ab569aa38ba5320a0cd5e03675b174b Mon Sep 17 00:00:00 2001 From: Tommaso Scalici Date: Fri, 30 Jan 2015 10:40:32 +0100 Subject: [PATCH 167/872] Update dotnet-developer-projects.md Added MVVM Extensions to the projects. --- dotnet-developer-projects.md | 1 + 1 file changed, 1 insertion(+) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 5c1493b58..da899f1c1 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -140,6 +140,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [Caliburn Micro](https://github.com/Caliburn-Micro/Caliburn.Micro) - A small, yet powerful framework, designed for building applications across all XAML platforms. * [Catel.MVVM](https://github.com/catel/catel) - Catel is an application development platform with the focus on MVVM. * [MVVM Cross](https://github.com/MvvmCross/MvvmCross) - A cross-platform mobile MVVM development framework. + * [MVVM Extensions](https://github.com/TommasoScalici/MVVMExtensions) - MVVM cross platform (.NET FW 4.5, WPF, Windows Runtime/Phone) extensions for .NET with support for async commands, MVVM-friendly Object and Task with support for UI notification. * [MVVM Light Toolkit](http://www.mvvmlight.net) - A cross-platform desktop and mobile MVVM development framework. * [Okra App Framework](https://github.com/OkraFramework/Okra.Core) - An MVVM framework for Windows Store applications including MVVM templates for Visual Studio. * [Radical](https://github.com/RadicalFx/radical) - An infrastructure framework whose primary role is to help in the development of composite WPF/Silverlight/WP/WinRT applications based on the Model View ViewModel pattern. From c3c58ba114d3d60ea8a52680d41861d7adbde718 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Bires?= Date: Sun, 1 Feb 2015 12:10:56 -0200 Subject: [PATCH 168/872] Created messaging section. Included Lime project. --- dotnet-developer-projects.md | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 5c1493b58..dda176f5c 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -59,7 +59,13 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [Firebird .NET client](https://sourceforge.net/p/firebird/NETProvider/) - Firebird * [Npgsql](https://github.com/npgsql/npgsql) - PostgreSQL * [System.Data.SQLite](https://system.data.sqlite.org) - SQLite - + +* Messaging + * [AzureNetQ](https://github.com/Roysvork/AzureNetQ) - An easy to use .NET API for Azure Service Bus. + * [EasyNetQ](https://github.com/mikehadlow/EasyNetQ) - An easy to use .NET API for RabbitMQ. + * [Lime](https://github.com/takenet/lime-csharp) - A lightweight messaging library. + * [RestBus](https://github.com/tenor/RestBus) - Easy Asynchronous Messaging and Queueing for .NET + * Libraries * [Albedo](https://github.com/ploeh/Albedo) - A .NET library targeted at making Reflection programming more consistent, using a common set of abstractions and utilities. * [Algorithmia](https://github.com/SolutionsDesign/Algorithmia) - Algorithms and Data structures @@ -68,7 +74,6 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [Argument](https://github.com/ashmind/Argument) - Argument validation microframework that does one thing in the simplest way possible. * [AshMind.Extensions](https://github.com/ashmind/ashmind-extensions) - A set of very conservative extension methods most of which closely follow naming and design patterns of .NET Base Class Library. * [AsyncCollections](https://github.com/HellBrick/AsyncCollections) - A set of lock-free thread-safe collections designed to be used asynchronously. - * [AzureNetQ](https://github.com/Roysvork/AzureNetQ) - An easy to use .NET API for Azure Service Bus. * [Bing.RestClient](https://github.com/AdvancedREI/Bing.RestClient) - Access the Bing REST APIs from a unified client. * [BoxKite.Twitter](https://github.com/NickHodge/BoxKite.Twitter/) - Twitter .NET Client Library for the 1.1 Twitter API, incorporating REST API, User streaming and Search Streaming. Uses Reactive Extensions (Rx). * [Cimbalino Toolkit](https://github.com/Cimbalino/Cimbalino-Toolkit) - A set of useful and powerful tools that will help you build your Windows Platform applications. @@ -81,7 +86,6 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [DotNetOpenAuth](https://github.com/DotNetOpenAuth) - Library that adds support for your site visitors to login with their OpenIDs by just dropping an ASP.NET control onto your page. * [DropboxRestAPI](https://github.com/saguiitay/DropboxRestAPI) - DropBox .Net Client Library * [DynamicData](https://github.com/RolandPheasant/DynamicData) - Brings the power of Rx to collections - * [EasyNetQ](https://github.com/mikehadlow/EasyNetQ) - An easy to use .NET API for RabbitMQ. * [ExtraLINQ](https://github.com/mariusschulz/ExtraLINQ) - Various extension methods for working with .NET collections. * [FeatureToggle](https://github.com/jason-roberts/FeatureToggle) - Simple, reliable feature toggles in .NET. * [FluentBootstrap](https://github.com/somedave/FluentBootstrap) @@ -109,7 +113,6 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [PocketSharp](https://github.com/ceee/PocketSharp) * [PortableRest](https://github.com/AdvancedREI/PortableRest) - Portable library for building cross-platform REST API Clients for .NET and Xamarin. * [RestSharp](https://github.com/restsharp/RestSharp) - Simple REST and HTTP API Client for .NET - * [RestBus](https://github.com/tenor/RestBus) - Easy Asynchronous Messaging and Queueing for .NET * [SharpMap](https://sharpmap.codeplex.com/) - An easy-to-use mapping library for use in web and desktop applications * [SharpSnmpLib](https://sharpsnmplib.codeplex.com) - An easy-to-use SNMP library for use on all platforms (.NET/Mono/Xamarin) * [Splat](https://github.com/paulcbetts/splat) - A library to make things cross-platform that should be. From 34fca281d189fb1663b05cbe5f123f0b06f364d0 Mon Sep 17 00:00:00 2001 From: Maxwe11 Date: Thu, 5 Mar 2015 14:40:27 +0200 Subject: [PATCH 169/872] Add NModbus4 --- dotnet-developer-projects.md | 1 + 1 file changed, 1 insertion(+) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 5ebc0910b..fc0b0092c 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -107,6 +107,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [NAudio](http://naudio.codeplex.com/) - An open source .NET audio and MIDI library. * [NetTopologySuite](https://github.com/NetTopologySuite) - A .NET port of the JTS Topology Suite. * [NHunspell](http://sourceforge.net/projects/nhunspell/) - Spell Checker, Hyphenation an Theasaurus + * [NModbus4](https://github.com/Maxwe11/NModbus4) - Implementation of the Modbus protocol * [NodaTime](https://code.google.com/p/noda-time/) - A better date and time API for .NET * [OneDriveRestAPI](https://github.com/saguiitay/OneDriveRestAPI) - OneDrive .Net Client Library using the REST API. * [OsmSharp](https://github.com/OsmSharp) - Mapping & Routing library. From 0f37292d8afa82e570550657018ae2f1d3c36b2e Mon Sep 17 00:00:00 2001 From: Ian Cooper Date: Thu, 19 Mar 2015 17:07:35 +0000 Subject: [PATCH 170/872] Added Brighter to the developer project list --- dotnet-developer-projects.md | 1 + 1 file changed, 1 insertion(+) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index fc0b0092c..74579c3bd 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -76,6 +76,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [AsyncCollections](https://github.com/HellBrick/AsyncCollections) - A set of lock-free thread-safe collections designed to be used asynchronously. * [Bing.RestClient](https://github.com/AdvancedREI/Bing.RestClient) - Access the Bing REST APIs from a unified client. * [BoxKite.Twitter](https://github.com/NickHodge/BoxKite.Twitter/) - Twitter .NET Client Library for the 1.1 Twitter API, incorporating REST API, User streaming and Search Streaming. Uses Reactive Extensions (Rx). + * [Brighter](https://github.com/iancooper/Paramore) - A Command Dispatcher and Command Processor library with support for Work or Task Queues over different MoM implementations such as RabbitMQ * [Cimbalino Toolkit](https://github.com/Cimbalino/Cimbalino-Toolkit) - A set of useful and powerful tools that will help you build your Windows Platform applications. * [Coding4Fun Toolkit](http://coding4fun.codeplex.com/) * [ColoredConsole](https://github.com/colored-console/colored-console) - Add some color to your console. From 5709e92a08fcb872fb73176eef84ddfb304dc117 Mon Sep 17 00:00:00 2001 From: Jason Roberts Date: Tue, 31 Mar 2015 10:22:39 +0800 Subject: [PATCH 171/872] Added Fixie testing framework --- dotnet-developer-projects.md | 1 + 1 file changed, 1 insertion(+) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 74579c3bd..4df346999 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -184,6 +184,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [AutoFixture](https://github.com/AutoFixture/AutoFixture) - An open source framework for .NET designed to minimize the 'Arrange' phase of your unit tests. Its primary goal is to allow developers to focus on what is being tested rather than how to setup the test scenario, by making it easier to create object graphs containing test data. * [canopy](https://github.com/lefthandedgoat/canopy) - A web testing framework. * [FakeItEasy](https://github.com/FakeItEasy/FakeItEasy) - The easy mocking library for .NET. + * [Fixie](https://github.com/fixie/fixie) - A low-ceremony, convention-based testing framework with flexible customization. * [FsCheck](https://github.com/fsharp/FsCheck) - A tool for testing .NET programs automatically. * [moq](https://github.com/Moq/moq4) - The most popular and friendly mocking framework for .NET * [NSubstitute](https://github.com/nsubstitute/NSubstitute) - A friendly substitute for .NET mocking frameworks. From c8bec92c418ea75d5d6c15a8a22c98043902bc8b Mon Sep 17 00:00:00 2001 From: Kerry Jiang Date: Sat, 4 Apr 2015 12:00:52 +0800 Subject: [PATCH 172/872] Add the project LogMaster4Net --- dotnet-developer-projects.md | 1 + 1 file changed, 1 insertion(+) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 74579c3bd..aa6954776 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -140,6 +140,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [Exceptionless](https://github.com/exceptionless/Exceptionless) - Provides real-time .NET error reporting for your ASP.NET, Web API, WebForms, WPF, Console, and MVC apps. It organizes the gathered information into simple actionable data that will help your app become exceptionless! * [ELMAH](https://code.google.com/p/elmah/) - ELMAH (Error Logging Modules and Handlers) is an application-wide error logging facility that is completely pluggable. It can be dynamically added to a running ASP.NET web application, or even all ASP.NET web applications on a machine, without any need for re-compilation or re-deployment. * [log4net](http://logging.apache.org/log4net/) - A tool to help the programmer output log statements to a variety of output targets. + * [LogMaster4Net](https://github.com/kerryjiang/LogMaster4Net) - It is a central log server which can organize your logs in different applications in a same place but have same log behaviors (loggers, appenders, levels and rules) like in the indepedent applications before. * Model-View-ViewModel (MVVM) Frameworks * [Caliburn Micro](https://github.com/Caliburn-Micro/Caliburn.Micro) - A small, yet powerful framework, designed for building applications across all XAML platforms. From 7d1ec122e28a78956218875714f82c559284615f Mon Sep 17 00:00:00 2001 From: Tony Qu Date: Sun, 12 Apr 2015 06:36:17 +0800 Subject: [PATCH 173/872] add some new open source projects --- dotnet-developer-projects.md | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 74579c3bd..7c1367e68 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -31,12 +31,13 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [IronPython](https://github.com/IronLanguages/main/tree/master/Languages/IronPython) - A .NET implementation of the [Python](https://www.python.org) programming language, built on the DLR. [IronPython Site](http://ironpython.net). * [IronRuby](https://github.com/IronLanguages/main/tree/master/Languages/Ruby) - A .NET implementation of the [Ruby](https://www.ruby-lang.org) programming language, built on the DLR. [IronRuby Site](http://ironruby.net). * [IronScheme](http://ironscheme.codeplex.com) - A R6RS conforming Scheme-like implementation based on the Microsoft DLR. + * [Irony](https://irony.codeplex.com/) - a development kit for implementing languages on .NET platform * [MoonSharp](https://github.com/xanathar/moonsharp/) - A Lua interpreter and remote debugger, written entirely in C#, easily embeddable in any application running on .NET 3.5+ and Mono. * [Nemerle](https://github.com/rsdn/nemerle) - A high-level statically-typed programming language which offers functional, object-oriented and imperative features and has a simple C# like syntax and a powerful meta-programming system. * [NiL.JS](https://github.com/nilproject/NiL.JS) - A .NET implementation of the ECMAScript language and runtime. * [Phalanger](https://github.com/DEVSENSE/Phalanger) - full-featured PHP runtime & compiler for .NET/Mono frameworks. Phalanger is modern open-source implementation of PHP, compatible with the vast array of existing PHP code. * [Roslyn (.NET Compiler Platform)](https://roslyn.codeplex.com/) - Open-source C# and Visual Basic compilers with rich code analysis APIs. - + * Security / Identity Management * [Thinktecture IdentityManager](https://github.com/thinktecture/Thinktecture.IdentityManager) * [Thinktecture IdentityServer](https://github.com/thinktecture/Thinktecture.IdentityServer.v3) @@ -110,6 +111,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [NHunspell](http://sourceforge.net/projects/nhunspell/) - Spell Checker, Hyphenation an Theasaurus * [NModbus4](https://github.com/Maxwe11/NModbus4) - Implementation of the Modbus protocol * [NodaTime](https://code.google.com/p/noda-time/) - A better date and time API for .NET + * [NPOI](https://npoi.codeplex.com) - An Office file formats (xls, xlsx, docx) read/write library for .NET * [OneDriveRestAPI](https://github.com/saguiitay/OneDriveRestAPI) - OneDrive .Net Client Library using the REST API. * [OsmSharp](https://github.com/OsmSharp) - Mapping & Routing library. * [PocketSharp](https://github.com/ceee/PocketSharp) @@ -125,7 +127,13 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [WpfToolkit](https://github.com/dotnetprojects/wpftoolkit) - Fork of the MS WPF Toolkit * [XamlEssentials](https://github.com/AdvancedREI/XamlEssentials) - Collection of helpers for Microsoft's XAML platforms. * [Zlib.Portable](https://github.com/AdvancedREI/Zlib.Portable) - A Portable Class Library port of the Zlib library from http://dotnetzip.codeplex.com. - + +* Data Mine/Data Extraction/Machine Learning/AI + * [AForge.NET](http://www.aforgenet.com/) - a C# framework designed for developers and researchers in the fields of Computer Vision and Artificial Intelligence - image processing, neural networks, genetic algorithms, machine learning, robotics + * [Nepy](http://nepy.codeplex.com) - A collection of NLP parsers for .NET + * [SharpNLP](http://sharpnlp.codeplex.com) - SharpNLP is a collection of natural language processing tools written in C# + * [Toxy](http://toxy.codeplex.com) - An data/text extraction framework for .NET, similar to Tika in Java. + * Graphics & Server-side Image Processing * [DynamicImage](https://github.com/tgjones/dynamic-image) - WPF-based server-side image rendering system - lots of visual effects implemented as high-performance shaders. Has URL api, several plugins available. * [ImageProcessor](https://github.com/jimbobsquarepants/imageprocessor/) - A .NET Library For On-The-Fly Processing Of Images (GDI+ based). @@ -266,8 +274,9 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [Warewolf Easy Service Bus](https://github.com/Warewolf-ESB/Warewolf-ESB) - An open source easy to use service bus, built on numerous .Net technologies including WF (Windows Workflow Foundation), SignalR and WPF. * Distributed Caching and Computing + * [CacheAdapter](https://bitbucket.org/glav/cacheadapter) - a .Net library allows developers to use unified-implemented cahce provider * [Dache](https://github.com/ironyx/dache) - An open source distributed caching service, built on .NET 4.0 and using TCP sockets for communication. - + * Windows Workflow * [Workflow Extractor](https://github.com/punitganshani/WorkflowExtractor) - Document Windows Workflow logic into a Word document or Excel sheet. From e6cbef06cd258730d80b7ecb3405f325db5c9ada Mon Sep 17 00:00:00 2001 From: Tony Qu Date: Sun, 12 Apr 2015 06:48:56 +0800 Subject: [PATCH 174/872] add paint.net to the list --- dotnet-consumer-projects.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/dotnet-consumer-projects.md b/dotnet-consumer-projects.md index 38a61eddc..166588c76 100644 --- a/dotnet-consumer-projects.md +++ b/dotnet-consumer-projects.md @@ -4,9 +4,10 @@ This community maintained list showcases .NET open source consumer projects. It Please sort projects alphabetically and provide a one-line description. GitHub/CodePlex (or other source) links are preferred, but feel free to also include marketing sites. Create new sections, as appropriate. -* Media Streaming +* Media Streaming/Media file Editor * [Media Browser](https://github.com/mediabrowser/) - [www.mediabrowser.tv](http://www.mediabrowser.tv) - A client/server application that allows you to easily manage your own media content and present it in an eye catching way. Server runs on Windows, Linux and Mac. Clients are for WP, Android, iOS, Media Centre, Windows, Roku, etc. - + * [Paint.NET](http://www.getpaint.net/) - famous Photoshop-like tool based on .NET + * Audio players * [Banshee](https://github.com/GNOME/banshee) - A cross-platform multimedia player * [Espera](https://github.com/flagbug/Espera) - A media player that plays your music, YouTube videos, SoundCloud songs, has a special "party mode" and an Android remote control. From 061846c74ed356ed266d72e0061d2bb24ef07247 Mon Sep 17 00:00:00 2001 From: jbe2277 Date: Sun, 12 Apr 2015 18:39:21 +0200 Subject: [PATCH 175/872] Add Waf DotNetPad to list --- dotnet-developer-projects.md | 1 + 1 file changed, 1 insertion(+) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 74579c3bd..e3f00ac42 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -176,6 +176,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [Snoop WPF](https://github.com/cplotts/snoopwpf) - Snoop - The WPF Spy Utility * [Sql Bulk Copy Sync](https://github.com/WCOMAB/SqlBulkSync) * [Vagrant](https://github.com/nessos/Vagrant) - Automated dependency resolution and dynamic assembly compilation framework. + * [Waf DotNetPad](http://dotnetpad.codeplex.com) - The Waf DotNetPad is a simple and fast code editor that makes fun program with C# or Visual Basic. * [Weighted Selector](https://github.com/kinetiq/Ether.WeightedSelector/) - Easy to use (but high performance!) weighted selection implementation. * [XDav](https://github.com/rezabazargan/xDav) - A .net server mudole for webdav standard. * [ZeroToNine](https://github.com/ploeh/ZeroToNine) - A tool for maintaining .NET Assembly versions across multiple files. From 4fb613d1a67707238cb0e0f9fd3e938c59737c8b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Bires?= Date: Sun, 1 Feb 2015 12:10:56 -0200 Subject: [PATCH 176/872] Created messaging section. Included Lime project. --- dotnet-developer-projects.md | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index da899f1c1..5ebc0910b 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -59,7 +59,13 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [Firebird .NET client](https://sourceforge.net/p/firebird/NETProvider/) - Firebird * [Npgsql](https://github.com/npgsql/npgsql) - PostgreSQL * [System.Data.SQLite](https://system.data.sqlite.org) - SQLite - + +* Messaging + * [AzureNetQ](https://github.com/Roysvork/AzureNetQ) - An easy to use .NET API for Azure Service Bus. + * [EasyNetQ](https://github.com/mikehadlow/EasyNetQ) - An easy to use .NET API for RabbitMQ. + * [Lime](https://github.com/takenet/lime-csharp) - A lightweight messaging library. + * [RestBus](https://github.com/tenor/RestBus) - Easy Asynchronous Messaging and Queueing for .NET + * Libraries * [Albedo](https://github.com/ploeh/Albedo) - A .NET library targeted at making Reflection programming more consistent, using a common set of abstractions and utilities. * [Algorithmia](https://github.com/SolutionsDesign/Algorithmia) - Algorithms and Data structures @@ -68,7 +74,6 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [Argument](https://github.com/ashmind/Argument) - Argument validation microframework that does one thing in the simplest way possible. * [AshMind.Extensions](https://github.com/ashmind/ashmind-extensions) - A set of very conservative extension methods most of which closely follow naming and design patterns of .NET Base Class Library. * [AsyncCollections](https://github.com/HellBrick/AsyncCollections) - A set of lock-free thread-safe collections designed to be used asynchronously. - * [AzureNetQ](https://github.com/Roysvork/AzureNetQ) - An easy to use .NET API for Azure Service Bus. * [Bing.RestClient](https://github.com/AdvancedREI/Bing.RestClient) - Access the Bing REST APIs from a unified client. * [BoxKite.Twitter](https://github.com/NickHodge/BoxKite.Twitter/) - Twitter .NET Client Library for the 1.1 Twitter API, incorporating REST API, User streaming and Search Streaming. Uses Reactive Extensions (Rx). * [Cimbalino Toolkit](https://github.com/Cimbalino/Cimbalino-Toolkit) - A set of useful and powerful tools that will help you build your Windows Platform applications. @@ -81,7 +86,6 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [DotNetOpenAuth](https://github.com/DotNetOpenAuth) - Library that adds support for your site visitors to login with their OpenIDs by just dropping an ASP.NET control onto your page. * [DropboxRestAPI](https://github.com/saguiitay/DropboxRestAPI) - DropBox .Net Client Library * [DynamicData](https://github.com/RolandPheasant/DynamicData) - Brings the power of Rx to collections - * [EasyNetQ](https://github.com/mikehadlow/EasyNetQ) - An easy to use .NET API for RabbitMQ. * [ExtraLINQ](https://github.com/mariusschulz/ExtraLINQ) - Various extension methods for working with .NET collections. * [FeatureToggle](https://github.com/jason-roberts/FeatureToggle) - Simple, reliable feature toggles in .NET. * [FluentBootstrap](https://github.com/somedave/FluentBootstrap) @@ -109,7 +113,6 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [PocketSharp](https://github.com/ceee/PocketSharp) * [PortableRest](https://github.com/AdvancedREI/PortableRest) - Portable library for building cross-platform REST API Clients for .NET and Xamarin. * [RestSharp](https://github.com/restsharp/RestSharp) - Simple REST and HTTP API Client for .NET - * [RestBus](https://github.com/tenor/RestBus) - Easy Asynchronous Messaging and Queueing for .NET * [SharpMap](https://sharpmap.codeplex.com/) - An easy-to-use mapping library for use in web and desktop applications * [SharpSnmpLib](https://sharpsnmplib.codeplex.com) - An easy-to-use SNMP library for use on all platforms (.NET/Mono/Xamarin) * [Splat](https://github.com/paulcbetts/splat) - A library to make things cross-platform that should be. From 1987f53ece285b5686c33d8d621ced2a9d2d743e Mon Sep 17 00:00:00 2001 From: Maxwe11 Date: Thu, 5 Mar 2015 14:40:27 +0200 Subject: [PATCH 177/872] Add NModbus4 --- dotnet-developer-projects.md | 1 + 1 file changed, 1 insertion(+) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 5ebc0910b..fc0b0092c 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -107,6 +107,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [NAudio](http://naudio.codeplex.com/) - An open source .NET audio and MIDI library. * [NetTopologySuite](https://github.com/NetTopologySuite) - A .NET port of the JTS Topology Suite. * [NHunspell](http://sourceforge.net/projects/nhunspell/) - Spell Checker, Hyphenation an Theasaurus + * [NModbus4](https://github.com/Maxwe11/NModbus4) - Implementation of the Modbus protocol * [NodaTime](https://code.google.com/p/noda-time/) - A better date and time API for .NET * [OneDriveRestAPI](https://github.com/saguiitay/OneDriveRestAPI) - OneDrive .Net Client Library using the REST API. * [OsmSharp](https://github.com/OsmSharp) - Mapping & Routing library. From ccf0ca7da78b66b023dc38e222741b07b13208b6 Mon Sep 17 00:00:00 2001 From: Ian Cooper Date: Thu, 19 Mar 2015 17:07:35 +0000 Subject: [PATCH 178/872] Added Brighter to the developer project list --- dotnet-developer-projects.md | 1 + 1 file changed, 1 insertion(+) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index fc0b0092c..74579c3bd 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -76,6 +76,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [AsyncCollections](https://github.com/HellBrick/AsyncCollections) - A set of lock-free thread-safe collections designed to be used asynchronously. * [Bing.RestClient](https://github.com/AdvancedREI/Bing.RestClient) - Access the Bing REST APIs from a unified client. * [BoxKite.Twitter](https://github.com/NickHodge/BoxKite.Twitter/) - Twitter .NET Client Library for the 1.1 Twitter API, incorporating REST API, User streaming and Search Streaming. Uses Reactive Extensions (Rx). + * [Brighter](https://github.com/iancooper/Paramore) - A Command Dispatcher and Command Processor library with support for Work or Task Queues over different MoM implementations such as RabbitMQ * [Cimbalino Toolkit](https://github.com/Cimbalino/Cimbalino-Toolkit) - A set of useful and powerful tools that will help you build your Windows Platform applications. * [Coding4Fun Toolkit](http://coding4fun.codeplex.com/) * [ColoredConsole](https://github.com/colored-console/colored-console) - Add some color to your console. From d2b907a0a6576b7b5f9a2bb684ce0b7c75848835 Mon Sep 17 00:00:00 2001 From: Jason Roberts Date: Tue, 31 Mar 2015 10:22:39 +0800 Subject: [PATCH 179/872] Added Fixie testing framework --- dotnet-developer-projects.md | 1 + 1 file changed, 1 insertion(+) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 74579c3bd..4df346999 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -184,6 +184,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [AutoFixture](https://github.com/AutoFixture/AutoFixture) - An open source framework for .NET designed to minimize the 'Arrange' phase of your unit tests. Its primary goal is to allow developers to focus on what is being tested rather than how to setup the test scenario, by making it easier to create object graphs containing test data. * [canopy](https://github.com/lefthandedgoat/canopy) - A web testing framework. * [FakeItEasy](https://github.com/FakeItEasy/FakeItEasy) - The easy mocking library for .NET. + * [Fixie](https://github.com/fixie/fixie) - A low-ceremony, convention-based testing framework with flexible customization. * [FsCheck](https://github.com/fsharp/FsCheck) - A tool for testing .NET programs automatically. * [moq](https://github.com/Moq/moq4) - The most popular and friendly mocking framework for .NET * [NSubstitute](https://github.com/nsubstitute/NSubstitute) - A friendly substitute for .NET mocking frameworks. From a77d87b70eb8d3e09c5b9c4104f9f646009a3043 Mon Sep 17 00:00:00 2001 From: Kerry Jiang Date: Sat, 4 Apr 2015 12:00:52 +0800 Subject: [PATCH 180/872] Add the project LogMaster4Net --- dotnet-developer-projects.md | 1 + 1 file changed, 1 insertion(+) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 4df346999..451eb1661 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -140,6 +140,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [Exceptionless](https://github.com/exceptionless/Exceptionless) - Provides real-time .NET error reporting for your ASP.NET, Web API, WebForms, WPF, Console, and MVC apps. It organizes the gathered information into simple actionable data that will help your app become exceptionless! * [ELMAH](https://code.google.com/p/elmah/) - ELMAH (Error Logging Modules and Handlers) is an application-wide error logging facility that is completely pluggable. It can be dynamically added to a running ASP.NET web application, or even all ASP.NET web applications on a machine, without any need for re-compilation or re-deployment. * [log4net](http://logging.apache.org/log4net/) - A tool to help the programmer output log statements to a variety of output targets. + * [LogMaster4Net](https://github.com/kerryjiang/LogMaster4Net) - It is a central log server which can organize your logs in different applications in a same place but have same log behaviors (loggers, appenders, levels and rules) like in the indepedent applications before. * Model-View-ViewModel (MVVM) Frameworks * [Caliburn Micro](https://github.com/Caliburn-Micro/Caliburn.Micro) - A small, yet powerful framework, designed for building applications across all XAML platforms. From c806d80fdc6cf9087d3069710f8e4bc158efa6dd Mon Sep 17 00:00:00 2001 From: Tony Qu Date: Sun, 12 Apr 2015 06:36:17 +0800 Subject: [PATCH 181/872] add some new open source projects --- dotnet-developer-projects.md | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 451eb1661..f96a6f428 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -31,12 +31,13 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [IronPython](https://github.com/IronLanguages/main/tree/master/Languages/IronPython) - A .NET implementation of the [Python](https://www.python.org) programming language, built on the DLR. [IronPython Site](http://ironpython.net). * [IronRuby](https://github.com/IronLanguages/main/tree/master/Languages/Ruby) - A .NET implementation of the [Ruby](https://www.ruby-lang.org) programming language, built on the DLR. [IronRuby Site](http://ironruby.net). * [IronScheme](http://ironscheme.codeplex.com) - A R6RS conforming Scheme-like implementation based on the Microsoft DLR. + * [Irony](https://irony.codeplex.com/) - a development kit for implementing languages on .NET platform * [MoonSharp](https://github.com/xanathar/moonsharp/) - A Lua interpreter and remote debugger, written entirely in C#, easily embeddable in any application running on .NET 3.5+ and Mono. * [Nemerle](https://github.com/rsdn/nemerle) - A high-level statically-typed programming language which offers functional, object-oriented and imperative features and has a simple C# like syntax and a powerful meta-programming system. * [NiL.JS](https://github.com/nilproject/NiL.JS) - A .NET implementation of the ECMAScript language and runtime. * [Phalanger](https://github.com/DEVSENSE/Phalanger) - full-featured PHP runtime & compiler for .NET/Mono frameworks. Phalanger is modern open-source implementation of PHP, compatible with the vast array of existing PHP code. * [Roslyn (.NET Compiler Platform)](https://roslyn.codeplex.com/) - Open-source C# and Visual Basic compilers with rich code analysis APIs. - + * Security / Identity Management * [Thinktecture IdentityManager](https://github.com/thinktecture/Thinktecture.IdentityManager) * [Thinktecture IdentityServer](https://github.com/thinktecture/Thinktecture.IdentityServer.v3) @@ -110,6 +111,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [NHunspell](http://sourceforge.net/projects/nhunspell/) - Spell Checker, Hyphenation an Theasaurus * [NModbus4](https://github.com/Maxwe11/NModbus4) - Implementation of the Modbus protocol * [NodaTime](https://code.google.com/p/noda-time/) - A better date and time API for .NET + * [NPOI](https://npoi.codeplex.com) - An Office file formats (xls, xlsx, docx) read/write library for .NET * [OneDriveRestAPI](https://github.com/saguiitay/OneDriveRestAPI) - OneDrive .Net Client Library using the REST API. * [OsmSharp](https://github.com/OsmSharp) - Mapping & Routing library. * [PocketSharp](https://github.com/ceee/PocketSharp) @@ -125,7 +127,13 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [WpfToolkit](https://github.com/dotnetprojects/wpftoolkit) - Fork of the MS WPF Toolkit * [XamlEssentials](https://github.com/AdvancedREI/XamlEssentials) - Collection of helpers for Microsoft's XAML platforms. * [Zlib.Portable](https://github.com/AdvancedREI/Zlib.Portable) - A Portable Class Library port of the Zlib library from http://dotnetzip.codeplex.com. - + +* Data Mine/Data Extraction/Machine Learning/AI + * [AForge.NET](http://www.aforgenet.com/) - a C# framework designed for developers and researchers in the fields of Computer Vision and Artificial Intelligence - image processing, neural networks, genetic algorithms, machine learning, robotics + * [Nepy](http://nepy.codeplex.com) - A collection of NLP parsers for .NET + * [SharpNLP](http://sharpnlp.codeplex.com) - SharpNLP is a collection of natural language processing tools written in C# + * [Toxy](http://toxy.codeplex.com) - An data/text extraction framework for .NET, similar to Tika in Java. + * Graphics & Server-side Image Processing * [DynamicImage](https://github.com/tgjones/dynamic-image) - WPF-based server-side image rendering system - lots of visual effects implemented as high-performance shaders. Has URL api, several plugins available. * [ImageProcessor](https://github.com/jimbobsquarepants/imageprocessor/) - A .NET Library For On-The-Fly Processing Of Images (GDI+ based). @@ -268,8 +276,9 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [Warewolf Easy Service Bus](https://github.com/Warewolf-ESB/Warewolf-ESB) - An open source easy to use service bus, built on numerous .Net technologies including WF (Windows Workflow Foundation), SignalR and WPF. * Distributed Caching and Computing + * [CacheAdapter](https://bitbucket.org/glav/cacheadapter) - a .Net library allows developers to use unified-implemented cahce provider * [Dache](https://github.com/ironyx/dache) - An open source distributed caching service, built on .NET 4.0 and using TCP sockets for communication. - + * Windows Workflow * [Workflow Extractor](https://github.com/punitganshani/WorkflowExtractor) - Document Windows Workflow logic into a Word document or Excel sheet. From 439017bb9b6febdb93e6ad644991fcbfed05c28e Mon Sep 17 00:00:00 2001 From: Tony Qu Date: Sun, 12 Apr 2015 06:48:56 +0800 Subject: [PATCH 182/872] add paint.net to the list --- dotnet-consumer-projects.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/dotnet-consumer-projects.md b/dotnet-consumer-projects.md index 38a61eddc..166588c76 100644 --- a/dotnet-consumer-projects.md +++ b/dotnet-consumer-projects.md @@ -4,9 +4,10 @@ This community maintained list showcases .NET open source consumer projects. It Please sort projects alphabetically and provide a one-line description. GitHub/CodePlex (or other source) links are preferred, but feel free to also include marketing sites. Create new sections, as appropriate. -* Media Streaming +* Media Streaming/Media file Editor * [Media Browser](https://github.com/mediabrowser/) - [www.mediabrowser.tv](http://www.mediabrowser.tv) - A client/server application that allows you to easily manage your own media content and present it in an eye catching way. Server runs on Windows, Linux and Mac. Clients are for WP, Android, iOS, Media Centre, Windows, Roku, etc. - + * [Paint.NET](http://www.getpaint.net/) - famous Photoshop-like tool based on .NET + * Audio players * [Banshee](https://github.com/GNOME/banshee) - A cross-platform multimedia player * [Espera](https://github.com/flagbug/Espera) - A media player that plays your music, YouTube videos, SoundCloud songs, has a special "party mode" and an Android remote control. From 45577dcb445a1c4ed33c33935a88793031d84b43 Mon Sep 17 00:00:00 2001 From: jbe2277 Date: Sun, 12 Apr 2015 18:39:21 +0200 Subject: [PATCH 183/872] Add Waf DotNetPad to list --- dotnet-developer-projects.md | 1 + 1 file changed, 1 insertion(+) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index f96a6f428..4bda41827 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -185,6 +185,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [Snoop WPF](https://github.com/cplotts/snoopwpf) - Snoop - The WPF Spy Utility * [Sql Bulk Copy Sync](https://github.com/WCOMAB/SqlBulkSync) * [Vagrant](https://github.com/nessos/Vagrant) - Automated dependency resolution and dynamic assembly compilation framework. + * [Waf DotNetPad](http://dotnetpad.codeplex.com) - The Waf DotNetPad is a simple and fast code editor that makes fun program with C# or Visual Basic. * [Weighted Selector](https://github.com/kinetiq/Ether.WeightedSelector/) - Easy to use (but high performance!) weighted selection implementation. * [XDav](https://github.com/rezabazargan/xDav) - A .net server mudole for webdav standard. * [ZeroToNine](https://github.com/ploeh/ZeroToNine) - A tool for maintaining .NET Assembly versions across multiple files. From f9b495d40c0eecc6395d757840e7c674bcd0d8fc Mon Sep 17 00:00:00 2001 From: James Willock Date: Tue, 21 Apr 2015 12:52:24 +0100 Subject: [PATCH 184/872] Add Material Design in XAML Toolkit to open source projects. --- dotnet-developer-projects.md | 1 + 1 file changed, 1 insertion(+) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 4bda41827..66bae74ba 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -258,6 +258,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [Callisto](https://github.com/timheuer/callisto) - UI Control Toolkit for WinRT apps * [Dragablz](http://github.com/ButchersBoy/Dragablz) - A tearable TabControl for WPF which also provides easy-to-use and implement docking features. * [Eto](https://github.com/picoe/Eto) - Cross platform GUI Toolkit for desktop and mobile apps + * [Material Design in XAML Toolkit](https://github.com/ButchersBoy/MaterialDesignInXamlToolkit) - WPF/XAML resources, styles & templates for creating applications using Material Design * [Mono XWT](https://github.com/mono/xwt) - A cross-platform UI toolkit for creating desktop apps * Windows Services From 2818c3dfbfcec3290fe5d65031fa7116507bbf32 Mon Sep 17 00:00:00 2001 From: kasthack Date: Sat, 25 Apr 2015 13:50:19 +0300 Subject: [PATCH 185/872] Add vksharp to list --- dotnet-developer-projects.md | 1 + 1 file changed, 1 insertion(+) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 66bae74ba..af88f42dd 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -122,6 +122,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [Splat](https://github.com/paulcbetts/splat) - A library to make things cross-platform that should be. * [SSH.NET](https://sshnet.codeplex.com/) - A client-side library for SSH, SCP and SFTP. * [SuperSocket](https://github.com/kerryjiang/SuperSocket) - An extensible socket server engine which supports .NET and Mono + * [VkSharp](https://github.com/kasthack/vksharp) - VK client library * [WebApiProxy](https://github.com/faniereynders/WebApiProxy) - An automatic proxy provider for RESTful services built on ASP.NET Web API. Includes JavaScript & C# client generation. * [WebSocket4Net](https://websocket4net.codeplex.com/) - A C# websocket client for .NET, Mono and Xamarin * [WpfToolkit](https://github.com/dotnetprojects/wpftoolkit) - Fork of the MS WPF Toolkit From 95a2ecb510a509f94da69cb748605ffa32c7e665 Mon Sep 17 00:00:00 2001 From: Rich Lander Date: Fri, 1 May 2015 13:51:29 -0700 Subject: [PATCH 186/872] Update .NET Framework 4.6 RC --- data/platforms.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/data/platforms.json b/data/platforms.json index e05a9f6fe..ef2258ad2 100644 --- a/data/platforms.json +++ b/data/platforms.json @@ -36,11 +36,11 @@ { "platform":".NET Framework 4.6", "category":"netfx", -"info":"http://blogs.msdn.com/b/dotnet/archive/2014/11/12/announcing-net-2015-preview-a-new-era-for-net.aspx#_.NET_Framework_4.6", +"info":"http://blogs.msdn.com/b/dotnet/archive/2015/04/29/net-announcements-at-build-2015.aspx#dotnet46", "includedIn":["VS2015"], "supportedBy":["VS2013","VS2012"], "runtime":[ -{"name":".NET Framework 4.6","link":"http://go.microsoft.com/fwlink/?LinkId=399417"}], +{"name":".NET Framework 4.6","link":"http://go.microsoft.com/fwlink/?LinkId=524667"}], "tools":[ {"name":"Visual Studio Community 2013 (free)","link":"http://www.visualstudio.com/en-us/downloads/download-visual-studio-vs#DownloadFamilies_2"}, {"name":"Visual Studio Express 2013 (free)","link":"http://www.visualstudio.com/en-us/downloads/download-visual-studio-vs#DownloadFamilies_2"} From d7ccae2b92dc5b6d635b5fe831bc8140cb889d73 Mon Sep 17 00:00:00 2001 From: Govert van Drimmelen Date: Tue, 12 May 2015 00:38:46 +0200 Subject: [PATCH 187/872] Add the Excel-DNA project --- dotnet-developer-projects.md | 1 + 1 file changed, 1 insertion(+) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 66bae74ba..a02b6d806 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -88,6 +88,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [DotNetOpenAuth](https://github.com/DotNetOpenAuth) - Library that adds support for your site visitors to login with their OpenIDs by just dropping an ASP.NET control onto your page. * [DropboxRestAPI](https://github.com/saguiitay/DropboxRestAPI) - DropBox .Net Client Library * [DynamicData](https://github.com/RolandPheasant/DynamicData) - Brings the power of Rx to collections + * [Excel-DNA](http://excel-dna.net) - Create high-performance Excel add-ins with .NET * [ExtraLINQ](https://github.com/mariusschulz/ExtraLINQ) - Various extension methods for working with .NET collections. * [FeatureToggle](https://github.com/jason-roberts/FeatureToggle) - Simple, reliable feature toggles in .NET. * [FluentBootstrap](https://github.com/somedave/FluentBootstrap) From aff1c678a8d8dbec67c6b5bb20276c0781aaa8c9 Mon Sep 17 00:00:00 2001 From: Jb Evain Date: Wed, 20 May 2015 16:04:45 +0200 Subject: [PATCH 188/872] Add cecil to the developer projects --- dotnet-developer-projects.md | 1 + 1 file changed, 1 insertion(+) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 66bae74ba..54de9e375 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -78,6 +78,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [Bing.RestClient](https://github.com/AdvancedREI/Bing.RestClient) - Access the Bing REST APIs from a unified client. * [BoxKite.Twitter](https://github.com/NickHodge/BoxKite.Twitter/) - Twitter .NET Client Library for the 1.1 Twitter API, incorporating REST API, User streaming and Search Streaming. Uses Reactive Extensions (Rx). * [Brighter](https://github.com/iancooper/Paramore) - A Command Dispatcher and Command Processor library with support for Work or Task Queues over different MoM implementations such as RabbitMQ + * [Cecil](https://github.com/jbevain/cecil) - A popular library to read, modify and write .NET binaries. * [Cimbalino Toolkit](https://github.com/Cimbalino/Cimbalino-Toolkit) - A set of useful and powerful tools that will help you build your Windows Platform applications. * [Coding4Fun Toolkit](http://coding4fun.codeplex.com/) * [ColoredConsole](https://github.com/colored-console/colored-console) - Add some color to your console. From f070b8c429164d103529565330f6a7b42dcb7fc7 Mon Sep 17 00:00:00 2001 From: Paul Louth Date: Wed, 20 May 2015 16:37:31 +0100 Subject: [PATCH 189/872] Language-ext Adding Language-Ext to Libraries A popular library (nearly 600 followers) for abusing C# to make it easier to write in a functional style: https://github.com/louthy/language-ext --- dotnet-developer-projects.md | 1 + 1 file changed, 1 insertion(+) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 66bae74ba..2c8f4be29 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -98,6 +98,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [HudlFfmpeg](https://github.com/hudl/HudlFfmpeg) - A/V transcoding framework that helps build complex FFmpeg commands. * [JSON.NET](https://github.com/JamesNK/Newtonsoft.Json) - Popular high-performance JSON framework for .NET * [Kentor.AuthServices](https://github.com/KentorIT/authservices) - A SAML2 Service Provider for .NET. + * [Language-ext](https://github.com/louthy/language-ext) - C# 6.0+ functional language extensions. Make C# more like F# and other functional languages * [LibGit2Sharp](https://github.com/libgit2/libgit2sharp) * [Lucene.Net](https://github.com/apache/lucene.net) * [MahApps.Metro](https://github.com/MahApps/MahApps.Metro) - A toolkit for creating metro-style WPF applications. From dd926f99f760e4a48f2dbe42309acf0df0c87e8d Mon Sep 17 00:00:00 2001 From: Jude Melancon Date: Thu, 21 May 2015 08:39:16 -0500 Subject: [PATCH 190/872] Add NLog to Logging section of project list --- dotnet-developer-projects.md | 1 + 1 file changed, 1 insertion(+) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 66bae74ba..32a5f8b4b 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -149,6 +149,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [ELMAH](https://code.google.com/p/elmah/) - ELMAH (Error Logging Modules and Handlers) is an application-wide error logging facility that is completely pluggable. It can be dynamically added to a running ASP.NET web application, or even all ASP.NET web applications on a machine, without any need for re-compilation or re-deployment. * [log4net](http://logging.apache.org/log4net/) - A tool to help the programmer output log statements to a variety of output targets. * [LogMaster4Net](https://github.com/kerryjiang/LogMaster4Net) - It is a central log server which can organize your logs in different applications in a same place but have same log behaviors (loggers, appenders, levels and rules) like in the indepedent applications before. + * [NLog](https://github.com/NLog/NLog) - NLog is a free logging platform for .NET with rich log routing and management capabilities. * Model-View-ViewModel (MVVM) Frameworks * [Caliburn Micro](https://github.com/Caliburn-Micro/Caliburn.Micro) - A small, yet powerful framework, designed for building applications across all XAML platforms. From 335e4f350e034f21b393b4b5185c241b6e6d5925 Mon Sep 17 00:00:00 2001 From: Mirco Bauer Date: Sat, 23 May 2015 15:16:38 +0200 Subject: [PATCH 191/872] Added Smuxi IRC/IM client to dotnet-consumer-projects --- dotnet-consumer-projects.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/dotnet-consumer-projects.md b/dotnet-consumer-projects.md index 166588c76..3921b340e 100644 --- a/dotnet-consumer-projects.md +++ b/dotnet-consumer-projects.md @@ -13,7 +13,10 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [Espera](https://github.com/flagbug/Espera) - A media player that plays your music, YouTube videos, SoundCloud songs, has a special "party mode" and an Android remote control. * [Simple Music Player](https://github.com/punker76/simple-music-player) SimpleMP or Simple Music Player is a simple and easy to use music player for free. It plays the most common music files (mp3, ogg, wma, wav) in a simple way. * [Waf Music Manager](http://wmm.codeplex.com) – is a simple and fast application that makes fun to manage the local music collection. - + +* Internet/Chat Applications + * [Smuxi IM](https://github.com/meebey/smuxi) - free, distributed and user-friendly IRC / Twitter / XMPP / Campfire / JabbR client for Linux, Windows and Mac OS X + * Utilities * [Gmail Notifier Plus](https://github.com/shellscape/Gmail-Notifier-Plus) - An app to monitor multiple Gmail and Google Apps for Work Gmail accounts from a single, compact point, sitting in Windows 7/8/8.1 taskbar. * [YouCast](https://github.com/I3arnon/YouCast) - YouCast allows you to subscribe to video feeds on YouTube as podcasts in any standard podcatcher like iTunes, BeyondPod on Adroid or even Zune PC and so forth. From 1b7bf0bcdd704fa1a1169de928c082449b863938 Mon Sep 17 00:00:00 2001 From: Mirco Bauer Date: Sat, 23 May 2015 15:32:33 +0200 Subject: [PATCH 192/872] Add SmartIrc4net to dotnet-developer-projects --- dotnet-developer-projects.md | 1 + 1 file changed, 1 insertion(+) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 66bae74ba..84f88bbed 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -119,6 +119,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [RestSharp](https://github.com/restsharp/RestSharp) - Simple REST and HTTP API Client for .NET * [SharpMap](https://sharpmap.codeplex.com/) - An easy-to-use mapping library for use in web and desktop applications * [SharpSnmpLib](https://sharpsnmplib.codeplex.com) - An easy-to-use SNMP library for use on all platforms (.NET/Mono/Xamarin) + * [SmartIrc4net](https://github.com/meebey/SmartIrc4net) - IRC C# Library * [Splat](https://github.com/paulcbetts/splat) - A library to make things cross-platform that should be. * [SSH.NET](https://sshnet.codeplex.com/) - A client-side library for SSH, SCP and SFTP. * [SuperSocket](https://github.com/kerryjiang/SuperSocket) - An extensible socket server engine which supports .NET and Mono From b607c805db6ea6fa45f0fe85467f40563d3d98f4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20L=C3=BCthold?= Date: Tue, 26 May 2015 13:20:57 +0200 Subject: [PATCH 193/872] Update dotnet-developer-projects.md Added the TomP2P.NET library, thank you! --- dotnet-developer-projects.md | 1 + 1 file changed, 1 insertion(+) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 66bae74ba..e5fd13e9a 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -122,6 +122,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [Splat](https://github.com/paulcbetts/splat) - A library to make things cross-platform that should be. * [SSH.NET](https://sshnet.codeplex.com/) - A client-side library for SSH, SCP and SFTP. * [SuperSocket](https://github.com/kerryjiang/SuperSocket) - An extensible socket server engine which supports .NET and Mono + * [TomP2P.NET](https://github.com/tomp2p/TomP2P.NET) - A P2P-based high performance key-value pair storage library for .NET * [WebApiProxy](https://github.com/faniereynders/WebApiProxy) - An automatic proxy provider for RESTful services built on ASP.NET Web API. Includes JavaScript & C# client generation. * [WebSocket4Net](https://websocket4net.codeplex.com/) - A C# websocket client for .NET, Mono and Xamarin * [WpfToolkit](https://github.com/dotnetprojects/wpftoolkit) - Fork of the MS WPF Toolkit From 3b2cab22f46f1d8bd8a85bfce7323b3296455593 Mon Sep 17 00:00:00 2001 From: Mirco Bauer Date: Tue, 26 May 2015 15:41:16 +0200 Subject: [PATCH 194/872] Replace Paint.NET with Pinta Paint.NET is no longer opensource, see http://www.getpaint.net/license.html Thus replaced with the Paint.NET fork called Pinta which _is_ opensource and runs on Windows, Linux and Mac OS X, see http://pinta-project.com/releases --- dotnet-consumer-projects.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dotnet-consumer-projects.md b/dotnet-consumer-projects.md index 166588c76..ff6197fa9 100644 --- a/dotnet-consumer-projects.md +++ b/dotnet-consumer-projects.md @@ -6,7 +6,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * Media Streaming/Media file Editor * [Media Browser](https://github.com/mediabrowser/) - [www.mediabrowser.tv](http://www.mediabrowser.tv) - A client/server application that allows you to easily manage your own media content and present it in an eye catching way. Server runs on Windows, Linux and Mac. Clients are for WP, Android, iOS, Media Centre, Windows, Roku, etc. - * [Paint.NET](http://www.getpaint.net/) - famous Photoshop-like tool based on .NET + * [Pinta](https://github.com/PintaProject/Pinta) - simple drawing/editing program modeled after Paint.NET * Audio players * [Banshee](https://github.com/GNOME/banshee) - A cross-platform multimedia player From 18cfa59a08b3fa8abaedf7c8de2d5eb95ec06c7a Mon Sep 17 00:00:00 2001 From: Govert van Drimmelen Date: Wed, 27 May 2015 11:24:52 +0200 Subject: [PATCH 195/872] Add GitHub project link for Excel-DNA --- dotnet-developer-projects.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index a02b6d806..d9b053a51 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -88,7 +88,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [DotNetOpenAuth](https://github.com/DotNetOpenAuth) - Library that adds support for your site visitors to login with their OpenIDs by just dropping an ASP.NET control onto your page. * [DropboxRestAPI](https://github.com/saguiitay/DropboxRestAPI) - DropBox .Net Client Library * [DynamicData](https://github.com/RolandPheasant/DynamicData) - Brings the power of Rx to collections - * [Excel-DNA](http://excel-dna.net) - Create high-performance Excel add-ins with .NET + * [Excel-DNA](https://github.com/Excel-DNA/ExcelDna) - Create high-performance, easy to deploy Excel add-ins with .NET - [Home](http://excel-dna.net) * [ExtraLINQ](https://github.com/mariusschulz/ExtraLINQ) - Various extension methods for working with .NET collections. * [FeatureToggle](https://github.com/jason-roberts/FeatureToggle) - Simple, reliable feature toggles in .NET. * [FluentBootstrap](https://github.com/somedave/FluentBootstrap) From cbf80b4d80f18c836919bb8513573647162a5360 Mon Sep 17 00:00:00 2001 From: Mirco Bauer Date: Sat, 23 May 2015 15:25:13 +0200 Subject: [PATCH 196/872] Add leveldb-sharp to dotnet-developer-projects --- dotnet-developer-projects.md | 1 + 1 file changed, 1 insertion(+) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index d20254515..0ac1d852d 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -100,6 +100,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [JSON.NET](https://github.com/JamesNK/Newtonsoft.Json) - Popular high-performance JSON framework for .NET * [Kentor.AuthServices](https://github.com/KentorIT/authservices) - A SAML2 Service Provider for .NET. * [Language-ext](https://github.com/louthy/language-ext) - C# 6.0+ functional language extensions. Make C# more like F# and other functional languages + * [leveldb-sharp](https://github.com/meebey/leveldb-sharp) - cross-platform C# binding for LevelDB * [LibGit2Sharp](https://github.com/libgit2/libgit2sharp) * [Lucene.Net](https://github.com/apache/lucene.net) * [MahApps.Metro](https://github.com/MahApps/MahApps.Metro) - A toolkit for creating metro-style WPF applications. From 84d8540565a8230c64161cc3bd561d65d03b8f73 Mon Sep 17 00:00:00 2001 From: Jake Ginnivan Date: Thu, 2 Jul 2015 09:23:01 +0800 Subject: [PATCH 197/872] Added shouldly to dotnet-developer-projects.md --- dotnet-developer-projects.md | 1 + 1 file changed, 1 insertion(+) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 0ac1d852d..2108d8fcf 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -205,6 +205,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [moq](https://github.com/Moq/moq4) - The most popular and friendly mocking framework for .NET * [NSubstitute](https://github.com/nsubstitute/NSubstitute) - A friendly substitute for .NET mocking frameworks. * [NUnit](https://github.com/nunit/nunit) - NUnit is a unit-testing framework for all .NET languages. + * [Shouldly](https://github.com/shouldly/shouldly) - Should style test assertion library with great error messages. * [tickspec](http://tickspec.codeplex.com/) - A lightweight Behaviour Driven Development (BDD) framework. * [TestStack.BDDfy](https://github.com/TestStack/TestStack.BDDfy) - BDDfy is the simplest BDD framework to use, customize and extend! * [TestStack.FluentMvcTesting](https://github.com/TestStack/TestStack.FluentMVCTesting) - Simple, terse, fluent unit testing for ASP.NET MVC Controllers. From aa810fb2a23a6688580b6d9f994f9d17deef9d96 Mon Sep 17 00:00:00 2001 From: Gary Ewan Park Date: Thu, 2 Jul 2015 08:09:36 +0100 Subject: [PATCH 198/872] (:memo:) Corrected links to GitLink and GitVersion Both of these projects recently moved to a new organisation, so updating the link to reflect this. --- dotnet-developer-projects.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 0ac1d852d..3c6496656 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -178,8 +178,8 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [FsEye](https://code.google.com/p/fseye/) - A visual object tree inspector for the F# Interactive. * [FsharpLint](https://github.com/fsprojects/FSharpLint) - Lint tool for F#. * [FsPickler](https://github.com/nessos/FsPickler) - Serialization library that facilitates the distribution of .NET objects. - * [GitLink](https://github.com/CatenaLogic/GitLink) - Command-line tool to make .NET open source accessible without the need for a symbols server - * [GitVersion](https://github.com/ParticularLabs/GitVersion) - Use convention to derive a SemVer product version from a GitFlow based repository. + * [GitLink](https://github.com/GitTools/GitLink) - Command-line tool to make .NET open source accessible without the need for a symbols server + * [GitVersion](https://github.com/GitTools/GitVersion) - Use convention to derive a SemVer product version from a GitFlow based repository. * [Glimpse](https://github.com/Glimpse/Glimpse) - Providing real time diagnostics & insights to the fingertips of hundreds of thousands of developers daily. * [ILSpy](https://github.com/icsharpcode/ILSpy) - ILSpy is the open-source .NET assembly browser and decompiler. * [Mini Profiler](https://github.com/MiniProfiler/dotnet) - A simple but effective mini-profiler for .NET. From 722d3438dc91c6b3c7f1fb4db1b3781bd162127b Mon Sep 17 00:00:00 2001 From: BeYourMarket Date: Wed, 15 Jul 2015 22:23:41 +0200 Subject: [PATCH 199/872] Add BeYourMarket propose [BeYourMarket](https://github.com/beyourmarket/beyourmarket) - BeYourMarket is a peer-to-peer marketplace framework http://beyourmarket.com --- dotnet-developer-projects.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 3dff47506..0159bc0fe 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -52,6 +52,9 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [Umbraco](https://github.com/umbraco/Umbraco-CMS/) - Web content management platform (CMS). * [WebSharper](https://bitbucket.org/IntelliFactory/websharper) - Web programming platform including a compiler from F# code to JavaScript. +* Web Marketplace + * [BeYourMarket](https://github.com/beyourmarket/beyourmarket) - BeYourMarket is a peer-to-peer marketplace framework http://beyourmarket.com + * Web Frameworks * [Nancy](https://github.com/NancyFx/Nancy) - A lightweight, low-ceremony, framework for building HTTP based services on .NET and Mono. * [NemerleWeb](https://github.com/NemerleWeb/NemerleWeb) - Web MVVM library for .Net. It uses reactive data model which allows creating rich internet applications. From 0ac6f41da57568dc76d11e53502777f0c642b9bb Mon Sep 17 00:00:00 2001 From: Geoffrey Huntley Date: Fri, 17 Jul 2015 08:37:38 +1000 Subject: [PATCH 200/872] added reactiveui --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 1ac7b47b0..fe77c4ce4 100644 --- a/README.md +++ b/README.md @@ -21,6 +21,7 @@ There are many [open source .NET projects](dotnet-developer-projects.md), a few * [Mono Project](https://github.com/mono/) * [MVVM Cross](https://github.com/MvvmCross/MvvmCross) * [MVVM Light Toolkit](http://www.mvvmlight.net) +* [ReactiveUI](https://github.com/reactiveui/ReactiveUI) For a longer list, see: From f77af6a9983b99d7fc93ee93fa9d41303209752f Mon Sep 17 00:00:00 2001 From: Geoffrey Huntley Date: Fri, 17 Jul 2015 09:11:13 +1000 Subject: [PATCH 201/872] added awesome-dotnet --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 1ac7b47b0..9db5f3415 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,9 @@ on the .NET blog. ## Finding .NET Open Source Projects -There are many [open source .NET projects](dotnet-developer-projects.md), a few of which are listed below. Please find one to engage in or add one to the list. +There are many [open source .NET projects](dotnet-developer-projects.md), a few of which are listed below. Additionally @qourzd maintains list of [awesome open source .NET libraries, tools, frameworks, and software](https://github.com/quozd/awesome-dotnet). + + * [.NET Compiler Platform ("Roslyn")](https://github.com/dotnet/roslyn) * [.NET Core 5](https://github.com/dotnet/core) From cd99c03f26eff4e22c33de7414573fedfffb5c6d Mon Sep 17 00:00:00 2001 From: Rich Lander Date: Mon, 20 Jul 2015 20:54:09 -0700 Subject: [PATCH 202/872] Update for VS 2015 --- data/platforms.json | 56 +++++++++++++++++++-------------------------- 1 file changed, 24 insertions(+), 32 deletions(-) diff --git a/data/platforms.json b/data/platforms.json index ef2258ad2..8386f52f0 100644 --- a/data/platforms.json +++ b/data/platforms.json @@ -36,21 +36,21 @@ { "platform":".NET Framework 4.6", "category":"netfx", -"info":"http://blogs.msdn.com/b/dotnet/archive/2015/04/29/net-announcements-at-build-2015.aspx#dotnet46", +"info":"http://blogs.msdn.com/b/dotnet/archive/2015/07/20/announcing-net-framework-4-6.aspx", "includedIn":["VS2015"], "supportedBy":["VS2013","VS2012"], "runtime":[ -{"name":".NET Framework 4.6","link":"http://go.microsoft.com/fwlink/?LinkId=524667"}], +{"name":".NET Framework 4.6","link":"http://go.microsoft.com/fwlink/?LinkId=528259"}], "tools":[ -{"name":"Visual Studio Community 2013 (free)","link":"http://www.visualstudio.com/en-us/downloads/download-visual-studio-vs#DownloadFamilies_2"}, -{"name":"Visual Studio Express 2013 (free)","link":"http://www.visualstudio.com/en-us/downloads/download-visual-studio-vs#DownloadFamilies_2"} +{"name":"Visual Studio Community 2015 (free)","link":"https://www.visualstudio.com/products/visual-studio-community-vs"}, +{"name":".NET Framework 4.6 Targeting Pack","link":"http://go.microsoft.com/fwlink/?LinkId=528261","description":"The .NET 4.6 Developer pack includes the 4.6 reference assemblies needed by Visual Studio and msbuild."} ] }, { "platform":".NET Framework 4.5.2", "category":"netfx", "info":"http://go.microsoft.com/fwlink/?LinkID=309958", -"includedIn":[], +"includedIn":["VS2015"], "supportedBy":["VS2013","VS2012"], "runtime":[ {"name":".NET Framework 4.5.2","link":"http://go.microsoft.com/fwlink/?LinkId=397674"}], @@ -63,7 +63,7 @@ "platform":".NET Framework 4.5.1", "category":"netfx", "info":"http://go.microsoft.com/fwlink/?LinkID=309958", -"includedIn":["VS2013"], +"includedIn":["VS2015","VS2013"], "supportedBy":["VS2012"], "runtime":[ {"name":".NET Framework 4.5.1","link":"http://go.microsoft.com/fwlink/?LinkId=306592"}], @@ -75,7 +75,7 @@ "platform":".NET Framework 4.5", "category":"netfx", "info":"http://blogs.msdn.com/b/dotnet/archive/2012/08/15/announcing-the-release-of-net-framework-4-5-rtm-product-and-source-code.aspx", -"includedIn":["VS2013","VS2012"], +"includedIn":["VS2015","VS2013","VS2012"], "supportedBy":[], "runtime":[ {"name":".NET Framework 4.5","link":"http://go.microsoft.com/fwlink/?LinkId=306591"}], @@ -88,7 +88,7 @@ "category":"netfx", "info":"http://blogs.msdn.com/b/dotnet/archive/2012/03/05/update-4-0-3-for-the-microsoft-net-framework-4.aspx", "includedIn":[], -"supportedBy":["VS2013","VS2012", "VS2010"], +"supportedBy":["VS2010"], "runtime":[ {"name":".NET Framework 4.0.3","link":"http://go.microsoft.com/fwlink/?LinkID=226775"} ], @@ -102,7 +102,7 @@ "platform":".NET Framework 4", "category":"netfx", "info":"http://blogs.msdn.com/b/dotnet/archive/2012/08/15/announcing-the-release-of-net-framework-4-5-rtm-product-and-source-code.aspx", -"includedIn":["VS2013","VS2012","VS2010"], +"includedIn":["VS2015","VS2013","VS2012","VS2010"], "supportedBy":[], "runtime":[ {"name":".NET Framework 4","link":"http://go.microsoft.com/fwlink/?LinkID=306589"}], @@ -112,14 +112,14 @@ }, { -"platform":".NET Framework 3.5 SP1", +"platform":".NET Framework 2.0 + 3.5 SP1", "category":"netfx", "info":"http://msdn.microsoft.com/library/w0x726c2(VS.90).aspx", "includedIn":[], -"supportedBy":["VS2013","VS2012","VS2010"], +"supportedBy":["VS2015","VS2013","VS2012","VS2010"], "runtime":[ {"name":".NET Framework 3.5 SP1","link":"http://go.microsoft.com/fwlink/?LinkID=229190"}, -{"name":".NET Framework 3.5 SP1 (Windows 8+)","link":"http://msdn.microsoft.com/en-us/library/hh506443(v=vs.110).aspx"}], +{"name":".NET Framework 3.5 SP1 (Windows 8+)","link":"http://msdn.microsoft.com/library/hh506443.aspx"}], "tools":[] }, @@ -128,7 +128,7 @@ "category":"services", "info":"http://msdn.microsoft.com/library/azure", "includedIn":[], -"supportedBy":["VS2013","VS2012"], +"supportedBy":["VS2015","VS2013","VS2012"], "tools":[ {"name":"Azure SDK for .NET","link":"http://go.microsoft.com/fwlink/?LinkID=254336"}, {"name":"Visual Studio Express 2013 for Web","link":"http://www.visualstudio.com/downloads/download-visual-studio-vs#d-express-web"} @@ -149,7 +149,7 @@ "platform":"Team Foundation Server", "category":"services", "info":"http://go.microsoft.com/fwlink/?LinkID=308920", -"includedIn":["VS2012", "VS2013"], +"includedIn":["VS2015","VS2013","VS2012"], "supportedBy":[] }, @@ -157,23 +157,23 @@ "platform":"Office 365, Office and SharePoint", "category":"services", "info":"http://go.microsoft.com/fwlink/?LinkID=308921", -"includedIn":["VS2013"], +"includedIn":["VS2015","VS2013"], "supportedBy":[] } , { "platform":"OneDrive", "category":"services", -"info":"http://msdn.microsoft.com/onedrive/dn630256", +"info":"http://go.microsoft.com/fwlink/?LinkID=306598", "includedIn":[], -"supportedBy":["VS2013","VS2012"], +"supportedBy":["VS2015","VS2013","VS2012"], "tools":[{"name":"Live SDK","link":"http://go.microsoft.com/fwlink/?LinkID=306598"}] }, { "platform":"Bing", "category":"services", -"info":"http://msdn.microsoft.com/onedrive/dn630256", +"info":"http://www.bing.com/dev", "includedIn":[], "supportedBy":["VS2013"], "tools":[{"name":"Maps WPF Control","link":"http://go.microsoft.com/fwlink/?LinkID=306597"}, @@ -186,7 +186,7 @@ { "platform":"Bing", "category":"services", -"info":"http://msdn.microsoft.com/onedrive/dn630256", +"info":"http://www.bing.com/dev", "includedIn":[], "supportedBy":["VS2012"], "tools":[{"name":"Maps WPF Control","link":"http://go.microsoft.com/fwlink/?LinkID=306597"}, @@ -199,7 +199,7 @@ { "platform":"Bing", "category":"services", -"info":"http://msdn.microsoft.com/onedrive/dn630256", +"info":"http://www.bing.com/dev", "includedIn":[], "supportedBy":["VS2010"], "tools":[{"name":"Maps WPF Control","link":"http://go.microsoft.com/fwlink/?LinkID=306597"}] @@ -208,7 +208,7 @@ { "platform":"Microsoft Advertising", "category":"Services", -"info":"http://services.microsoft.com/onedrive/dn630256", +"info":"http://go.microsoft.com/fwlink/?LinkID=309951", "includedIn":[], "supportedBy":["VS2013","VS2012"], "tools":[ @@ -283,7 +283,7 @@ "platform":"Portable Class Library", "category":"libraries", "info":"http://msdn.microsoft.com/library/gg597391(v=vs.110)", -"includedIn":["VS2013", "VS2012"], +"includedIn":["VS2015","VS2013", "VS2012"], "supportedBy":[] }, { @@ -294,19 +294,11 @@ "supportedBy":["VS2010"], "tools":[{"name":"Portable Library Tools","link":"http://go.microsoft.com/fwlink/?LinkID=229189"}] }, - -{ -"platform":".NET NuGet Packages", -"category":"libraries", -"info":"http://msdn.microsoft.com/library/gg597391(v=vs.110)", -"includedIn":["VS2013"], -"supportedBy":["VS2013"] -}, { "platform":"Silverlight 5", "category":"silverlight", "info":"http://msdn.microsoft.com/library/cc838158.aspx)", -"includedIn":["VS2013","VS2012"], +"includedIn":["VS2015","VS2013","VS2012"], "supportedBy":[], "runtime":[ {"name":"Silverlight 5","link":"http://go.microsoft.com/fwlink/?LinkID=310211"}] @@ -328,7 +320,7 @@ "category":"devices", "info":"http://xamarin.com/", "includedIn":[], -"supportedBy":["VS2013","VS2012","VS2010"], +"supportedBy":["VS2015","VS2013","VS2012","VS2010"], "runtime":[], "tools":[ {"name":"Xamarin Tools for iOS and Android","link":"http://go.microsoft.com/fwlink/?LinkID=398052"}] From 69766541cd5e9c34d8f106f733b20b69cbdcfd66 Mon Sep 17 00:00:00 2001 From: Patrick Sadowski Date: Thu, 23 Jul 2015 11:41:51 +0200 Subject: [PATCH 203/872] Fixed broken link --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 1ac7b47b0..934c600dc 100644 --- a/README.md +++ b/README.md @@ -50,7 +50,7 @@ Most .NET open source projects at Microsoft have been contributed to the [.NET Foundation](http://www.dotnetfoundation.org/projects). There are two main .NET Foundation projects for Microsoft open source projects: [ASP.NET Core 5 project](http://www.dotnetfoundation.org/aspnet-5) -and the [.NET Core 5 project](http://www.dotnetfoundation.org/netcore5). +and the [.NET Core project](http://www.dotnetfoundation.org/netcore). ## License From ca48dec5251ec15da254f68ab18eb59c9a85e84b Mon Sep 17 00:00:00 2001 From: Patrick Sadowski Date: Thu, 23 Jul 2015 22:46:11 +0200 Subject: [PATCH 204/872] Fixed broken JetBrains links --- dotnet-free-oss-services.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/dotnet-free-oss-services.md b/dotnet-free-oss-services.md index 945c6163b..15e3813e7 100644 --- a/dotnet-free-oss-services.md +++ b/dotnet-free-oss-services.md @@ -5,7 +5,7 @@ This community maintained list showcases free tools and services for open source Please sort projects alphabetically and provide a one-line description. Where possible links should be to a page showing free open source plans (for example a web page, blog post or pricing page with open source plan detailed). Create new sections, as appropriate. * IDEs - * [ReSharper](http://www.jetbrains.com/resharper/buy/choose_edition.jsp?license=OPEN_SOURCE) - Visual Studio extension providing code analysis, formatting, refactoring and more. + * [ReSharper](https://www.jetbrains.com/buy/opensource/?product=resharper) - Visual Studio extension providing code analysis, formatting, refactoring and more. * [Visual Studio Community](http://www.visualstudio.com/en-gb/products/visual-studio-community-vs) - Full version of Visual Studio available free * [VS Anywhere](https://vsanywhere.com/open_source_students_and_educational_centers.aspx) - Visual Studio extension for in IDE collaborative development. @@ -20,14 +20,14 @@ Please sort projects alphabetically and provide a one-line description. Where po * Profilers * [ANTS Memory Profiler](http://reflectorblog.red-gate.com/2013/07/open-source) - .Net memory profiler from redgate. * [ANTS Performance Profiler](http://reflectorblog.red-gate.com/2013/07/open-source) - .Net performance profiler from redgate. - * [dotTrace](http://www.jetbrains.com/profiler/buy/choose_edition.jsp?license=OPEN_SOURCE) - Performance profiler for .Net applications + * [dotTrace](https://www.jetbrains.com/buy/opensource/?product=profiler) - Performance profiler for .Net applications * Aspect Oriented Programming * [PostSharp](http://www.postsharp.net/purchase#discounts) - Aspect-oriented programming tool to eradicate boilerplate code. * Code Analysis * [Coverity Scan](https://scan.coverity.com) - Static analysis service to identify defects in C# code. - * [dotCover](http://www.jetbrains.com/dotcover/buy/choose_edition.jsp?license=OPEN_SOURCE) - Code coverage tool integrated with Visual Studio. + * [dotCover](https://www.jetbrains.com/buy/opensource/?product=dotCover) - Code coverage tool integrated with Visual Studio. * [.Net Reflector](http://reflectorblog.red-gate.com/2013/07/open-source) - Browse, analyse and decompiler IL code. * Package Management From 461b91b54d7c35349612de17fcb3496ba888f416 Mon Sep 17 00:00:00 2001 From: Richard Lander Date: Tue, 28 Jul 2015 06:28:01 -0700 Subject: [PATCH 205/872] Update RyuJIT instructions --- docs/enabling-the-latest-ryujit.md | 2 ++ docs/testing-with-ryujit.md | 37 ++++++++++++++++++++---------- 2 files changed, 27 insertions(+), 12 deletions(-) diff --git a/docs/enabling-the-latest-ryujit.md b/docs/enabling-the-latest-ryujit.md index 13497013f..d0d63f8b3 100644 --- a/docs/enabling-the-latest-ryujit.md +++ b/docs/enabling-the-latest-ryujit.md @@ -1,5 +1,7 @@ # How to enable a RyuJIT CTP +**Updated (July 2015)**: [RyuJIT](http://blogs.msdn.com/b/dotnet/archive/2015/07/20/announcing-net-framework-4-6.aspx#ryujit) has shipped! You can download it with the [.NET Framework 4.6](http://blogs.msdn.com/b/dotnet/archive/2015/07/20/announcing-net-framework-4-6.aspx#net-framework-46). There is no longer any need to install the RyuJIT CTP. + Download and install the latest [RyuJIT](http://aka.ms/RyuJIT) now. RyuJIT only works on 64-bit editions of Windows Vista and Windows Server 2008 and later. diff --git a/docs/testing-with-ryujit.md b/docs/testing-with-ryujit.md index 542009e5f..1119fc151 100644 --- a/docs/testing-with-ryujit.md +++ b/docs/testing-with-ryujit.md @@ -1,16 +1,12 @@ -# .NET Framework 4.6 - Testing with RyuJIT +.NET Framework 4.6 - Testing RyuJIT +=================================== -The .NET Framework 4.6 includes new Just-In-Time (JIT) compiler for 64-bit processes, called RyuJIT. It is enabled by default. It is still a preview version, so you may discover issues that have yet to be fixed. +The [.NET Framework 4.6](http://blogs.msdn.com/b/dotnet/archive/2015/07/20/announcing-net-framework-4-6.aspx#net-framework-46) includes new Just-In-Time (JIT) compiler for 64-bit processes, called RyuJIT. It is enabled by default. -You may experience the following symptoms when you use the new JIT compiler: +This document provides instructions to disable RyuJIT or one of its optimizations, in order to test your program without it running. This is useful if you experience unexpected product behavior and want to determine if RyuJIT is the cause of that behavioral change. -* An application throws an `InvalidProgramException` error. -* An application works on an x86-based computer but not on an x64-based - computer. - -## Workarounds for JIT Compilation - -To work around this problem, use any one of the following methods. +Disable RyuJIT +============== **Important** Follow the steps in this section carefully. Serious problems might occur if you modify the registry incorrectly. Before you modify it, @@ -48,7 +44,8 @@ existing NGEN images that have been compiled by the new JIT continue to be used. -## Workarounds for NGEN Compilation +Disable loading NGEN Images +=========================== If you encounter a bug when you use the new JIT, and if the bug manifests itself as an NGEN image, use any of the following methods to force certain named @@ -88,4 +85,20 @@ assemblies to be recompiled by the JIT and not use the existing native images: - \ No newline at end of file + + +Disable Tail Call Optimization +============================== + +You can disable tail call optimization in RyuJIT with the following instructions. + +* In the registry, create either of the following subkeys: + + HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework + HKEY_CURRENT_USER\SOFTWARE\Microsoft\.NETFramework + + Then, specify the following: + + Key name: TailCallOpt + Type: REG_DWORD + Value: 0 \ No newline at end of file From 75872388038585fef32bfef2889b4148d1604120 Mon Sep 17 00:00:00 2001 From: Richard Lander Date: Tue, 28 Jul 2015 11:37:54 -0700 Subject: [PATCH 206/872] Updated based on feedback --- docs/testing-with-ryujit.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/testing-with-ryujit.md b/docs/testing-with-ryujit.md index 1119fc151..9197f0dcb 100644 --- a/docs/testing-with-ryujit.md +++ b/docs/testing-with-ryujit.md @@ -100,5 +100,5 @@ You can disable tail call optimization in RyuJIT with the following instructions Then, specify the following: Key name: TailCallOpt - Type: REG_DWORD - Value: 0 \ No newline at end of file + Type: REG_SZ + Value: "0" From 44062afa0a580163a2bae2d0742917d89fda51e7 Mon Sep 17 00:00:00 2001 From: Sivarv Date: Tue, 28 Jul 2015 11:53:26 -0700 Subject: [PATCH 207/872] Update testing-with-ryujit.md --- docs/testing-with-ryujit.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/testing-with-ryujit.md b/docs/testing-with-ryujit.md index 9197f0dcb..82a87d830 100644 --- a/docs/testing-with-ryujit.md +++ b/docs/testing-with-ryujit.md @@ -101,4 +101,4 @@ You can disable tail call optimization in RyuJIT with the following instructions Key name: TailCallOpt Type: REG_SZ - Value: "0" + Value: "0" (Double quotes are not required while entering in Registry editor) From 768b1feca7c1a11e22b64f945ffa742f8aa80549 Mon Sep 17 00:00:00 2001 From: Bruce Forstall Date: Tue, 28 Jul 2015 18:24:09 -0700 Subject: [PATCH 208/872] Elaborate RyuJIT troubleshooting possibilities Elaborate on troubleshooting RyuJIT. Update language to be more clear. Add section on MethodImpleOptions.NoOptimization and section on UseRyuJIT reg value. Reorganize so per-app config file methods are listed first, and marked as preferred. --- docs/testing-with-ryujit.md | 154 +++++++++++++++++++++++------------- 1 file changed, 99 insertions(+), 55 deletions(-) diff --git a/docs/testing-with-ryujit.md b/docs/testing-with-ryujit.md index 82a87d830..f775be875 100644 --- a/docs/testing-with-ryujit.md +++ b/docs/testing-with-ryujit.md @@ -1,42 +1,31 @@ -.NET Framework 4.6 - Testing RyuJIT -=================================== +.NET Framework 4.6 - Troubleshooing RyuJIT +========================================== -The [.NET Framework 4.6](http://blogs.msdn.com/b/dotnet/archive/2015/07/20/announcing-net-framework-4-6.aspx#net-framework-46) includes new Just-In-Time (JIT) compiler for 64-bit processes, called RyuJIT. It is enabled by default. +The [.NET Framework 4.6](http://blogs.msdn.com/b/dotnet/archive/2015/07/20/announcing-net-framework-4-6.aspx#net-framework-46) includes a new Just-In-Time (JIT) compiler for 64-bit processes, called RyuJIT. It is enabled by default. Note that the 32-bit JIT in .NET Framework 4.6 is not significantly changed from previous releases. This document does not describe troubleshooting problems with the 32-bit JIT. -This document provides instructions to disable RyuJIT or one of its optimizations, in order to test your program without it running. This is useful if you experience unexpected product behavior and want to determine if RyuJIT is the cause of that behavioral change. +This document provides instructions to disable RyuJIT or one of its optimizations. This is useful if you experience unexpected product behavior after installing .NET Framework 4.6 and want to determine if RyuJIT is the cause of that behavioral change. -Disable RyuJIT -============== +If you find a problem that appears to be a bug with the .NET JIT compiler, we want to know about it! Please report the bug here: https://connect.microsoft.com/VisualStudio. -**Important** Follow the steps in this section carefully. Serious problems might +**Important** Follow the steps in this document carefully. Serious problems might occur if you modify the registry incorrectly. Before you modify it, [back up the registry](http://support.microsoft.com/kb/322756) for restoration in case problems occur. -**Note** For all these methods, all dynamic compilation is performed by the older -JIT64 JIT. Also, all NGEN compilation continues to use the new JIT, and all -existing NGEN images that have been compiled by the new JIT continue to be used. - -* **Method 1**. Set the following environment variable: - - COMPLUS_useLegacyJit=1 - -* **Method 2**. In the registry, create either of the following subkeys: - - HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework - HKEY_CURRENT_USER\SOFTWARE\Microsoft\.NETFramework +**Note** The registry methods below use either `HKEY_LOCAL_MACHINE` or `HKEY_CURRENT_USER`. Using `HKEY_LOCAL_MACHINE` makes the setting applicable to the entire machine and all users. Using `HKEY_CURRENT_USER` makes the setting applicable to just the current user. If using the registry methods, the latter is generally preferable. - Then, specify the following: +Disable RyuJIT +============== - Key name: useLegacyJit - Type: REG_WORD - Value: 1 +**Note** For all these methods, all dynamic compilation is performed by the older +"legacy" JIT (sometimes known as JIT64). All NGEN compilation continues to use the new JIT, and all +existing NGEN images that have been compiled by the new JIT continue to be used. -* **Method 3**. Add the following text to the `.exe.config file`. Create +* **Method 1: per-application config file**. Add the following text to the `.exe.config` file. Create the indicated sections if they do not already exist. **Note** In this file name, `` represents the actual name of the - application. + application. So, for example, for `MyApp.exe`, you will have `MyApp.exe.config`. @@ -44,61 +33,116 @@ existing NGEN images that have been compiled by the new JIT continue to be used. -Disable loading NGEN Images -=========================== - -If you encounter a bug when you use the new JIT, and if the bug manifests itself -as an NGEN image, use any of the following methods to force certain named -assemblies to be recompiled by the JIT and not use the existing native images: + Note that Method 1 does not apply to ASP.NET websites; you cannot use this method in web.config files. + + This method is preferable as it is scoped to just one application. -* **Method 1**. Set the following environment variable: +* **Method 2: environment variable**. Set the following environment variable: - COMPLUS_DisableNativeImageLoadList=assembly_one;assembly_two;assembly_three + COMPLUS_useLegacyJit=1 -* **Method 2**. In the registry, create either of the following subkeys: + This method affects any environment that inherits this environment variable. This might be just a single + console session, or it might affect the entire machine, if you set the environment variable globally. + +* **Method 3: registry**. Using Registry Editor (regedit.exe), find either of the following subkeys: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework HKEY_CURRENT_USER\SOFTWARE\Microsoft\.NETFramework - Then, specify the following: + Then, add the following: - Key name: DisableNativeImageLoadList - Type: REG_SZ - Value: assembly_one;assembly_two;assembly_three + Value name: useLegacyJit + Type: DWORD (32-bit) Value (also called REG_WORD) + Value: 1 - **Note** This is a semicolon-delimited or space-delimited list of simple - assembly names (no public key token, no architecture, and so on). This list - does not contain the `.dll` file name extension. In the examples in this - method and the next method, `assembly_one` is the simple name for an assembly - that is named `assembly_one.dll`. +Disable loading NGEN Images +=========================== -* **Method 3**. Add the following text to the `.exe.config` file. Create +If you encounter a bug when you use the new JIT, and if the bug manifests itself +in an NGEN image, use any of the following methods to force certain named +assemblies to be recompiled by the JIT and not use the existing native images. You +will generally pair one of these methods with the same numbered method above to get an NGEN image +to fall back to JIT compilation, and, in addition, do that JIT compilation with the legacy +JIT. + +In the examples below, we wish to prevent using the NGEN images of three assemblies, named +`assembly_one.dll`, `assembly_two.dll`, and `assembly_three.dll`. We specify the assemblies +using simple assembly names (no public key token, no architecture, and so on). The assembly names +are specified without using the `.dll` file name extension. + +* **Method 1: : per-application config file**. Add the following text to the `.exe.config` file. Create the indicated sections if they do not already exist. - **Note** In this file name, `` represents the actual name of the - application. + **Note** In this file name, `` represents the actual name of the application. - - - - + + + + + +* **Method 2: environment variable**. Set the following environment variable: + + COMPLUS_DisableNativeImageLoadList=assembly_one;assembly_two;assembly_three + + **Note** This is a semicolon-delimited list of simple assembly names. + +* **Method 3: registry**. Using Registry Editor (regedit.exe), find either of the following subkeys: + + HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework + HKEY_CURRENT_USER\SOFTWARE\Microsoft\.NETFramework + + Then, add the following value: + + Value name: DisableNativeImageLoadList + Type: String Value (also known as REG_SZ) + Value: assembly_one;assembly_two;assembly_three + + **Note** This is a semicolon-delimited list of simple assembly names. + Disable Tail Call Optimization ============================== You can disable tail call optimization in RyuJIT with the following instructions. -* In the registry, create either of the following subkeys: +* Using Registry Editor (regedit.exe), find either of the following subkeys: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework HKEY_CURRENT_USER\SOFTWARE\Microsoft\.NETFramework - Then, specify the following: + Then, add the following value: + + Value name: TailCallOpt + Type: String Value (also known as REG_SZ) + Value: "0" (Double quotes are not required while entering the string value in Registry Editor) + +Disabling optimization of a function +==================================== + +You can selectively disable JIT optimization of a particular function by annotating that function with `MethodImplOptions.NoOptimization`. For example, in C#: + + using System.Runtime.CompilerServices; + ... + [MethodImplAttribute(MethodImplOptions.NoOptimization)] + static int add(int a, int b) + { + return a + b; + } + +In this case, the annotated `add` function will not be optimized. You can see more detail about `MethodImplAttribute` +[here](https://msdn.microsoft.com/en-us/library/system.runtime.compilerservices.methodimplattribute(v=vs.110).aspx). + +Note that this method applies to all .NET JIT compilers. + +Additional Notes +================ + +If you are examining the registry, you might find the following registry value: + + HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\UseRyuJIT - Key name: TailCallOpt - Type: REG_SZ - Value: "0" (Double quotes are not required while entering in Registry editor) +We urge you not to change this value. Instead, use the RyuJIT fallback mechanisms detailed above in this document. From 60cee97567832aa7d808a1a1d6836e920c1d9c3e Mon Sep 17 00:00:00 2001 From: "Jesse M. Holmes" Date: Wed, 29 Jul 2015 15:31:07 -0400 Subject: [PATCH 209/872] Updated non-github links if sites have moved. --- dotnet-developer-projects.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 3dff47506..689122ded 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -7,7 +7,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * .NET Implementations * [.NET Core](https://github.com/dotnet/core) - Core .NET Framework * [C# Native](https://csnative.codeplex.com) - Compiles C# to native. - * [Cosmos](http://cosmos.codeplex.com/) - C# Open Source Managed Operating System, an operating system "construction kit". + * [Cosmos](https://github.com/CosmosOS/Cosmos) - C# Open Source Managed Operating System, an operating system "construction kit". * [Fling OS](http://git.flingos.co.uk/fling-os/src) - [C# Operating System](http://www.flingos.co.uk/) designed for people to learn low-level development from. * [Mono](https://github.com/mono/mono) - Cross-platform implementation of .NET Framework. * [MOSA Project](https://github.com/mosa/MOSA-Project/) - Managed Operating System Alliance Project - C# Operating System. @@ -46,7 +46,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * Web CMS * [DNN (formerly DotNetNuke)](https://dotnetnuke.codeplex.com/) - Web content management platform (CMS). * [N2CMS](https://github.com/n2cms/n2cms) - Open source, lightweight, code-first CMS able to seamlessly integrate into any MVC project. - * [Orchard](http://orchard.codeplex.com/) - A community-focused Content Management System built on the ASP.NET MVC platform. + * [Orchard](https://github.com/OrchardCMS/Orchard) - A community-focused Content Management System built on the ASP.NET MVC platform. * [Piranha CMS](https://github.com/PiranhaCMS/Piranha) - Lightweight CMS library for new and existing ASP.NET MVC & WebPages applications. * [Suave](https://github.com/SuaveIO/suave) A lightweight web server and a set of combinators to manipulate route flow and task composition. * [Umbraco](https://github.com/umbraco/Umbraco-CMS/) - Web content management platform (CMS). @@ -80,7 +80,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [Brighter](https://github.com/iancooper/Paramore) - A Command Dispatcher and Command Processor library with support for Work or Task Queues over different MoM implementations such as RabbitMQ * [Cecil](https://github.com/jbevain/cecil) - A popular library to read, modify and write .NET binaries. * [Cimbalino Toolkit](https://github.com/Cimbalino/Cimbalino-Toolkit) - A set of useful and powerful tools that will help you build your Windows Platform applications. - * [Coding4Fun Toolkit](http://coding4fun.codeplex.com/) + * [Coding4Fun Toolkit](https://github.com/Coding4FunProjects/Coding4FunToolkit) * [ColoredConsole](https://github.com/colored-console/colored-console) - Add some color to your console. * [ColorSharp](https://github.com/Litipk/ColorSharp) - Library to handle color spaces and light spectrums. * [ComparerExtensions](https://github.com/jehugaleahsa/comparerextensions) - Build IComparer and IEqualityComparer objects using natural language syntax. @@ -106,10 +106,10 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [MahApps.Metro](https://github.com/MahApps/MahApps.Metro) - A toolkit for creating metro-style WPF applications. * [Math.NET Numerics](https://github.com/mathnet/mathnet-numerics) - Provides methods and algorithms for numerical computations in science, engineering and every day use. * [Mathos Core Libary](http://mathos.codeplex.com/) - A library with algorithms for numerical calcultations in finance, statistics, pattern recognition, and more. - * [Mathos Parser](http://mathosparser.codeplex.com/) - A simple parser for mathematical expressions before and at runtime. + * [Mathos Parser](https://github.com/MathosProject/Mathos-Project) - A simple parser for mathematical expressions before and at runtime. * [Mjolnir](https://github.com/hudl/Mjolnir) - [Hystrix](https://github.com/Netflix/Hystrix)-inspired fault tolerance with circuit breakers and thread pools. * [MoreLINQ](https://code.google.com/p/morelinq/) - LINQ to Objects is missing a few desirable features. This project will enhance LINQ to Objects with extra methods, in a manner which keeps to the spirit of LINQ. - * [NAudio](http://naudio.codeplex.com/) - An open source .NET audio and MIDI library. + * [NAudio](https://github.com/naudio/NAudio) - An open source .NET audio and MIDI library. * [NetTopologySuite](https://github.com/NetTopologySuite) - A .NET port of the JTS Topology Suite. * [NHunspell](http://sourceforge.net/projects/nhunspell/) - Spell Checker, Hyphenation an Theasaurus * [NModbus4](https://github.com/Maxwe11/NModbus4) - Implementation of the Modbus protocol @@ -233,7 +233,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [Ninject for Desktop](https://github.com/ninject/ninject) - Dependency injector for .NET * [Ninject for Portable Class Libraries, Universal apps and Xamarin](https://github.com/onovotny/ninject) * [QuickInject](https://github.com/isabgol/QuickInject) - QuickInject is a Unity 3.5 based IoC container that aims to give the Unity container a performance advantage in basic scenarios. - * [Simple Injector](https://simpleinjector.codeplex.com/) - Simple Injector is an easy-to-use Dependency Injection library for .NET 4+ that supports Silverlight 4+, Windows Phone 8, Windows 8 including Universal apps and Mono. + * [Simple Injector](https://github.com/simpleinjector/SimpleInjector/) - Simple Injector is an easy-to-use Dependency Injection library for .NET 4+ that supports Silverlight 4+, Windows Phone 8, Windows 8 including Universal apps and Mono. * [Spring.NET](https://github.com/spring-projects/spring-net) - Spring.NET is an open source application framework that makes building enterprise .NET applications easier. * [StructureMap](https://github.com/structuremap/structuremap) - StructureMap is a Dependency Injection / Inversion of Control tool for .Net that can be used to improve the architectural qualities of an object oriented system by reducing the mechanical costs of good design techniques. * [StyleMVVM](https://stylemvvm.codeplex.com/) - Style MVVM is a toolkit designed for the Windows Store platform around the idea of being light weight and fast. @@ -242,7 +242,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * Data Access * [Dapper](https://github.com/StackExchange/dapper-dot-net) - Dapper is a single file you can drop in to your project that will extend your IDbConnection interface. - * [Eggado](https://code.google.com/p/eggado/) - Eggado takes generics, lambdas, expression trees, dynamic methods and DLR and uses them to breathe new life into data access using good old ADO.NET. It's for folks who can live with a SQL dialect. + * [Eggado](https://bitbucket.org/raboof/eggado) - Eggado takes generics, lambdas, expression trees, dynamic methods and DLR and uses them to breathe new life into data access using good old ADO.NET. It's for folks who can live with a SQL dialect. * [King.Mapper](https://github.com/jefking/King.Mapper) - High performance model mapping. * [linq2db](https://github.com/linq2db/linq2db/) - Lightweight ORM and LINQ provider with support for various databases including MS SQL, PostgreSQL, Oracle and MySQL * [NHibernate](https://github.com/nhibernate) - Object Relational Mapper @@ -252,7 +252,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [Neyro.Data](https://github.com/neyromant/Neyro.Data) - Tiny, simple and fast ORM. * [StackExchange.Redis](https://github.com/StackExchange/StackExchange.Redis) * [SQL LocalDB Wrapper](https://github.com/martincostello/sqllocaldb) - SQL LocalDB Wrapper is an assembly providing interop with the SQL LocalDB native API from managed code using .NET APIs. - * [LINQ2DynamoDB](http://linq2dynamodb.codeplex.com) - A type-safe data context for AWS DynamoDB with LINQ, in-memory caching and OData support. + * [LINQ2DynamoDB](https://github.com/scale-tone/linq2dynamodb) - A type-safe data context for AWS DynamoDB with LINQ, in-memory caching and OData support. * Games * [Duality](https://github.com/AdamsLair/duality) - An Open Source 2D Game Engine + Visual Editor written entirely in C#. @@ -278,7 +278,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * Deployment * [DropkicK](https://github.com/chucknorris/dropkick/) - A fluent deployment library for Windows applications - * [RoundHouse](https://code.google.com/p/roundhouse/) - RoundhousE is a Database Migration Utility for .NET using sql files and versioning based on source control + * [RoundHouse](https://github.com/chucknorris/roundhouse) - RoundhousE is a Database Migration Utility for .NET using sql files and versioning based on source control * Service Bus * [King.Service.ServiceBus](https://github.com/jefking/King.Service.ServiceBus) - Task scheduling for Azure and Windows Servers: Service Bus. From e9d28387e37d37cb6ce8c558aeecaffd47ef5de6 Mon Sep 17 00:00:00 2001 From: Bruce Forstall Date: Wed, 29 Jul 2015 13:26:48 -0700 Subject: [PATCH 210/872] Add ZapDisable description Also, update some of the text, and fix an issue with the useLegacyJit config file syntax. --- docs/testing-with-ryujit.md | 65 ++++++++++++++++++++++++++++++------- 1 file changed, 53 insertions(+), 12 deletions(-) diff --git a/docs/testing-with-ryujit.md b/docs/testing-with-ryujit.md index f775be875..73a13c2dd 100644 --- a/docs/testing-with-ryujit.md +++ b/docs/testing-with-ryujit.md @@ -14,6 +14,8 @@ in case problems occur. **Note** The registry methods below use either `HKEY_LOCAL_MACHINE` or `HKEY_CURRENT_USER`. Using `HKEY_LOCAL_MACHINE` makes the setting applicable to the entire machine and all users. Using `HKEY_CURRENT_USER` makes the setting applicable to just the current user. If using the registry methods, the latter is generally preferable. +In general, you should choose the least impactful option. Choose a per-application setting if possible, and only move to a per-user or per-machine setting if necessary. Note that per-application settings are not available for ASP.NET applications. + Disable RyuJIT ============== @@ -29,7 +31,7 @@ existing NGEN images that have been compiled by the new JIT continue to be used. - + @@ -58,17 +60,9 @@ existing NGEN images that have been compiled by the new JIT continue to be used. Disable loading NGEN Images =========================== -If you encounter a bug when you use the new JIT, and if the bug manifests itself -in an NGEN image, use any of the following methods to force certain named -assemblies to be recompiled by the JIT and not use the existing native images. You -will generally pair one of these methods with the same numbered method above to get an NGEN image -to fall back to JIT compilation, and, in addition, do that JIT compilation with the legacy -JIT. +If you encounter a bug when you use the new JIT, and if the bug manifests itself in a function in an NGEN native image (see [here](https://msdn.microsoft.com/en-us/library/6t9t5wcf(v=vs.110).aspx) for details), use any of the following methods to force certain named assemblies to be recompiled by the JIT and not use the existing native images. You will generally pair one of these methods with the same numbered method above to get an NGEN image to fall back to JIT compilation, and, in addition, do that JIT compilation with the legacy JIT. -In the examples below, we wish to prevent using the NGEN images of three assemblies, named -`assembly_one.dll`, `assembly_two.dll`, and `assembly_three.dll`. We specify the assemblies -using simple assembly names (no public key token, no architecture, and so on). The assembly names -are specified without using the `.dll` file name extension. +In the examples below, we wish to prevent using the NGEN images of three assemblies, named `assembly_one.dll`, `assembly_two.dll`, and `assembly_three.dll`. We specify the assemblies using simple assembly names (no public key token, no architecture, and so on). The assembly names are specified without using the `.dll` file name extension. * **Method 1: : per-application config file**. Add the following text to the `.exe.config` file. Create the indicated sections if they do not already exist. @@ -103,7 +97,52 @@ are specified without using the `.dll` file name extension. Value: assembly_one;assembly_two;assembly_three **Note** This is a semicolon-delimited list of simple assembly names. + +Disabling the use of all NGEN images +==================================== + +To prevent any NGEN native image from being used, and force all code to be compiled with the JIT compiler, you can use the ZapDisable configuration variable, as follows. You might choose to do this as an experiment, to see if any NGEN native image contains generated code that is inducing a bug in your application. Generally, if an NGEN native image does have a problem, and the identity of that native image can be determined, using one of the `DisableNativeImageLoadList` mechanisms described above is preferable. + +**Note** This setting applies to both the 32-bit and 64-bit JIT. Thus, setting this globally will affect all 32-bit .NET applications as well. This is particularly true for **Method 2: environment variable**. + +**Note 2** NGEN provides significant performance improvements to .NET applications. Disabling the use of NGEN will cause the perfomance of .NET applications to be significantly worse. + +* **Method 1: per-application config file**. Add the following text to the `.exe.config` file. Create + the indicated sections if they do not already exist. + + **Note** In this file name, `` represents the actual name of the + application. So, for example, for `MyApp.exe`, you will have `MyApp.exe.config`. + + + + + + + + Note that Method 1 does not apply to ASP.NET websites; you cannot use this method in web.config files. + This method is preferable as it is scoped to just one application. + +* **Method 2: environment variable**. Set the following environment variable: + + COMPLUS_ZapDisable=1 + + This method affects any environment that inherits this environment variable. This might be just a single + console session, or it might affect the entire machine, if you set the environment variable globally. + +* **Method 3: registry**. Using Registry Editor (regedit.exe), find either of the following subkeys: + + HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework + HKEY_CURRENT_USER\SOFTWARE\Microsoft\.NETFramework + + Then, add the following: + + Value name: ZapDisable + Type: DWORD (32-bit) Value (also called REG_WORD) + Value: 1 + + **Note** Windows has both 32-bit and 64-bit registry sections. The addresses shown above use the 64-bit registry path, so are appropriate for troubleshooting RyuJIT and not affecting 32-bit .NET applications. On a 64-bit machine, the 32-bit registry path for the `HKEY_LOCAL_MACHINE` case is `HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\.NETFramework`. + Disable Tail Call Optimization ============================== @@ -123,7 +162,7 @@ You can disable tail call optimization in RyuJIT with the following instructions Disabling optimization of a function ==================================== -You can selectively disable JIT optimization of a particular function by annotating that function with `MethodImplOptions.NoOptimization`. For example, in C#: +If you determine that the JIT is incorrectly optimizing a particular function, you can selectively disable JIT optimization for that function by annotating that function with `MethodImplOptions.NoOptimization`. For example, in C#: using System.Runtime.CompilerServices; ... @@ -136,6 +175,8 @@ You can selectively disable JIT optimization of a particular function by annotat In this case, the annotated `add` function will not be optimized. You can see more detail about `MethodImplAttribute` [here](https://msdn.microsoft.com/en-us/library/system.runtime.compilerservices.methodimplattribute(v=vs.110).aspx). +This is only effective in solving a code generation problem if the incorrect code being generated by the JIT is due to optimization, as opposed to being due to unoptimized code generation. + Note that this method applies to all .NET JIT compilers. Additional Notes From 9f445637345bef5a95619fe8d96b1e173c765040 Mon Sep 17 00:00:00 2001 From: Bruce Forstall Date: Wed, 29 Jul 2015 16:41:18 -0700 Subject: [PATCH 211/872] Take feedback, add section on COMPLUS_JitMinOpts --- docs/testing-with-ryujit.md | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/docs/testing-with-ryujit.md b/docs/testing-with-ryujit.md index 73a13c2dd..39770bbf4 100644 --- a/docs/testing-with-ryujit.md +++ b/docs/testing-with-ryujit.md @@ -105,7 +105,7 @@ To prevent any NGEN native image from being used, and force all code to be compi **Note** This setting applies to both the 32-bit and 64-bit JIT. Thus, setting this globally will affect all 32-bit .NET applications as well. This is particularly true for **Method 2: environment variable**. -**Note 2** NGEN provides significant performance improvements to .NET applications. Disabling the use of NGEN will cause the perfomance of .NET applications to be significantly worse. +**Note 2** NGEN provides significant performance improvements to .NET applications. Disabling the use of NGEN may result in significantly slower application startup times. * **Method 1: per-application config file**. Add the following text to the `.exe.config` file. Create the indicated sections if they do not already exist. @@ -177,7 +177,20 @@ In this case, the annotated `add` function will not be optimized. You can see mo This is only effective in solving a code generation problem if the incorrect code being generated by the JIT is due to optimization, as opposed to being due to unoptimized code generation. -Note that this method applies to all .NET JIT compilers. +**Note** This method applies to all .NET JIT compilers. + +Disabling optimization of all functions +======================================= + +While troubleshooting, it might be useful to determine if *any* JIT optimization is causing problems. Instead of using the above `MethodImplAttribute` method above, you can set a single environment variable to disable all JIT optimization. Set this variable: + + COMPLUS_JitMinOpts=1 + +and run your application. + +Note that when you run your application under the Visual Studio debugger, it disables JIT optimization by default, to improve the debugging experience. You can read about that [here](https://msdn.microsoft.com/en-us/library/ms241594.aspx). + +**Note** This method applies to all .NET JIT compilers. Additional Notes ================ From e4b88f576dd4a1da926bce9363e7dc773919e72c Mon Sep 17 00:00:00 2001 From: Bruce Forstall Date: Thu, 30 Jul 2015 13:38:00 -0700 Subject: [PATCH 212/872] Two updates to RyuJIT troubleshooting 1. Add comments about NGEN and the TailCallOpt registry switch. 2. Add comments on using REG.EXE to set registry variables from the command-line. --- docs/testing-with-ryujit.md | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/docs/testing-with-ryujit.md b/docs/testing-with-ryujit.md index 39770bbf4..57ceaea0f 100644 --- a/docs/testing-with-ryujit.md +++ b/docs/testing-with-ryujit.md @@ -57,6 +57,12 @@ existing NGEN images that have been compiled by the new JIT continue to be used. Type: DWORD (32-bit) Value (also called REG_WORD) Value: 1 + You can use the Windows REG.EXE tool to add this value from a command-line or scripting environment. For example: + + reg add HKLM\SOFTWARE\Microsoft\.NETFramework /v useLegacyJit /t REG_DWORD /d 1 + + In this case, `HKLM` is used instead of `HKEY_LOCAL_MACHINE`. Use `reg add /?` to see help on this syntax. + Disable loading NGEN Images =========================== @@ -159,8 +165,10 @@ You can disable tail call optimization in RyuJIT with the following instructions Type: String Value (also known as REG_SZ) Value: "0" (Double quotes are not required while entering the string value in Registry Editor) -Disabling optimization of a function -==================================== +**Note** This will disable tail call optimization of a function when the JIT is invoked to compile it. Note that if your application is NGEN compiled, the JIT is not invoked after the NGEN compilation has completed. To affect the code compiled for NGEN, you must first remove your application from the NGEN native image cache using `ngen uninstall MyApp`. Then, set the registry key shown here. Finally, optionally, you can re-NGEN your app using `ngen install MyApp.exe`. + +Disabling all optimization of a function +======================================== If you determine that the JIT is incorrectly optimizing a particular function, you can selectively disable JIT optimization for that function by annotating that function with `MethodImplOptions.NoOptimization`. For example, in C#: From 1e05c5973a42112841d1d0d17e673e60b2ebf838 Mon Sep 17 00:00:00 2001 From: Richard Lander Date: Sun, 2 Aug 2015 10:21:49 -0700 Subject: [PATCH 213/872] Add .NET Framework 4.6 release information --- docs/releases/net46/dotnet46-api-changes.html | 1222 +++++++++++++++++ docs/releases/net46/dotnet46-api-changes.md | 1218 ++++++++++++++++ docs/releases/net46/dotnet46-changes.md | 293 ++++ 3 files changed, 2733 insertions(+) create mode 100644 docs/releases/net46/dotnet46-api-changes.html create mode 100644 docs/releases/net46/dotnet46-api-changes.md create mode 100644 docs/releases/net46/dotnet46-changes.md diff --git a/docs/releases/net46/dotnet46-api-changes.html b/docs/releases/net46/dotnet46-api-changes.html new file mode 100644 index 000000000..4ccf111fb --- /dev/null +++ b/docs/releases/net46/dotnet46-api-changes.html @@ -0,0 +1,1222 @@ + + + + + +
C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.2
+C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6
+namespace Microsoft.Win32 {
+  public sealed class RegistryKey : MarshalByRefObject, IDisposable {
+    public RegistryKey CreateSubKey(string subkey, bool writable);
+    public RegistryKey CreateSubKey(string subkey, bool writable, RegistryOptions options);
+    public RegistryKey OpenSubKey(string name, RegistryRights rights);
+  }
+}
+namespace Microsoft.Win32.SafeHandles {
+  public sealed class SafeAccessTokenHandle : SafeHandle {
+    public SafeAccessTokenHandle(IntPtr handle);
+    public static SafeAccessTokenHandle InvalidHandle { get; }
+    public override bool IsInvalid { get; }
+    protected override bool ReleaseHandle();
+  }
+  public sealed class SafeProcessHandle : SafeHandleZeroOrMinusOneIsInvalid {
+    public SafeProcessHandle(IntPtr existingHandle, bool ownsHandle);
+    protected override bool ReleaseHandle();
+  }
+  public sealed class SafeX509ChainHandle : SafeHandleZeroOrMinusOneIsInvalid {
+    protected override bool ReleaseHandle();
+  }
+}
+namespace System {
+  public static class AppContext {
+    public static string BaseDirectory { get; }
+    public static void SetSwitch(string switchName, bool isEnabled);
+    public static bool TryGetSwitch(string switchName, out bool isEnabled);
+  }
+  public abstract class Array : ICloneable, ICollection, IEnumerable, IList, IStructuralComparable, IStructuralEquatable {
+    public static T[] Empty<T>();
+  }
+  public static class Buffer {
+    [MethodImpl(AggressiveInlining)]public unsafe static void MemoryCopy(void* source, void* destination, long destinationSizeInBytes, long sourceBytesToCopy);
+    [MethodImpl(AggressiveInlining)]public unsafe static void MemoryCopy(void* source, void* destination, ulong destinationSizeInBytes, ulong sourceBytesToCopy);
+  }
+  public static class Console {
+    [MethodImpl(NoInlining)]public static int Read();
+    [MethodImpl(NoInlining)]public static string ReadLine();
+    [MethodImpl(NoInlining)]public static void Write(bool value);
+    [MethodImpl(NoInlining)]public static void Write(char value);
+    [MethodImpl(NoInlining)]public static void Write(char[] buffer);
+    [MethodImpl(NoInlining)]public static void Write(char[] buffer, int index, int count);
+    [MethodImpl(NoInlining)]public static void Write(decimal value);
+    [MethodImpl(NoInlining)]public static void Write(double value);
+    [MethodImpl(NoInlining)]public static void Write(int value);
+    [MethodImpl(NoInlining)]public static void Write(long value);
+    [MethodImpl(NoInlining)]public static void Write(object value);
+    [MethodImpl(NoInlining)]public static void Write(float value);
+    [MethodImpl(NoInlining)]public static void Write(string value);
+    [MethodImpl(NoInlining)]public static void Write(string format, object arg0);
+    [MethodImpl(NoInlining)]public static void Write(string format, object arg0, object arg1);
+    [MethodImpl(NoInlining)]public static void Write(string format, object arg0, object arg1, object arg2);
+    [MethodImpl(NoInlining)]public static void Write(string format, object arg0, object arg1, object arg2, object arg3, __arglist);
+    [MethodImpl(NoInlining)]public static void Write(string format, params object[] arg);
+    [MethodImpl(NoInlining)]public static void Write(uint value);
+    [MethodImpl(NoInlining)]public static void Write(ulong value);
+    [MethodImpl(NoInlining)]public static void WriteLine();
+    [MethodImpl(NoInlining)]public static void WriteLine(bool value);
+    [MethodImpl(NoInlining)]public static void WriteLine(char value);
+    [MethodImpl(NoInlining)]public static void WriteLine(char[] buffer);
+    [MethodImpl(NoInlining)]public static void WriteLine(char[] buffer, int index, int count);
+    [MethodImpl(NoInlining)]public static void WriteLine(decimal value);
+    [MethodImpl(NoInlining)]public static void WriteLine(double value);
+    [MethodImpl(NoInlining)]public static void WriteLine(int value);
+    [MethodImpl(NoInlining)]public static void WriteLine(long value);
+    [MethodImpl(NoInlining)]public static void WriteLine(object value);
+    [MethodImpl(NoInlining)]public static void WriteLine(float value);
+    [MethodImpl(NoInlining)]public static void WriteLine(string value);
+    [MethodImpl(NoInlining)]public static void WriteLine(string format, object arg0);
+    [MethodImpl(NoInlining)]public static void WriteLine(string format, object arg0, object arg1);
+    [MethodImpl(NoInlining)]public static void WriteLine(string format, object arg0, object arg1, object arg2);
+    [MethodImpl(NoInlining)]public static void WriteLine(string format, object arg0, object arg1, object arg2, object arg3, __arglist);
+    [MethodImpl(NoInlining)]public static void WriteLine(string format, params object[] arg);
+    [MethodImpl(NoInlining)]public static void WriteLine(uint value);
+    [MethodImpl(NoInlining)]public static void WriteLine(ulong value);
+  }
+  public struct DateTimeOffset : IComparable, IComparable<DateTimeOffset>, IDeserializationCallback, IEquatable<DateTimeOffset>, IFormattable, ISerializable {
+    public static DateTimeOffset FromUnixTimeMilliseconds(long milliseconds);
+    public static DateTimeOffset FromUnixTimeSeconds(long seconds);
+    public long ToUnixTimeMilliseconds();
+    public long ToUnixTimeSeconds();
+  }
+  public abstract class FormattableString : IFormattable {
+    protected FormattableString();
+    public abstract int ArgumentCount { get; }
+    public abstract string Format { get; }
+    public abstract object GetArgument(int index);
+    public abstract object[] GetArguments();
+    public static string Invariant(FormattableString formattable);
+    string System.IFormattable.ToString(string ignored, IFormatProvider formatProvider);
+    public override string ToString();
+    public abstract string ToString(IFormatProvider formatProvider);
+  }
+  public static class GC {
+    public static void Collect(int generation, GCCollectionMode mode, bool blocking, bool compacting);
+    public static void EndNoGCRegion();
+    public static bool TryStartNoGCRegion(long totalSize);
+    public static bool TryStartNoGCRegion(long totalSize, bool disallowFullBlockingGC);
+    public static bool TryStartNoGCRegion(long totalSize, long lohSize);
+    public static bool TryStartNoGCRegion(long totalSize, long lohSize, bool disallowFullBlockingGC);
+  }
+  public sealed class String : ICloneable, IComparable, IComparable<string>, IConvertible, IEnumerable, IEnumerable<char>, IEquatable<string> {
+    public static string Format(IFormatProvider provider, string format, object arg0);
+    public static string Format(IFormatProvider provider, string format, object arg0, object arg1);
+    public static string Format(IFormatProvider provider, string format, object arg0, object arg1, object arg2);
+  }
+  public class Uri : ISerializable {
+    public string IdnHost { get; }
+  }
+}
+namespace System.Collections.Concurrent {
+  public class BlockingCollection<T> : ICollection, IDisposable, IEnumerable, IEnumerable<T>, IReadOnlyCollection<T> {
+  }
+  public class ConcurrentBag<T> : ICollection, IEnumerable, IEnumerable<T>, IProducerConsumerCollection<T>, IReadOnlyCollection<T> {
+  }
+  public class ConcurrentDictionary<TKey, TValue> : ICollection, ICollection<KeyValuePair<TKey, TValue>>, IDictionary, IDictionary<TKey, TValue>, IEnumerable, IEnumerable<KeyValuePair<TKey, TValue>>, IReadOnlyCollection<KeyValuePair<TKey, TValue>>, IReadOnlyDictionary<TKey, TValue> {
+    IEnumerable<TKey> System.Collections.Generic.IReadOnlyDictionary<TKey,TValue>.Keys { get; }
+    IEnumerable<TValue> System.Collections.Generic.IReadOnlyDictionary<TKey,TValue>.Values { get; }
+  }
+  public class ConcurrentQueue<T> : ICollection, IEnumerable, IEnumerable<T>, IProducerConsumerCollection<T>, IReadOnlyCollection<T> {
+  }
+  public class ConcurrentStack<T> : ICollection, IEnumerable, IEnumerable<T>, IProducerConsumerCollection<T>, IReadOnlyCollection<T> {
+  }
+}
+namespace System.Collections.Generic {
+  public class HashSet<T> : ICollection<T>, IDeserializationCallback, IEnumerable, IEnumerable<T>, IReadOnlyCollection<T>, ISerializable, ISet<T> {
+  }
+  public class LinkedList<T> : ICollection, ICollection<T>, IDeserializationCallback, IEnumerable, IEnumerable<T>, IReadOnlyCollection<T>, ISerializable {
+  }
+  public class Queue<T> : ICollection, IEnumerable, IEnumerable<T>, IReadOnlyCollection<T> {
+  }
+  public class SortedDictionary<TKey, TValue> : ICollection, ICollection<KeyValuePair<TKey, TValue>>, IDictionary, IDictionary<TKey, TValue>, IEnumerable, IEnumerable<KeyValuePair<TKey, TValue>>, IReadOnlyCollection<KeyValuePair<TKey, TValue>>, IReadOnlyDictionary<TKey, TValue> {
+    IEnumerable<TKey> System.Collections.Generic.IReadOnlyDictionary<TKey,TValue>.Keys { get; }
+    IEnumerable<TValue> System.Collections.Generic.IReadOnlyDictionary<TKey,TValue>.Values { get; }
+    public sealed class KeyCollection : ICollection, ICollection<TKey>, IEnumerable, IEnumerable<TKey>, IReadOnlyCollection<TKey> {
+    }
+    public sealed class ValueCollection : ICollection, ICollection<TValue>, IEnumerable, IEnumerable<TValue>, IReadOnlyCollection<TValue> {
+    }
+  }
+  public class SortedList<TKey, TValue> : ICollection, ICollection<KeyValuePair<TKey, TValue>>, IDictionary, IDictionary<TKey, TValue>, IEnumerable, IEnumerable<KeyValuePair<TKey, TValue>>, IReadOnlyCollection<KeyValuePair<TKey, TValue>>, IReadOnlyDictionary<TKey, TValue> {
+    IEnumerable<TKey> System.Collections.Generic.IReadOnlyDictionary<TKey,TValue>.Keys { get; }
+    IEnumerable<TValue> System.Collections.Generic.IReadOnlyDictionary<TKey,TValue>.Values { get; }
+  }
+  public class SortedSet<T> : ICollection, ICollection<T>, IDeserializationCallback, IEnumerable, IEnumerable<T>, IReadOnlyCollection<T>, ISerializable, ISet<T> {
+  }
+  public class Stack<T> : ICollection, IEnumerable, IEnumerable<T>, IReadOnlyCollection<T> {
+  }
+}
+namespace System.Configuration {
+  public sealed class RsaProtectedConfigurationProvider : ProtectedConfigurationProvider {
+    public bool UseFIPS { get; }
+  }
+}
+namespace System.Data.Common {
+  public class DbEnumerator : IEnumerator {
+    public DbEnumerator(DbDataReader reader);
+    public DbEnumerator(DbDataReader reader, bool closeReader);
+  }
+}
+namespace System.Data.SqlClient {
+  public enum SqlAuthenticationMethod {
+    ActiveDirectoryIntegrated = 3,
+    ActiveDirectoryPassword = 2,
+    NotSpecified = 0,
+    SqlPassword = 1,
+  }
+  public sealed class SqlBulkCopy : IDisposable {
+    public void WriteToServer(DbDataReader reader);
+    public Task WriteToServerAsync(DbDataReader reader);
+    public Task WriteToServerAsync(DbDataReader reader, CancellationToken cancellationToken);
+  }
+  public sealed class SqlColumnEncryptionCertificateStoreProvider : SqlColumnEncryptionKeyStoreProvider {
+    public SqlColumnEncryptionCertificateStoreProvider();
+    public override byte[] DecryptColumnEncryptionKey(string masterKeyPath, string encryptionAlgorithm, byte[] encryptedColumnEncryptionKey);
+    public override byte[] EncryptColumnEncryptionKey(string masterKeyPath, string encryptionAlgorithm, byte[] columnEncryptionKey);
+  }
+  public abstract class SqlColumnEncryptionKeyStoreProvider {
+    protected SqlColumnEncryptionKeyStoreProvider();
+    public abstract byte[] DecryptColumnEncryptionKey(string masterKeyPath, string encryptionAlgorithm, byte[] encryptedColumnEncryptionKey);
+    public abstract byte[] EncryptColumnEncryptionKey(string masterKeyPath, string encryptionAlgorithm, byte[] columnEncryptionKey);
+  }
+  public sealed class SqlCommand : DbCommand, ICloneable {
+    public SqlCommand(string cmdText, SqlConnection connection, SqlTransaction transaction, SqlCommandColumnEncryptionSetting columnEncryptionSetting);
+    public SqlCommandColumnEncryptionSetting ColumnEncryptionSetting { get; }
+  }
+  public enum SqlCommandColumnEncryptionSetting {
+    Disabled = 3,
+    Enabled = 1,
+    ResultSetOnly = 2,
+    UseConnectionSetting = 0,
+  }
+  public sealed class SqlConnection : DbConnection, ICloneable {
+    public string AccessToken { get; set; }
+    public static IDictionary<string, IList<string>> ColumnEncryptionTrustedMasterKeyPaths { get; }
+    public static void RegisterColumnEncryptionKeyStoreProviders(IDictionary<string, SqlColumnEncryptionKeyStoreProvider> customProviders);
+  }
+  public enum SqlConnectionColumnEncryptionSetting {
+    Disabled = 0,
+    Enabled = 1,
+  }
+  public sealed class SqlConnectionStringBuilder : DbConnectionStringBuilder {
+    public SqlAuthenticationMethod Authentication { get; set; }
+    public SqlConnectionColumnEncryptionSetting ColumnEncryptionSetting { get; set; }
+  }
+  public sealed class SqlParameter : DbParameter, ICloneable, IDataParameter, IDbDataParameter {
+    public bool ForceColumnEncryption { get; set; }
+  }
+}
+namespace System.Diagnostics {
+  public sealed class Debugger {
+    public static bool IsAttached { [MethodImpl(InternalCall)]get; }
+  }
+  public class Process : Component {
+    public SafeProcessHandle SafeHandle { get; }
+  }
+  public sealed class ProcessStartInfo {
+    public IDictionary<string, string> Environment { get; }
+  }
+}
+namespace System.Diagnostics.Tracing {
+  public enum EventActivityOptions {
+    Detachable = 8,
+    Disable = 2,
+    None = 0,
+    Recursive = 4,
+  }
+  public sealed class EventAttribute : Attribute {
+    public EventActivityOptions ActivityOptions { get; set; }
+    public EventChannel Channel { get; set; }
+    public EventTags Tags { get; set; }
+  }
+  public enum EventChannel : byte {
+    Admin = (byte)16,
+    Analytic = (byte)18,
+    Debug = (byte)19,
+    None = (byte)0,
+    Operational = (byte)17,
+  }
+  public class EventDataAttribute : Attribute {
+    public EventDataAttribute();
+    public string Name { get; set; }
+  }
+  public class EventFieldAttribute : Attribute {
+    public EventFieldAttribute();
+    public EventFieldFormat Format { get; set; }
+    public EventFieldTags Tags { get; set; }
+  }
+  public enum EventFieldFormat {
+    Boolean = 3,
+    Default = 0,
+    Hexadecimal = 4,
+    HResult = 15,
+    Json = 12,
+    String = 2,
+    Xml = 11,
+  }
+  public enum EventFieldTags {
+    None = 0,
+  }
+  public class EventIgnoreAttribute : Attribute {
+    public EventIgnoreAttribute();
+  }
+  public enum EventKeywords : long {
+    All = (long)-1,
+    MicrosoftTelemetry = (long)562949953421312,
+  }
+  public enum EventManifestOptions {
+    AllCultures = 2,
+    AllowEventSourceOverride = 8,
+    None = 0,
+    OnlyIfNeededForRegistration = 4,
+    Strict = 1,
+  }
+  public class EventSource : IDisposable {
+    protected EventSource(EventSourceSettings settings);
+    protected EventSource(EventSourceSettings settings, params string[] traits);
+    public EventSource(string eventSourceName);
+    public EventSource(string eventSourceName, EventSourceSettings config);
+    public EventSource(string eventSourceName, EventSourceSettings config, params string[] traits);
+    public EventSourceSettings Settings { get; }
+    public static string GenerateManifest(Type eventSourceType, string assemblyPathToIncludeInManifest, EventManifestOptions flags);
+    public string GetTrait(string key);
+    public bool IsEnabled(EventLevel level, EventKeywords keywords, EventChannel channel);
+    public void Write(string eventName);
+    public void Write(string eventName, EventSourceOptions options);
+    public void Write<T>(string eventName, ref EventSourceOptions options, ref Guid activityId, ref Guid relatedActivityId, ref T data);
+    public void Write<T>(string eventName, ref EventSourceOptions options, ref T data);
+    public void Write<T>(string eventName, T data);
+    protected void WriteEvent(int eventId, byte[] arg1);
+    protected void WriteEvent(int eventId, int arg1, string arg2);
+    protected void WriteEvent(int eventId, long arg1, byte[] arg2);
+    protected void WriteEvent(int eventId, long arg1, string arg2);
+    protected void WriteEventWithRelatedActivityId(int eventId, Guid childActivityIDrelatedActivityId, params object[] args);
+    protected unsafe void WriteEventWithRelatedActivityIdCore(int eventId, Guid* childActivityIDrelatedActivityId, int eventDataCount, EventSource.EventData* data);
+  }
+  [System.Runtime.InteropServices.StructLayoutAttribute(System.Runtime.InteropServices.LayoutKind.Sequential)]
+  public struct EventSourceOptions {
+    public EventActivityOptions ActivityOptions { get; set; }
+    public EventKeywords Keywords { get; set; }
+    public EventLevel Level { get; set; }
+    public EventOpcode Opcode { get; set; }
+    public EventTags Tags { get; set; }
+  }
+  public enum EventSourceSettings {
+    Default = 0,
+    EtwManifestEventFormat = 4,
+    EtwSelfDescribingEventFormat = 8,
+    ThrowOnEventWriteErrors = 1,
+  }
+  public enum EventTags {
+    None = 0,
+  }
+  public class EventWrittenEventArgs : EventArgs {
+    public EventChannel Channel { get; }
+    public string EventName { get; }
+    public ReadOnlyCollection<string> PayloadNames { get; }
+    public EventTags Tags { get; }
+  }
+}
+namespace System.DirectoryServices.ActiveDirectory {
+  public class Domain : ActiveDirectoryPartition {
+    public int DomainModeLevel { get; }
+    public void RaiseDomainFunctionalityLevel(int domainMode);
+  }
+  public enum DomainMode {
+    Unknown = -1,
+  }
+  public class Forest : IDisposable {
+    public int ForestModeLevel { get; }
+    public void RaiseForestFunctionalityLevel(int forestMode);
+  }
+  public enum ForestMode {
+    Unknown = -1,
+  }
+}
+namespace System.Globalization {
+  public class CompareInfo : IDeserializationCallback {
+    public virtual int GetHashCode(string source, CompareOptions options);
+  }
+  public class CultureInfo : ICloneable, IFormatProvider {
+    public static CultureInfo CurrentCulture { get; set; }
+    public static CultureInfo CurrentUICulture { get; set; }
+  }
+}
+namespace System.IO {
+  public class MemoryStream : Stream {
+    public virtual bool TryGetBuffer(out ArraySegment<byte> buffer);
+  }
+}
+namespace System.IO.MemoryMappedFiles {
+  public class MemoryMappedFile : IDisposable {
+    public static MemoryMappedFile CreateFromFile(FileStream fileStream, string mapName, long capacity, MemoryMappedFileAccess access, HandleInheritability inheritability, bool leaveOpen);
+    public static MemoryMappedFile CreateNew(string mapName, long capacity, MemoryMappedFileAccess access, MemoryMappedFileOptions options, HandleInheritability inheritability);
+    public static MemoryMappedFile CreateOrOpen(string mapName, long capacity, MemoryMappedFileAccess access, MemoryMappedFileOptions options, HandleInheritability inheritability);
+  }
+}
+namespace System.IO.Pipes {
+  public sealed class NamedPipeClientStream : PipeStream {
+    public Task ConnectAsync();
+    public Task ConnectAsync(int timeout);
+    public Task ConnectAsync(int timeout, CancellationToken cancellationToken);
+    public Task ConnectAsync(CancellationToken cancellationToken);
+  }
+  public sealed class NamedPipeServerStream : PipeStream {
+    public Task WaitForConnectionAsync();
+    public Task WaitForConnectionAsync(CancellationToken cancellationToken);
+  }
+}
+namespace System.Linq.Expressions {
+  public class DynamicExpression : Expression, IArgumentProvider, IDynamicExpression {
+    int System.Linq.Expressions.IArgumentProvider.ArgumentCount { get; }
+    Expression System.Linq.Expressions.IArgumentProvider.GetArgument(int index);
+    object System.Linq.Expressions.IDynamicExpression.CreateCallSite();
+    Expression System.Linq.Expressions.IDynamicExpression.Rewrite(Expression[] args);
+  }
+  public sealed class ElementInit : IArgumentProvider {
+    int System.Linq.Expressions.IArgumentProvider.ArgumentCount { get; }
+    Expression System.Linq.Expressions.IArgumentProvider.GetArgument(int index);
+  }
+  public interface IArgumentProvider {
+    int ArgumentCount { get; }
+    Expression GetArgument(int index);
+  }
+  public interface IDynamicExpression : IArgumentProvider {
+    Type DelegateType { get; }
+    object CreateCallSite();
+    Expression Rewrite(Expression[] args);
+  }
+  public sealed class IndexExpression : Expression, IArgumentProvider {
+    int System.Linq.Expressions.IArgumentProvider.ArgumentCount { get; }
+    Expression System.Linq.Expressions.IArgumentProvider.GetArgument(int index);
+  }
+  public sealed class InvocationExpression : Expression, IArgumentProvider {
+    int System.Linq.Expressions.IArgumentProvider.ArgumentCount { get; }
+    Expression System.Linq.Expressions.IArgumentProvider.GetArgument(int index);
+  }
+  public class MethodCallExpression : Expression, IArgumentProvider {
+    int System.Linq.Expressions.IArgumentProvider.ArgumentCount { get; }
+    Expression System.Linq.Expressions.IArgumentProvider.GetArgument(int index);
+  }
+  public class NewExpression : Expression, IArgumentProvider {
+    int System.Linq.Expressions.IArgumentProvider.ArgumentCount { get; }
+    Expression System.Linq.Expressions.IArgumentProvider.GetArgument(int index);
+  }
+}
+namespace System.Net {
+  public class ServicePointManager {
+    public static bool ReusePort { get; set; }
+  }
+}
+namespace System.Net.Sockets {
+  public enum SocketOptionName {
+    ReuseUnicastPort = 12295,
+  }
+  public class TcpClient : IDisposable {
+    public void Dispose();
+    void System.IDisposable.Dispose();
+  }
+  public class UdpClient : IDisposable {
+    public void Dispose();
+    void System.IDisposable.Dispose();
+  }
+}
+namespace System.Numerics {
+  [System.Runtime.InteropServices.StructLayoutAttribute(System.Runtime.InteropServices.LayoutKind.Sequential)]
+  public struct Matrix3x2 : IEquatable<Matrix3x2> {
+    public float M11;
+    public float M12;
+    public float M21;
+    public float M22;
+    public float M31;
+    public float M32;
+    public Matrix3x2(float m11, float m12, float m21, float m22, float m31, float m32);
+    public static Matrix3x2 Identity { get; }
+    public bool IsIdentity { get; }
+    public Vector2 Translation { get; set; }
+    public static Matrix3x2 Add(Matrix3x2 value1, Matrix3x2 value2);
+    public static Matrix3x2 CreateRotation(float radians);
+    public static Matrix3x2 CreateRotation(float radians, Vector2 centerPoint);
+    public static Matrix3x2 CreateScale(Vector2 scales);
+    public static Matrix3x2 CreateScale(Vector2 scales, Vector2 centerPoint);
+    public static Matrix3x2 CreateScale(float scale);
+    public static Matrix3x2 CreateScale(float scale, Vector2 centerPoint);
+    public static Matrix3x2 CreateScale(float xScale, float yScale);
+    public static Matrix3x2 CreateScale(float xScale, float yScale, Vector2 centerPoint);
+    public static Matrix3x2 CreateSkew(float radiansX, float radiansY);
+    public static Matrix3x2 CreateSkew(float radiansX, float radiansY, Vector2 centerPoint);
+    public static Matrix3x2 CreateTranslation(Vector2 position);
+    public static Matrix3x2 CreateTranslation(float xPosition, float yPosition);
+    public bool Equals(Matrix3x2 other);
+    public override bool Equals(object obj);
+    public float GetDeterminant();
+    public override int GetHashCode();
+    public static bool Invert(Matrix3x2 matrix, out Matrix3x2 result);
+    public static Matrix3x2 Lerp(Matrix3x2 matrix1, Matrix3x2 matrix2, float amount);
+    public static Matrix3x2 Multiply(Matrix3x2 value1, Matrix3x2 value2);
+    public static Matrix3x2 Multiply(Matrix3x2 value1, float value2);
+    public static Matrix3x2 Negate(Matrix3x2 value);
+    public static Matrix3x2 operator +(Matrix3x2 value1, Matrix3x2 value2);
+    public static bool operator ==(Matrix3x2 value1, Matrix3x2 value2);
+    public static bool operator !=(Matrix3x2 value1, Matrix3x2 value2);
+    public static Matrix3x2 operator *(Matrix3x2 value1, Matrix3x2 value2);
+    public static Matrix3x2 operator *(Matrix3x2 value1, float value2);
+    public static Matrix3x2 operator -(Matrix3x2 value1, Matrix3x2 value2);
+    public static Matrix3x2 operator -(Matrix3x2 value);
+    public static Matrix3x2 Subtract(Matrix3x2 value1, Matrix3x2 value2);
+    public override string ToString();
+  }
+  [System.Runtime.InteropServices.StructLayoutAttribute(System.Runtime.InteropServices.LayoutKind.Sequential)]
+  public struct Matrix4x4 : IEquatable<Matrix4x4> {
+    public float M11;
+    public float M12;
+    public float M13;
+    public float M14;
+    public float M21;
+    public float M22;
+    public float M23;
+    public float M24;
+    public float M31;
+    public float M32;
+    public float M33;
+    public float M34;
+    public float M41;
+    public float M42;
+    public float M43;
+    public float M44;
+    public Matrix4x4(Matrix3x2 value);
+    public Matrix4x4(float m11, float m12, float m13, float m14, float m21, float m22, float m23, float m24, float m31, float m32, float m33, float m34, float m41, float m42, float m43, float m44);
+    public static Matrix4x4 Identity { get; }
+    public bool IsIdentity { get; }
+    public Vector3 Translation { get; set; }
+    public static Matrix4x4 Add(Matrix4x4 value1, Matrix4x4 value2);
+    public static Matrix4x4 CreateBillboard(Vector3 objectPosition, Vector3 cameraPosition, Vector3 cameraUpVector, Vector3 cameraForwardVector);
+    public static Matrix4x4 CreateConstrainedBillboard(Vector3 objectPosition, Vector3 cameraPosition, Vector3 rotateAxis, Vector3 cameraForwardVector, Vector3 objectForwardVector);
+    public static Matrix4x4 CreateFromAxisAngle(Vector3 axis, float angle);
+    public static Matrix4x4 CreateFromQuaternion(Quaternion quaternion);
+    public static Matrix4x4 CreateFromYawPitchRoll(float yaw, float pitch, float roll);
+    public static Matrix4x4 CreateLookAt(Vector3 cameraPosition, Vector3 cameraTarget, Vector3 cameraUpVector);
+    public static Matrix4x4 CreateOrthographic(float width, float height, float zNearPlane, float zFarPlane);
+    public static Matrix4x4 CreateOrthographicOffCenter(float left, float right, float bottom, float top, float zNearPlane, float zFarPlane);
+    public static Matrix4x4 CreatePerspective(float width, float height, float nearPlaneDistance, float farPlaneDistance);
+    public static Matrix4x4 CreatePerspectiveFieldOfView(float fieldOfView, float aspectRatio, float nearPlaneDistance, float farPlaneDistance);
+    public static Matrix4x4 CreatePerspectiveOffCenter(float left, float right, float bottom, float top, float nearPlaneDistance, float farPlaneDistance);
+    public static Matrix4x4 CreateReflection(Plane value);
+    public static Matrix4x4 CreateRotationX(float radians);
+    public static Matrix4x4 CreateRotationX(float radians, Vector3 centerPoint);
+    public static Matrix4x4 CreateRotationY(float radians);
+    public static Matrix4x4 CreateRotationY(float radians, Vector3 centerPoint);
+    public static Matrix4x4 CreateRotationZ(float radians);
+    public static Matrix4x4 CreateRotationZ(float radians, Vector3 centerPoint);
+    public static Matrix4x4 CreateScale(Vector3 scales);
+    public static Matrix4x4 CreateScale(Vector3 scales, Vector3 centerPoint);
+    public static Matrix4x4 CreateScale(float scale);
+    public static Matrix4x4 CreateScale(float scale, Vector3 centerPoint);
+    public static Matrix4x4 CreateScale(float xScale, float yScale, float zScale);
+    public static Matrix4x4 CreateScale(float xScale, float yScale, float zScale, Vector3 centerPoint);
+    public static Matrix4x4 CreateShadow(Vector3 lightDirection, Plane plane);
+    public static Matrix4x4 CreateTranslation(Vector3 position);
+    public static Matrix4x4 CreateTranslation(float xPosition, float yPosition, float zPosition);
+    public static Matrix4x4 CreateWorld(Vector3 position, Vector3 forward, Vector3 up);
+    public static bool Decompose(Matrix4x4 matrix, out Vector3 scale, out Quaternion rotation, out Vector3 translation);
+    public bool Equals(Matrix4x4 other);
+    public override bool Equals(object obj);
+    public float GetDeterminant();
+    public override int GetHashCode();
+    public static bool Invert(Matrix4x4 matrix, out Matrix4x4 result);
+    public static Matrix4x4 Lerp(Matrix4x4 matrix1, Matrix4x4 matrix2, float amount);
+    public static Matrix4x4 Multiply(Matrix4x4 value1, Matrix4x4 value2);
+    public static Matrix4x4 Multiply(Matrix4x4 value1, float value2);
+    public static Matrix4x4 Negate(Matrix4x4 value);
+    public static Matrix4x4 operator +(Matrix4x4 value1, Matrix4x4 value2);
+    public static bool operator ==(Matrix4x4 value1, Matrix4x4 value2);
+    public static bool operator !=(Matrix4x4 value1, Matrix4x4 value2);
+    public static Matrix4x4 operator *(Matrix4x4 value1, Matrix4x4 value2);
+    public static Matrix4x4 operator *(Matrix4x4 value1, float value2);
+    public static Matrix4x4 operator -(Matrix4x4 value1, Matrix4x4 value2);
+    public static Matrix4x4 operator -(Matrix4x4 value);
+    public static Matrix4x4 Subtract(Matrix4x4 value1, Matrix4x4 value2);
+    public override string ToString();
+    public static Matrix4x4 Transform(Matrix4x4 value, Quaternion rotation);
+    public static Matrix4x4 Transpose(Matrix4x4 matrix);
+  }
+  [System.Runtime.InteropServices.StructLayoutAttribute(System.Runtime.InteropServices.LayoutKind.Sequential)]
+  public struct Plane : IEquatable<Plane> {
+    public Vector3 Normal;
+    public float D;
+    public Plane(Vector3 normal, float d);
+    public Plane(Vector4 value);
+    public Plane(float x, float y, float z, float d);
+    [MethodImpl(AggressiveInlining)]public static Plane CreateFromVertices(Vector3 point1, Vector3 point2, Vector3 point3);
+    [MethodImpl(AggressiveInlining)]public static float Dot(Plane plane, Vector4 value);
+    [MethodImpl(AggressiveInlining)]public static float DotCoordinate(Plane plane, Vector3 value);
+    [MethodImpl(AggressiveInlining)]public static float DotNormal(Plane plane, Vector3 value);
+    [MethodImpl(AggressiveInlining)]public bool Equals(Plane other);
+    [MethodImpl(AggressiveInlining)]public override bool Equals(object obj);
+    public override int GetHashCode();
+    [MethodImpl(AggressiveInlining)]public static Plane Normalize(Plane value);
+    [MethodImpl(AggressiveInlining)]public static bool operator ==(Plane value1, Plane value2);
+    [MethodImpl(AggressiveInlining)]public static bool operator !=(Plane value1, Plane value2);
+    public override string ToString();
+    [MethodImpl(AggressiveInlining)]public static Plane Transform(Plane plane, Matrix4x4 matrix);
+    [MethodImpl(AggressiveInlining)]public static Plane Transform(Plane plane, Quaternion rotation);
+  }
+  [System.Runtime.InteropServices.StructLayoutAttribute(System.Runtime.InteropServices.LayoutKind.Sequential)]
+  public struct Quaternion : IEquatable<Quaternion> {
+    public float W;
+    public float X;
+    public float Y;
+    public float Z;
+    public Quaternion(Vector3 vectorPart, float scalarPart);
+    public Quaternion(float x, float y, float z, float w);
+    public static Quaternion Identity { get; }
+    public bool IsIdentity { get; }
+    public static Quaternion Add(Quaternion value1, Quaternion value2);
+    public static Quaternion Concatenate(Quaternion value1, Quaternion value2);
+    public static Quaternion Conjugate(Quaternion value);
+    public static Quaternion CreateFromAxisAngle(Vector3 axis, float angle);
+    public static Quaternion CreateFromRotationMatrix(Matrix4x4 matrix);
+    public static Quaternion CreateFromYawPitchRoll(float yaw, float pitch, float roll);
+    public static Quaternion Divide(Quaternion value1, Quaternion value2);
+    public static float Dot(Quaternion quaternion1, Quaternion quaternion2);
+    public bool Equals(Quaternion other);
+    public override bool Equals(object obj);
+    public override int GetHashCode();
+    public static Quaternion Inverse(Quaternion value);
+    public float Length();
+    public float LengthSquared();
+    public static Quaternion Lerp(Quaternion quaternion1, Quaternion quaternion2, float amount);
+    public static Quaternion Multiply(Quaternion value1, Quaternion value2);
+    public static Quaternion Multiply(Quaternion value1, float value2);
+    public static Quaternion Negate(Quaternion value);
+    public static Quaternion Normalize(Quaternion value);
+    public static Quaternion operator +(Quaternion value1, Quaternion value2);
+    public static Quaternion operator /(Quaternion value1, Quaternion value2);
+    public static bool operator ==(Quaternion value1, Quaternion value2);
+    public static bool operator !=(Quaternion value1, Quaternion value2);
+    public static Quaternion operator *(Quaternion value1, Quaternion value2);
+    public static Quaternion operator *(Quaternion value1, float value2);
+    public static Quaternion operator -(Quaternion value1, Quaternion value2);
+    public static Quaternion operator -(Quaternion value);
+    public static Quaternion Slerp(Quaternion quaternion1, Quaternion quaternion2, float amount);
+    public static Quaternion Subtract(Quaternion value1, Quaternion value2);
+    public override string ToString();
+  }
+  [System.Runtime.InteropServices.StructLayoutAttribute(System.Runtime.InteropServices.LayoutKind.Sequential)]
+  public struct Vector2 : IEquatable<Vector2>, IFormattable {
+    public float X;
+    public float Y;
+    public Vector2(float value);
+    public Vector2(float x, float y);
+    public static Vector2 One { get; }
+    public static Vector2 UnitX { get; }
+    public static Vector2 UnitY { get; }
+    public static Vector2 Zero { get; }
+    [MethodImpl(AggressiveInlining)]public static Vector2 Abs(Vector2 value);
+    [MethodImpl(AggressiveInlining)]public static Vector2 Add(Vector2 left, Vector2 right);
+    [MethodImpl(AggressiveInlining)]public static Vector2 Clamp(Vector2 value1, Vector2 min, Vector2 max);
+    [MethodImpl(AggressiveInlining)]public void CopyTo(float[] array);
+    public void CopyTo(float[] array, int index);
+    [MethodImpl(AggressiveInlining)]public static float Distance(Vector2 value1, Vector2 value2);
+    [MethodImpl(AggressiveInlining)]public static float DistanceSquared(Vector2 value1, Vector2 value2);
+    [MethodImpl(AggressiveInlining)]public static Vector2 Divide(Vector2 left, Vector2 right);
+    [MethodImpl(AggressiveInlining)]public static Vector2 Divide(Vector2 left, float divisor);
+    [MethodImpl(AggressiveInlining)]public static float Dot(Vector2 value1, Vector2 value2);
+    public bool Equals(Vector2 other);
+    [MethodImpl(AggressiveInlining)]public override bool Equals(object obj);
+    public override int GetHashCode();
+    [MethodImpl(AggressiveInlining)]public float Length();
+    [MethodImpl(AggressiveInlining)]public float LengthSquared();
+    [MethodImpl(AggressiveInlining)]public static Vector2 Lerp(Vector2 value1, Vector2 value2, float amount);
+    [MethodImpl(AggressiveInlining)]public static Vector2 Max(Vector2 value1, Vector2 value2);
+    [MethodImpl(AggressiveInlining)]public static Vector2 Min(Vector2 value1, Vector2 value2);
+    [MethodImpl(AggressiveInlining)]public static Vector2 Multiply(Vector2 left, Vector2 right);
+    [MethodImpl(AggressiveInlining)]public static Vector2 Multiply(Vector2 left, float right);
+    [MethodImpl(AggressiveInlining)]public static Vector2 Multiply(float left, Vector2 right);
+    [MethodImpl(AggressiveInlining)]public static Vector2 Negate(Vector2 value);
+    [MethodImpl(AggressiveInlining)]public static Vector2 Normalize(Vector2 value);
+    [MethodImpl(AggressiveInlining)]public static Vector2 operator +(Vector2 left, Vector2 right);
+    [MethodImpl(AggressiveInlining)]public static Vector2 operator /(Vector2 left, Vector2 right);
+    [MethodImpl(AggressiveInlining)]public static Vector2 operator /(Vector2 value1, float value2);
+    [MethodImpl(AggressiveInlining)]public static bool operator ==(Vector2 left, Vector2 right);
+    [MethodImpl(AggressiveInlining)]public static bool operator !=(Vector2 left, Vector2 right);
+    [MethodImpl(AggressiveInlining)]public static Vector2 operator *(Vector2 left, Vector2 right);
+    [MethodImpl(AggressiveInlining)]public static Vector2 operator *(Vector2 left, float right);
+    [MethodImpl(AggressiveInlining)]public static Vector2 operator *(float left, Vector2 right);
+    [MethodImpl(AggressiveInlining)]public static Vector2 operator -(Vector2 left, Vector2 right);
+    [MethodImpl(AggressiveInlining)]public static Vector2 operator -(Vector2 value);
+    [MethodImpl(AggressiveInlining)]public static Vector2 Reflect(Vector2 vector, Vector2 normal);
+    [MethodImpl(AggressiveInlining)]public static Vector2 SquareRoot(Vector2 value);
+    [MethodImpl(AggressiveInlining)]public static Vector2 Subtract(Vector2 left, Vector2 right);
+    public override string ToString();
+    public string ToString(string format);
+    public string ToString(string format, IFormatProvider formatProvider);
+    [MethodImpl(AggressiveInlining)]public static Vector2 Transform(Vector2 position, Matrix3x2 matrix);
+    [MethodImpl(AggressiveInlining)]public static Vector2 Transform(Vector2 position, Matrix4x4 matrix);
+    [MethodImpl(AggressiveInlining)]public static Vector2 Transform(Vector2 value, Quaternion rotation);
+    [MethodImpl(AggressiveInlining)]public static Vector2 TransformNormal(Vector2 normal, Matrix3x2 matrix);
+    [MethodImpl(AggressiveInlining)]public static Vector2 TransformNormal(Vector2 normal, Matrix4x4 matrix);
+  }
+  [System.Runtime.InteropServices.StructLayoutAttribute(System.Runtime.InteropServices.LayoutKind.Sequential)]
+  public struct Vector3 : IEquatable<Vector3>, IFormattable {
+    public float X;
+    public float Y;
+    public float Z;
+    public Vector3(Vector2 value, float z);
+    public Vector3(float value);
+    public Vector3(float x, float y, float z);
+    public static Vector3 One { get; }
+    public static Vector3 UnitX { get; }
+    public static Vector3 UnitY { get; }
+    public static Vector3 UnitZ { get; }
+    public static Vector3 Zero { get; }
+    [MethodImpl(AggressiveInlining)]public static Vector3 Abs(Vector3 value);
+    [MethodImpl(AggressiveInlining)]public static Vector3 Add(Vector3 left, Vector3 right);
+    [MethodImpl(AggressiveInlining)]public static Vector3 Clamp(Vector3 value1, Vector3 min, Vector3 max);
+    [MethodImpl(AggressiveInlining)]public void CopyTo(float[] array);
+    [MethodImpl(AggressiveInlining)]public void CopyTo(float[] array, int index);
+    [MethodImpl(AggressiveInlining)]public static Vector3 Cross(Vector3 vector1, Vector3 vector2);
+    [MethodImpl(AggressiveInlining)]public static float Distance(Vector3 value1, Vector3 value2);
+    [MethodImpl(AggressiveInlining)]public static float DistanceSquared(Vector3 value1, Vector3 value2);
+    [MethodImpl(AggressiveInlining)]public static Vector3 Divide(Vector3 left, Vector3 right);
+    [MethodImpl(AggressiveInlining)]public static Vector3 Divide(Vector3 left, float divisor);
+    [MethodImpl(AggressiveInlining)]public static float Dot(Vector3 vector1, Vector3 vector2);
+    public bool Equals(Vector3 other);
+    [MethodImpl(AggressiveInlining)]public override bool Equals(object obj);
+    public override int GetHashCode();
+    [MethodImpl(AggressiveInlining)]public float Length();
+    [MethodImpl(AggressiveInlining)]public float LengthSquared();
+    [MethodImpl(AggressiveInlining)]public static Vector3 Lerp(Vector3 value1, Vector3 value2, float amount);
+    [MethodImpl(AggressiveInlining)]public static Vector3 Max(Vector3 value1, Vector3 value2);
+    public static Vector3 Min(Vector3 value1, Vector3 value2);
+    [MethodImpl(AggressiveInlining)]public static Vector3 Multiply(Vector3 left, Vector3 right);
+    [MethodImpl(AggressiveInlining)]public static Vector3 Multiply(Vector3 left, float right);
+    [MethodImpl(AggressiveInlining)]public static Vector3 Multiply(float left, Vector3 right);
+    [MethodImpl(AggressiveInlining)]public static Vector3 Negate(Vector3 value);
+    [MethodImpl(AggressiveInlining)]public static Vector3 Normalize(Vector3 value);
+    [MethodImpl(AggressiveInlining)]public static Vector3 operator +(Vector3 left, Vector3 right);
+    [MethodImpl(AggressiveInlining)]public static Vector3 operator /(Vector3 left, Vector3 right);
+    [MethodImpl(AggressiveInlining)]public static Vector3 operator /(Vector3 value1, float value2);
+    [MethodImpl(AggressiveInlining)]public static bool operator ==(Vector3 left, Vector3 right);
+    [MethodImpl(AggressiveInlining)]public static bool operator !=(Vector3 left, Vector3 right);
+    [MethodImpl(AggressiveInlining)]public static Vector3 operator *(Vector3 left, Vector3 right);
+    [MethodImpl(AggressiveInlining)]public static Vector3 operator *(Vector3 left, float right);
+    [MethodImpl(AggressiveInlining)]public static Vector3 operator *(float left, Vector3 right);
+    [MethodImpl(AggressiveInlining)]public static Vector3 operator -(Vector3 left, Vector3 right);
+    [MethodImpl(AggressiveInlining)]public static Vector3 operator -(Vector3 value);
+    [MethodImpl(AggressiveInlining)]public static Vector3 Reflect(Vector3 vector, Vector3 normal);
+    [MethodImpl(AggressiveInlining)]public static Vector3 SquareRoot(Vector3 value);
+    [MethodImpl(AggressiveInlining)]public static Vector3 Subtract(Vector3 left, Vector3 right);
+    public override string ToString();
+    public string ToString(string format);
+    public string ToString(string format, IFormatProvider formatProvider);
+    [MethodImpl(AggressiveInlining)]public static Vector3 Transform(Vector3 position, Matrix4x4 matrix);
+    [MethodImpl(AggressiveInlining)]public static Vector3 Transform(Vector3 value, Quaternion rotation);
+    [MethodImpl(AggressiveInlining)]public static Vector3 TransformNormal(Vector3 normal, Matrix4x4 matrix);
+  }
+  [System.Runtime.InteropServices.StructLayoutAttribute(System.Runtime.InteropServices.LayoutKind.Sequential)]
+  public struct Vector4 : IEquatable<Vector4>, IFormattable {
+    public float W;
+    public float X;
+    public float Y;
+    public float Z;
+    public Vector4(Vector2 value, float z, float w);
+    public Vector4(Vector3 value, float w);
+    public Vector4(float value);
+    public Vector4(float x, float y, float z, float w);
+    public static Vector4 One { get; }
+    public static Vector4 UnitW { get; }
+    public static Vector4 UnitX { get; }
+    public static Vector4 UnitY { get; }
+    public static Vector4 UnitZ { get; }
+    public static Vector4 Zero { get; }
+    [MethodImpl(AggressiveInlining)]public static Vector4 Abs(Vector4 value);
+    [MethodImpl(AggressiveInlining)]public static Vector4 Add(Vector4 left, Vector4 right);
+    [MethodImpl(AggressiveInlining)]public static Vector4 Clamp(Vector4 value1, Vector4 min, Vector4 max);
+    [MethodImpl(AggressiveInlining)]public void CopyTo(float[] array);
+    [MethodImpl(AggressiveInlining)]public void CopyTo(float[] array, int index);
+    [MethodImpl(AggressiveInlining)]public static float Distance(Vector4 value1, Vector4 value2);
+    [MethodImpl(AggressiveInlining)]public static float DistanceSquared(Vector4 value1, Vector4 value2);
+    [MethodImpl(AggressiveInlining)]public static Vector4 Divide(Vector4 left, Vector4 right);
+    [MethodImpl(AggressiveInlining)]public static Vector4 Divide(Vector4 left, float divisor);
+    [MethodImpl(AggressiveInlining)]public static float Dot(Vector4 vector1, Vector4 vector2);
+    public bool Equals(Vector4 other);
+    [MethodImpl(AggressiveInlining)]public override bool Equals(object obj);
+    public override int GetHashCode();
+    [MethodImpl(AggressiveInlining)]public float Length();
+    [MethodImpl(AggressiveInlining)]public float LengthSquared();
+    [MethodImpl(AggressiveInlining)]public static Vector4 Lerp(Vector4 value1, Vector4 value2, float amount);
+    [MethodImpl(AggressiveInlining)]public static Vector4 Max(Vector4 value1, Vector4 value2);
+    [MethodImpl(AggressiveInlining)]public static Vector4 Min(Vector4 value1, Vector4 value2);
+    [MethodImpl(AggressiveInlining)]public static Vector4 Multiply(Vector4 left, Vector4 right);
+    [MethodImpl(AggressiveInlining)]public static Vector4 Multiply(Vector4 left, float right);
+    [MethodImpl(AggressiveInlining)]public static Vector4 Multiply(float left, Vector4 right);
+    [MethodImpl(AggressiveInlining)]public static Vector4 Negate(Vector4 value);
+    [MethodImpl(AggressiveInlining)]public static Vector4 Normalize(Vector4 vector);
+    [MethodImpl(AggressiveInlining)]public static Vector4 operator +(Vector4 left, Vector4 right);
+    [MethodImpl(AggressiveInlining)]public static Vector4 operator /(Vector4 left, Vector4 right);
+    [MethodImpl(AggressiveInlining)]public static Vector4 operator /(Vector4 value1, float value2);
+    [MethodImpl(AggressiveInlining)]public static bool operator ==(Vector4 left, Vector4 right);
+    [MethodImpl(AggressiveInlining)]public static bool operator !=(Vector4 left, Vector4 right);
+    [MethodImpl(AggressiveInlining)]public static Vector4 operator *(Vector4 left, Vector4 right);
+    [MethodImpl(AggressiveInlining)]public static Vector4 operator *(Vector4 left, float right);
+    [MethodImpl(AggressiveInlining)]public static Vector4 operator *(float left, Vector4 right);
+    [MethodImpl(AggressiveInlining)]public static Vector4 operator -(Vector4 left, Vector4 right);
+    [MethodImpl(AggressiveInlining)]public static Vector4 operator -(Vector4 value);
+    [MethodImpl(AggressiveInlining)]public static Vector4 SquareRoot(Vector4 value);
+    [MethodImpl(AggressiveInlining)]public static Vector4 Subtract(Vector4 left, Vector4 right);
+    public override string ToString();
+    public string ToString(string format);
+    public string ToString(string format, IFormatProvider formatProvider);
+    [MethodImpl(AggressiveInlining)]public static Vector4 Transform(Vector2 position, Matrix4x4 matrix);
+    [MethodImpl(AggressiveInlining)]public static Vector4 Transform(Vector2 value, Quaternion rotation);
+    [MethodImpl(AggressiveInlining)]public static Vector4 Transform(Vector3 position, Matrix4x4 matrix);
+    [MethodImpl(AggressiveInlining)]public static Vector4 Transform(Vector3 value, Quaternion rotation);
+    [MethodImpl(AggressiveInlining)]public static Vector4 Transform(Vector4 vector, Matrix4x4 matrix);
+    [MethodImpl(AggressiveInlining)]public static Vector4 Transform(Vector4 value, Quaternion rotation);
+  }
+}
+namespace System.Reflection {
+  public sealed class AssemblyName : _AssemblyName, ICloneable, IDeserializationCallback, ISerializable {
+    public string CultureName { get; set; }
+  }
+}
+namespace System.Runtime {
+  public enum GCLatencyMode {
+    NoGCRegion = 4,
+  }
+}
+namespace System.Runtime.CompilerServices {
+  public sealed class DisablePrivateReflectionAttribute : Attribute {
+    public DisablePrivateReflectionAttribute();
+  }
+  public static class FormattableStringFactory {
+    public static FormattableString Create(string format, params object[] arguments);
+  }
+}
+namespace System.Runtime.InteropServices {
+  public static class Marshal {
+    [MethodImpl(InternalCall)]public static IntPtr CreateAggregatedObject(IntPtr pOuter, object o);
+    [MethodImpl(InternalCall)]public static void DestroyStructure(IntPtr ptr, Type structuretype);
+    [MethodImpl(InternalCall)]public static int GetExceptionCode();
+    [MethodImpl(InternalCall)]public static void GetNativeVariantForObject(object obj, IntPtr pDstNativeVariant);
+    [MethodImpl(InternalCall)]public static object GetObjectForIUnknown(IntPtr pUnk);
+    [MethodImpl(InternalCall)]public static object GetObjectForNativeVariant(IntPtr pSrcNativeVariant);
+    [MethodImpl(InternalCall)]public static object[] GetObjectsForNativeVariants(IntPtr aSrcNativeVariant, int cVars);
+    [MethodImpl(InternalCall)]public static int GetStartComSlot(Type t);
+    [MethodImpl(InternalCall)]public static object GetUniqueObjectForIUnknown(IntPtr unknown);
+    [MethodImpl(InternalCall)]public static void StructureToPtr(object structure, IntPtr ptr, bool fDeleteOld);
+    [MethodImpl(InternalCall)]public static IntPtr UnsafeAddrOfPinnedArrayElement(Array arr, int index);
+  }
+}
+namespace System.Runtime.Serialization {
+  public sealed class CollectionDataContractAttribute : Attribute {
+    public bool IsItemNameSetExplicitly { get; }
+    public bool IsKeyNameSetExplicitly { get; }
+    public bool IsNameSetExplicitly { get; }
+    public bool IsNamespaceSetExplicitly { get; }
+    public bool IsReferenceSetExplicitly { get; }
+    public bool IsValueNameSetExplicitly { get; }
+  }
+  public sealed class DataContractAttribute : Attribute {
+    public bool IsNameSetExplicitly { get; }
+    public bool IsNamespaceSetExplicitly { get; }
+    public bool IsReferenceSetExplicitly { get; }
+  }
+  public sealed class DataMemberAttribute : Attribute {
+    public bool IsNameSetExplicitly { get; }
+  }
+  public sealed class EnumMemberAttribute : Attribute {
+    public bool IsValueSetExplicitly { get; }
+  }
+}
+namespace System.Security.AccessControl {
+  public sealed class AuthorizationRuleCollection : ReadOnlyCollectionBase {
+    public AuthorizationRuleCollection();
+    public void AddRule(AuthorizationRule rule);
+  }
+  public sealed class CommonSecurityDescriptor : GenericSecurityDescriptor {
+    public void AddDiscretionaryAcl(byte revision, int trusted);
+    public void AddSystemAcl(byte revision, int trusted);
+  }
+  public sealed class DiscretionaryAcl : CommonAcl {
+    public void AddAccess(AccessControlType accessType, SecurityIdentifier sid, ObjectAccessRule rule);
+    public bool RemoveAccess(AccessControlType accessType, SecurityIdentifier sid, ObjectAccessRule rule);
+    public void RemoveAccessSpecific(AccessControlType accessType, SecurityIdentifier sid, ObjectAccessRule rule);
+    public void SetAccess(AccessControlType accessType, SecurityIdentifier sid, ObjectAccessRule rule);
+  }
+  public abstract class ObjectSecurity {
+    protected ObjectSecurity();
+    protected ObjectSecurity(CommonSecurityDescriptor securityDescriptor);
+  }
+  public sealed class SystemAcl : CommonAcl {
+    public void AddAudit(SecurityIdentifier sid, ObjectAuditRule rule);
+    public bool RemoveAudit(SecurityIdentifier sid, ObjectAuditRule rule);
+    public void RemoveAuditSpecific(SecurityIdentifier sid, ObjectAuditRule rule);
+    public void SetAudit(SecurityIdentifier sid, ObjectAuditRule rule);
+  }
+}
+namespace System.Security.Claims {
+  public class Claim {
+    public Claim(BinaryReader reader);
+    public Claim(BinaryReader reader, ClaimsIdentity subject);
+    protected Claim(Claim other);
+    protected Claim(Claim other, ClaimsIdentity subject);
+    protected virtual byte[] CustomSerializationData { get; }
+    public virtual void WriteTo(BinaryWriter writer);
+    protected virtual void WriteTo(BinaryWriter writer, byte[] userData);
+  }
+  public class ClaimsIdentity : IIdentity {
+    public ClaimsIdentity(BinaryReader reader);
+    protected ClaimsIdentity(ClaimsIdentity other);
+    protected virtual byte[] CustomSerializationData { get; }
+    protected virtual Claim CreateClaim(BinaryReader reader);
+    public virtual void WriteTo(BinaryWriter writer);
+    protected virtual void WriteTo(BinaryWriter writer, byte[] userData);
+  }
+  public class ClaimsPrincipal : IPrincipal {
+    public ClaimsPrincipal(BinaryReader reader);
+    protected virtual byte[] CustomSerializationData { get; }
+    public virtual ClaimsPrincipal Clone();
+    protected virtual ClaimsIdentity CreateClaimsIdentity(BinaryReader reader);
+    public virtual void WriteTo(BinaryWriter writer);
+    protected virtual void WriteTo(BinaryWriter writer, byte[] userData);
+  }
+}
+namespace System.Security.Cryptography {
+  public abstract class AsymmetricAlgorithm : IDisposable {
+    public abstractvirtual string KeyExchangeAlgorithm { get; }
+    public abstractvirtual string SignatureAlgorithm { get; }
+    public abstractvirtual void FromXmlString(string xmlString);
+    public abstractvirtual string ToXmlString(bool includePrivateParameters);
+  }
+  public sealed class CngAlgorithm : IEquatable<CngAlgorithm> {
+    public static CngAlgorithm Rsa { get; }
+  }
+  [System.Runtime.InteropServices.StructLayoutAttribute(System.Runtime.InteropServices.LayoutKind.Sequential)]
+  public struct HashAlgorithmName : IEquatable<HashAlgorithmName> {
+    public HashAlgorithmName(string name);
+    public static HashAlgorithmName MD5 { get; }
+    public string Name { get; }
+    public static HashAlgorithmName SHA1 { get; }
+    public static HashAlgorithmName SHA256 { get; }
+    public static HashAlgorithmName SHA384 { get; }
+    public static HashAlgorithmName SHA512 { get; }
+    public override bool Equals(object obj);
+    public bool Equals(HashAlgorithmName other);
+    public override int GetHashCode();
+    public static bool operator ==(HashAlgorithmName left, HashAlgorithmName right);
+    public static bool operator !=(HashAlgorithmName left, HashAlgorithmName right);
+    public override string ToString();
+  }
+  public abstract class RandomNumberGenerator : IDisposable {
+    public virtual void GetBytes(byte[] data, int offset, int count);
+  }
+  public class Rfc2898DeriveBytes : DeriveBytes {
+    public byte[] CryptDeriveKey(string algname, string alghashname, int keySize, byte[] rgbIV);
+  }
+  public abstract class RSA : AsymmetricAlgorithm {
+    public override string KeyExchangeAlgorithm { get; }
+    public override string SignatureAlgorithm { get; }
+    public virtual byte[] Decrypt(byte[] data, RSAEncryptionPadding padding);
+    public abstractvirtual byte[] DecryptValue(byte[] rgb);
+    public virtual byte[] Encrypt(byte[] data, RSAEncryptionPadding padding);
+    public abstractvirtual byte[] EncryptValue(byte[] rgb);
+    protected virtual byte[] HashData(byte[] data, int offset, int count, HashAlgorithmName hashAlgorithm);
+    protected virtual byte[] HashData(Stream data, HashAlgorithmName hashAlgorithm);
+    public virtual byte[] SignData(byte[] data, int offset, int count, HashAlgorithmName hashAlgorithm, RSASignaturePadding padding);
+    public byte[] SignData(byte[] data, HashAlgorithmName hashAlgorithm, RSASignaturePadding padding);
+    public virtual byte[] SignData(Stream data, HashAlgorithmName hashAlgorithm, RSASignaturePadding padding);
+    public virtual byte[] SignHash(byte[] hash, HashAlgorithmName hashAlgorithm, RSASignaturePadding padding);
+    public bool VerifyData(byte[] data, byte[] signature, HashAlgorithmName hashAlgorithm, RSASignaturePadding padding);
+    public virtual bool VerifyData(byte[] data, int offset, int count, byte[] signature, HashAlgorithmName hashAlgorithm, RSASignaturePadding padding);
+    public bool VerifyData(Stream data, byte[] signature, HashAlgorithmName hashAlgorithm, RSASignaturePadding padding);
+    public virtual bool VerifyHash(byte[] hash, byte[] signature, HashAlgorithmName hashAlgorithm, RSASignaturePadding padding);
+  }
+  public sealed class RSACng : RSA {
+    public RSACng();
+    public RSACng(int keySize);
+    public RSACng(CngKey key);
+    public CngKey Key { get; }
+    public override byte[] Decrypt(byte[] data, RSAEncryptionPadding padding);
+    protected override void Dispose(bool disposing);
+    public override byte[] Encrypt(byte[] data, RSAEncryptionPadding padding);
+    public override RSAParameters ExportParameters(bool includePrivateParameters);
+    protected override byte[] HashData(byte[] data, int offset, int count, HashAlgorithmName hashAlgorithm);
+    protected override byte[] HashData(Stream data, HashAlgorithmName hashAlgorithm);
+    public override void ImportParameters(RSAParameters parameters);
+    public override byte[] SignHash(byte[] hash, HashAlgorithmName hashAlgorithm, RSASignaturePadding padding);
+    public override bool VerifyHash(byte[] hash, byte[] signature, HashAlgorithmName hashAlgorithm, RSASignaturePadding padding);
+  }
+  public sealed class RSACryptoServiceProvider : RSA, ICspAsymmetricAlgorithm {
+    public override byte[] Decrypt(byte[] data, RSAEncryptionPadding padding);
+    public override byte[] Encrypt(byte[] data, RSAEncryptionPadding padding);
+    protected override byte[] HashData(byte[] data, int offset, int count, HashAlgorithmName hashAlgorithm);
+    protected override byte[] HashData(Stream data, HashAlgorithmName hashAlgorithm);
+    public override byte[] SignHash(byte[] hash, HashAlgorithmName hashAlgorithm, RSASignaturePadding padding);
+    public override bool VerifyHash(byte[] hash, byte[] signature, HashAlgorithmName hashAlgorithm, RSASignaturePadding padding);
+  }
+  public sealed class RSAEncryptionPadding : IEquatable<RSAEncryptionPadding> {
+    public RSAEncryptionPaddingMode Mode { get; }
+    public HashAlgorithmName OaepHashAlgorithm { get; }
+    public static RSAEncryptionPadding OaepSHA1 { get; }
+    public static RSAEncryptionPadding OaepSHA256 { get; }
+    public static RSAEncryptionPadding OaepSHA384 { get; }
+    public static RSAEncryptionPadding OaepSHA512 { get; }
+    public static RSAEncryptionPadding Pkcs1 { get; }
+    public static RSAEncryptionPadding CreateOaep(HashAlgorithmName hashAlgorithm);
+    public override bool Equals(object obj);
+    public bool Equals(RSAEncryptionPadding other);
+    public override int GetHashCode();
+    public static bool operator ==(RSAEncryptionPadding left, RSAEncryptionPadding right);
+    public static bool operator !=(RSAEncryptionPadding left, RSAEncryptionPadding right);
+    public override string ToString();
+  }
+  public enum RSAEncryptionPaddingMode {
+    Oaep = 1,
+    Pkcs1 = 0,
+  }
+  public sealed class RSASignaturePadding : IEquatable<RSASignaturePadding> {
+    public RSASignaturePaddingMode Mode { get; }
+    public static RSASignaturePadding Pkcs1 { get; }
+    public static RSASignaturePadding Pss { get; }
+    public override bool Equals(object obj);
+    public bool Equals(RSASignaturePadding other);
+    public override int GetHashCode();
+    public static bool operator ==(RSASignaturePadding left, RSASignaturePadding right);
+    public static bool operator !=(RSASignaturePadding left, RSASignaturePadding right);
+    public override string ToString();
+  }
+  public enum RSASignaturePaddingMode {
+    Pkcs1 = 0,
+    Pss = 1,
+  }
+}
+namespace System.Security.Cryptography.X509Certificates {
+  public static class RSACertificateExtensions {
+    public static RSA GetRSAPrivateKey(this X509Certificate2 certificate);
+    public static RSA GetRSAPublicKey(this X509Certificate2 certificate);
+  }
+  public class X509Certificate : IDeserializationCallback, IDisposable, ISerializable {
+    public void Dispose();
+    protected virtual void Dispose(bool disposing);
+  }
+  public class X509Chain : IDisposable {
+    public SafeX509ChainHandle SafeHandle { get; }
+    public void Dispose();
+    protected virtual void Dispose(bool disposing);
+  }
+  public sealed class X509Store : IDisposable {
+    public void Dispose();
+  }
+}
+namespace System.Security.Cryptography.Xml {
+  public class EncryptedXml {
+    public int XmlDSigSearchDepth { get; set; }
+  }
+}
+namespace System.Security.Principal {
+  public class WindowsIdentity : ClaimsIdentity, IDeserializationCallback, IDisposable, ISerializable {
+    public SafeAccessTokenHandle AccessToken { get; }
+    public static void RunImpersonated(SafeAccessTokenHandle safeAccessTokenHandle, Action action);
+    public static T RunImpersonated<T>(SafeAccessTokenHandle safeAccessTokenHandle, Func<T> func);
+  }
+}
+namespace System.ServiceModel {
+  public sealed class TcpTransportSecurity {
+    public SslProtocols SslProtocols { get; set; }
+  }
+}
+namespace System.ServiceModel.Channels {
+  public class SslStreamSecurityBindingElement : StreamUpgradeBindingElement, IPolicyExportExtension, ITransportTokenAssertionProvider {
+    public SslProtocols SslProtocols { get; set; }
+  }
+}
+namespace System.ServiceModel.Configuration {
+  public sealed class SslStreamSecurityElement : BindingElementExtensionElement {
+    public SslProtocols SslProtocols { get; }
+  }
+  public sealed class TcpTransportSecurityElement : ServiceModelConfigurationElement {
+    public SslProtocols SslProtocols { get; }
+  }
+}
+namespace System.Text {
+  public abstract class Encoding : ICloneable {
+    protected Encoding(int codePage, EncoderFallback encoderFallback, DecoderFallback decoderFallback);
+    public unsafe string GetString(byte* bytes, int byteCount);
+    public static void RegisterProvider(EncodingProvider provider);
+  }
+  public abstract class EncodingProvider {
+    public EncodingProvider();
+    public abstract Encoding GetEncoding(int codepage);
+    public virtual Encoding GetEncoding(int codepage, EncoderFallback encoderFallback, DecoderFallback decoderFallback);
+    public abstract Encoding GetEncoding(string name);
+    public virtual Encoding GetEncoding(string name, EncoderFallback encoderFallback, DecoderFallback decoderFallback);
+  }
+  public sealed class StringBuilder : ISerializable {
+    public unsafe StringBuilder Append(char* value, int valueCount);
+    public StringBuilder AppendFormat(IFormatProvider provider, string format, object arg0);
+    public StringBuilder AppendFormat(IFormatProvider provider, string format, object arg0, object arg1);
+    public StringBuilder AppendFormat(IFormatProvider provider, string format, object arg0, object arg1, object arg2);
+  }
+}
+namespace System.Threading {
+  public sealed class AsyncLocal<T> {
+    public AsyncLocal();
+    public AsyncLocal(Action<AsyncLocalValueChangedArgs<T>> valueChangedHandler);
+    public T Value { get; set; }
+  }
+  [System.Runtime.InteropServices.StructLayoutAttribute(System.Runtime.InteropServices.LayoutKind.Sequential)]
+  public struct AsyncLocalValueChangedArgs<T> {
+    public T CurrentValue { get; }
+    public T PreviousValue { get; }
+    public bool ThreadContextChanged { get; }
+  }
+  public static class WaitHandleExtensions {
+    public static SafeWaitHandle GetSafeWaitHandle(this WaitHandle waitHandle);
+    public static void SetSafeWaitHandle(this WaitHandle waitHandle, SafeWaitHandle value);
+  }
+}
+namespace System.Threading.Tasks {
+  public class Task : IAsyncResult, IDisposable {
+    public static Task CompletedTask { get; }
+    public static Task FromCanceled(CancellationToken cancellationToken);
+    public static Task<TResult> FromCanceled<TResult>(CancellationToken cancellationToken);
+    public static Task FromException(Exception exception);
+    public static Task<TResult> FromException<TResult>(Exception exception);
+  }
+  public class TaskCompletionSource<TResult> {
+    public bool TrySetCanceled(CancellationToken cancellationToken);
+  }
+  public enum TaskContinuationOptions {
+    RunContinuationsAsynchronously = 64,
+  }
+  public enum TaskCreationOptions {
+    RunContinuationsAsynchronously = 64,
+  }
+}
+namespace System.Web {
+  public sealed class HttpRequest {
+    public ITlsTokenBindingInfo TlsTokenBindingInfo { get; }
+  }
+  public abstract class HttpRequestBase {
+    public virtual ITlsTokenBindingInfo TlsTokenBindingInfo { get; }
+  }
+  public class HttpRequestWrapper : HttpRequestBase {
+    public override ITlsTokenBindingInfo TlsTokenBindingInfo { get; }
+  }
+  public sealed class HttpResponse {
+    public Task FlushAsync();
+    public void PushPromise(string path);
+    public void PushPromise(string path, string method, NameValueCollection headers);
+  }
+  public abstract class HttpResponseBase {
+    public virtual Task FlushAsync();
+    public virtual void PushPromise(string path);
+    public virtual void PushPromise(string path, string method, NameValueCollection headers);
+  }
+  public class HttpResponseWrapper : HttpResponseBase {
+    public override Task FlushAsync();
+    public override void PushPromise(string path);
+    public override void PushPromise(string path, string method, NameValueCollection headers);
+  }
+  public interface ITlsTokenBindingInfo {
+    byte[] GetProvidedTokenBindingId();
+    byte[] GetReferredTokenBindingId();
+  }
+}
+namespace System.Web.UI.WebControls {
+  public class ModelDataSourceView : DataSourceView, IStateManager {
+    public override void Delete(IDictionary keys, IDictionary oldValues, DataSourceViewOperationCallback callback);
+    public override void Insert(IDictionary values, DataSourceViewOperationCallback callback);
+    public override void Select(DataSourceSelectArguments arguments, DataSourceViewSelectCallback callback);
+    public override void Update(IDictionary keys, IDictionary values, IDictionary oldValues, DataSourceViewOperationCallback callback);
+  }
+  public sealed class SelectResult {
+    public SelectResult(int totalRowCount, IEnumerable results);
+    public IEnumerable Results { get; }
+    public int TotalRowCount { get; }
+  }
+}
+namespace System.Windows {
+  public static class CoreCompatibilityPreferences {
+    public static Nullable<bool> EnableMultiMonitorDisplayClipping { get; set; }
+  }
+}
+namespace System.Windows.Diagnostics {
+  public static class VisualDiagnostics {
+    public static event EventHandler<VisualTreeChangeEventArgs> VisualTreeChanged;
+    public static XamlSourceInfo GetXamlSourceInfo(object obj);
+  }
+  public class VisualTreeChangeEventArgs : EventArgs {
+    public VisualTreeChangeEventArgs(DependencyObject parent, DependencyObject child, int childIndex, VisualTreeChangeType changeType);
+    public VisualTreeChangeType ChangeType { get; }
+    public DependencyObject Child { get; }
+    public int ChildIndex { get; }
+    public DependencyObject Parent { get; }
+  }
+  public enum VisualTreeChangeType {
+    Add = 0,
+    Remove = 1,
+  }
+  public class XamlSourceInfo {
+    public XamlSourceInfo(Uri sourceUri, int lineNumber, int linePosition);
+    public int LineNumber { get; }
+    public int LinePosition { get; }
+    public Uri SourceUri { get; }
+  }
+}
+namespace System.Windows.Forms {
+  public class MonthCalendar : Control {
+    protected override void DefWndProc(ref Message m);
+  }
+}
+namespace System.Windows.Input {
+  public sealed class Cursor : IDisposable {
+    public Cursor(Stream cursorStream, bool scaleWithDpi);
+    public Cursor(string cursorFile, bool scaleWithDpi);
+  }
+  public sealed class StylusDevice : InputDevice {
+    public bool IsValid { get; }
+  }
+}
+namespace System.Windows.Interop {
+  [System.Runtime.InteropServices.StructLayoutAttribute(System.Runtime.InteropServices.LayoutKind.Sequential)]
+  public struct HwndSourceParameters {
+    public bool UsesPerPixelTransparency { get; set; }
+  }
+}
+namespace System.Xaml {
+  public class XamlObjectEventArgs : EventArgs {
+    public int ElementLineNumber { get; }
+    public int ElementLinePosition { get; }
+    public Uri SourceBamlUri { get; }
+  }
+}
+namespace System.Xml {
+  public class XmlCDataSection : XmlCharacterData {
+    public override XmlNode PreviousText { get; }
+  }
+  public abstract class XmlNode : ICloneable, IEnumerable, IXPathNavigable {
+    public virtual XmlNode PreviousText { get; }
+  }
+  public class XmlSignificantWhitespace : XmlCharacterData {
+    public override XmlNode PreviousText { get; }
+  }
+  public class XmlText : XmlCharacterData {
+    public override XmlNode PreviousText { get; }
+  }
+  public class XmlWhitespace : XmlCharacterData {
+    public override XmlNode PreviousText { get; }
+  }
+}
+
+ + diff --git a/docs/releases/net46/dotnet46-api-changes.md b/docs/releases/net46/dotnet46-api-changes.md new file mode 100644 index 000000000..3d894ee18 --- /dev/null +++ b/docs/releases/net46/dotnet46-api-changes.md @@ -0,0 +1,1218 @@ +.NET Framework 4.6 API Changes + + +
C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.2
+C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6
+namespace Microsoft.Win32 {
+  public sealed class RegistryKey : MarshalByRefObject, IDisposable {
+    public RegistryKey CreateSubKey(string subkey, bool writable);
+    public RegistryKey CreateSubKey(string subkey, bool writable, RegistryOptions options);
+    public RegistryKey OpenSubKey(string name, RegistryRights rights);
+  }
+}
+namespace Microsoft.Win32.SafeHandles {
+  public sealed class SafeAccessTokenHandle : SafeHandle {
+    public SafeAccessTokenHandle(IntPtr handle);
+    public static SafeAccessTokenHandle InvalidHandle { get; }
+    public override bool IsInvalid { get; }
+    protected override bool ReleaseHandle();
+  }
+  public sealed class SafeProcessHandle : SafeHandleZeroOrMinusOneIsInvalid {
+    public SafeProcessHandle(IntPtr existingHandle, bool ownsHandle);
+    protected override bool ReleaseHandle();
+  }
+  public sealed class SafeX509ChainHandle : SafeHandleZeroOrMinusOneIsInvalid {
+    protected override bool ReleaseHandle();
+  }
+}
+namespace System {
+  public static class AppContext {
+    public static string BaseDirectory { get; }
+    public static void SetSwitch(string switchName, bool isEnabled);
+    public static bool TryGetSwitch(string switchName, out bool isEnabled);
+  }
+  public abstract class Array : ICloneable, ICollection, IEnumerable, IList, IStructuralComparable, IStructuralEquatable {
+    public static T[] Empty<T>();
+  }
+  public static class Buffer {
+    [MethodImpl(AggressiveInlining)]public unsafe static void MemoryCopy(void* source, void* destination, long destinationSizeInBytes, long sourceBytesToCopy);
+    [MethodImpl(AggressiveInlining)]public unsafe static void MemoryCopy(void* source, void* destination, ulong destinationSizeInBytes, ulong sourceBytesToCopy);
+  }
+  public static class Console {
+    [MethodImpl(NoInlining)]public static int Read();
+    [MethodImpl(NoInlining)]public static string ReadLine();
+    [MethodImpl(NoInlining)]public static void Write(bool value);
+    [MethodImpl(NoInlining)]public static void Write(char value);
+    [MethodImpl(NoInlining)]public static void Write(char[] buffer);
+    [MethodImpl(NoInlining)]public static void Write(char[] buffer, int index, int count);
+    [MethodImpl(NoInlining)]public static void Write(decimal value);
+    [MethodImpl(NoInlining)]public static void Write(double value);
+    [MethodImpl(NoInlining)]public static void Write(int value);
+    [MethodImpl(NoInlining)]public static void Write(long value);
+    [MethodImpl(NoInlining)]public static void Write(object value);
+    [MethodImpl(NoInlining)]public static void Write(float value);
+    [MethodImpl(NoInlining)]public static void Write(string value);
+    [MethodImpl(NoInlining)]public static void Write(string format, object arg0);
+    [MethodImpl(NoInlining)]public static void Write(string format, object arg0, object arg1);
+    [MethodImpl(NoInlining)]public static void Write(string format, object arg0, object arg1, object arg2);
+    [MethodImpl(NoInlining)]public static void Write(string format, object arg0, object arg1, object arg2, object arg3, __arglist);
+    [MethodImpl(NoInlining)]public static void Write(string format, params object[] arg);
+    [MethodImpl(NoInlining)]public static void Write(uint value);
+    [MethodImpl(NoInlining)]public static void Write(ulong value);
+    [MethodImpl(NoInlining)]public static void WriteLine();
+    [MethodImpl(NoInlining)]public static void WriteLine(bool value);
+    [MethodImpl(NoInlining)]public static void WriteLine(char value);
+    [MethodImpl(NoInlining)]public static void WriteLine(char[] buffer);
+    [MethodImpl(NoInlining)]public static void WriteLine(char[] buffer, int index, int count);
+    [MethodImpl(NoInlining)]public static void WriteLine(decimal value);
+    [MethodImpl(NoInlining)]public static void WriteLine(double value);
+    [MethodImpl(NoInlining)]public static void WriteLine(int value);
+    [MethodImpl(NoInlining)]public static void WriteLine(long value);
+    [MethodImpl(NoInlining)]public static void WriteLine(object value);
+    [MethodImpl(NoInlining)]public static void WriteLine(float value);
+    [MethodImpl(NoInlining)]public static void WriteLine(string value);
+    [MethodImpl(NoInlining)]public static void WriteLine(string format, object arg0);
+    [MethodImpl(NoInlining)]public static void WriteLine(string format, object arg0, object arg1);
+    [MethodImpl(NoInlining)]public static void WriteLine(string format, object arg0, object arg1, object arg2);
+    [MethodImpl(NoInlining)]public static void WriteLine(string format, object arg0, object arg1, object arg2, object arg3, __arglist);
+    [MethodImpl(NoInlining)]public static void WriteLine(string format, params object[] arg);
+    [MethodImpl(NoInlining)]public static void WriteLine(uint value);
+    [MethodImpl(NoInlining)]public static void WriteLine(ulong value);
+  }
+  public struct DateTimeOffset : IComparable, IComparable<DateTimeOffset>, IDeserializationCallback, IEquatable<DateTimeOffset>, IFormattable, ISerializable {
+    public static DateTimeOffset FromUnixTimeMilliseconds(long milliseconds);
+    public static DateTimeOffset FromUnixTimeSeconds(long seconds);
+    public long ToUnixTimeMilliseconds();
+    public long ToUnixTimeSeconds();
+  }
+  public abstract class FormattableString : IFormattable {
+    protected FormattableString();
+    public abstract int ArgumentCount { get; }
+    public abstract string Format { get; }
+    public abstract object GetArgument(int index);
+    public abstract object[] GetArguments();
+    public static string Invariant(FormattableString formattable);
+    string System.IFormattable.ToString(string ignored, IFormatProvider formatProvider);
+    public override string ToString();
+    public abstract string ToString(IFormatProvider formatProvider);
+  }
+  public static class GC {
+    public static void Collect(int generation, GCCollectionMode mode, bool blocking, bool compacting);
+    public static void EndNoGCRegion();
+    public static bool TryStartNoGCRegion(long totalSize);
+    public static bool TryStartNoGCRegion(long totalSize, bool disallowFullBlockingGC);
+    public static bool TryStartNoGCRegion(long totalSize, long lohSize);
+    public static bool TryStartNoGCRegion(long totalSize, long lohSize, bool disallowFullBlockingGC);
+  }
+  public sealed class String : ICloneable, IComparable, IComparable<string>, IConvertible, IEnumerable, IEnumerable<char>, IEquatable<string> {
+    public static string Format(IFormatProvider provider, string format, object arg0);
+    public static string Format(IFormatProvider provider, string format, object arg0, object arg1);
+    public static string Format(IFormatProvider provider, string format, object arg0, object arg1, object arg2);
+  }
+  public class Uri : ISerializable {
+    public string IdnHost { get; }
+  }
+}
+namespace System.Collections.Concurrent {
+  public class BlockingCollection<T> : ICollection, IDisposable, IEnumerable, IEnumerable<T>, IReadOnlyCollection<T> {
+  }
+  public class ConcurrentBag<T> : ICollection, IEnumerable, IEnumerable<T>, IProducerConsumerCollection<T>, IReadOnlyCollection<T> {
+  }
+  public class ConcurrentDictionary<TKey, TValue> : ICollection, ICollection<KeyValuePair<TKey, TValue>>, IDictionary, IDictionary<TKey, TValue>, IEnumerable, IEnumerable<KeyValuePair<TKey, TValue>>, IReadOnlyCollection<KeyValuePair<TKey, TValue>>, IReadOnlyDictionary<TKey, TValue> {
+    IEnumerable<TKey> System.Collections.Generic.IReadOnlyDictionary<TKey,TValue>.Keys { get; }
+    IEnumerable<TValue> System.Collections.Generic.IReadOnlyDictionary<TKey,TValue>.Values { get; }
+  }
+  public class ConcurrentQueue<T> : ICollection, IEnumerable, IEnumerable<T>, IProducerConsumerCollection<T>, IReadOnlyCollection<T> {
+  }
+  public class ConcurrentStack<T> : ICollection, IEnumerable, IEnumerable<T>, IProducerConsumerCollection<T>, IReadOnlyCollection<T> {
+  }
+}
+namespace System.Collections.Generic {
+  public class HashSet<T> : ICollection<T>, IDeserializationCallback, IEnumerable, IEnumerable<T>, IReadOnlyCollection<T>, ISerializable, ISet<T> {
+  }
+  public class LinkedList<T> : ICollection, ICollection<T>, IDeserializationCallback, IEnumerable, IEnumerable<T>, IReadOnlyCollection<T>, ISerializable {
+  }
+  public class Queue<T> : ICollection, IEnumerable, IEnumerable<T>, IReadOnlyCollection<T> {
+  }
+  public class SortedDictionary<TKey, TValue> : ICollection, ICollection<KeyValuePair<TKey, TValue>>, IDictionary, IDictionary<TKey, TValue>, IEnumerable, IEnumerable<KeyValuePair<TKey, TValue>>, IReadOnlyCollection<KeyValuePair<TKey, TValue>>, IReadOnlyDictionary<TKey, TValue> {
+    IEnumerable<TKey> System.Collections.Generic.IReadOnlyDictionary<TKey,TValue>.Keys { get; }
+    IEnumerable<TValue> System.Collections.Generic.IReadOnlyDictionary<TKey,TValue>.Values { get; }
+    public sealed class KeyCollection : ICollection, ICollection<TKey>, IEnumerable, IEnumerable<TKey>, IReadOnlyCollection<TKey> {
+    }
+    public sealed class ValueCollection : ICollection, ICollection<TValue>, IEnumerable, IEnumerable<TValue>, IReadOnlyCollection<TValue> {
+    }
+  }
+  public class SortedList<TKey, TValue> : ICollection, ICollection<KeyValuePair<TKey, TValue>>, IDictionary, IDictionary<TKey, TValue>, IEnumerable, IEnumerable<KeyValuePair<TKey, TValue>>, IReadOnlyCollection<KeyValuePair<TKey, TValue>>, IReadOnlyDictionary<TKey, TValue> {
+    IEnumerable<TKey> System.Collections.Generic.IReadOnlyDictionary<TKey,TValue>.Keys { get; }
+    IEnumerable<TValue> System.Collections.Generic.IReadOnlyDictionary<TKey,TValue>.Values { get; }
+  }
+  public class SortedSet<T> : ICollection, ICollection<T>, IDeserializationCallback, IEnumerable, IEnumerable<T>, IReadOnlyCollection<T>, ISerializable, ISet<T> {
+  }
+  public class Stack<T> : ICollection, IEnumerable, IEnumerable<T>, IReadOnlyCollection<T> {
+  }
+}
+namespace System.Configuration {
+  public sealed class RsaProtectedConfigurationProvider : ProtectedConfigurationProvider {
+    public bool UseFIPS { get; }
+  }
+}
+namespace System.Data.Common {
+  public class DbEnumerator : IEnumerator {
+    public DbEnumerator(DbDataReader reader);
+    public DbEnumerator(DbDataReader reader, bool closeReader);
+  }
+}
+namespace System.Data.SqlClient {
+  public enum SqlAuthenticationMethod {
+    ActiveDirectoryIntegrated = 3,
+    ActiveDirectoryPassword = 2,
+    NotSpecified = 0,
+    SqlPassword = 1,
+  }
+  public sealed class SqlBulkCopy : IDisposable {
+    public void WriteToServer(DbDataReader reader);
+    public Task WriteToServerAsync(DbDataReader reader);
+    public Task WriteToServerAsync(DbDataReader reader, CancellationToken cancellationToken);
+  }
+  public sealed class SqlColumnEncryptionCertificateStoreProvider : SqlColumnEncryptionKeyStoreProvider {
+    public SqlColumnEncryptionCertificateStoreProvider();
+    public override byte[] DecryptColumnEncryptionKey(string masterKeyPath, string encryptionAlgorithm, byte[] encryptedColumnEncryptionKey);
+    public override byte[] EncryptColumnEncryptionKey(string masterKeyPath, string encryptionAlgorithm, byte[] columnEncryptionKey);
+  }
+  public abstract class SqlColumnEncryptionKeyStoreProvider {
+    protected SqlColumnEncryptionKeyStoreProvider();
+    public abstract byte[] DecryptColumnEncryptionKey(string masterKeyPath, string encryptionAlgorithm, byte[] encryptedColumnEncryptionKey);
+    public abstract byte[] EncryptColumnEncryptionKey(string masterKeyPath, string encryptionAlgorithm, byte[] columnEncryptionKey);
+  }
+  public sealed class SqlCommand : DbCommand, ICloneable {
+    public SqlCommand(string cmdText, SqlConnection connection, SqlTransaction transaction, SqlCommandColumnEncryptionSetting columnEncryptionSetting);
+    public SqlCommandColumnEncryptionSetting ColumnEncryptionSetting { get; }
+  }
+  public enum SqlCommandColumnEncryptionSetting {
+    Disabled = 3,
+    Enabled = 1,
+    ResultSetOnly = 2,
+    UseConnectionSetting = 0,
+  }
+  public sealed class SqlConnection : DbConnection, ICloneable {
+    public string AccessToken { get; set; }
+    public static IDictionary<string, IList<string>> ColumnEncryptionTrustedMasterKeyPaths { get; }
+    public static void RegisterColumnEncryptionKeyStoreProviders(IDictionary<string, SqlColumnEncryptionKeyStoreProvider> customProviders);
+  }
+  public enum SqlConnectionColumnEncryptionSetting {
+    Disabled = 0,
+    Enabled = 1,
+  }
+  public sealed class SqlConnectionStringBuilder : DbConnectionStringBuilder {
+    public SqlAuthenticationMethod Authentication { get; set; }
+    public SqlConnectionColumnEncryptionSetting ColumnEncryptionSetting { get; set; }
+  }
+  public sealed class SqlParameter : DbParameter, ICloneable, IDataParameter, IDbDataParameter {
+    public bool ForceColumnEncryption { get; set; }
+  }
+}
+namespace System.Diagnostics {
+  public sealed class Debugger {
+    public static bool IsAttached { [MethodImpl(InternalCall)]get; }
+  }
+  public class Process : Component {
+    public SafeProcessHandle SafeHandle { get; }
+  }
+  public sealed class ProcessStartInfo {
+    public IDictionary<string, string> Environment { get; }
+  }
+}
+namespace System.Diagnostics.Tracing {
+  public enum EventActivityOptions {
+    Detachable = 8,
+    Disable = 2,
+    None = 0,
+    Recursive = 4,
+  }
+  public sealed class EventAttribute : Attribute {
+    public EventActivityOptions ActivityOptions { get; set; }
+    public EventChannel Channel { get; set; }
+    public EventTags Tags { get; set; }
+  }
+  public enum EventChannel : byte {
+    Admin = (byte)16,
+    Analytic = (byte)18,
+    Debug = (byte)19,
+    None = (byte)0,
+    Operational = (byte)17,
+  }
+  public class EventDataAttribute : Attribute {
+    public EventDataAttribute();
+    public string Name { get; set; }
+  }
+  public class EventFieldAttribute : Attribute {
+    public EventFieldAttribute();
+    public EventFieldFormat Format { get; set; }
+    public EventFieldTags Tags { get; set; }
+  }
+  public enum EventFieldFormat {
+    Boolean = 3,
+    Default = 0,
+    Hexadecimal = 4,
+    HResult = 15,
+    Json = 12,
+    String = 2,
+    Xml = 11,
+  }
+  public enum EventFieldTags {
+    None = 0,
+  }
+  public class EventIgnoreAttribute : Attribute {
+    public EventIgnoreAttribute();
+  }
+  public enum EventKeywords : long {
+    All = (long)-1,
+    MicrosoftTelemetry = (long)562949953421312,
+  }
+  public enum EventManifestOptions {
+    AllCultures = 2,
+    AllowEventSourceOverride = 8,
+    None = 0,
+    OnlyIfNeededForRegistration = 4,
+    Strict = 1,
+  }
+  public class EventSource : IDisposable {
+    protected EventSource(EventSourceSettings settings);
+    protected EventSource(EventSourceSettings settings, params string[] traits);
+    public EventSource(string eventSourceName);
+    public EventSource(string eventSourceName, EventSourceSettings config);
+    public EventSource(string eventSourceName, EventSourceSettings config, params string[] traits);
+    public EventSourceSettings Settings { get; }
+    public static string GenerateManifest(Type eventSourceType, string assemblyPathToIncludeInManifest, EventManifestOptions flags);
+    public string GetTrait(string key);
+    public bool IsEnabled(EventLevel level, EventKeywords keywords, EventChannel channel);
+    public void Write(string eventName);
+    public void Write(string eventName, EventSourceOptions options);
+    public void Write<T>(string eventName, ref EventSourceOptions options, ref Guid activityId, ref Guid relatedActivityId, ref T data);
+    public void Write<T>(string eventName, ref EventSourceOptions options, ref T data);
+    public void Write<T>(string eventName, T data);
+    protected void WriteEvent(int eventId, byte[] arg1);
+    protected void WriteEvent(int eventId, int arg1, string arg2);
+    protected void WriteEvent(int eventId, long arg1, byte[] arg2);
+    protected void WriteEvent(int eventId, long arg1, string arg2);
+    protected void WriteEventWithRelatedActivityId(int eventId, Guid childActivityIDrelatedActivityId, params object[] args);
+    protected unsafe void WriteEventWithRelatedActivityIdCore(int eventId, Guid* childActivityIDrelatedActivityId, int eventDataCount, EventSource.EventData* data);
+  }
+  [System.Runtime.InteropServices.StructLayoutAttribute(System.Runtime.InteropServices.LayoutKind.Sequential)]
+  public struct EventSourceOptions {
+    public EventActivityOptions ActivityOptions { get; set; }
+    public EventKeywords Keywords { get; set; }
+    public EventLevel Level { get; set; }
+    public EventOpcode Opcode { get; set; }
+    public EventTags Tags { get; set; }
+  }
+  public enum EventSourceSettings {
+    Default = 0,
+    EtwManifestEventFormat = 4,
+    EtwSelfDescribingEventFormat = 8,
+    ThrowOnEventWriteErrors = 1,
+  }
+  public enum EventTags {
+    None = 0,
+  }
+  public class EventWrittenEventArgs : EventArgs {
+    public EventChannel Channel { get; }
+    public string EventName { get; }
+    public ReadOnlyCollection<string> PayloadNames { get; }
+    public EventTags Tags { get; }
+  }
+}
+namespace System.DirectoryServices.ActiveDirectory {
+  public class Domain : ActiveDirectoryPartition {
+    public int DomainModeLevel { get; }
+    public void RaiseDomainFunctionalityLevel(int domainMode);
+  }
+  public enum DomainMode {
+    Unknown = -1,
+  }
+  public class Forest : IDisposable {
+    public int ForestModeLevel { get; }
+    public void RaiseForestFunctionalityLevel(int forestMode);
+  }
+  public enum ForestMode {
+    Unknown = -1,
+  }
+}
+namespace System.Globalization {
+  public class CompareInfo : IDeserializationCallback {
+    public virtual int GetHashCode(string source, CompareOptions options);
+  }
+  public class CultureInfo : ICloneable, IFormatProvider {
+    public static CultureInfo CurrentCulture { get; set; }
+    public static CultureInfo CurrentUICulture { get; set; }
+  }
+}
+namespace System.IO {
+  public class MemoryStream : Stream {
+    public virtual bool TryGetBuffer(out ArraySegment<byte> buffer);
+  }
+}
+namespace System.IO.MemoryMappedFiles {
+  public class MemoryMappedFile : IDisposable {
+    public static MemoryMappedFile CreateFromFile(FileStream fileStream, string mapName, long capacity, MemoryMappedFileAccess access, HandleInheritability inheritability, bool leaveOpen);
+    public static MemoryMappedFile CreateNew(string mapName, long capacity, MemoryMappedFileAccess access, MemoryMappedFileOptions options, HandleInheritability inheritability);
+    public static MemoryMappedFile CreateOrOpen(string mapName, long capacity, MemoryMappedFileAccess access, MemoryMappedFileOptions options, HandleInheritability inheritability);
+  }
+}
+namespace System.IO.Pipes {
+  public sealed class NamedPipeClientStream : PipeStream {
+    public Task ConnectAsync();
+    public Task ConnectAsync(int timeout);
+    public Task ConnectAsync(int timeout, CancellationToken cancellationToken);
+    public Task ConnectAsync(CancellationToken cancellationToken);
+  }
+  public sealed class NamedPipeServerStream : PipeStream {
+    public Task WaitForConnectionAsync();
+    public Task WaitForConnectionAsync(CancellationToken cancellationToken);
+  }
+}
+namespace System.Linq.Expressions {
+  public class DynamicExpression : Expression, IArgumentProvider, IDynamicExpression {
+    int System.Linq.Expressions.IArgumentProvider.ArgumentCount { get; }
+    Expression System.Linq.Expressions.IArgumentProvider.GetArgument(int index);
+    object System.Linq.Expressions.IDynamicExpression.CreateCallSite();
+    Expression System.Linq.Expressions.IDynamicExpression.Rewrite(Expression[] args);
+  }
+  public sealed class ElementInit : IArgumentProvider {
+    int System.Linq.Expressions.IArgumentProvider.ArgumentCount { get; }
+    Expression System.Linq.Expressions.IArgumentProvider.GetArgument(int index);
+  }
+  public interface IArgumentProvider {
+    int ArgumentCount { get; }
+    Expression GetArgument(int index);
+  }
+  public interface IDynamicExpression : IArgumentProvider {
+    Type DelegateType { get; }
+    object CreateCallSite();
+    Expression Rewrite(Expression[] args);
+  }
+  public sealed class IndexExpression : Expression, IArgumentProvider {
+    int System.Linq.Expressions.IArgumentProvider.ArgumentCount { get; }
+    Expression System.Linq.Expressions.IArgumentProvider.GetArgument(int index);
+  }
+  public sealed class InvocationExpression : Expression, IArgumentProvider {
+    int System.Linq.Expressions.IArgumentProvider.ArgumentCount { get; }
+    Expression System.Linq.Expressions.IArgumentProvider.GetArgument(int index);
+  }
+  public class MethodCallExpression : Expression, IArgumentProvider {
+    int System.Linq.Expressions.IArgumentProvider.ArgumentCount { get; }
+    Expression System.Linq.Expressions.IArgumentProvider.GetArgument(int index);
+  }
+  public class NewExpression : Expression, IArgumentProvider {
+    int System.Linq.Expressions.IArgumentProvider.ArgumentCount { get; }
+    Expression System.Linq.Expressions.IArgumentProvider.GetArgument(int index);
+  }
+}
+namespace System.Net {
+  public class ServicePointManager {
+    public static bool ReusePort { get; set; }
+  }
+}
+namespace System.Net.Sockets {
+  public enum SocketOptionName {
+    ReuseUnicastPort = 12295,
+  }
+  public class TcpClient : IDisposable {
+    public void Dispose();
+    void System.IDisposable.Dispose();
+  }
+  public class UdpClient : IDisposable {
+    public void Dispose();
+    void System.IDisposable.Dispose();
+  }
+}
+namespace System.Numerics {
+  [System.Runtime.InteropServices.StructLayoutAttribute(System.Runtime.InteropServices.LayoutKind.Sequential)]
+  public struct Matrix3x2 : IEquatable<Matrix3x2> {
+    public float M11;
+    public float M12;
+    public float M21;
+    public float M22;
+    public float M31;
+    public float M32;
+    public Matrix3x2(float m11, float m12, float m21, float m22, float m31, float m32);
+    public static Matrix3x2 Identity { get; }
+    public bool IsIdentity { get; }
+    public Vector2 Translation { get; set; }
+    public static Matrix3x2 Add(Matrix3x2 value1, Matrix3x2 value2);
+    public static Matrix3x2 CreateRotation(float radians);
+    public static Matrix3x2 CreateRotation(float radians, Vector2 centerPoint);
+    public static Matrix3x2 CreateScale(Vector2 scales);
+    public static Matrix3x2 CreateScale(Vector2 scales, Vector2 centerPoint);
+    public static Matrix3x2 CreateScale(float scale);
+    public static Matrix3x2 CreateScale(float scale, Vector2 centerPoint);
+    public static Matrix3x2 CreateScale(float xScale, float yScale);
+    public static Matrix3x2 CreateScale(float xScale, float yScale, Vector2 centerPoint);
+    public static Matrix3x2 CreateSkew(float radiansX, float radiansY);
+    public static Matrix3x2 CreateSkew(float radiansX, float radiansY, Vector2 centerPoint);
+    public static Matrix3x2 CreateTranslation(Vector2 position);
+    public static Matrix3x2 CreateTranslation(float xPosition, float yPosition);
+    public bool Equals(Matrix3x2 other);
+    public override bool Equals(object obj);
+    public float GetDeterminant();
+    public override int GetHashCode();
+    public static bool Invert(Matrix3x2 matrix, out Matrix3x2 result);
+    public static Matrix3x2 Lerp(Matrix3x2 matrix1, Matrix3x2 matrix2, float amount);
+    public static Matrix3x2 Multiply(Matrix3x2 value1, Matrix3x2 value2);
+    public static Matrix3x2 Multiply(Matrix3x2 value1, float value2);
+    public static Matrix3x2 Negate(Matrix3x2 value);
+    public static Matrix3x2 operator +(Matrix3x2 value1, Matrix3x2 value2);
+    public static bool operator ==(Matrix3x2 value1, Matrix3x2 value2);
+    public static bool operator !=(Matrix3x2 value1, Matrix3x2 value2);
+    public static Matrix3x2 operator *(Matrix3x2 value1, Matrix3x2 value2);
+    public static Matrix3x2 operator *(Matrix3x2 value1, float value2);
+    public static Matrix3x2 operator -(Matrix3x2 value1, Matrix3x2 value2);
+    public static Matrix3x2 operator -(Matrix3x2 value);
+    public static Matrix3x2 Subtract(Matrix3x2 value1, Matrix3x2 value2);
+    public override string ToString();
+  }
+  [System.Runtime.InteropServices.StructLayoutAttribute(System.Runtime.InteropServices.LayoutKind.Sequential)]
+  public struct Matrix4x4 : IEquatable<Matrix4x4> {
+    public float M11;
+    public float M12;
+    public float M13;
+    public float M14;
+    public float M21;
+    public float M22;
+    public float M23;
+    public float M24;
+    public float M31;
+    public float M32;
+    public float M33;
+    public float M34;
+    public float M41;
+    public float M42;
+    public float M43;
+    public float M44;
+    public Matrix4x4(Matrix3x2 value);
+    public Matrix4x4(float m11, float m12, float m13, float m14, float m21, float m22, float m23, float m24, float m31, float m32, float m33, float m34, float m41, float m42, float m43, float m44);
+    public static Matrix4x4 Identity { get; }
+    public bool IsIdentity { get; }
+    public Vector3 Translation { get; set; }
+    public static Matrix4x4 Add(Matrix4x4 value1, Matrix4x4 value2);
+    public static Matrix4x4 CreateBillboard(Vector3 objectPosition, Vector3 cameraPosition, Vector3 cameraUpVector, Vector3 cameraForwardVector);
+    public static Matrix4x4 CreateConstrainedBillboard(Vector3 objectPosition, Vector3 cameraPosition, Vector3 rotateAxis, Vector3 cameraForwardVector, Vector3 objectForwardVector);
+    public static Matrix4x4 CreateFromAxisAngle(Vector3 axis, float angle);
+    public static Matrix4x4 CreateFromQuaternion(Quaternion quaternion);
+    public static Matrix4x4 CreateFromYawPitchRoll(float yaw, float pitch, float roll);
+    public static Matrix4x4 CreateLookAt(Vector3 cameraPosition, Vector3 cameraTarget, Vector3 cameraUpVector);
+    public static Matrix4x4 CreateOrthographic(float width, float height, float zNearPlane, float zFarPlane);
+    public static Matrix4x4 CreateOrthographicOffCenter(float left, float right, float bottom, float top, float zNearPlane, float zFarPlane);
+    public static Matrix4x4 CreatePerspective(float width, float height, float nearPlaneDistance, float farPlaneDistance);
+    public static Matrix4x4 CreatePerspectiveFieldOfView(float fieldOfView, float aspectRatio, float nearPlaneDistance, float farPlaneDistance);
+    public static Matrix4x4 CreatePerspectiveOffCenter(float left, float right, float bottom, float top, float nearPlaneDistance, float farPlaneDistance);
+    public static Matrix4x4 CreateReflection(Plane value);
+    public static Matrix4x4 CreateRotationX(float radians);
+    public static Matrix4x4 CreateRotationX(float radians, Vector3 centerPoint);
+    public static Matrix4x4 CreateRotationY(float radians);
+    public static Matrix4x4 CreateRotationY(float radians, Vector3 centerPoint);
+    public static Matrix4x4 CreateRotationZ(float radians);
+    public static Matrix4x4 CreateRotationZ(float radians, Vector3 centerPoint);
+    public static Matrix4x4 CreateScale(Vector3 scales);
+    public static Matrix4x4 CreateScale(Vector3 scales, Vector3 centerPoint);
+    public static Matrix4x4 CreateScale(float scale);
+    public static Matrix4x4 CreateScale(float scale, Vector3 centerPoint);
+    public static Matrix4x4 CreateScale(float xScale, float yScale, float zScale);
+    public static Matrix4x4 CreateScale(float xScale, float yScale, float zScale, Vector3 centerPoint);
+    public static Matrix4x4 CreateShadow(Vector3 lightDirection, Plane plane);
+    public static Matrix4x4 CreateTranslation(Vector3 position);
+    public static Matrix4x4 CreateTranslation(float xPosition, float yPosition, float zPosition);
+    public static Matrix4x4 CreateWorld(Vector3 position, Vector3 forward, Vector3 up);
+    public static bool Decompose(Matrix4x4 matrix, out Vector3 scale, out Quaternion rotation, out Vector3 translation);
+    public bool Equals(Matrix4x4 other);
+    public override bool Equals(object obj);
+    public float GetDeterminant();
+    public override int GetHashCode();
+    public static bool Invert(Matrix4x4 matrix, out Matrix4x4 result);
+    public static Matrix4x4 Lerp(Matrix4x4 matrix1, Matrix4x4 matrix2, float amount);
+    public static Matrix4x4 Multiply(Matrix4x4 value1, Matrix4x4 value2);
+    public static Matrix4x4 Multiply(Matrix4x4 value1, float value2);
+    public static Matrix4x4 Negate(Matrix4x4 value);
+    public static Matrix4x4 operator +(Matrix4x4 value1, Matrix4x4 value2);
+    public static bool operator ==(Matrix4x4 value1, Matrix4x4 value2);
+    public static bool operator !=(Matrix4x4 value1, Matrix4x4 value2);
+    public static Matrix4x4 operator *(Matrix4x4 value1, Matrix4x4 value2);
+    public static Matrix4x4 operator *(Matrix4x4 value1, float value2);
+    public static Matrix4x4 operator -(Matrix4x4 value1, Matrix4x4 value2);
+    public static Matrix4x4 operator -(Matrix4x4 value);
+    public static Matrix4x4 Subtract(Matrix4x4 value1, Matrix4x4 value2);
+    public override string ToString();
+    public static Matrix4x4 Transform(Matrix4x4 value, Quaternion rotation);
+    public static Matrix4x4 Transpose(Matrix4x4 matrix);
+  }
+  [System.Runtime.InteropServices.StructLayoutAttribute(System.Runtime.InteropServices.LayoutKind.Sequential)]
+  public struct Plane : IEquatable<Plane> {
+    public Vector3 Normal;
+    public float D;
+    public Plane(Vector3 normal, float d);
+    public Plane(Vector4 value);
+    public Plane(float x, float y, float z, float d);
+    [MethodImpl(AggressiveInlining)]public static Plane CreateFromVertices(Vector3 point1, Vector3 point2, Vector3 point3);
+    [MethodImpl(AggressiveInlining)]public static float Dot(Plane plane, Vector4 value);
+    [MethodImpl(AggressiveInlining)]public static float DotCoordinate(Plane plane, Vector3 value);
+    [MethodImpl(AggressiveInlining)]public static float DotNormal(Plane plane, Vector3 value);
+    [MethodImpl(AggressiveInlining)]public bool Equals(Plane other);
+    [MethodImpl(AggressiveInlining)]public override bool Equals(object obj);
+    public override int GetHashCode();
+    [MethodImpl(AggressiveInlining)]public static Plane Normalize(Plane value);
+    [MethodImpl(AggressiveInlining)]public static bool operator ==(Plane value1, Plane value2);
+    [MethodImpl(AggressiveInlining)]public static bool operator !=(Plane value1, Plane value2);
+    public override string ToString();
+    [MethodImpl(AggressiveInlining)]public static Plane Transform(Plane plane, Matrix4x4 matrix);
+    [MethodImpl(AggressiveInlining)]public static Plane Transform(Plane plane, Quaternion rotation);
+  }
+  [System.Runtime.InteropServices.StructLayoutAttribute(System.Runtime.InteropServices.LayoutKind.Sequential)]
+  public struct Quaternion : IEquatable<Quaternion> {
+    public float W;
+    public float X;
+    public float Y;
+    public float Z;
+    public Quaternion(Vector3 vectorPart, float scalarPart);
+    public Quaternion(float x, float y, float z, float w);
+    public static Quaternion Identity { get; }
+    public bool IsIdentity { get; }
+    public static Quaternion Add(Quaternion value1, Quaternion value2);
+    public static Quaternion Concatenate(Quaternion value1, Quaternion value2);
+    public static Quaternion Conjugate(Quaternion value);
+    public static Quaternion CreateFromAxisAngle(Vector3 axis, float angle);
+    public static Quaternion CreateFromRotationMatrix(Matrix4x4 matrix);
+    public static Quaternion CreateFromYawPitchRoll(float yaw, float pitch, float roll);
+    public static Quaternion Divide(Quaternion value1, Quaternion value2);
+    public static float Dot(Quaternion quaternion1, Quaternion quaternion2);
+    public bool Equals(Quaternion other);
+    public override bool Equals(object obj);
+    public override int GetHashCode();
+    public static Quaternion Inverse(Quaternion value);
+    public float Length();
+    public float LengthSquared();
+    public static Quaternion Lerp(Quaternion quaternion1, Quaternion quaternion2, float amount);
+    public static Quaternion Multiply(Quaternion value1, Quaternion value2);
+    public static Quaternion Multiply(Quaternion value1, float value2);
+    public static Quaternion Negate(Quaternion value);
+    public static Quaternion Normalize(Quaternion value);
+    public static Quaternion operator +(Quaternion value1, Quaternion value2);
+    public static Quaternion operator /(Quaternion value1, Quaternion value2);
+    public static bool operator ==(Quaternion value1, Quaternion value2);
+    public static bool operator !=(Quaternion value1, Quaternion value2);
+    public static Quaternion operator *(Quaternion value1, Quaternion value2);
+    public static Quaternion operator *(Quaternion value1, float value2);
+    public static Quaternion operator -(Quaternion value1, Quaternion value2);
+    public static Quaternion operator -(Quaternion value);
+    public static Quaternion Slerp(Quaternion quaternion1, Quaternion quaternion2, float amount);
+    public static Quaternion Subtract(Quaternion value1, Quaternion value2);
+    public override string ToString();
+  }
+  [System.Runtime.InteropServices.StructLayoutAttribute(System.Runtime.InteropServices.LayoutKind.Sequential)]
+  public struct Vector2 : IEquatable<Vector2>, IFormattable {
+    public float X;
+    public float Y;
+    public Vector2(float value);
+    public Vector2(float x, float y);
+    public static Vector2 One { get; }
+    public static Vector2 UnitX { get; }
+    public static Vector2 UnitY { get; }
+    public static Vector2 Zero { get; }
+    [MethodImpl(AggressiveInlining)]public static Vector2 Abs(Vector2 value);
+    [MethodImpl(AggressiveInlining)]public static Vector2 Add(Vector2 left, Vector2 right);
+    [MethodImpl(AggressiveInlining)]public static Vector2 Clamp(Vector2 value1, Vector2 min, Vector2 max);
+    [MethodImpl(AggressiveInlining)]public void CopyTo(float[] array);
+    public void CopyTo(float[] array, int index);
+    [MethodImpl(AggressiveInlining)]public static float Distance(Vector2 value1, Vector2 value2);
+    [MethodImpl(AggressiveInlining)]public static float DistanceSquared(Vector2 value1, Vector2 value2);
+    [MethodImpl(AggressiveInlining)]public static Vector2 Divide(Vector2 left, Vector2 right);
+    [MethodImpl(AggressiveInlining)]public static Vector2 Divide(Vector2 left, float divisor);
+    [MethodImpl(AggressiveInlining)]public static float Dot(Vector2 value1, Vector2 value2);
+    public bool Equals(Vector2 other);
+    [MethodImpl(AggressiveInlining)]public override bool Equals(object obj);
+    public override int GetHashCode();
+    [MethodImpl(AggressiveInlining)]public float Length();
+    [MethodImpl(AggressiveInlining)]public float LengthSquared();
+    [MethodImpl(AggressiveInlining)]public static Vector2 Lerp(Vector2 value1, Vector2 value2, float amount);
+    [MethodImpl(AggressiveInlining)]public static Vector2 Max(Vector2 value1, Vector2 value2);
+    [MethodImpl(AggressiveInlining)]public static Vector2 Min(Vector2 value1, Vector2 value2);
+    [MethodImpl(AggressiveInlining)]public static Vector2 Multiply(Vector2 left, Vector2 right);
+    [MethodImpl(AggressiveInlining)]public static Vector2 Multiply(Vector2 left, float right);
+    [MethodImpl(AggressiveInlining)]public static Vector2 Multiply(float left, Vector2 right);
+    [MethodImpl(AggressiveInlining)]public static Vector2 Negate(Vector2 value);
+    [MethodImpl(AggressiveInlining)]public static Vector2 Normalize(Vector2 value);
+    [MethodImpl(AggressiveInlining)]public static Vector2 operator +(Vector2 left, Vector2 right);
+    [MethodImpl(AggressiveInlining)]public static Vector2 operator /(Vector2 left, Vector2 right);
+    [MethodImpl(AggressiveInlining)]public static Vector2 operator /(Vector2 value1, float value2);
+    [MethodImpl(AggressiveInlining)]public static bool operator ==(Vector2 left, Vector2 right);
+    [MethodImpl(AggressiveInlining)]public static bool operator !=(Vector2 left, Vector2 right);
+    [MethodImpl(AggressiveInlining)]public static Vector2 operator *(Vector2 left, Vector2 right);
+    [MethodImpl(AggressiveInlining)]public static Vector2 operator *(Vector2 left, float right);
+    [MethodImpl(AggressiveInlining)]public static Vector2 operator *(float left, Vector2 right);
+    [MethodImpl(AggressiveInlining)]public static Vector2 operator -(Vector2 left, Vector2 right);
+    [MethodImpl(AggressiveInlining)]public static Vector2 operator -(Vector2 value);
+    [MethodImpl(AggressiveInlining)]public static Vector2 Reflect(Vector2 vector, Vector2 normal);
+    [MethodImpl(AggressiveInlining)]public static Vector2 SquareRoot(Vector2 value);
+    [MethodImpl(AggressiveInlining)]public static Vector2 Subtract(Vector2 left, Vector2 right);
+    public override string ToString();
+    public string ToString(string format);
+    public string ToString(string format, IFormatProvider formatProvider);
+    [MethodImpl(AggressiveInlining)]public static Vector2 Transform(Vector2 position, Matrix3x2 matrix);
+    [MethodImpl(AggressiveInlining)]public static Vector2 Transform(Vector2 position, Matrix4x4 matrix);
+    [MethodImpl(AggressiveInlining)]public static Vector2 Transform(Vector2 value, Quaternion rotation);
+    [MethodImpl(AggressiveInlining)]public static Vector2 TransformNormal(Vector2 normal, Matrix3x2 matrix);
+    [MethodImpl(AggressiveInlining)]public static Vector2 TransformNormal(Vector2 normal, Matrix4x4 matrix);
+  }
+  [System.Runtime.InteropServices.StructLayoutAttribute(System.Runtime.InteropServices.LayoutKind.Sequential)]
+  public struct Vector3 : IEquatable<Vector3>, IFormattable {
+    public float X;
+    public float Y;
+    public float Z;
+    public Vector3(Vector2 value, float z);
+    public Vector3(float value);
+    public Vector3(float x, float y, float z);
+    public static Vector3 One { get; }
+    public static Vector3 UnitX { get; }
+    public static Vector3 UnitY { get; }
+    public static Vector3 UnitZ { get; }
+    public static Vector3 Zero { get; }
+    [MethodImpl(AggressiveInlining)]public static Vector3 Abs(Vector3 value);
+    [MethodImpl(AggressiveInlining)]public static Vector3 Add(Vector3 left, Vector3 right);
+    [MethodImpl(AggressiveInlining)]public static Vector3 Clamp(Vector3 value1, Vector3 min, Vector3 max);
+    [MethodImpl(AggressiveInlining)]public void CopyTo(float[] array);
+    [MethodImpl(AggressiveInlining)]public void CopyTo(float[] array, int index);
+    [MethodImpl(AggressiveInlining)]public static Vector3 Cross(Vector3 vector1, Vector3 vector2);
+    [MethodImpl(AggressiveInlining)]public static float Distance(Vector3 value1, Vector3 value2);
+    [MethodImpl(AggressiveInlining)]public static float DistanceSquared(Vector3 value1, Vector3 value2);
+    [MethodImpl(AggressiveInlining)]public static Vector3 Divide(Vector3 left, Vector3 right);
+    [MethodImpl(AggressiveInlining)]public static Vector3 Divide(Vector3 left, float divisor);
+    [MethodImpl(AggressiveInlining)]public static float Dot(Vector3 vector1, Vector3 vector2);
+    public bool Equals(Vector3 other);
+    [MethodImpl(AggressiveInlining)]public override bool Equals(object obj);
+    public override int GetHashCode();
+    [MethodImpl(AggressiveInlining)]public float Length();
+    [MethodImpl(AggressiveInlining)]public float LengthSquared();
+    [MethodImpl(AggressiveInlining)]public static Vector3 Lerp(Vector3 value1, Vector3 value2, float amount);
+    [MethodImpl(AggressiveInlining)]public static Vector3 Max(Vector3 value1, Vector3 value2);
+    public static Vector3 Min(Vector3 value1, Vector3 value2);
+    [MethodImpl(AggressiveInlining)]public static Vector3 Multiply(Vector3 left, Vector3 right);
+    [MethodImpl(AggressiveInlining)]public static Vector3 Multiply(Vector3 left, float right);
+    [MethodImpl(AggressiveInlining)]public static Vector3 Multiply(float left, Vector3 right);
+    [MethodImpl(AggressiveInlining)]public static Vector3 Negate(Vector3 value);
+    [MethodImpl(AggressiveInlining)]public static Vector3 Normalize(Vector3 value);
+    [MethodImpl(AggressiveInlining)]public static Vector3 operator +(Vector3 left, Vector3 right);
+    [MethodImpl(AggressiveInlining)]public static Vector3 operator /(Vector3 left, Vector3 right);
+    [MethodImpl(AggressiveInlining)]public static Vector3 operator /(Vector3 value1, float value2);
+    [MethodImpl(AggressiveInlining)]public static bool operator ==(Vector3 left, Vector3 right);
+    [MethodImpl(AggressiveInlining)]public static bool operator !=(Vector3 left, Vector3 right);
+    [MethodImpl(AggressiveInlining)]public static Vector3 operator *(Vector3 left, Vector3 right);
+    [MethodImpl(AggressiveInlining)]public static Vector3 operator *(Vector3 left, float right);
+    [MethodImpl(AggressiveInlining)]public static Vector3 operator *(float left, Vector3 right);
+    [MethodImpl(AggressiveInlining)]public static Vector3 operator -(Vector3 left, Vector3 right);
+    [MethodImpl(AggressiveInlining)]public static Vector3 operator -(Vector3 value);
+    [MethodImpl(AggressiveInlining)]public static Vector3 Reflect(Vector3 vector, Vector3 normal);
+    [MethodImpl(AggressiveInlining)]public static Vector3 SquareRoot(Vector3 value);
+    [MethodImpl(AggressiveInlining)]public static Vector3 Subtract(Vector3 left, Vector3 right);
+    public override string ToString();
+    public string ToString(string format);
+    public string ToString(string format, IFormatProvider formatProvider);
+    [MethodImpl(AggressiveInlining)]public static Vector3 Transform(Vector3 position, Matrix4x4 matrix);
+    [MethodImpl(AggressiveInlining)]public static Vector3 Transform(Vector3 value, Quaternion rotation);
+    [MethodImpl(AggressiveInlining)]public static Vector3 TransformNormal(Vector3 normal, Matrix4x4 matrix);
+  }
+  [System.Runtime.InteropServices.StructLayoutAttribute(System.Runtime.InteropServices.LayoutKind.Sequential)]
+  public struct Vector4 : IEquatable<Vector4>, IFormattable {
+    public float W;
+    public float X;
+    public float Y;
+    public float Z;
+    public Vector4(Vector2 value, float z, float w);
+    public Vector4(Vector3 value, float w);
+    public Vector4(float value);
+    public Vector4(float x, float y, float z, float w);
+    public static Vector4 One { get; }
+    public static Vector4 UnitW { get; }
+    public static Vector4 UnitX { get; }
+    public static Vector4 UnitY { get; }
+    public static Vector4 UnitZ { get; }
+    public static Vector4 Zero { get; }
+    [MethodImpl(AggressiveInlining)]public static Vector4 Abs(Vector4 value);
+    [MethodImpl(AggressiveInlining)]public static Vector4 Add(Vector4 left, Vector4 right);
+    [MethodImpl(AggressiveInlining)]public static Vector4 Clamp(Vector4 value1, Vector4 min, Vector4 max);
+    [MethodImpl(AggressiveInlining)]public void CopyTo(float[] array);
+    [MethodImpl(AggressiveInlining)]public void CopyTo(float[] array, int index);
+    [MethodImpl(AggressiveInlining)]public static float Distance(Vector4 value1, Vector4 value2);
+    [MethodImpl(AggressiveInlining)]public static float DistanceSquared(Vector4 value1, Vector4 value2);
+    [MethodImpl(AggressiveInlining)]public static Vector4 Divide(Vector4 left, Vector4 right);
+    [MethodImpl(AggressiveInlining)]public static Vector4 Divide(Vector4 left, float divisor);
+    [MethodImpl(AggressiveInlining)]public static float Dot(Vector4 vector1, Vector4 vector2);
+    public bool Equals(Vector4 other);
+    [MethodImpl(AggressiveInlining)]public override bool Equals(object obj);
+    public override int GetHashCode();
+    [MethodImpl(AggressiveInlining)]public float Length();
+    [MethodImpl(AggressiveInlining)]public float LengthSquared();
+    [MethodImpl(AggressiveInlining)]public static Vector4 Lerp(Vector4 value1, Vector4 value2, float amount);
+    [MethodImpl(AggressiveInlining)]public static Vector4 Max(Vector4 value1, Vector4 value2);
+    [MethodImpl(AggressiveInlining)]public static Vector4 Min(Vector4 value1, Vector4 value2);
+    [MethodImpl(AggressiveInlining)]public static Vector4 Multiply(Vector4 left, Vector4 right);
+    [MethodImpl(AggressiveInlining)]public static Vector4 Multiply(Vector4 left, float right);
+    [MethodImpl(AggressiveInlining)]public static Vector4 Multiply(float left, Vector4 right);
+    [MethodImpl(AggressiveInlining)]public static Vector4 Negate(Vector4 value);
+    [MethodImpl(AggressiveInlining)]public static Vector4 Normalize(Vector4 vector);
+    [MethodImpl(AggressiveInlining)]public static Vector4 operator +(Vector4 left, Vector4 right);
+    [MethodImpl(AggressiveInlining)]public static Vector4 operator /(Vector4 left, Vector4 right);
+    [MethodImpl(AggressiveInlining)]public static Vector4 operator /(Vector4 value1, float value2);
+    [MethodImpl(AggressiveInlining)]public static bool operator ==(Vector4 left, Vector4 right);
+    [MethodImpl(AggressiveInlining)]public static bool operator !=(Vector4 left, Vector4 right);
+    [MethodImpl(AggressiveInlining)]public static Vector4 operator *(Vector4 left, Vector4 right);
+    [MethodImpl(AggressiveInlining)]public static Vector4 operator *(Vector4 left, float right);
+    [MethodImpl(AggressiveInlining)]public static Vector4 operator *(float left, Vector4 right);
+    [MethodImpl(AggressiveInlining)]public static Vector4 operator -(Vector4 left, Vector4 right);
+    [MethodImpl(AggressiveInlining)]public static Vector4 operator -(Vector4 value);
+    [MethodImpl(AggressiveInlining)]public static Vector4 SquareRoot(Vector4 value);
+    [MethodImpl(AggressiveInlining)]public static Vector4 Subtract(Vector4 left, Vector4 right);
+    public override string ToString();
+    public string ToString(string format);
+    public string ToString(string format, IFormatProvider formatProvider);
+    [MethodImpl(AggressiveInlining)]public static Vector4 Transform(Vector2 position, Matrix4x4 matrix);
+    [MethodImpl(AggressiveInlining)]public static Vector4 Transform(Vector2 value, Quaternion rotation);
+    [MethodImpl(AggressiveInlining)]public static Vector4 Transform(Vector3 position, Matrix4x4 matrix);
+    [MethodImpl(AggressiveInlining)]public static Vector4 Transform(Vector3 value, Quaternion rotation);
+    [MethodImpl(AggressiveInlining)]public static Vector4 Transform(Vector4 vector, Matrix4x4 matrix);
+    [MethodImpl(AggressiveInlining)]public static Vector4 Transform(Vector4 value, Quaternion rotation);
+  }
+}
+namespace System.Reflection {
+  public sealed class AssemblyName : _AssemblyName, ICloneable, IDeserializationCallback, ISerializable {
+    public string CultureName { get; set; }
+  }
+}
+namespace System.Runtime {
+  public enum GCLatencyMode {
+    NoGCRegion = 4,
+  }
+}
+namespace System.Runtime.CompilerServices {
+  public sealed class DisablePrivateReflectionAttribute : Attribute {
+    public DisablePrivateReflectionAttribute();
+  }
+  public static class FormattableStringFactory {
+    public static FormattableString Create(string format, params object[] arguments);
+  }
+}
+namespace System.Runtime.InteropServices {
+  public static class Marshal {
+    [MethodImpl(InternalCall)]public static IntPtr CreateAggregatedObject(IntPtr pOuter, object o);
+    [MethodImpl(InternalCall)]public static void DestroyStructure(IntPtr ptr, Type structuretype);
+    [MethodImpl(InternalCall)]public static int GetExceptionCode();
+    [MethodImpl(InternalCall)]public static void GetNativeVariantForObject(object obj, IntPtr pDstNativeVariant);
+    [MethodImpl(InternalCall)]public static object GetObjectForIUnknown(IntPtr pUnk);
+    [MethodImpl(InternalCall)]public static object GetObjectForNativeVariant(IntPtr pSrcNativeVariant);
+    [MethodImpl(InternalCall)]public static object[] GetObjectsForNativeVariants(IntPtr aSrcNativeVariant, int cVars);
+    [MethodImpl(InternalCall)]public static int GetStartComSlot(Type t);
+    [MethodImpl(InternalCall)]public static object GetUniqueObjectForIUnknown(IntPtr unknown);
+    [MethodImpl(InternalCall)]public static void StructureToPtr(object structure, IntPtr ptr, bool fDeleteOld);
+    [MethodImpl(InternalCall)]public static IntPtr UnsafeAddrOfPinnedArrayElement(Array arr, int index);
+  }
+}
+namespace System.Runtime.Serialization {
+  public sealed class CollectionDataContractAttribute : Attribute {
+    public bool IsItemNameSetExplicitly { get; }
+    public bool IsKeyNameSetExplicitly { get; }
+    public bool IsNameSetExplicitly { get; }
+    public bool IsNamespaceSetExplicitly { get; }
+    public bool IsReferenceSetExplicitly { get; }
+    public bool IsValueNameSetExplicitly { get; }
+  }
+  public sealed class DataContractAttribute : Attribute {
+    public bool IsNameSetExplicitly { get; }
+    public bool IsNamespaceSetExplicitly { get; }
+    public bool IsReferenceSetExplicitly { get; }
+  }
+  public sealed class DataMemberAttribute : Attribute {
+    public bool IsNameSetExplicitly { get; }
+  }
+  public sealed class EnumMemberAttribute : Attribute {
+    public bool IsValueSetExplicitly { get; }
+  }
+}
+namespace System.Security.AccessControl {
+  public sealed class AuthorizationRuleCollection : ReadOnlyCollectionBase {
+    public AuthorizationRuleCollection();
+    public void AddRule(AuthorizationRule rule);
+  }
+  public sealed class CommonSecurityDescriptor : GenericSecurityDescriptor {
+    public void AddDiscretionaryAcl(byte revision, int trusted);
+    public void AddSystemAcl(byte revision, int trusted);
+  }
+  public sealed class DiscretionaryAcl : CommonAcl {
+    public void AddAccess(AccessControlType accessType, SecurityIdentifier sid, ObjectAccessRule rule);
+    public bool RemoveAccess(AccessControlType accessType, SecurityIdentifier sid, ObjectAccessRule rule);
+    public void RemoveAccessSpecific(AccessControlType accessType, SecurityIdentifier sid, ObjectAccessRule rule);
+    public void SetAccess(AccessControlType accessType, SecurityIdentifier sid, ObjectAccessRule rule);
+  }
+  public abstract class ObjectSecurity {
+    protected ObjectSecurity();
+    protected ObjectSecurity(CommonSecurityDescriptor securityDescriptor);
+  }
+  public sealed class SystemAcl : CommonAcl {
+    public void AddAudit(SecurityIdentifier sid, ObjectAuditRule rule);
+    public bool RemoveAudit(SecurityIdentifier sid, ObjectAuditRule rule);
+    public void RemoveAuditSpecific(SecurityIdentifier sid, ObjectAuditRule rule);
+    public void SetAudit(SecurityIdentifier sid, ObjectAuditRule rule);
+  }
+}
+namespace System.Security.Claims {
+  public class Claim {
+    public Claim(BinaryReader reader);
+    public Claim(BinaryReader reader, ClaimsIdentity subject);
+    protected Claim(Claim other);
+    protected Claim(Claim other, ClaimsIdentity subject);
+    protected virtual byte[] CustomSerializationData { get; }
+    public virtual void WriteTo(BinaryWriter writer);
+    protected virtual void WriteTo(BinaryWriter writer, byte[] userData);
+  }
+  public class ClaimsIdentity : IIdentity {
+    public ClaimsIdentity(BinaryReader reader);
+    protected ClaimsIdentity(ClaimsIdentity other);
+    protected virtual byte[] CustomSerializationData { get; }
+    protected virtual Claim CreateClaim(BinaryReader reader);
+    public virtual void WriteTo(BinaryWriter writer);
+    protected virtual void WriteTo(BinaryWriter writer, byte[] userData);
+  }
+  public class ClaimsPrincipal : IPrincipal {
+    public ClaimsPrincipal(BinaryReader reader);
+    protected virtual byte[] CustomSerializationData { get; }
+    public virtual ClaimsPrincipal Clone();
+    protected virtual ClaimsIdentity CreateClaimsIdentity(BinaryReader reader);
+    public virtual void WriteTo(BinaryWriter writer);
+    protected virtual void WriteTo(BinaryWriter writer, byte[] userData);
+  }
+}
+namespace System.Security.Cryptography {
+  public abstract class AsymmetricAlgorithm : IDisposable {
+    public abstractvirtual string KeyExchangeAlgorithm { get; }
+    public abstractvirtual string SignatureAlgorithm { get; }
+    public abstractvirtual void FromXmlString(string xmlString);
+    public abstractvirtual string ToXmlString(bool includePrivateParameters);
+  }
+  public sealed class CngAlgorithm : IEquatable<CngAlgorithm> {
+    public static CngAlgorithm Rsa { get; }
+  }
+  [System.Runtime.InteropServices.StructLayoutAttribute(System.Runtime.InteropServices.LayoutKind.Sequential)]
+  public struct HashAlgorithmName : IEquatable<HashAlgorithmName> {
+    public HashAlgorithmName(string name);
+    public static HashAlgorithmName MD5 { get; }
+    public string Name { get; }
+    public static HashAlgorithmName SHA1 { get; }
+    public static HashAlgorithmName SHA256 { get; }
+    public static HashAlgorithmName SHA384 { get; }
+    public static HashAlgorithmName SHA512 { get; }
+    public override bool Equals(object obj);
+    public bool Equals(HashAlgorithmName other);
+    public override int GetHashCode();
+    public static bool operator ==(HashAlgorithmName left, HashAlgorithmName right);
+    public static bool operator !=(HashAlgorithmName left, HashAlgorithmName right);
+    public override string ToString();
+  }
+  public abstract class RandomNumberGenerator : IDisposable {
+    public virtual void GetBytes(byte[] data, int offset, int count);
+  }
+  public class Rfc2898DeriveBytes : DeriveBytes {
+    public byte[] CryptDeriveKey(string algname, string alghashname, int keySize, byte[] rgbIV);
+  }
+  public abstract class RSA : AsymmetricAlgorithm {
+    public override string KeyExchangeAlgorithm { get; }
+    public override string SignatureAlgorithm { get; }
+    public virtual byte[] Decrypt(byte[] data, RSAEncryptionPadding padding);
+    public abstractvirtual byte[] DecryptValue(byte[] rgb);
+    public virtual byte[] Encrypt(byte[] data, RSAEncryptionPadding padding);
+    public abstractvirtual byte[] EncryptValue(byte[] rgb);
+    protected virtual byte[] HashData(byte[] data, int offset, int count, HashAlgorithmName hashAlgorithm);
+    protected virtual byte[] HashData(Stream data, HashAlgorithmName hashAlgorithm);
+    public virtual byte[] SignData(byte[] data, int offset, int count, HashAlgorithmName hashAlgorithm, RSASignaturePadding padding);
+    public byte[] SignData(byte[] data, HashAlgorithmName hashAlgorithm, RSASignaturePadding padding);
+    public virtual byte[] SignData(Stream data, HashAlgorithmName hashAlgorithm, RSASignaturePadding padding);
+    public virtual byte[] SignHash(byte[] hash, HashAlgorithmName hashAlgorithm, RSASignaturePadding padding);
+    public bool VerifyData(byte[] data, byte[] signature, HashAlgorithmName hashAlgorithm, RSASignaturePadding padding);
+    public virtual bool VerifyData(byte[] data, int offset, int count, byte[] signature, HashAlgorithmName hashAlgorithm, RSASignaturePadding padding);
+    public bool VerifyData(Stream data, byte[] signature, HashAlgorithmName hashAlgorithm, RSASignaturePadding padding);
+    public virtual bool VerifyHash(byte[] hash, byte[] signature, HashAlgorithmName hashAlgorithm, RSASignaturePadding padding);
+  }
+  public sealed class RSACng : RSA {
+    public RSACng();
+    public RSACng(int keySize);
+    public RSACng(CngKey key);
+    public CngKey Key { get; }
+    public override byte[] Decrypt(byte[] data, RSAEncryptionPadding padding);
+    protected override void Dispose(bool disposing);
+    public override byte[] Encrypt(byte[] data, RSAEncryptionPadding padding);
+    public override RSAParameters ExportParameters(bool includePrivateParameters);
+    protected override byte[] HashData(byte[] data, int offset, int count, HashAlgorithmName hashAlgorithm);
+    protected override byte[] HashData(Stream data, HashAlgorithmName hashAlgorithm);
+    public override void ImportParameters(RSAParameters parameters);
+    public override byte[] SignHash(byte[] hash, HashAlgorithmName hashAlgorithm, RSASignaturePadding padding);
+    public override bool VerifyHash(byte[] hash, byte[] signature, HashAlgorithmName hashAlgorithm, RSASignaturePadding padding);
+  }
+  public sealed class RSACryptoServiceProvider : RSA, ICspAsymmetricAlgorithm {
+    public override byte[] Decrypt(byte[] data, RSAEncryptionPadding padding);
+    public override byte[] Encrypt(byte[] data, RSAEncryptionPadding padding);
+    protected override byte[] HashData(byte[] data, int offset, int count, HashAlgorithmName hashAlgorithm);
+    protected override byte[] HashData(Stream data, HashAlgorithmName hashAlgorithm);
+    public override byte[] SignHash(byte[] hash, HashAlgorithmName hashAlgorithm, RSASignaturePadding padding);
+    public override bool VerifyHash(byte[] hash, byte[] signature, HashAlgorithmName hashAlgorithm, RSASignaturePadding padding);
+  }
+  public sealed class RSAEncryptionPadding : IEquatable<RSAEncryptionPadding> {
+    public RSAEncryptionPaddingMode Mode { get; }
+    public HashAlgorithmName OaepHashAlgorithm { get; }
+    public static RSAEncryptionPadding OaepSHA1 { get; }
+    public static RSAEncryptionPadding OaepSHA256 { get; }
+    public static RSAEncryptionPadding OaepSHA384 { get; }
+    public static RSAEncryptionPadding OaepSHA512 { get; }
+    public static RSAEncryptionPadding Pkcs1 { get; }
+    public static RSAEncryptionPadding CreateOaep(HashAlgorithmName hashAlgorithm);
+    public override bool Equals(object obj);
+    public bool Equals(RSAEncryptionPadding other);
+    public override int GetHashCode();
+    public static bool operator ==(RSAEncryptionPadding left, RSAEncryptionPadding right);
+    public static bool operator !=(RSAEncryptionPadding left, RSAEncryptionPadding right);
+    public override string ToString();
+  }
+  public enum RSAEncryptionPaddingMode {
+    Oaep = 1,
+    Pkcs1 = 0,
+  }
+  public sealed class RSASignaturePadding : IEquatable<RSASignaturePadding> {
+    public RSASignaturePaddingMode Mode { get; }
+    public static RSASignaturePadding Pkcs1 { get; }
+    public static RSASignaturePadding Pss { get; }
+    public override bool Equals(object obj);
+    public bool Equals(RSASignaturePadding other);
+    public override int GetHashCode();
+    public static bool operator ==(RSASignaturePadding left, RSASignaturePadding right);
+    public static bool operator !=(RSASignaturePadding left, RSASignaturePadding right);
+    public override string ToString();
+  }
+  public enum RSASignaturePaddingMode {
+    Pkcs1 = 0,
+    Pss = 1,
+  }
+}
+namespace System.Security.Cryptography.X509Certificates {
+  public static class RSACertificateExtensions {
+    public static RSA GetRSAPrivateKey(this X509Certificate2 certificate);
+    public static RSA GetRSAPublicKey(this X509Certificate2 certificate);
+  }
+  public class X509Certificate : IDeserializationCallback, IDisposable, ISerializable {
+    public void Dispose();
+    protected virtual void Dispose(bool disposing);
+  }
+  public class X509Chain : IDisposable {
+    public SafeX509ChainHandle SafeHandle { get; }
+    public void Dispose();
+    protected virtual void Dispose(bool disposing);
+  }
+  public sealed class X509Store : IDisposable {
+    public void Dispose();
+  }
+}
+namespace System.Security.Cryptography.Xml {
+  public class EncryptedXml {
+    public int XmlDSigSearchDepth { get; set; }
+  }
+}
+namespace System.Security.Principal {
+  public class WindowsIdentity : ClaimsIdentity, IDeserializationCallback, IDisposable, ISerializable {
+    public SafeAccessTokenHandle AccessToken { get; }
+    public static void RunImpersonated(SafeAccessTokenHandle safeAccessTokenHandle, Action action);
+    public static T RunImpersonated<T>(SafeAccessTokenHandle safeAccessTokenHandle, Func<T> func);
+  }
+}
+namespace System.ServiceModel {
+  public sealed class TcpTransportSecurity {
+    public SslProtocols SslProtocols { get; set; }
+  }
+}
+namespace System.ServiceModel.Channels {
+  public class SslStreamSecurityBindingElement : StreamUpgradeBindingElement, IPolicyExportExtension, ITransportTokenAssertionProvider {
+    public SslProtocols SslProtocols { get; set; }
+  }
+}
+namespace System.ServiceModel.Configuration {
+  public sealed class SslStreamSecurityElement : BindingElementExtensionElement {
+    public SslProtocols SslProtocols { get; }
+  }
+  public sealed class TcpTransportSecurityElement : ServiceModelConfigurationElement {
+    public SslProtocols SslProtocols { get; }
+  }
+}
+namespace System.Text {
+  public abstract class Encoding : ICloneable {
+    protected Encoding(int codePage, EncoderFallback encoderFallback, DecoderFallback decoderFallback);
+    public unsafe string GetString(byte* bytes, int byteCount);
+    public static void RegisterProvider(EncodingProvider provider);
+  }
+  public abstract class EncodingProvider {
+    public EncodingProvider();
+    public abstract Encoding GetEncoding(int codepage);
+    public virtual Encoding GetEncoding(int codepage, EncoderFallback encoderFallback, DecoderFallback decoderFallback);
+    public abstract Encoding GetEncoding(string name);
+    public virtual Encoding GetEncoding(string name, EncoderFallback encoderFallback, DecoderFallback decoderFallback);
+  }
+  public sealed class StringBuilder : ISerializable {
+    public unsafe StringBuilder Append(char* value, int valueCount);
+    public StringBuilder AppendFormat(IFormatProvider provider, string format, object arg0);
+    public StringBuilder AppendFormat(IFormatProvider provider, string format, object arg0, object arg1);
+    public StringBuilder AppendFormat(IFormatProvider provider, string format, object arg0, object arg1, object arg2);
+  }
+}
+namespace System.Threading {
+  public sealed class AsyncLocal<T> {
+    public AsyncLocal();
+    public AsyncLocal(Action<AsyncLocalValueChangedArgs<T>> valueChangedHandler);
+    public T Value { get; set; }
+  }
+  [System.Runtime.InteropServices.StructLayoutAttribute(System.Runtime.InteropServices.LayoutKind.Sequential)]
+  public struct AsyncLocalValueChangedArgs<T> {
+    public T CurrentValue { get; }
+    public T PreviousValue { get; }
+    public bool ThreadContextChanged { get; }
+  }
+  public static class WaitHandleExtensions {
+    public static SafeWaitHandle GetSafeWaitHandle(this WaitHandle waitHandle);
+    public static void SetSafeWaitHandle(this WaitHandle waitHandle, SafeWaitHandle value);
+  }
+}
+namespace System.Threading.Tasks {
+  public class Task : IAsyncResult, IDisposable {
+    public static Task CompletedTask { get; }
+    public static Task FromCanceled(CancellationToken cancellationToken);
+    public static Task<TResult> FromCanceled<TResult>(CancellationToken cancellationToken);
+    public static Task FromException(Exception exception);
+    public static Task<TResult> FromException<TResult>(Exception exception);
+  }
+  public class TaskCompletionSource<TResult> {
+    public bool TrySetCanceled(CancellationToken cancellationToken);
+  }
+  public enum TaskContinuationOptions {
+    RunContinuationsAsynchronously = 64,
+  }
+  public enum TaskCreationOptions {
+    RunContinuationsAsynchronously = 64,
+  }
+}
+namespace System.Web {
+  public sealed class HttpRequest {
+    public ITlsTokenBindingInfo TlsTokenBindingInfo { get; }
+  }
+  public abstract class HttpRequestBase {
+    public virtual ITlsTokenBindingInfo TlsTokenBindingInfo { get; }
+  }
+  public class HttpRequestWrapper : HttpRequestBase {
+    public override ITlsTokenBindingInfo TlsTokenBindingInfo { get; }
+  }
+  public sealed class HttpResponse {
+    public Task FlushAsync();
+    public void PushPromise(string path);
+    public void PushPromise(string path, string method, NameValueCollection headers);
+  }
+  public abstract class HttpResponseBase {
+    public virtual Task FlushAsync();
+    public virtual void PushPromise(string path);
+    public virtual void PushPromise(string path, string method, NameValueCollection headers);
+  }
+  public class HttpResponseWrapper : HttpResponseBase {
+    public override Task FlushAsync();
+    public override void PushPromise(string path);
+    public override void PushPromise(string path, string method, NameValueCollection headers);
+  }
+  public interface ITlsTokenBindingInfo {
+    byte[] GetProvidedTokenBindingId();
+    byte[] GetReferredTokenBindingId();
+  }
+}
+namespace System.Web.UI.WebControls {
+  public class ModelDataSourceView : DataSourceView, IStateManager {
+    public override void Delete(IDictionary keys, IDictionary oldValues, DataSourceViewOperationCallback callback);
+    public override void Insert(IDictionary values, DataSourceViewOperationCallback callback);
+    public override void Select(DataSourceSelectArguments arguments, DataSourceViewSelectCallback callback);
+    public override void Update(IDictionary keys, IDictionary values, IDictionary oldValues, DataSourceViewOperationCallback callback);
+  }
+  public sealed class SelectResult {
+    public SelectResult(int totalRowCount, IEnumerable results);
+    public IEnumerable Results { get; }
+    public int TotalRowCount { get; }
+  }
+}
+namespace System.Windows {
+  public static class CoreCompatibilityPreferences {
+    public static Nullable<bool> EnableMultiMonitorDisplayClipping { get; set; }
+  }
+}
+namespace System.Windows.Diagnostics {
+  public static class VisualDiagnostics {
+    public static event EventHandler<VisualTreeChangeEventArgs> VisualTreeChanged;
+    public static XamlSourceInfo GetXamlSourceInfo(object obj);
+  }
+  public class VisualTreeChangeEventArgs : EventArgs {
+    public VisualTreeChangeEventArgs(DependencyObject parent, DependencyObject child, int childIndex, VisualTreeChangeType changeType);
+    public VisualTreeChangeType ChangeType { get; }
+    public DependencyObject Child { get; }
+    public int ChildIndex { get; }
+    public DependencyObject Parent { get; }
+  }
+  public enum VisualTreeChangeType {
+    Add = 0,
+    Remove = 1,
+  }
+  public class XamlSourceInfo {
+    public XamlSourceInfo(Uri sourceUri, int lineNumber, int linePosition);
+    public int LineNumber { get; }
+    public int LinePosition { get; }
+    public Uri SourceUri { get; }
+  }
+}
+namespace System.Windows.Forms {
+  public class MonthCalendar : Control {
+    protected override void DefWndProc(ref Message m);
+  }
+}
+namespace System.Windows.Input {
+  public sealed class Cursor : IDisposable {
+    public Cursor(Stream cursorStream, bool scaleWithDpi);
+    public Cursor(string cursorFile, bool scaleWithDpi);
+  }
+  public sealed class StylusDevice : InputDevice {
+    public bool IsValid { get; }
+  }
+}
+namespace System.Windows.Interop {
+  [System.Runtime.InteropServices.StructLayoutAttribute(System.Runtime.InteropServices.LayoutKind.Sequential)]
+  public struct HwndSourceParameters {
+    public bool UsesPerPixelTransparency { get; set; }
+  }
+}
+namespace System.Xaml {
+  public class XamlObjectEventArgs : EventArgs {
+    public int ElementLineNumber { get; }
+    public int ElementLinePosition { get; }
+    public Uri SourceBamlUri { get; }
+  }
+}
+namespace System.Xml {
+  public class XmlCDataSection : XmlCharacterData {
+    public override XmlNode PreviousText { get; }
+  }
+  public abstract class XmlNode : ICloneable, IEnumerable, IXPathNavigable {
+    public virtual XmlNode PreviousText { get; }
+  }
+  public class XmlSignificantWhitespace : XmlCharacterData {
+    public override XmlNode PreviousText { get; }
+  }
+  public class XmlText : XmlCharacterData {
+    public override XmlNode PreviousText { get; }
+  }
+  public class XmlWhitespace : XmlCharacterData {
+    public override XmlNode PreviousText { get; }
+  }
+}
+
\ No newline at end of file diff --git a/docs/releases/net46/dotnet46-changes.md b/docs/releases/net46/dotnet46-changes.md new file mode 100644 index 000000000..f4ca301c4 --- /dev/null +++ b/docs/releases/net46/dotnet46-changes.md @@ -0,0 +1,293 @@ +.NET Framework 4.6 list of changes +================================== + +.NET Framework 4.6 contains hundreds of bug fixes and improvements. +This list details those changes, grouped by feature area. +Each change includes our TFS bug numbers at the end of the line. +Please include those numbers in your communication if you wish to contact us to obtain more information. + +CLR +--- + +* AppContext values can be overridden by registry settings. [1076165] +* Asmx service references can be added to store apps. [1078198] +* CrossGen and NGen create identical System.Core native images. [1033601] +* ICorProfilerCallback6 doesn't leak reference count. [1038285] +* Loading design-time metadata at debug time for universal Windows apps is supported. [1038300] +* Multi-core JIT doesn't deadlock from loop of structs and hang Visual Studio. [1043199] +* ICorDebug heap enumeration doesn't skip objects. [1063297] +* WinMDExp/CCI allow reading record kind 0x5/0x6. [1073349] +* ETW tracing for WebRequest works reliably when garbage collection happens. [1136690] +* Fixed a deadlock in case of StackOverflow. [1138065] +* Improved performance reading from the redirected output stream. [997190] +* Product version is correct in binaries' properties. [997577] +* RyuJIT is on by default. [10175592], [1020209] +* Only one GC/Start ETW event is triggered for each GC. [1020142] +* Fixed issue with wrong processor architecture being recorded on non-GAC assemblies, causing them to fail loading. [1020167] +* No opportunistic tail calls when there are pinned variables. [1020867] +* RyuJIT correctly handles edit and continue on instance synchronized methods. [1020967] +* Fixed x64 JIT assignment to struct, where LHS also appears on RHS. [1021056] +* CLR checks assembly architecture when skip IL loading feature is enabled. [1024293] +* Native images generated by CrossGen for .NET Framework have processor architecture data. [1028975] +* CLR emits all versions of the ModuleLoad/ModuleUnload ETW events. [1029164] +* Future DFL and FFL handled. [1030154] +* Unresolvable SID in SDSAM handled. [1030161] +* Crossgen / ReadyToRun images are treated as IL by CLR. [1084749] +* Fixed a RyuJIT regression causing System.Web.HttpApplication.ExecuteStep to incorrectly handle exceptions associated with redirections. [1088278] +* Setup doesn't disable CAPI2 event logs. [1090378] +* WindowsBase uses C# exception filters. [1090886] +* Libraries can define switches without modifying mscorlib. [1092007] +* No GC regions can be specified. [1096946] +* Fixed lock ordering violation between rejit lock and ETW rundown. [1104691] +* NGen compresses native images on devices with limited amount of disk space. [1107517] +* TargetFrameworkAttribute is not always null for non-default AppDomains. [430136] +* Sos.dll dumpheap reports correct TotalSize. [484532] +* Lc.exe can handle response files. [621761] +* MixedMode debugging a Windows Store C# application that calls a C++/CX WinRT component doesn't cause and access violation. [764121] +* Fixed access violation caused by WinRT class names without namespace. [738932] +* Fixed breaking change in COR_PRF_GC_ROOT_HANDLE values. [800872] +* Improved free list efficiency in Gen2 garbage collection. [841334] +* Made heap_of less expensive for server GC. [896400] +* GC datastructure isn't made unreasonably large when the new segment's address is far from the existing ones (64-bit). [897049] +* Win32Native.MEMORYSTATUSEX is a struct, not a class. [899371] +* Eliminated a deadlock condition in RuntimeResourceSet. [905813] +* _Delegate* also has IDispatch vtable entries for non-generic delegates. [922080] +* Module rundown events are generated before method rundown events, improving performance. [939400] +* CLR returns rejit info after first rejit. [952954] +* Fixed the performance for enums based on primitive integral types other than int while maintaining the roundtrip between 4.0 and 4.5. [965865] +* .NET Framework Setup UI correctly scales controls in high DPI. [968115] +* SIMD types in System.Numerics.dll are recognized by the JIT. [1168471] + +BCL +--- + +* Projected DirectX value types can be marshalled to WinRT. [1166515] +* New WeakReference() doesn't cause COMException. [973791] +* Persian calendar is a supported formatting calendar, correctly handles part of day formatting, and uses correct era names. [1068336], [1117304], [1154104], [1087763] +* DateTime Parse and TryParse behave the same on en-CA culture. [1117950] +* AAD has integrated check for the pooled connection. [1118488] +* French and Norwegian culture display name includes proper Unicode characters. [1147042] +* ConcurrentDictionary serialization format changed, but is upwards compatible from .NET Framework 4.5 to .NET Framework 4.6. [1167398] +* SqlBulkCopy truncates data before encrypting. [1159595] +* GetProviderSpecificValue returns proper data type for encrypted columns when underlying data is null. [1159595] +* French and Norwegian culture display name includes proper Unicode characters. [1147042] +* X509Certificate2 supports Cng key pairs. [1158068], [1129677] +* GDI+ reentrant paint operations fixed. [1075715] +* System.Diagnostics.ProcessStartInfo can be deserialized. [1076704] +* Culture resources added for newly supported Windows cultures. [1038210] +* Current culture and UI culture travel through async calls. [1038253] +* new TaskCompletionSource(null, TaskCreationOptions.RunContinuationsAsynchronously) doesn't throw ArgumentOutOfRangeException. [1042823] +* WebSockets server doesn't cause false positive AccessViolation exceptions. [1064642] +* FrameworkEventSource doesn't crash on Windows 7. [1067139] +* EventSource.DecodeObject doesn't cause a crash on application launch. [1070394] +* GetCurrentProcess() doesn't throw a SecurityException in a partial trust component. [1071695] +* TimeZoneInfo correctly handles start and end of year transitions. [1072355] +* Connections made using SPN in managed code don't fail with index out of range exception. [1120248] +* XSD schema validation detects violation of unique constraint if compound key is used and one is empty. [1122756] +* SqlSessionStateStore logs exception details when partition resolver is used. [1123428] +* XsdDataContractImporter.Import method doesn't throw InvalidDataContractException when CanImport method returns true. [1124661] +* RangeCheck enforces practical limits in order to avoid stack overflow. [1127981] +* NetTcp with X509 certificates using SslStream allow negotiation for more secure cipher suites. [1128085] +* TrustManager doesn't cause false warnings when comparing certificates. [1134066] +* SqlBulkCopy works with TCE enabled columns. [1134668] +* System.Runtime.Serialization.Primitives expose new public read-only properties for previously internal data contract attributes. [1136078] +* Attribute.GetCustomAttributes doesn't throw AmbiguousMatchException when parameter types can disambiguate. [976721] +* WinRtToNetFxStreamAdapter implements SetLength correctly. [977936] +* Improved performance of System.IO.Path.GetFullPath and NormalizePath. [989059], [989062] +* Improved performance of System.Version.ToString and TryParseVersion. [989081], [989086] +* Security attributes added to Microsoft.JScriptEngine [991436] +* ControlVersionInfo.ProductVersion doesn't throw null reference exception. [997521] +* Encoding.GetEncoding gives clues about failure causes. [997703] +* Introduced 1, 2, and 3-argument overloads of String.Format with IFormatProvider first argument to improve performance. [999405] +* MemoryCache.AddOrGetExisting() checks the right expiration date. [999957] +* Exception.Data on Windows 8 includes IRestrictedErrorInfo information. [1000662] +* ReflectionModelServices.IsExportFactoryImportDefinition doesn't throw ArgumentException. [1005218] +* Private GetRuntimeResourceString method added back to maintain compatibility of CompositeC1 CMS. [1005727] +* AppDomainSetup.DynamicBase supported with UseRandomizedStringHashAlgorithm. [1008953] +* Win32Exception shows a generic error message for messages longer than 256 characters. [1013367] +* PreAuthenticate cache is effective beyond 100 URLs. [1014364] +* CngKey members such as IsEphemeral don't throw CryptographicException on unsupported properties. [1014482] +* Removed contention at BufferOutputAsyncStream for self-hosted WCF restful service using transfermode as Streamed. [1015747] +* Added Array.Empty() to help avoid unnecessary allocations. [1020141] +* HttpWebRequest succeeds when used with tracing against HTTPS endpoints with elliptic curve cryptography. [1020499] +* JIT array of Single not initialized with Double values. [1027378] +* Parallel.Invoke with one delegate executes on the current thread instead of queueing the work. [1027413] +* SortOption uses the SortDirection passed in the constructor. [1030167] +* Fixed timezone conversion in cases when year start or end with daylight savings wasn't correctly handled. [1079914] +* Fixed AssemblyInformationalVersion. [1082536] +* Fixed serialization and de-serialization of DateTime with daylight savings and special values. [1087198] +* IO exceptions moved to System.Runtime. [1090978] +* CultureInfo.CurrentCulture setter works in APPX mode. [1091999] +* ParameterBuilder.SetConstant(null) doesn't throw argument exception for a nullable value type's default value. [1098429] +* GetClassLayout can be called from rejit instrumentation. [1101065] +* GetTypeForTypeID doesn't lock exe of the process being debugged. [1101402] +* Euro is now the currency for Lithuania. [1102772] +* Idnhost property of Uri class is now public. [1103357] +* Fixed issues from initial use of EventSource's activity tracing capability. [1103452] +* Fixed SqlHierarchyId operation failure due to invalid binary string. [1106619] +* ToolboxItem.Equals optimized. [1106966] +* Removed AppVerifier false positives in ISAPI mode. [1108193] +* SQL connection strings greater than 779 characters don't cause application crash. [1109784] +* Improved debuggability when users create incorrect EventSources. [1109972] +* AsyncLocal.Value doesn't lose value when ExecutionContext is modified inside an async method. [1111403] +* Removed unused BinaryCompatibility.TargetsAtLeast_Desktop_v4_5_3 from System.Diagnostics.Eventing.EventSource and System.Xml. [1111861] +* SqlException can be caught. [1112280] +* System.Windows.Diagnostics.VisualDiagnostics.GetXamlSourceInfo supports non-DependencyObjects. [1116127] +* CancellationToken.Register doesn't throw ObjectDisposedException when its CancellationTokenSource is disposed. [369196] +* System.IO.Path performance improved by not boxing characters and then calling ToString. [467858] +* Subdomain cookies are correctly handled by CookieContainer. [520819] +* Decimal parsing can handle [-]0eN where N > 0. [568475] +* Fixed Lybian time zone daylight savings initial transition. [698652] +* Made BinaryCompatibility internal. [808512] +* Fixed InvalidDataException when using ZipArchive.GetEntry. [823402] +* Improved performance of System.Guid.ToString by using fast string allocation instead of new char[]. [825882] +* System.Threading.Gen2GcCallback finalizer checks for uninitialized GCHandle before using it. [837365] +* Fixed four unlocalized strings in DAN and JPN cultures. [840067] +* XmlEncodeRawTextWriter and XmlUTF8RawTextWriter are checking for invalid surrogate pairs correctly. [851030] +* Implemented public static unsafe Buffer.MemoryCopy. [862315] +* Improved performance of String.Format and StringBuilder.AppendFormat by avoiding object array allocations. [915876] +* Removed a bottleneck in System.ComponentModel.DataAnnotations.ValidationAttribute.IsValid by removing a lock. [921828] +* DpapiDataProtector doesn't fail because of SHA256.Create() when FIPS compliance is mandatory. [923431] +* Improved System.Design!System.ComponentModel.MenuCommandService.FindCommand by avoiding the boxing of Guids. [925312] +* Eliminated implicit allocationof WaitCallback objects by caching the delegate in a static field. [925992] +* Eliminated a hang in HttpClient when an exception is thrown during BeginRequestStream. [926740] +* Unix date time strings are now supported through DateTimeOffset.FromUnixTimeSeconds, FromUnixTimeMilliseconds, and ToUnixTimeMilliseconds. [933584] +* Improved performance by using StringBuilderCache in Environment.GetEnvironmentVariable. [934009] +* Fixed ArgumentOutOfRangeException in IPAddress.MapToIPv4(). [944709] +* Read-only interfaces are implemented on collection types HashSet, LinkedList, Queue, SortedDictionary, SortedList, SortedSet, and Stack. [944715] +* AddOnSendingHeaders doesn't fire prematurely. [952802] +* EventSource doesn't aggressively fail when using reserved keywords. [955350] +* Eliminated a leak when calling IReflect.InvokeMemberon a native IDispatchEX implementation through IReflect or IExpando. [957933] +* IsolatedStorage feature works when configured to place storage on roaming profiles. [961127] +* Text encoding is extensible. [963034] +* Fixed the size of Vector. [1020874] +* System.Drawing.Icon.ToBitmap() supports PNG framed icons. [1084802] +* Uri constructor doesn't throw ArgumentOutOfRangeException when parsing certain URIs with escaped international characters. [1173958] + +ASP.NET +------- + +* State Service startup type is correctly persisted. [1038077] +* Registry settings preserved during upgrade. [1038147] +* Medium trust in ASP.NET 4.5 application doesn't cause execution permission exception. [1038337] +* WebForm_DoCallback XHR doesn't break IDN support. [1040710] +* .NET quirks and compatibility switches can be specified in ASP.NET configuration file. [1041102] +* SignalR memory leak fixed. [1042247] +* Quirks can be activated from ASP.NET even when a TFM is not specified. [1068433] +* Membership UpdateUser and UpdateUserInfo don't cause SQL deadlock. [1131099] +* Handles aborted XmlHttpRequest correctly. [983362] +* ASP.NET allows config settings changes to affect CLR initialization. [994276] +* HttpEncoder.UrlPathEncode doesn't encode the IDN part of the URL. [995259] +* WebUIValidation.js correctly mapped on WebDev.WebServer 4.5.3. [998958] +* Background flushes don't cause pipeline corruptions when using the TAP-friendly synchronization context. [1020085] +* ASP.NET recognizes Edge browser. [1031688] +* Databinding methods can be used in async binding. [1082492] +* Removed a contention in System.Web.BufferAllocator. [1084913] +* Setting request headers doesn't initialize ServerVariables. [1085748] +* Fixed a crash in IIS Manager when opening content view. [1093488] +* New web site template doesn't cause warnings. [1099514] +* Browsing to an asmx file or wsdl with an IDN binding set in IIS doesn't cause a URI parsing exception. [110223] +* Request validation can be completely disabled in an application. [412689] +* EmailAddress attribute can load error message from resource. [468241] +* GridView.CreateChildControl returns the correct CreatedRowCount when CustomPaging is enabled. [782891] +* Custom output cache providers don't cause exception on cache policy settings serialization when more than one invalidation handler is present. [789904] +* VaryByContentEncoding is now case-insensitive. [830641] +* HttpContextWrapper.IsPostNotification returns the correct value based on pipeline event. [839206] +* HtmlTextWriter renders
element as self-closing tag. [852940] +* Posting invalid payload to ASP.NET with trace and 4.0 request validation enabled doesn't crash the worker process. [867196] +* MemoryCache doesn't throw null reference expression when CacheItemPolicy.UpdateCallback is defined. [879799] +* DiskBuildResultCache.CacheBuildResult has a null check for CompiledResult.ResultAssembly. [880034] +* ContentDisposition constructor doesn't modify date values of the provided disposition string. [884362] +* Calling MachineKey.Decode on ASP.NET application start or on first request doesn't throw null reference exception. [896595] +* MemoryCache Trim method evicts all items. [902234] +* Overloads of HttpUtility.UrlEncode and UrlEncodeToBytes taking (byte[] bytes, int offset, int count) respects the offset and count parameter values. [912606] +* Setting culture to auto:* in web.config doesn't cause CultureNotFoundException. [714999] + +WPF +--- + +* Selecting a XAML element with an empty start tag doesn't select its first child instead. [1117943] +* Retrieving the font family name for DengXian in WPF doesn't cause an argument exception. [1153238] +* Data grid row headers can be right-clicked without changing the current row selection. [1064465] +* GlyphRun.InkBoundingBox() and FormattedText.Extent return the same values. [1068545] +* RibbonGroup background is not transparent. [1119792], [1119821] +* PrintQueue.GetPrintCapabilities doesn't cause memory leak. [1134697] +* TreeView doesn't scroll to random position when nodes are expanded and collapsed repeatedly. [1137957] +* Running MultipleTopWindows cross AppDomain on Windows 8 and 10 doesn't throw. [1138471] +* Debugging WPF in browser application doesn't cause SecurityException in PresentationFramework.dll. [1145697] +* List virtualization doesn't cause crash in GitHub for Windows. [992770] +* Scrolling in virtualized DataGrid with items of different heights doesn't cause ArgumentNullException. [996725] +* WriteableBitmap isn't causing leaks of CWriteProtectedBitmap virtual memory. [997584] +* Selection doesn't incorrectly include the previously selected item when moving selection of ListBoxItem bound to ObservableCleection. [999613] +* Fixed a UI thread deadlock in pen input code. [1010998] +* Margins set in sections in FlowDocuments are respected. [1104560] +* Scaling doesn't suffer from rounding errors on odd DPI. [1104807] +* Improved thread safety when loading the same XAML resource for the first time in multiple UI threads. [12520] +* Touch and stylus events don't stop firing after disconnecting then reconnecting to a remote desktop session. [659672] +* Fixed a bouncing scrollbar with custom WPF DataTemplate. [759702] +* GetFixedDocumentSequence doesn't throw with error message "UnicodeString property does not contain enough characters to correspond to the contents of Indices property." [796882] +* Fixed slow and jumping WPF TreeView issue. [810163] +* Fixed overflow exception in WPF System.ServiceModel.Channels.TransmissionStrategy.AddToWindow. [811734] +* Fixed InvalidOperationException in multithread application by synchronizing access to the static Stack<> that holds SerializationContext for recycling. [834091] +* Snapping and unsnapping the keyboard on a Surface Pro doesn't cause null reference exception in WPF touch input stack. [839668] +* TreeView doesn't vanish after node collapse and expand. [888530] +* Selected items in a WPF ListBox or ListView control are correct when items.refresh is called from code behind. [945407] +* Fixed performance regression in WPF applications caused by the loading of three additional assemblies. [946388] +* XamlBuildTask doesn't sporadically report error "Object '' has been disconnected or does not exist at the server" on TFS builds. [955825] +* Fixed exception at CaretElement.ConvertToInt32 in WPF TextBox.Focus. [958636] +* WPF uses the most recent distance threshold from the registry for recognizing double taps. [959263] +* WPF allows for transparent child windows. [959266] +* Fixed FlowDocument exception "this TextNavigator has no scoping text element." [960678] +* FlowDocument preserves spaces after being saved using XamlWrite. [960699] +* Improved UI scrolling when using a virtualized ListView with a pixel scroll unit. [965665] +* Fixed null reference exceptions in WPF System.Windows.Controls.ItemContainerGenerator.ContainerFromIndex. [966623] +* Improved touch services. [971187] +* Fixed RichTextBox spell checking issue with possessives. [1170165] +* Window chrome doesn't turn black on maximize with GlassFrameThickness -1. [1176703] +* Improved RichTextBox typing performance on low-end GPUs. [1177602] +* Applications continue to promote touch events to click after digitizer is removed and reconnected while touching the digitizer. [1186170] + +WCF +--- + +* Adding a service reference to a class library doesn't cause compilation errors. [1063611] +* CustomBinding honors security header layout mode of Lax / LaxTimeStampLast. [1136398] +* DataContractSerializer doesn't throw InvalidCastException on StringDictionary serialization. [1008489] +* Fixed that WCF friendly instance names limited to 64 characters could cause false duplicates as instance names support up to 128 characters. [1022700] +* Roles.GetRolesForUser() doesn't throw NullReferenceException in a WCF service hosted in ASP.NET with the AspNetCompatibilityEnabled flag set to false. [1022754] +* ProcessMessage31 uses cached delegate for ProcessMessage4. [1030713] +* System.ServiceModel.Syndication.SyndicationFeed can parse . [1088425] +* Client certificate information is added as claim by default. [1103426] +* Warning message added if users enable "wcf:ensureUniquePerformanceCounterInstanceNames" app setting without the user hosting the service having the proper permissions. [1108004] +* Fixed null reference and access violation exceptions in System.ServiceModel.Channels.MessageHeaders.GetBufferedMessageHeaderReaderAtHeaderContents. [1116949] +* WebResponseInputStream doesn't swallow the exception stating that the stream doesn't support read timeouts. [288814] +* Auto-generated help produces correct links. [852865] +* Added a keep-alive timeout on WCF ServiceHost. [948289] +* Fixed a null reference exception in System.Runtime.Serialization when ETW is enabled. [1137758] + +Entity Framework +---------------- + +* Entity data source can be configured without causing an exception about the provider not returning a ProviderManifest instance. [810937] + +Workflow +-------- + +* WorkflowService design-time validation can be cancelled. [1162560] +* ActivityExecutor.OnExecuteWorkItem has improved performance on RyuJIT. [1136333], [1136377] +* Improvements to out-of-sequence calls in WF State Machine [1018947] +* Added synchronization to DynamicModuleManager to prevent debugger from crashing the debugged application. [1112002] +* Default TransactionException extended to include the distributed transaction ID in error message. [954268] +* Workflow Foundation implementation for SQL better handles transient database errors. [1152472] + +Windows Forms +------------- + +* Icon.ToBitmap() supports PNG framed icons. [1074253] +* Adding large image to resource file doesn't cause error in 300% high DPI mode. [1096726] +* System.Windows.Input.Cursor supports multi-image cursor files. [673619] +* Closing a parent form in MDI applications doesn't throw System.ComponentModel.Win32Exception (Error creating window handle) [847648] +* Fixed a null reference exception when messages continue arriving after a native tooltip window has been disposed. [933930] +* Using custom MessageFilter doesn't cause sporadic IndexOutOfRangeException in ThreadContext. [1072924] +* WIT grid's sorting arrows scale for high DPI. [745286] +* NumericUpDown scroll buttons scale for high DPI. [906184] From 57f820171630091e85d20fce159e0fb41b0f9d14 Mon Sep 17 00:00:00 2001 From: Bruce Forstall Date: Wed, 5 Aug 2015 10:20:14 -0700 Subject: [PATCH 214/872] Several fixes 1. Fix title typo 2. Expand description of tailcall 3. Expand description of "Suppress JIT optimization on module load" defaults --- docs/testing-with-ryujit.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/testing-with-ryujit.md b/docs/testing-with-ryujit.md index 57ceaea0f..c633fa31e 100644 --- a/docs/testing-with-ryujit.md +++ b/docs/testing-with-ryujit.md @@ -1,4 +1,4 @@ -.NET Framework 4.6 - Troubleshooing RyuJIT +.NET Framework 4.6 - Troubleshooting RyuJIT ========================================== The [.NET Framework 4.6](http://blogs.msdn.com/b/dotnet/archive/2015/07/20/announcing-net-framework-4-6.aspx#net-framework-46) includes a new Just-In-Time (JIT) compiler for 64-bit processes, called RyuJIT. It is enabled by default. Note that the 32-bit JIT in .NET Framework 4.6 is not significantly changed from previous releases. This document does not describe troubleshooting problems with the 32-bit JIT. @@ -152,7 +152,7 @@ To prevent any NGEN native image from being used, and force all code to be compi Disable Tail Call Optimization ============================== -You can disable tail call optimization in RyuJIT with the following instructions. +"Tail call" is a code pattern that the JIT compiler can sometimes optimize to improve code performance. You can see some discussion about JIT and tail call [here](http://blogs.msdn.com/b/clrcodegeneration/archive/2010/05/07/jit-etw-tail-call-event-fail-reasons.aspx). You can disable tail call optimization in RyuJIT with the following instructions. * Using Registry Editor (regedit.exe), find either of the following subkeys: @@ -196,7 +196,7 @@ While troubleshooting, it might be useful to determine if *any* JIT optimization and run your application. -Note that when you run your application under the Visual Studio debugger, it disables JIT optimization by default, to improve the debugging experience. You can read about that [here](https://msdn.microsoft.com/en-us/library/ms241594.aspx). +Note that when you run your application under the Visual Studio debugger, it might disable JIT optimization to improve the debugging experience. In Visual Studio 2013 and before, JIT optimization is disabled by default. In Visual Studio 2015, it is not disabled by default. The option in Visual Studio is called "Suppress JIT optimization on module load". You can read about that [here](https://msdn.microsoft.com/en-us/library/ms241594.aspx). Note that the MSDN documentation is incorrect about the Visual Studio 2015 default. **Note** This method applies to all .NET JIT compilers. From 31dbd34c500b1d78b71e38ab908a653b22e1bac9 Mon Sep 17 00:00:00 2001 From: Bruce Forstall Date: Wed, 5 Aug 2015 10:51:59 -0700 Subject: [PATCH 215/872] Add details about RyuJIT CTP and .NET 4.6 --- docs/testing-with-ryujit.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/docs/testing-with-ryujit.md b/docs/testing-with-ryujit.md index 57ceaea0f..3a0e7f372 100644 --- a/docs/testing-with-ryujit.md +++ b/docs/testing-with-ryujit.md @@ -200,6 +200,11 @@ Note that when you run your application under the Visual Studio debugger, it dis **Note** This method applies to all .NET JIT compilers. +.NET Framework 4.6 and RyuJIT CTP releases +========================================== + +Before .NET Framework 4.6 was released with RyuJIT as the default .NET JIT for the x64 architecture, RyuJIT was shipped several times as a CTP ("Community Technology Preview") release. If you previously installed a RyuJIT CTP, you must remove any manually created configuration related to using the RyuJIT CTP, before upgrading to .NET Framework 4.6. You can read more details [here](https://support.microsoft.com/en-us/kb/3065367). + Additional Notes ================ From 1a839bf3bb8e5eb4c438f317a4f5c1edde3f3461 Mon Sep 17 00:00:00 2001 From: Bruce Forstall Date: Wed, 5 Aug 2015 11:42:37 -0700 Subject: [PATCH 216/872] Update RyuJIT CTP information --- docs/testing-with-ryujit.md | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/docs/testing-with-ryujit.md b/docs/testing-with-ryujit.md index 6c112ee6d..f1ef6a808 100644 --- a/docs/testing-with-ryujit.md +++ b/docs/testing-with-ryujit.md @@ -203,7 +203,28 @@ Note that when you run your application under the Visual Studio debugger, it mig .NET Framework 4.6 and RyuJIT CTP releases ========================================== -Before .NET Framework 4.6 was released with RyuJIT as the default .NET JIT for the x64 architecture, RyuJIT was shipped several times as a CTP ("Community Technology Preview") release. If you previously installed a RyuJIT CTP, you must remove any manually created configuration related to using the RyuJIT CTP, before upgrading to .NET Framework 4.6. You can read more details [here](https://support.microsoft.com/en-us/kb/3065367). +Before .NET Framework 4.6 was released with RyuJIT as the default .NET JIT for the x64 architecture, RyuJIT was shipped several times as a CTP ("Community Technology Preview") release. For example, see the RyuJIT CTP5 release announcement [here](http://blogs.msdn.com/b/clrcodegeneration/archive/2014/10/31/ryujit-ctp5-getting-closer-to-shipping-and-with-better-simd-support.aspx). + +If you previously installed a RyuJIT CTP, you must remove any manually created configuration related to using the RyuJIT CTP, before upgrading to .NET Framework 4.6. If you don't, all managed applications will immediately crash on startup. + +To fix this issue, delete the following registry value (if it exists): + + key: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework + value name: AltJit + +You can do this with Registry Editor (regedit.exe) or the command-line REG.EXE tool, as follows: + + reg delete HKLM\SOFTWARE\Microsoft\.NETFramework /v AltJit + +Secondly, ensure that the following environment variable is not set: + + COMPLUS_AltJit + +## More information + +In order to enable the JIT shipped with a RyuJIT CTP, you had to manually create the registry value or set the environment variable that is indicated above. If this registry value or environment variable exists after you install .NET Framework 4.6, the system looks for a CTP version of the JIT compiler instead of the newly installed version. Because the RyuJIT CTP releases are incompatible with .NET Framework 4.6, this causes managed applications to crash. + +Note that the .NET Framework 4.6 installer does not change or delete these manually created configuration settings. Similarly, uninstalling the RyuJIT CTP also does not change these configuration settings. Additional Notes ================ From e28976169c2b0ce094d7d6ecd1026275dcd0f4c9 Mon Sep 17 00:00:00 2001 From: Dmitry Turin Date: Sat, 15 Aug 2015 00:56:54 +0300 Subject: [PATCH 217/872] Fix NModbus4 link NModbus4 project has been moved from user to organization --- dotnet-developer-projects.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 3dff47506..cf08c664d 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -112,7 +112,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [NAudio](http://naudio.codeplex.com/) - An open source .NET audio and MIDI library. * [NetTopologySuite](https://github.com/NetTopologySuite) - A .NET port of the JTS Topology Suite. * [NHunspell](http://sourceforge.net/projects/nhunspell/) - Spell Checker, Hyphenation an Theasaurus - * [NModbus4](https://github.com/Maxwe11/NModbus4) - Implementation of the Modbus protocol + * [NModbus4](https://github.com/NModbus4/NModbus4) - Implementation of the Modbus protocol * [NodaTime](https://code.google.com/p/noda-time/) - A better date and time API for .NET * [NPOI](https://npoi.codeplex.com) - An Office file formats (xls, xlsx, docx) read/write library for .NET * [OneDriveRestAPI](https://github.com/saguiitay/OneDriveRestAPI) - OneDrive .Net Client Library using the REST API. From 73c4049e2c573186ff08d2c3104fc36c038492ed Mon Sep 17 00:00:00 2001 From: Fredrik Schultz Date: Tue, 1 Sep 2015 07:50:50 +0200 Subject: [PATCH 218/872] Added Kaliko CMS to project list --- dotnet-developer-projects.md | 1 + 1 file changed, 1 insertion(+) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 3dff47506..3f0866441 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -45,6 +45,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * Web CMS * [DNN (formerly DotNetNuke)](https://dotnetnuke.codeplex.com/) - Web content management platform (CMS). + * [Kaliko CMS](https://github.com/KalikoCMS/KalikoCMS.Core) - Flexible and extensible CMS framework supporting both ASP.NET MVC and WebForms. * [N2CMS](https://github.com/n2cms/n2cms) - Open source, lightweight, code-first CMS able to seamlessly integrate into any MVC project. * [Orchard](http://orchard.codeplex.com/) - A community-focused Content Management System built on the ASP.NET MVC platform. * [Piranha CMS](https://github.com/PiranhaCMS/Piranha) - Lightweight CMS library for new and existing ASP.NET MVC & WebPages applications. From ca5a0d871209f539270dc9956eaf1a5bb7e1e389 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Bires?= Date: Fri, 25 Sep 2015 21:39:33 -0300 Subject: [PATCH 219/872] Added Elephant data access project --- dotnet-developer-projects.md | 1 + 1 file changed, 1 insertion(+) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index a7a5221b3..adc6b7150 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -259,6 +259,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [StackExchange.Redis](https://github.com/StackExchange/StackExchange.Redis) * [SQL LocalDB Wrapper](https://github.com/martincostello/sqllocaldb) - SQL LocalDB Wrapper is an assembly providing interop with the SQL LocalDB native API from managed code using .NET APIs. * [LINQ2DynamoDB](https://github.com/scale-tone/linq2dynamodb) - A type-safe data context for AWS DynamoDB with LINQ, in-memory caching and OData support. + * [Elephant](https://github.com/takenet/elephant) - Persistence library that provides common data structures as composable elements to abstract any storage engine, including (No)SQL databases. * Games * [Duality](https://github.com/AdamsLair/duality) - An Open Source 2D Game Engine + Visual Editor written entirely in C#. From 5492ab25cecfcd3482a47bd1347872328d2c4652 Mon Sep 17 00:00:00 2001 From: Elad Zelingher Date: Fri, 9 Oct 2015 14:35:12 +0300 Subject: [PATCH 220/872] Adding WampSharp --- dotnet-developer-projects.md | 1 + 1 file changed, 1 insertion(+) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index adc6b7150..b37bb589d 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -133,6 +133,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [SuperSocket](https://github.com/kerryjiang/SuperSocket) - An extensible socket server engine which supports .NET and Mono * [VkSharp](https://github.com/kasthack/vksharp) - VK client library * [TomP2P.NET](https://github.com/tomp2p/TomP2P.NET) - A P2P-based high performance key-value pair storage library for .NET + * [WampSharp](https://github.com/Code-Sharp/WampSharp) - A C# implementation of [The Web Application Messaging Protocol](http://wamp.ws) - a protocol that provides messaging patterns of Remote Procedure Calls and Publish/Subscribe over WebSockets. * [WebApiProxy](https://github.com/faniereynders/WebApiProxy) - An automatic proxy provider for RESTful services built on ASP.NET Web API. Includes JavaScript & C# client generation. * [WebSocket4Net](https://websocket4net.codeplex.com/) - A C# websocket client for .NET, Mono and Xamarin * [WpfToolkit](https://github.com/dotnetprojects/wpftoolkit) - Fork of the MS WPF Toolkit From 6251f9a4f27e875e3162343193fc16507fe61542 Mon Sep 17 00:00:00 2001 From: Christopher McClellan Date: Fri, 2 Oct 2015 09:40:52 -0400 Subject: [PATCH 221/872] Added description of the LibGit2Sharp library --- dotnet-developer-projects.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index adc6b7150..e76b649de 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -106,7 +106,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [Kentor.AuthServices](https://github.com/KentorIT/authservices) - A SAML2 Service Provider for .NET. * [Language-ext](https://github.com/louthy/language-ext) - C# 6.0+ functional language extensions. Make C# more like F# and other functional languages * [leveldb-sharp](https://github.com/meebey/leveldb-sharp) - cross-platform C# binding for LevelDB - * [LibGit2Sharp](https://github.com/libgit2/libgit2sharp) + * [LibGit2Sharp](https://github.com/libgit2/libgit2sharp) - C# language bindings for the [LibGit2](https://github.com/libgit2/libgit2) implementation of Git. * [Lucene.Net](https://github.com/apache/lucene.net) * [MahApps.Metro](https://github.com/MahApps/MahApps.Metro) - A toolkit for creating metro-style WPF applications. * [Math.NET Numerics](https://github.com/mathnet/mathnet-numerics) - Provides methods and algorithms for numerical computations in science, engineering and every day use. From c8b7549a9fcb860dbd0c88859dd6c722b29844ab Mon Sep 17 00:00:00 2001 From: Jan Karger Date: Thu, 15 Oct 2015 23:49:13 +0200 Subject: [PATCH 222/872] MahApps.Metro and Font-Awesome-WPF changes - move MahApps.Metro to UI and Control libs - add Font-Awesome-WPF lib --- dotnet-developer-projects.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 3f4f87f88..d21540981 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -99,6 +99,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [FluentBootstrap](https://github.com/somedave/FluentBootstrap) * [FluentConsole](https://github.com/ashmind/FluentConsole) - Alternative approach to colored console (`FluentConsole.Red.Text().Green.Text()`). * [FluentValidation](https://github.com/JeremySkinner/FluentValidation) - A small validation library for .NET that uses a fluent interface and lambda expressions for building validation rules. + * [Font-Awesome-WPF](https://github.com/charri/Font-Awesome-WPF) - WPF controls for the iconic font and CSS toolkit [Font Awesome](http://fortawesome.github.io/Font-Awesome/). * [GongSolutions.Wpf.DragDrop](https://github.com/punker76/gong-wpf-dragdrop) - A drag'n'drop framework for WPF. * [GeckoFX](https://bitbucket.org/geckofx) - Mozilla's Gecko layout engine wrapper in .NET. * [HudlFfmpeg](https://github.com/hudl/HudlFfmpeg) - A/V transcoding framework that helps build complex FFmpeg commands. @@ -108,7 +109,6 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [leveldb-sharp](https://github.com/meebey/leveldb-sharp) - cross-platform C# binding for LevelDB * [LibGit2Sharp](https://github.com/libgit2/libgit2sharp) - C# language bindings for the [LibGit2](https://github.com/libgit2/libgit2) implementation of Git. * [Lucene.Net](https://github.com/apache/lucene.net) - * [MahApps.Metro](https://github.com/MahApps/MahApps.Metro) - A toolkit for creating metro-style WPF applications. * [Math.NET Numerics](https://github.com/mathnet/mathnet-numerics) - Provides methods and algorithms for numerical computations in science, engineering and every day use. * [Mathos Core Libary](http://mathos.codeplex.com/) - A library with algorithms for numerical calcultations in finance, statistics, pattern recognition, and more. * [Mathos Parser](https://github.com/MathosProject/Mathos-Project) - A simple parser for mathematical expressions before and at runtime. @@ -273,6 +273,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [Callisto](https://github.com/timheuer/callisto) - UI Control Toolkit for WinRT apps * [Dragablz](http://github.com/ButchersBoy/Dragablz) - A tearable TabControl for WPF which also provides easy-to-use and implement docking features. * [Eto](https://github.com/picoe/Eto) - Cross platform GUI Toolkit for desktop and mobile apps + * [MahApps.Metro](https://github.com/MahApps/MahApps.Metro) - A toolkit for creating Metro / Modern UI styled WPF apps. [mahapps.com](http://mahapps.com) * [Material Design in XAML Toolkit](https://github.com/ButchersBoy/MaterialDesignInXamlToolkit) - WPF/XAML resources, styles & templates for creating applications using Material Design * [Mono XWT](https://github.com/mono/xwt) - A cross-platform UI toolkit for creating desktop apps From cb18b8458b4f09a0469d196d9ddb9757d163d079 Mon Sep 17 00:00:00 2001 From: Talles L Date: Sun, 25 Oct 2015 19:44:17 -0200 Subject: [PATCH 223/872] Added FluentScheduler project --- dotnet-developer-projects.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index d21540981..26015844f 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -284,7 +284,8 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * Scheduling * [Hangfire](https://github.com/HangfireIO/Hangfire) - An easy way to perform fire-and-forget, delayed and recurring tasks inside ASP.NET applications. * [Quartz.Net](https://github.com/quartznet/quartznet) - A full-featured, open source job scheduling system that can be used from smallest apps to large scale enterprise systems. - + * [FluentScheduler](https://github.com/fluentscheduler/FluentScheduler) - Task scheduler with fluent interface that runs automated tasks (cron jobs) from your application. + * Deployment * [DropkicK](https://github.com/chucknorris/dropkick/) - A fluent deployment library for Windows applications * [RoundHouse](https://github.com/chucknorris/roundhouse) - RoundhousE is a Database Migration Utility for .NET using sql files and versioning based on source control From d82c33b14b69dbc913cf3071c560d146979cdc6f Mon Sep 17 00:00:00 2001 From: Bertrand Le Roy Date: Thu, 29 Oct 2015 11:18:05 -0700 Subject: [PATCH 224/872] 4.6.1 API diff from 4.6 --- docs/releases/net461/dotnet461-api-changes.md | 134 ++++++++++++++++++ 1 file changed, 134 insertions(+) create mode 100644 docs/releases/net461/dotnet461-api-changes.md diff --git a/docs/releases/net461/dotnet461-api-changes.md b/docs/releases/net461/dotnet461-api-changes.md new file mode 100644 index 000000000..16329957b --- /dev/null +++ b/docs/releases/net461/dotnet461-api-changes.md @@ -0,0 +1,134 @@ +```diff +---C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6 ++++C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6.1 + namespace System.ComponentModel.DataAnnotations { + public class RegularExpressionAttribute : ValidationAttribute { ++ public int MatchTimeoutInMilliseconds { get; set; } + } + } + namespace System.Data.SqlClient { + public enum SqlBulkCopyOptions { ++ AllowEncryptedValueModifications = 64, + } + public sealed class SqlColumnEncryptionCertificateStoreProvider : SqlColumnEncryptionKeyStoreProvider { ++ public const string ProviderName = "MSSQL_CERTIFICATE_STORE"; + } ++ public class SqlColumnEncryptionCngProvider : SqlColumnEncryptionKeyStoreProvider { ++ public const string ProviderName = "MSSQL_CNG_STORE"; ++ public SqlColumnEncryptionCngProvider(); ++ public override byte[] DecryptColumnEncryptionKey(string masterKeyPath, string encryptionAlgorithm, byte[] encryptedColumnEncryptionKey); ++ public override byte[] EncryptColumnEncryptionKey(string masterKeyPath, string encryptionAlgorithm, byte[] columnEncryptionKey); + } ++ public class SqlColumnEncryptionCspProvider : SqlColumnEncryptionKeyStoreProvider { ++ public const string ProviderName = "MSSQL_CSP_PROVIDER"; ++ public SqlColumnEncryptionCspProvider(); ++ public override byte[] DecryptColumnEncryptionKey(string masterKeyPath, string encryptionAlgorithm, byte[] encryptedColumnEncryptionKey); ++ public override byte[] EncryptColumnEncryptionKey(string masterKeyPath, string encryptionAlgorithm, byte[] columnEncryptionKey); + } + public sealed class SqlConnectionStringBuilder : DbConnectionStringBuilder { ++ public bool TransparentNetworkIPResolution { get; set; } + } + } + namespace System.Diagnostics { + public sealed class ProcessStartInfo { ++ public string PasswordInClearText { get; set; } + } + } + namespace System.Drawing.Design { + public class ToolboxItem : ISerializable { ++ public Bitmap OriginalBitmap { get; set; } + } + } + namespace System.Net { + public abstract class TransportContext { ++ public virtual IEnumerable GetTlsTokenBindings(); + } + } + namespace System.Security.Authentication.ExtendedProtection { ++ public class TokenBinding { ++ public TokenBindingType BindingType { get; } ++ public byte[] GetRawTokenBindingId(); + } ++ public enum TokenBindingType { ++ Provided = 0, ++ Referred = 1, + } + } + namespace System.Security.Cryptography { + public abstract class ECDsa : AsymmetricAlgorithm { ++ protected virtual byte[] HashData(byte[] data, int offset, int count, HashAlgorithmName hashAlgorithm); ++ protected virtual byte[] HashData(Stream data, HashAlgorithmName hashAlgorithm); ++ public virtual byte[] SignData(byte[] data, int offset, int count, HashAlgorithmName hashAlgorithm); ++ public virtual byte[] SignData(byte[] data, HashAlgorithmName hashAlgorithm); ++ public virtual byte[] SignData(Stream data, HashAlgorithmName hashAlgorithm); ++ public bool VerifyData(byte[] data, byte[] signature, HashAlgorithmName hashAlgorithm); ++ public virtual bool VerifyData(byte[] data, int offset, int count, byte[] signature, HashAlgorithmName hashAlgorithm); ++ public bool VerifyData(Stream data, byte[] signature, HashAlgorithmName hashAlgorithm); + } + public sealed class ECDsaCng : ECDsa { ++ protected override byte[] HashData(byte[] data, int offset, int count, HashAlgorithmName hashAlgorithm); ++ protected override byte[] HashData(Stream data, HashAlgorithmName hashAlgorithm); + } + } + namespace System.Security.Cryptography.X509Certificates { ++ public static class ECDsaCertificateExtensions { ++ public static ECDsa GetECDsaPrivateKey(this X509Certificate2 certificate); ++ public static ECDsa GetECDsaPublicKey(this X509Certificate2 certificate); + } + public enum X509ChainStatusFlags { ++ ExplicitDistrust = 67108864, ++ HasNotSupportedCriticalExtension = 134217728, ++ HasWeakSignature = 1048576, + } + } + namespace System.ServiceProcess { + public class ServiceController : Component { ++ public ServiceStartMode StartType { get; } + } + public enum ServiceStartMode { ++ Boot = 0, ++ System = 1, + } + } + namespace System.Transactions { + public class Transaction : IDisposable, ISerializable { ++ public Guid PromoterType { get; } ++ public bool EnlistPromotableSinglePhase(IPromotableSinglePhaseNotification promotableSinglePhaseNotification, Guid promoterType); ++ public byte[] GetPromotedToken(); ++ public void SetDistributedTransactionIdentifier(IPromotableSinglePhaseNotification promotableNotification, Guid distributedTransactionIdentifier); + } + public static class TransactionInterop { ++ public static readonly Guid PromoterTypeDtc; + } + } + namespace System.Web.Security { + public class MembershipPasswordAttribute : ValidationAttribute { ++ public Nullable PasswordStrengthRegexTimeout { get; set; } + } + } + namespace System.Web.UI.WebControls { + public class RegularExpressionValidator : BaseValidator { ++ public Nullable MatchTimeout { get; set; } + } + } + namespace System.Windows { + public sealed class TextDecorationCollection : Animatable, ICollection, ICollection, IEnumerable, IEnumerable, IList, IList { ++ public bool TryRemove(IEnumerable textDecorations, out TextDecorationCollection result); + } + } + namespace System.Windows.Controls { + public class ScrollViewer : ContentControl { ++ protected override void OnStylusSystemGesture(StylusSystemGestureEventArgs e); + } + } + namespace System.Windows.Forms { + public class TextBox : TextBoxBase { ++ protected override bool ProcessCmdKey(ref Message m, Keys keyData); + } + } + namespace System.Xaml { + public class XamlObjectWriterSettings : XamlWriterSettings { ++ public Uri SourceBamlUri { get; set; } + } + } +``` \ No newline at end of file From c5f5472871c5d6e7efe0b19f84dc09c5a435a178 Mon Sep 17 00:00:00 2001 From: Bertrand Le Roy Date: Thu, 29 Oct 2015 11:18:58 -0700 Subject: [PATCH 225/872] 4.6.1 change list --- docs/releases/net461/dotnet461-changes.md | 173 ++++++++++++++++++++++ 1 file changed, 173 insertions(+) create mode 100644 docs/releases/net461/dotnet461-changes.md diff --git a/docs/releases/net461/dotnet461-changes.md b/docs/releases/net461/dotnet461-changes.md new file mode 100644 index 000000000..905d65e9d --- /dev/null +++ b/docs/releases/net461/dotnet461-changes.md @@ -0,0 +1,173 @@ +.NET Framework 4.6.1 list of changes +==================================== + +.NET Framework 4.6.1 contains dozens of bug fixes and improvements. +This list details those changes, grouped by feature area. +Each change includes our TFS bug numbers at the end of the line. +Please include those numbers in your communication if you wish to contact us to obtain more information. + +CLR +--- + +* Ngen emits debug section mapping IL to native [145669] +* ICorProfiler implementations can apply metadata changes during rejit [145801] +* ICorProfilerInfo API gives access to PDB content for dynamic assemblies, so profilers can show source for callstack frames [145817] +* Fixed a x64 JIT bug in exception handling [93398] +* Windows runtime metadata export tool allows for major assembly versions greater than 255 [101784] +* Fixed out of order execution caused by byte packed class optimization [114744] +* CLR writes inner exception information to event log for unhandled exceptions [119369] +* Access violations are easier to debug [119373] +* Fixed access violation caused by incorrect spill reload of putarg_reg(this) [134106] +* Improved performance in EventSource manifest generation [134302] +* Check for OS AVX support before using AVX instructions [105782] +* Build properly fails when referring to non-generic EventHandler in public surface in managed winmd components [121641] +* Fixed a memory leak in native CLR CBindingInput [121931] +* Fixed a crash on attach/detach with IntelliTrace [141847] +* Windows runtime metadata export tool allows for C# UAP WinRT project to reference a C++ UAP WinRT project that references the mobile extensions SDK [142092] +* Fixed stack overflow in System.Numerics [143951] +* Fixed bad value numbering for pointer math leading to incorrect CSE optimization [143960] +* Fixed RyuJIT back-compat issue [143967] +* Fixed a case where a function could get passed a 2^32-1 parameter value instead of -1L [144065] +* Fixed a crash in dynamic methods using generic value type parameters [145137] +* Fixed a memory leak in mscoreei!RuntimeRequest::ComputeVersionStringThrowing [145389] +* Fixed garbage collection dependent handle ages [145686] +* Fixed exception handling scopes for IL generated by Roslyn [145835] +* Fixed incorrect result with RyuJIT and VS 2013 compiler optimizations turned on [145846] +* Fixed garbage collection access violation in heap expand in corner cases due to slightly off pad ratio [145905] +* Fixed app packaging resource indexer write access violation at mscoreei!ShimUtil::ReadFileVersion [147707] +* Fixed missed cast during binary XOR operation [142659] +* Profiling event listener sees enums as names rather than numbers [142794] +* Fixed optimization that was incorrectly using a register value for a member variable [142798] +* Fixed bad codegen caused by turning on GSCookie check [145632] +* Fixed access violation in Compiler::fgValueNumberBlock while jitting [145643] +* All floating point reg-to-reg moves use movaps instead of movss/sd [145776] +* Added a way to facilitate specifying the ratio of compacting vs sweeping GCs [145709] +* Free list damage count isn't incorrectly overwritten [145712] +* Improved performance of x64 RyuJIT [145718] +* Mitigated "insufficient memory within specified address space range" errors [145720] +* Fixed unnecessary decommit on the ephemeral segment [145768] +* Fixed an access violation in VB Jit32 codegen when accessing an array expanded by ReDim [142485] +* Improved hash function for float and double in value numbering [142492] +* Fixed an incorrect Assertionprop optimization on legacy x86 JIT that changes a negative zero into a positive zero and impacts the 32-bit Roslyn compiler [142253] +* Improved performance of parallel binary file deserialization [141896] + +BCL +--- + +* System.Diagnostics.Process v4.1.0.0 supported in desktop implementation assemblies [142838] +* System.ServiceProcess.ServiceController exposes a StartType property [145866] +* SqlClient has retry logic for cloud service connection opening [145878] +* SqlClient has improved multi-subnet failover connection behavior for AlwaysOn [117760] +* HttpListener API exposes TlsUnique to support token-binding [141263] +* Enhanced the ECDsa RedZone API [142405] +* No overflow exception when using Level in an EventSourceListener on a Write<T> [94974] +* No null reference exception when calling EventSource.GenerateManifest(Type, string) when an event method name ends with "Stop" [129244] +* Added a timeout to HttpOutput when sending a message [130240] +* More reliable connection of TCP local host with named SQL instance [130340] +* Vector2/3/4.CopyTo throws the right exception when a null array is passed in [131600] +* Vector2/3/4.CopyTo doesn't cause access violation when used with a negative startIndex parameter [142102] +* Vector.CopyTo throws consistent exceptions when running with JIT intrinsics [142413] +* Fixed access violation in Vector.CopyTo on an AVX2 machine [146428] +* Fixed SIMD Vector.Equals on AVX [133633] +* Vector3.Dot doesn't cause access violation when value is not stored [142555] +* Vector4 constructor evaluates argument list left to right [142843] +* Optimized memory usage by HttpListenerAsyncEventArgs [109754] +* Fixed a null reference exception in XML validation [111660] +* AppContext.BaseDirectory is configurable [142857] +* Fixed Serbian culture date parsing issue [144893] +* Fixed Norwegian culture date parsing issue [145872] +* TransparentNetworkIPResolution works with more than 64 IPs in DNS [147652] +* SqlBulkCopy works for data movement from encrypted to plain text nchar columns [149383] +* Transparent network IP resolution works if TCP protocol isn't explicitly defined [149824] +* Enumerating cultures yields both Persian languages [145823] +* An archive created with System.IO.Compression.ZipFile.CreateFromDirectory preserves directory structure when unpacked on OSX [142220] +* SqlClient always encrypted supports hardware-protected keys [116442] +* Added support for Token Binding for server-side usage of HttpListener [119817] +* Uri constructor doesn't throw ArgumentOutOfRangeException when parsing certain URIs with escaped international characters [123235] + +ASP.NET +------- + +* TreeNode.ImageTooltip is rendered as title attribute [101518] +* Access to WebAdminFiles re-enabled [144513] +* Fixed 4.6 regression in DataBoundControl.PerformSelect() [145931] +* MaintainScrollPositionOnPostBack works with zoom on Chrome [120243] + +WPF +--- + +* Listbox items can be selected by touch on high precision touch panel [141237] +* Underline can be applied after strikethrough [141662] +* Fixed a crash in XAML in Xceed.Wpf.Toolkit [141966] +* ListCollectionView with NewItemPlaceHolderPosition.AtBeginning removes the last element, not the one before it [93418] +* Fixed an app hang case when scrolling [99716] +* SelectedItem property in DataGrid and UI are in sync even when the selected item is off-screen [117243] +* Fixed an exception in System.Windows.Documents.ImmComposition.OnGotFocus [117523] +* Adding an object to the end of a collection causes correct argument to be passed to VirtualizingPanel.OnItemsChanged [130980] +* TextRange.Save using DataFormats.Rtf exports the last block from FlowDocument [131881] +* Fixed leak of ImmComposition objects in System.Windows.Documents.ImmComposition.GetImmComposition [133134] +* Fixed a hang when scrolling TreeView with large indent [141179] +* Calling window.open from WebBrowser control doesn't result in access denied script error [141608] +* Fixed layout when item-scrolling TreeView [122337] +* Adding an item to CompositeCollection doesn't cause ItemsControl.SelectedIndex to incorrectly increment [122826] +* Glyph elements containing alphanumeric characters aren't always printed using MS Sans Serif [142597] +* VisualTreeUtils.AsNonNullVisual doesn't throw argument null exception when scrolling TreeView [142874] +* Virtualizing TreeView doesn't cause it to scroll to random positions when collapsed and expanded [142912] +* Fixed null reference exception from DataGridCellsPanel.HasCorrectRealizedColumns [143791] +* Fixed a crash when deleting content from RichTextBox when a drawing tablet is installed [143800] +* XamlReader.Save doesn't add extra text when using XmlWriterSettings.Indent [147082] +* Printed characters not blurred if the printed XPS file uses transparent colors [147123] +* All items are printed in XPS file using transparent colors [147125] +* Added support for custom dictionaries in spell checking [142722] +* Restored spell checking features on Windows 10 [142577] +* Fixed a deadlock due to reentrancy in property changed handlers [145690] +* Fixed ReadyToRun bugs that affected managed C++ and IL assemblies [145692] +* Xmlns entries in XAML files withoug code behind don't cause usings to be added to the next XAML file compiled [145704] +* Fixed the rendering of certain unicode characters on Windows 10 [145727] +* Eliminated a delay in touch events [143839] +* Improved touch performance when manipulating image [142488] +* Fixed a null reference exception in GridViewHeaderRowPresenter when Columns is set to null during measure [142184] +* WPF doesn't stop promoting touch to click after digitizer is removed and reconnected while touching the digitizer [142019] +* Fixed TextBox argument exception when using some Chinese characters [141693] +* Improved RichTextBox typing performance on low-end GPU [141828] +* Chrome doesn't turn black on maximize on Windows 8.1 when GlassFrameThickness is -1 [124835] +* Fixed a case where a button click event wasn't raised after deactivating the application's window [141633] +* RichTextBox spellcheck corrections don't create double possessives [141660] +* Data binding for elements in a Popup don't get lost [122280] +* DatePicker DisplayDate binding works inside DataGrid, DataTemplate, and ControlTemplate [120278] +* Using the Binding(string) constructor doesn't degrade performance [120967] +* Fixed a memory leak in TreeView [105337] +* Changing IsEnabled for a parent of a TextBlock affects its contents [91119] + +WCF +--- + +* ServiceThrottle uses double-checked locking pattern for calls, sessions, and dynamic properties [96934] +* MessageLogger.LogInternal doesn't call TraceXPathNavigator.ToString() [127642] +* ProtocolException RoutingService to net.tcp doesn't reject all requests after end service recycles [142828] +* Better performance on base64 strings with spaces [143785] +* NetHttpBinding handles synchronous callback from WCF service correctly when called via WPF or WinForms app [145832] +* Fixed a w3wp.exe crash when an exception occurs with WCF activity tracing enabled [145636] +* Fixed a performance regression in selected large object variations [141815] +* Binding including message credential over transport allows for messages where the To header is not signed [140756] +* Fixed a null reference exception in System.Runtime.Serialization when ETW is enabled [105266] + +Entity Framework +---------------- + +Workflow +-------- + +* Sys.Tx APIs enable distributed transactions with a non-MSDTC coordinator [145813] +* A user of EnlistPromotableSinglePhase can promote transactions to a non-MSDTC distributed transaction coordinator [145770, 142891, 142992] +* System.Transaction allows for snapshot isolation for non-MSDTC promoter types [146607] +* Sql implementation handles transient faults properly [113390] + +Windows Forms +------------- + +* CTRL+A works in multiline text boxes [145670] +* Vertical scrollbar's Maximum is in sync with DataGridView's total height if the grid is populated while disabled [127329] +* CancelButton or mnemonics respect Control.CausesValidation [144357] +* Fixed a possible index out of range exception in ThreadContext when using custom MessageFilter [145665] +* Fixed a null reference exception in System.Windows.Forms.ToolTip [145763] From d2541aec896f2f12fbdb992f299693addf2c5f6c Mon Sep 17 00:00:00 2001 From: Bertrand Le Roy Date: Thu, 29 Oct 2015 12:58:38 -0700 Subject: [PATCH 226/872] Remove empty section from 4.6.1 changelist --- docs/releases/net461/dotnet461-changes.md | 3 --- 1 file changed, 3 deletions(-) diff --git a/docs/releases/net461/dotnet461-changes.md b/docs/releases/net461/dotnet461-changes.md index 905d65e9d..8bdc6b315 100644 --- a/docs/releases/net461/dotnet461-changes.md +++ b/docs/releases/net461/dotnet461-changes.md @@ -152,9 +152,6 @@ WCF * Binding including message credential over transport allows for messages where the To header is not signed [140756] * Fixed a null reference exception in System.Runtime.Serialization when ETW is enabled [105266] -Entity Framework ----------------- - Workflow -------- From 4c900a5212fd23d5ba9d70d404bcd2938ac5e346 Mon Sep 17 00:00:00 2001 From: Marcus Hammarberg Date: Fri, 30 Oct 2015 15:37:26 +0700 Subject: [PATCH 227/872] Added specflow --- dotnet-developer-projects.md | 1 + 1 file changed, 1 insertion(+) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 26015844f..94862ad84 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -213,6 +213,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [NSubstitute](https://github.com/nsubstitute/NSubstitute) - A friendly substitute for .NET mocking frameworks. * [NUnit](https://github.com/nunit/nunit) - NUnit is a unit-testing framework for all .NET languages. * [Shouldly](https://github.com/shouldly/shouldly) - Should style test assertion library with great error messages. + * [SpecFlow](https://github.com/techtalk/specflow) - Cucumber clone for .NET for writing acceptance tests in natural langauge. [Site](http://www.specflow.org/) * [tickspec](http://tickspec.codeplex.com/) - A lightweight Behaviour Driven Development (BDD) framework. * [TestStack.BDDfy](https://github.com/TestStack/TestStack.BDDfy) - BDDfy is the simplest BDD framework to use, customize and extend! * [TestStack.FluentMvcTesting](https://github.com/TestStack/TestStack.FluentMVCTesting) - Simple, terse, fluent unit testing for ASP.NET MVC Controllers. From c163895bb306c97a3eb7ef31f65e1495ea4ee2fa Mon Sep 17 00:00:00 2001 From: Alfie Bowman Date: Fri, 30 Oct 2015 09:48:54 +0000 Subject: [PATCH 228/872] hyperlink @scottisafool --- dotnet-consumer-projects.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dotnet-consumer-projects.md b/dotnet-consumer-projects.md index f08ead6bd..995bee810 100644 --- a/dotnet-consumer-projects.md +++ b/dotnet-consumer-projects.md @@ -35,4 +35,4 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C This list is just a starting point - also take a look at all the projects on [CodePlex](http://www.codeplex.com/) and on [GitHub Trending C#](https://github.com/trending?l=csharp). -Thanks to @scottisafool for providing the initial list. +Thanks to [@scottisafool](https://twitter.com/scottisafool) for providing the initial list. From 98615643c0cb3e2e0d7f0f2f33c7f954ac2c1cd8 Mon Sep 17 00:00:00 2001 From: Greg Marzouka Date: Fri, 30 Oct 2015 08:43:34 -0400 Subject: [PATCH 229/872] Add NEST to dotnet-developer-projects --- dotnet-developer-projects.md | 1 + 1 file changed, 1 insertion(+) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 26015844f..7456bb250 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -116,6 +116,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [MoreLINQ](https://code.google.com/p/morelinq/) - LINQ to Objects is missing a few desirable features. This project will enhance LINQ to Objects with extra methods, in a manner which keeps to the spirit of LINQ. * [NAudio](https://github.com/naudio/NAudio) - An open source .NET audio and MIDI library. * [NetTopologySuite](https://github.com/NetTopologySuite) - A .NET port of the JTS Topology Suite. + * [NEST](https://github.com/elastic/elasticsearch-net) - The official .NET client library for Elasticsearch. * [NHunspell](http://sourceforge.net/projects/nhunspell/) - Spell Checker, Hyphenation an Theasaurus * [NModbus4](https://github.com/NModbus4/NModbus4) - Implementation of the Modbus protocol * [NodaTime](https://code.google.com/p/noda-time/) - A better date and time API for .NET From cd0451dca9406375b51d7690ea987c184cc5615f Mon Sep 17 00:00:00 2001 From: Bart Lannoeye Date: Fri, 30 Oct 2015 14:26:46 +0100 Subject: [PATCH 230/872] Added Prism --- dotnet-developer-projects.md | 1 + 1 file changed, 1 insertion(+) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 26015844f..7a93be563 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -170,6 +170,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [MVVM Extensions](https://github.com/TommasoScalici/MVVMExtensions) - MVVM cross platform (.NET FW 4.5, WPF, Windows Runtime/Phone) extensions for .NET with support for async commands, MVVM-friendly Object and Task with support for UI notification. * [MVVM Light Toolkit](http://www.mvvmlight.net) - A cross-platform desktop and mobile MVVM development framework. * [Okra App Framework](https://github.com/OkraFramework/Okra.Core) - An MVVM framework for Windows Store applications including MVVM templates for Visual Studio. + * [Prism](https://github.com/PrismLibrary/Prism) - A cross-platform desktop and mobile MVVM development framework. * [Radical](https://github.com/RadicalFx/radical) - An infrastructure framework whose primary role is to help in the development of composite WPF/Silverlight/WP/WinRT applications based on the Model View ViewModel pattern. * [ReactiveUI](https://github.com/reactiveui/ReactiveUI) - An MVVM framework that integrates with the Reactive Extensions for .NET to create elegant, testable User Interfaces that run on any mobile or desktop platform. * [Simple Mvvm Toolkit](http://simplemvvmtoolkit.codeplex.com/) - Provides a simple framework and set of tools for getting up to speed quickly with applications based on the MVVM design pattern. From 5e4cfe87bc329851583a5ef2fa5e3015964ffddb Mon Sep 17 00:00:00 2001 From: Steffen Forkmann Date: Fri, 30 Oct 2015 16:16:01 +0100 Subject: [PATCH 231/872] fix typo --- dotnet-developer-projects.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 26015844f..7603fb093 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -192,7 +192,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [Mini Profiler](https://github.com/MiniProfiler/dotnet) - A simple but effective mini-profiler for .NET. * [Obfuscar](https://obfuscar.codeplex.com) - MSIL obfuscation utility for .NET assemblies. * [Outcomes.Net](https://github.com/kinetiq/Ether.Outcomes/) - Fluent wrapper that eliminates plumbing code around failure-prone functions. - * [Paket](https://github.com/fsprojects/Paket) - Dependency manager for .NET and Mono projmects, which is designed to work well with NuGet packages and also enables referencing files directly from GitHub repositories. + * [Paket](https://github.com/fsprojects/Paket) - Dependency manager for .NET and Mono projects, which is designed to work well with NuGet packages and also enables referencing files directly from GitHub repositories. * [Protobuf-net](https://code.google.com/p/protobuf-net/) - A .NET implementation of protobuf, allowing you to serialize your .NET objects efficiently and easily. * [scriptcs](https://github.com/scriptcs/scriptcs) - scriptcs makes it easy to write and execute C# with a simple text editor. * [Snoop WPF](https://github.com/cplotts/snoopwpf) - Snoop - The WPF Spy Utility From 2518a6aa33f5552be0e6471a0a6395356ae19892 Mon Sep 17 00:00:00 2001 From: Chris Patterson Date: Fri, 30 Oct 2015 09:37:46 -0700 Subject: [PATCH 232/872] Added MassTransit and Automatonymous project links --- dotnet-developer-projects.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 5e24acb4c..aee41bc1a 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -69,6 +69,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [AzureNetQ](https://github.com/Roysvork/AzureNetQ) - An easy to use .NET API for Azure Service Bus. * [EasyNetQ](https://github.com/mikehadlow/EasyNetQ) - An easy to use .NET API for RabbitMQ. * [Lime](https://github.com/takenet/lime-csharp) - A lightweight messaging library. + * [MassTransit](https://github.com/MassTransit/MassTransit) - A distributed application framework for RabbitMQ and Azure Service Bus. * [RestBus](https://github.com/tenor/RestBus) - Easy Asynchronous Messaging and Queueing for .NET * Libraries @@ -79,6 +80,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [Argument](https://github.com/ashmind/Argument) - Argument validation microframework that does one thing in the simplest way possible. * [AshMind.Extensions](https://github.com/ashmind/ashmind-extensions) - A set of very conservative extension methods most of which closely follow naming and design patterns of .NET Base Class Library. * [AsyncCollections](https://github.com/HellBrick/AsyncCollections) - A set of lock-free thread-safe collections designed to be used asynchronously. + * [Automatonymous](https://github.com/MassTransit/Automatonymous) - An asynchronous state machine engine with messaging support. * [Bing.RestClient](https://github.com/AdvancedREI/Bing.RestClient) - Access the Bing REST APIs from a unified client. * [BoxKite.Twitter](https://github.com/NickHodge/BoxKite.Twitter/) - Twitter .NET Client Library for the 1.1 Twitter API, incorporating REST API, User streaming and Search Streaming. Uses Reactive Extensions (Rx). * [Brighter](https://github.com/iancooper/Paramore) - A Command Dispatcher and Command Processor library with support for Work or Task Queues over different MoM implementations such as RabbitMQ From 416db2d22b7880d1287e498d1fe568621cdb153d Mon Sep 17 00:00:00 2001 From: Jasmine Date: Fri, 30 Oct 2015 13:32:28 -0400 Subject: [PATCH 233/872] Added Node.js Tools for VS link --- dotnet-developer-projects.md | 1 + 1 file changed, 1 insertion(+) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 5e24acb4c..9d5de14bd 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -192,6 +192,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [Glimpse](https://github.com/Glimpse/Glimpse) - Providing real time diagnostics & insights to the fingertips of hundreds of thousands of developers daily. * [ILSpy](https://github.com/icsharpcode/ILSpy) - ILSpy is the open-source .NET assembly browser and decompiler. * [Mini Profiler](https://github.com/MiniProfiler/dotnet) - A simple but effective mini-profiler for .NET. + * [Node.js Tools For Visual Studio](https://github.com/Microsoft/nodejstools) - Plugin that turns Visual Studio into a Node.js IDE * [Obfuscar](https://obfuscar.codeplex.com) - MSIL obfuscation utility for .NET assemblies. * [Outcomes.Net](https://github.com/kinetiq/Ether.Outcomes/) - Fluent wrapper that eliminates plumbing code around failure-prone functions. * [Paket](https://github.com/fsprojects/Paket) - Dependency manager for .NET and Mono projects, which is designed to work well with NuGet packages and also enables referencing files directly from GitHub repositories. From 677965bf99d991e2390a011accc07ca0eb711944 Mon Sep 17 00:00:00 2001 From: Ryan Rousseau Date: Fri, 30 Oct 2015 18:17:16 -0500 Subject: [PATCH 234/872] Added FluentAutomation --- dotnet-developer-projects.md | 1 + 1 file changed, 1 insertion(+) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index b60d40d13..68a0059ef 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -213,6 +213,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [canopy](https://github.com/lefthandedgoat/canopy) - A web testing framework. * [FakeItEasy](https://github.com/FakeItEasy/FakeItEasy) - The easy mocking library for .NET. * [Fixie](https://github.com/fixie/fixie) - A low-ceremony, convention-based testing framework with flexible customization. + * [FluentAutomation](https://github.com/stirno/FluentAutomation) - Simple Fluent API for UI Automation * [FsCheck](https://github.com/fsharp/FsCheck) - A tool for testing .NET programs automatically. * [moq](https://github.com/Moq/moq4) - The most popular and friendly mocking framework for .NET * [NSubstitute](https://github.com/nsubstitute/NSubstitute) - A friendly substitute for .NET mocking frameworks. From 8898eccec47df7ccfd818af8be9f4b85295358fa Mon Sep 17 00:00:00 2001 From: Rich Lander Date: Fri, 30 Oct 2015 22:05:35 -0700 Subject: [PATCH 235/872] Update LICENSE --- LICENSE | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/LICENSE b/LICENSE index 06ba91c16..e4daab2be 100644 --- a/LICENSE +++ b/LICENSE @@ -1,5 +1,5 @@ The MIT License (MIT) -Copyright (c) 2014 Microsoft Corporation +Copyright (c) Microsoft Corporation Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal From a0229e08ba36ce130623176a9a45231e284c554c Mon Sep 17 00:00:00 2001 From: Adam Ralph Date: Mon, 2 Nov 2015 08:56:50 +0100 Subject: [PATCH 236/872] added xbehave.net --- dotnet-developer-projects.md | 1 + 1 file changed, 1 insertion(+) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 68a0059ef..b2535c776 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -225,6 +225,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [TestStack.FluentMvcTesting](https://github.com/TestStack/TestStack.FluentMVCTesting) - Simple, terse, fluent unit testing for ASP.NET MVC Controllers. * [TestStack.Seleno](https://github.com/TestStack/TestStack.Seleno) - Seleno helps you write automated UI tests in the right way by implementing Page Objects and Page Components and by reading from and writing to web pages using strongly typed view models. * [TestStack.White](https://github.com/TestStack/White) - White is a framework for automating rich client applications based on Win32, WinForms, WPF, Silverlight and SWT (Java) platforms. + * [xBehave.net](https://github.com/xbehave/xbehave.net/) - A BDD/TDD framework based on xUnit.net and inspired by Gherkin. * [xUnit](https://github.com/xunit/xunit) - xUnit.net is a community-focused unit testing tool for the .NET Framework. * Dependency Injection From 748bbbfdb48b27420e4a8b243f18b5327432ee04 Mon Sep 17 00:00:00 2001 From: Charlie Kindel Date: Mon, 2 Nov 2015 09:38:41 -0800 Subject: [PATCH 237/872] Added Amazon Echo/Alexa .NET library --- dotnet-developer-projects.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 68a0059ef..146381d18 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -308,6 +308,9 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * Windows Workflow * [Workflow Extractor](https://github.com/punitganshani/WorkflowExtractor) - Document Windows Workflow logic into a Word document or Excel sheet. +* Amazon Echo/Alexa Integration + * [AlexaSkillsKit.NET](https://github.com/AreYouFreeBusy/AlexaSkillsKit.NET) - .NET library to write Alexa Skills that's interface-compatible with Amazon's AlexaSkillsKit for Java and matches that functionality. + This list is just a starting point - also take a look at all the projects on [CodePlex](http://www.codeplex.com/) and on [GitHub Trending C#](https://github.com/trending?l=csharp). [@quozd](http://twitter.com/quozd "@quozd on Twitter") hosts an [Awesome .NET!](https://github.com/quozd/awesome-dotnet) list. Also worth checking out. From 610a583e12442c6f7d6ead27482f3ef9142cd258 Mon Sep 17 00:00:00 2001 From: Holly M Date: Mon, 2 Nov 2015 14:37:11 -0800 Subject: [PATCH 238/872] Add API Port to the list of developer tools https://github.com/microsoft/dotnet-apiport --- dotnet-developer-projects.md | 1 + 1 file changed, 1 insertion(+) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 68a0059ef..6c114b59c 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -180,6 +180,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [WPF Application Framework (WAF)](http://waf.codeplex.com) - A lightweight Framework that helps you to create well structured WPF Applications. It supports you in applying a Layered Architecture and the Model-View-ViewModel pattern. * Tools + * [API Port](https://github.com/microsoft/dotnet-apiport) - A tool that will analyze code for compatability issues when migrating between .NET Framework releases. * [Cake](https://github.com/cake-build/cake) (C# Make) - A build automation system with C#/Roslyn driven build scripts. * [CppSharp](https://github.com/mono/CppSharp) - C/C++ bindings generation for .NET. * [CInject](https://github.com/punitganshani/CodeInject) - A tool to inject your C#/VB.NET code into existing .NET assemblies and executables From a45a86e7d5790234e79ed04de254808098e739bc Mon Sep 17 00:00:00 2001 From: Dmitry Vakulenko Date: Tue, 3 Nov 2015 15:06:05 +0200 Subject: [PATCH 239/872] Added Orleans --- dotnet-developer-projects.md | 1 + 1 file changed, 1 insertion(+) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 68a0059ef..954850066 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -302,6 +302,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [Warewolf Easy Service Bus](https://github.com/Warewolf-ESB/Warewolf-ESB) - An open source easy to use service bus, built on numerous .Net technologies including WF (Windows Workflow Foundation), SignalR and WPF. * Distributed Caching and Computing + * [Orleans](https://github.com/dotnet/orleans) - Framework that provides a straight-forward approach to building distributed high-scale computing applications using virtual actor model. * [CacheAdapter](https://bitbucket.org/glav/cacheadapter) - a .Net library allows developers to use unified-implemented cahce provider * [Dache](https://github.com/ironyx/dache) - An open source distributed caching service, built on .NET 4.0 and using TCP sockets for communication. From a6d4e06e1676bdcd432b226ca411f0113ddf560a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Josip=20Baki=C4=87?= Date: Fri, 6 Nov 2015 10:55:37 +0100 Subject: [PATCH 240/872] Added Shielded STM under "Libraries" --- dotnet-developer-projects.md | 1 + 1 file changed, 1 insertion(+) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 68a0059ef..b5d2880f3 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -130,6 +130,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [RestSharp](https://github.com/restsharp/RestSharp) - Simple REST and HTTP API Client for .NET * [SharpMap](https://sharpmap.codeplex.com/) - An easy-to-use mapping library for use in web and desktop applications * [SharpSnmpLib](https://sharpsnmplib.codeplex.com) - An easy-to-use SNMP library for use on all platforms (.NET/Mono/Xamarin) + * [Shielded](https://github.com/jbakic/Shielded) - Software Transactional Memory for .NET * [SmartIrc4net](https://github.com/meebey/SmartIrc4net) - IRC C# Library * [Splat](https://github.com/paulcbetts/splat) - A library to make things cross-platform that should be. * [SSH.NET](https://sshnet.codeplex.com/) - A client-side library for SSH, SCP and SFTP. From 66f61526fcccff57a5fb639da6503e27ffa2e3c5 Mon Sep 17 00:00:00 2001 From: Zlatko Knezevic Date: Wed, 11 Nov 2015 10:24:05 -0800 Subject: [PATCH 241/872] Update README.md Fox links --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 7fc945a98..ae3d462bd 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ The dotnet repository is the starting point to engage in and learn about .NET open source projects from [Microsoft](http://microsoft.github.io) and the -[.NET Foundation](http://dotnet.github.io). You can read the more detailed +[.NET Foundation](http://www.dotnetfoundation.org/). You can read the more detailed [.NET Core is Open Source](http://blogs.msdn.com/b/dotnet/archive/2014/11/12/net-core-is-open-source.aspx) on the .NET blog. From 65f38be66303e3162aa5214d11a8602593e89e54 Mon Sep 17 00:00:00 2001 From: Maira Wenzel Date: Thu, 12 Nov 2015 19:19:52 -0800 Subject: [PATCH 242/872] Update README.md Small fixes. I wasn't sure if we really call .NET Core as .NET Core 5, so I left as-is. --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index ae3d462bd..236abd8ed 100644 --- a/README.md +++ b/README.md @@ -2,13 +2,13 @@ The dotnet repository is the starting point to engage in and learn about .NET open source projects from [Microsoft](http://microsoft.github.io) and the -[.NET Foundation](http://www.dotnetfoundation.org/). You can read the more detailed +[.NET Foundation](http://www.dotnetfoundation.org/). You can read the more detailed post [.NET Core is Open Source](http://blogs.msdn.com/b/dotnet/archive/2014/11/12/net-core-is-open-source.aspx) on the .NET blog. ## Finding .NET Open Source Projects -There are many [open source .NET projects](dotnet-developer-projects.md), a few of which are listed below. Additionally @qourzd maintains list of [awesome open source .NET libraries, tools, frameworks, and software](https://github.com/quozd/awesome-dotnet). +There are many [open source .NET projects](dotnet-developer-projects.md), a few of which are listed below. Additionally [@quozd](https://github.com/quozd) maintains a list of [awesome open source .NET libraries, tools, frameworks, and software](https://github.com/quozd/awesome-dotnet). From 4e1178780fd3011a6bfd2cee4c23227956a95d21 Mon Sep 17 00:00:00 2001 From: Maira Wenzel Date: Fri, 13 Nov 2015 14:41:18 -0800 Subject: [PATCH 243/872] Update README.md Removed .NET Core 5 references --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 236abd8ed..735a473de 100644 --- a/README.md +++ b/README.md @@ -13,7 +13,7 @@ There are many [open source .NET projects](dotnet-developer-projects.md), a few * [.NET Compiler Platform ("Roslyn")](https://github.com/dotnet/roslyn) -* [.NET Core 5](https://github.com/dotnet/core) +* [.NET Core](https://github.com/dotnet/core) * [ASP.NET 5](https://github.com/aspnet/home) * [EntityFramework](https://github.com/aspnet/EntityFramework) * [Exceptionless](https://github.com/exceptionless/Exceptionless) @@ -39,7 +39,7 @@ For a list of free services and tools for open source .NET projects, see: .NET open source projects from Microsoft (gladly) accept PRs and other contributions. To contribute to ASP.NET 5 or EntityFramework, see [the ASP.NET Contributing Guide](https://github.com/aspnet/Home/blob/master/CONTRIBUTING.md). -To contribute to .NET Core 5, see the +To contribute to .NET Core, see the [.NET Core Contributing Guide](https://github.com/dotnet/corefx/wiki/Contributing). You are also encouraged to start a discussion by posting on the From 065cfca1d26bc06a78963e677a0d865d0f83529d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20N=2E=20Klingsheim?= Date: Sun, 15 Nov 2015 23:28:06 +0100 Subject: [PATCH 244/872] Added the NWebsec security library. --- dotnet-developer-projects.md | 1 + 1 file changed, 1 insertion(+) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 28ef8c225..ec0e16d40 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -39,6 +39,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [Roslyn (.NET Compiler Platform)](https://roslyn.codeplex.com/) - Open-source C# and Visual Basic compilers with rich code analysis APIs. * Security / Identity Management + * [NWebsec](https://github.com/NWebsec/NWebsec) - Security headers for ASP.NET applications. * [Thinktecture IdentityManager](https://github.com/thinktecture/Thinktecture.IdentityManager) * [Thinktecture IdentityServer](https://github.com/thinktecture/Thinktecture.IdentityServer.v3) * [SKGL - Serial Key Generating Library](https://skgl.codeplex.com/) From bdeddcb41137e8f41a424475182563718b1066ae Mon Sep 17 00:00:00 2001 From: Tommaso Scalici Date: Fri, 20 Nov 2015 12:32:22 +0100 Subject: [PATCH 245/872] Added LINQ Extensions in Libraries to dotnet-developer-projects --- dotnet-developer-projects.md | 1 + 1 file changed, 1 insertion(+) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index ec0e16d40..3a9e9d465 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -109,6 +109,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [JSON.NET](https://github.com/JamesNK/Newtonsoft.Json) - Popular high-performance JSON framework for .NET * [Kentor.AuthServices](https://github.com/KentorIT/authservices) - A SAML2 Service Provider for .NET. * [Language-ext](https://github.com/louthy/language-ext) - C# 6.0+ functional language extensions. Make C# more like F# and other functional languages + * [LINQ Extensions](https://github.com/TommasoScalici/LINQExtensions) - LINQ extensions for .NET is a collection of useful extensions methods that extends LINQ's capability. There are methods for combinatorics and sequence analysis, generation and manipulation. * [leveldb-sharp](https://github.com/meebey/leveldb-sharp) - cross-platform C# binding for LevelDB * [LibGit2Sharp](https://github.com/libgit2/libgit2sharp) - C# language bindings for the [LibGit2](https://github.com/libgit2/libgit2) implementation of Git. * [Lucene.Net](https://github.com/apache/lucene.net) From 005555e8ce1cf8ccb3c02eae0106e47a9657c823 Mon Sep 17 00:00:00 2001 From: Stacey Haffner Date: Mon, 30 Nov 2015 08:49:31 -0800 Subject: [PATCH 246/872] Added changes for RTM --- docs/releases/net461/dotnet461-changes.md | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/docs/releases/net461/dotnet461-changes.md b/docs/releases/net461/dotnet461-changes.md index 8bdc6b315..ba612d723 100644 --- a/docs/releases/net461/dotnet461-changes.md +++ b/docs/releases/net461/dotnet461-changes.md @@ -50,6 +50,14 @@ CLR * Improved hash function for float and double in value numbering [142492] * Fixed an incorrect Assertionprop optimization on legacy x86 JIT that changes a negative zero into a positive zero and impacts the 32-bit Roslyn compiler [142253] * Improved performance of parallel binary file deserialization [141896] +* Fixed an issue with F# applications that target FSharp.Core 3.1 and .NET 4.5.2 causing a FatalExecutionEngineException when deployed to a machine with .NET 4.6 installed [142619] +* Fixed an issue with x64 POINTF structure passing during a tail call [145688] +* Fixed an issue with !sos.heaptat always looking for unrooted information regardless on if the -iu switch is passed [145696] +* EventLog entry displays the exception type and stack trace string in the proper order [145642] +* Fixed a bug that prevented users from using NGen on non-Microsoft signed assemblies [147703] +* X509Certificates now support Elliptic Curve Digital Signature Algorithm (ECDSA) [145702] +* Fixed an issue that caused local variables not to show up in X++ Debugging [145571] +* Fixed RyuJIT optimizer causing incorrect result [110557] BCL --- @@ -84,6 +92,8 @@ BCL * SqlClient always encrypted supports hardware-protected keys [116442] * Added support for Token Binding for server-side usage of HttpListener [119817] * Uri constructor doesn't throw ArgumentOutOfRangeException when parsing certain URIs with escaped international characters [123235] +* Fixed a bug that prevented some localized text from displaying properly [145634] +* Fixed a bug that caused the Exception Catch event to get the incorrect source line [142525] ASP.NET ------- @@ -92,6 +102,8 @@ ASP.NET * Access to WebAdminFiles re-enabled [144513] * Fixed 4.6 regression in DataBoundControl.PerformSelect() [145931] * MaintainScrollPositionOnPostBack works with zoom on Chrome [120243] +* RegEx can be opted out for EmailAddresses, Phone, and URL attributes [142685] +* Added a MatchTimeout property to RegularExpressionAttribute [142685] WPF --- @@ -138,7 +150,10 @@ WPF * Using the Binding(string) constructor doesn't degrade performance [120967] * Fixed a memory leak in TreeView [105337] * Changing IsEnabled for a parent of a TextBlock affects its contents [91119] - +* Fixed an issue with partial trust applications running on a machine with a touch device [151160] +* Fixed a bug caused by loading multiple Microsoft Visual Studio Tools for Office (VSTO) addins on touch enabled devices [142484] +* Fixed a bug that caused Visual Studio to hang when saving a XAML file [110669] + WCF --- @@ -151,6 +166,7 @@ WCF * Fixed a performance regression in selected large object variations [141815] * Binding including message credential over transport allows for messages where the To header is not signed [140756] * Fixed a null reference exception in System.Runtime.Serialization when ETW is enabled [105266] +* Fixed IdentityModel.Claims to support multiple DNS entries [140718] Workflow -------- @@ -168,3 +184,8 @@ Windows Forms * CancelButton or mnemonics respect Control.CausesValidation [144357] * Fixed a possible index out of range exception in ThreadContext when using custom MessageFilter [145665] * Fixed a null reference exception in System.Windows.Forms.ToolTip [145763] +* Fixed the Categories name visibility in the Table/Columns Collection Editor when using high contrast scheme [145631] +* Fixed several VisualStudio Designer Crashes [145639], [145710], [145652] +* Fixed the size of the text for the Generating Previews dialog of the PrintPreviewControl from being cropped when scaling up to 500% in HDPI mode [145775] +* Fixed the icons in the toolbox when scaling above 100% [145824] + From 8db2bc80850b9d714a057cf22a1df065455ffdad Mon Sep 17 00:00:00 2001 From: Rich Lander Date: Tue, 1 Dec 2015 19:32:50 -0800 Subject: [PATCH 247/872] Move release directory to top-level --- {docs/releases => releases}/net46/dotnet46-api-changes.html | 0 {docs/releases => releases}/net46/dotnet46-api-changes.md | 0 {docs/releases => releases}/net46/dotnet46-changes.md | 0 {docs/releases => releases}/net461/dotnet461-api-changes.md | 0 {docs/releases => releases}/net461/dotnet461-changes.md | 0 5 files changed, 0 insertions(+), 0 deletions(-) rename {docs/releases => releases}/net46/dotnet46-api-changes.html (100%) rename {docs/releases => releases}/net46/dotnet46-api-changes.md (100%) rename {docs/releases => releases}/net46/dotnet46-changes.md (100%) rename {docs/releases => releases}/net461/dotnet461-api-changes.md (100%) rename {docs/releases => releases}/net461/dotnet461-changes.md (100%) diff --git a/docs/releases/net46/dotnet46-api-changes.html b/releases/net46/dotnet46-api-changes.html similarity index 100% rename from docs/releases/net46/dotnet46-api-changes.html rename to releases/net46/dotnet46-api-changes.html diff --git a/docs/releases/net46/dotnet46-api-changes.md b/releases/net46/dotnet46-api-changes.md similarity index 100% rename from docs/releases/net46/dotnet46-api-changes.md rename to releases/net46/dotnet46-api-changes.md diff --git a/docs/releases/net46/dotnet46-changes.md b/releases/net46/dotnet46-changes.md similarity index 100% rename from docs/releases/net46/dotnet46-changes.md rename to releases/net46/dotnet46-changes.md diff --git a/docs/releases/net461/dotnet461-api-changes.md b/releases/net461/dotnet461-api-changes.md similarity index 100% rename from docs/releases/net461/dotnet461-api-changes.md rename to releases/net461/dotnet461-api-changes.md diff --git a/docs/releases/net461/dotnet461-changes.md b/releases/net461/dotnet461-changes.md similarity index 100% rename from docs/releases/net461/dotnet461-changes.md rename to releases/net461/dotnet461-changes.md From 7459d5453626058b5fee15ddf9bac3463646d906 Mon Sep 17 00:00:00 2001 From: Richard Lander Date: Tue, 8 Dec 2015 17:23:06 -0800 Subject: [PATCH 248/872] Add 4.6.1 version --- data/platforms.json | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/data/platforms.json b/data/platforms.json index 8386f52f0..f519a52e4 100644 --- a/data/platforms.json +++ b/data/platforms.json @@ -34,15 +34,27 @@ "platforms": [ { +"platform":".NET Framework 4.6.1", +"category":"netfx", +"info":"http://blogs.msdn.com/b/dotnet/archive/2015/11/30/net-framework-4-6-1-is-now-available.aspx", +"includedIn":["VS2015"], +"supportedBy":["VS2013","VS2012"], +"runtime":[ +{"name":".NET Framework 4.6.1","link":"http://go.microsoft.com/fwlink/?LinkId=528259"}], +"tools":[ +{"name":"Visual Studio Community 2015 (free)","link":"https://www.visualstudio.com/products/visual-studio-community-vs"}, +{"name":".NET Framework 4.6.1 Targeting Pack","link":"http://go.microsoft.com/fwlink/?LinkId=690706","description":"The .NET 4.6.1 Developer pack includes the 4.6.1 reference assemblies needed by Visual Studio and msbuild."} +] +}, +{ "platform":".NET Framework 4.6", "category":"netfx", "info":"http://blogs.msdn.com/b/dotnet/archive/2015/07/20/announcing-net-framework-4-6.aspx", "includedIn":["VS2015"], "supportedBy":["VS2013","VS2012"], "runtime":[ -{"name":".NET Framework 4.6","link":"http://go.microsoft.com/fwlink/?LinkId=528259"}], +{"name":".NET Framework 4.6","link":"http://go.microsoft.com/fwlink/?LinkId=671729"}], "tools":[ -{"name":"Visual Studio Community 2015 (free)","link":"https://www.visualstudio.com/products/visual-studio-community-vs"}, {"name":".NET Framework 4.6 Targeting Pack","link":"http://go.microsoft.com/fwlink/?LinkId=528261","description":"The .NET 4.6 Developer pack includes the 4.6 reference assemblies needed by Visual Studio and msbuild."} ] }, From 2e4f0087bd1c76a1c2526e838c41fa9eb2b72d89 Mon Sep 17 00:00:00 2001 From: Dennis Doomen Date: Mon, 14 Dec 2015 07:44:48 +0100 Subject: [PATCH 249/872] Added references to Fluent Assertions and the C# Coding Guidelines --- dotnet-developer-projects.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 3a9e9d465..49a74a8dd 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -38,6 +38,9 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [Phalanger](https://github.com/DEVSENSE/Phalanger) - full-featured PHP runtime & compiler for .NET/Mono frameworks. Phalanger is modern open-source implementation of PHP, compatible with the vast array of existing PHP code. * [Roslyn (.NET Compiler Platform)](https://roslyn.codeplex.com/) - Open-source C# and Visual Basic compilers with rich code analysis APIs. +* Quality Assurance + * [C# Coding Guidelines](csharpcodingguidelines.com) - A set of coding guidelines for C# 3.0, 4.0 and 5.0 that extend StyleCop and can be forked and adapted for internal use. + * Security / Identity Management * [NWebsec](https://github.com/NWebsec/NWebsec) - Security headers for ASP.NET applications. * [Thinktecture IdentityManager](https://github.com/thinktecture/Thinktecture.IdentityManager) @@ -217,6 +220,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [canopy](https://github.com/lefthandedgoat/canopy) - A web testing framework. * [FakeItEasy](https://github.com/FakeItEasy/FakeItEasy) - The easy mocking library for .NET. * [Fixie](https://github.com/fixie/fixie) - A low-ceremony, convention-based testing framework with flexible customization. + * [FluentAssertions](http://www.fluentassertions.com/) - A very extensive set of extension methods that allow you to more naturally specify the expected outcome of unit tests and which make your assertions look beautiful, natural and most importantly, extremely readable. * [FluentAutomation](https://github.com/stirno/FluentAutomation) - Simple Fluent API for UI Automation * [FsCheck](https://github.com/fsharp/FsCheck) - A tool for testing .NET programs automatically. * [moq](https://github.com/Moq/moq4) - The most popular and friendly mocking framework for .NET From f8aa263b61e0a96fe02a580915ec79a0554eb99d Mon Sep 17 00:00:00 2001 From: wanderq Date: Thu, 24 Dec 2015 13:44:00 +0200 Subject: [PATCH 250/872] Update README.md Add link to the Orleans --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 735a473de..316fa307e 100644 --- a/README.md +++ b/README.md @@ -16,6 +16,7 @@ There are many [open source .NET projects](dotnet-developer-projects.md), a few * [.NET Core](https://github.com/dotnet/core) * [ASP.NET 5](https://github.com/aspnet/home) * [EntityFramework](https://github.com/aspnet/EntityFramework) +* [Orleans](https://github.com/dotnet/orleans) * [Exceptionless](https://github.com/exceptionless/Exceptionless) * [Glimpse](http://getglimpse.com) * [JSON.NET](http://json.net/) From 57cc2a1636572c17832f366a0e6777b7fe8d3e1a Mon Sep 17 00:00:00 2001 From: MichaC Date: Fri, 25 Dec 2015 14:14:18 +0100 Subject: [PATCH 251/872] Added reference to CacheManager Added a reference to the CacheManager library. Also, sorted the list under "Distributed Caching and Computing" alphabetically --- dotnet-developer-projects.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 49a74a8dd..c58971880 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -311,9 +311,10 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [Warewolf Easy Service Bus](https://github.com/Warewolf-ESB/Warewolf-ESB) - An open source easy to use service bus, built on numerous .Net technologies including WF (Windows Workflow Foundation), SignalR and WPF. * Distributed Caching and Computing - * [Orleans](https://github.com/dotnet/orleans) - Framework that provides a straight-forward approach to building distributed high-scale computing applications using virtual actor model. * [CacheAdapter](https://bitbucket.org/glav/cacheadapter) - a .Net library allows developers to use unified-implemented cahce provider + * [CacheManager](https://github.com/MichaCo/CacheManager) - A configurable abstraction layer for caching. It supports various caches, like redis and memcached, and provides many advanced features, like layered cache, synchronization, serialization etc. * [Dache](https://github.com/ironyx/dache) - An open source distributed caching service, built on .NET 4.0 and using TCP sockets for communication. + * [Orleans](https://github.com/dotnet/orleans) - Framework that provides a straight-forward approach to building distributed high-scale computing applications using virtual actor model. * Windows Workflow * [Workflow Extractor](https://github.com/punitganshani/WorkflowExtractor) - Document Windows Workflow logic into a Word document or Excel sheet. From c2058bbbf58c47570655c0e1cc51b6c87506d805 Mon Sep 17 00:00:00 2001 From: Cagatay Dogan Date: Sat, 26 Dec 2015 08:54:12 +0200 Subject: [PATCH 252/872] Added Sweet.Jayson JSON Library Added Sweet.Jayson, a fast, reliable, easy to use, fully json.org compliant, thread safe C# JSON library for server side and desktop operations. --- dotnet-developer-projects.md | 1 + 1 file changed, 1 insertion(+) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 49a74a8dd..ec8c05051 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -140,6 +140,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [Splat](https://github.com/paulcbetts/splat) - A library to make things cross-platform that should be. * [SSH.NET](https://sshnet.codeplex.com/) - A client-side library for SSH, SCP and SFTP. * [SuperSocket](https://github.com/kerryjiang/SuperSocket) - An extensible socket server engine which supports .NET and Mono + * [Sweet.Jayson](https://github.com/ocdogan/Sweet.Jayson) - Fast, reliable, easy to use, fully json.org compliant, thread safe C# JSON library for server side and desktop operations. * [VkSharp](https://github.com/kasthack/vksharp) - VK client library * [TomP2P.NET](https://github.com/tomp2p/TomP2P.NET) - A P2P-based high performance key-value pair storage library for .NET * [WampSharp](https://github.com/Code-Sharp/WampSharp) - A C# implementation of [The Web Application Messaging Protocol](http://wamp.ws) - a protocol that provides messaging patterns of Remote Procedure Calls and Publish/Subscribe over WebSockets. From 56e0b29024c3bff8efd994ba729470da2633293f Mon Sep 17 00:00:00 2001 From: Bastian Eicher Date: Mon, 28 Dec 2015 09:05:41 +0100 Subject: [PATCH 253/872] Add Zero Install to list of .NET Open Source Consumer Projects --- dotnet-consumer-projects.md | 1 + 1 file changed, 1 insertion(+) diff --git a/dotnet-consumer-projects.md b/dotnet-consumer-projects.md index 995bee810..a7fa923f9 100644 --- a/dotnet-consumer-projects.md +++ b/dotnet-consumer-projects.md @@ -23,6 +23,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [Ember](https://github.com/Embershot/Ember) - Simple & Beautiful Screenshot App * [Waf Stopwatch](http://wafstopwatch.codeplex.com) - is an advanced stopwatch with a lap recording feature. Additionally, it provides a Countdown with alert sound. * [Waf File Hash Generator](http://fhg.codeplex.com) - is a simple tool to generate the hash values of one or more files. It supports: SHA512, SHA256, SHA1 and MD5 in hexadecimal or Base64 format. + * [Zero Install](https://github.com/0install/0install-win) - [0install.de](http://0install.de/) - is a decentralized cross-platform software-installation system. Run apps with a single click or control every detail. * Administration * [OpenPetra](https://github.com/openpetra/openpetra) - [www.openpetra.org](https://www.openpetra.org) - An administration software for charities that can be used to manage personnel, supporters, book keeping, gift receipting, accounts payable, conferences etc. From 695a811febff980778f3d869eab441a67b3127b5 Mon Sep 17 00:00:00 2001 From: Seth Juarez Date: Mon, 28 Dec 2015 13:07:27 -0800 Subject: [PATCH 254/872] added numl --- dotnet-developer-projects.md | 1 + 1 file changed, 1 insertion(+) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 49a74a8dd..cfd4dfdf7 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -164,6 +164,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [.NET Image Processor](http://dotnetimageprocessor.codeplex.com/) - Extensible, chainable image processing library (GDI+ based). * [OpenTK](https://github.com/opentk/opentk) - OpenTK is a low-level, cross-platform binding to OpenGL, OpenGL ES, OpenCL and OpenAL, available for Windows, Linux, Mac OS X, BSD, Android and iOS. * [SharpDX](https://github.com/sharpdx/SharpDX) - SharpDX is a project delivering the full DirectX API for .NET on all Windows platforms. + * [numl](http://numl.net) - numl is a general purpose machine learning framework meant to simplify the data analysis process * Logging * [Exceptionless](https://github.com/exceptionless/Exceptionless) - Provides real-time .NET error reporting for your ASP.NET, Web API, WebForms, WPF, Console, and MVC apps. It organizes the gathered information into simple actionable data that will help your app become exceptionless! From 500fe664ba1da1a18ed283f68806d8fed8fae12d Mon Sep 17 00:00:00 2001 From: Stacey Haffner Date: Thu, 14 Jan 2016 13:36:39 -0800 Subject: [PATCH 255/872] Updating the support column for the .NET Framework. --- data/platforms.json | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/data/platforms.json b/data/platforms.json index f519a52e4..9d30b4e59 100644 --- a/data/platforms.json +++ b/data/platforms.json @@ -36,6 +36,7 @@ { "platform":".NET Framework 4.6.1", "category":"netfx", +"support": "Supported", "info":"http://blogs.msdn.com/b/dotnet/archive/2015/11/30/net-framework-4-6-1-is-now-available.aspx", "includedIn":["VS2015"], "supportedBy":["VS2013","VS2012"], @@ -49,6 +50,7 @@ { "platform":".NET Framework 4.6", "category":"netfx", +"support": "Supported", "info":"http://blogs.msdn.com/b/dotnet/archive/2015/07/20/announcing-net-framework-4-6.aspx", "includedIn":["VS2015"], "supportedBy":["VS2013","VS2012"], @@ -61,6 +63,7 @@ { "platform":".NET Framework 4.5.2", "category":"netfx", +"support": "Supported", "info":"http://go.microsoft.com/fwlink/?LinkID=309958", "includedIn":["VS2015"], "supportedBy":["VS2013","VS2012"], @@ -74,6 +77,7 @@ { "platform":".NET Framework 4.5.1", "category":"netfx", +"support": "Not Supported", "info":"http://go.microsoft.com/fwlink/?LinkID=309958", "includedIn":["VS2015","VS2013"], "supportedBy":["VS2012"], @@ -86,6 +90,7 @@ { "platform":".NET Framework 4.5", "category":"netfx", +"support": "Not Supported", "info":"http://blogs.msdn.com/b/dotnet/archive/2012/08/15/announcing-the-release-of-net-framework-4-5-rtm-product-and-source-code.aspx", "includedIn":["VS2015","VS2013","VS2012"], "supportedBy":[], @@ -98,6 +103,7 @@ { "platform":".NET Framework 4.0.3", "category":"netfx", +"support": "Not Supported", "info":"http://blogs.msdn.com/b/dotnet/archive/2012/03/05/update-4-0-3-for-the-microsoft-net-framework-4.aspx", "includedIn":[], "supportedBy":["VS2010"], @@ -113,6 +119,7 @@ { "platform":".NET Framework 4", "category":"netfx", +"support": "Not Supported", "info":"http://blogs.msdn.com/b/dotnet/archive/2012/08/15/announcing-the-release-of-net-framework-4-5-rtm-product-and-source-code.aspx", "includedIn":["VS2015","VS2013","VS2012","VS2010"], "supportedBy":[], @@ -126,6 +133,7 @@ { "platform":".NET Framework 2.0 + 3.5 SP1", "category":"netfx", +"support": "Supported", "info":"http://msdn.microsoft.com/library/w0x726c2(VS.90).aspx", "includedIn":[], "supportedBy":["VS2015","VS2013","VS2012","VS2010"], From bc0d2944d7b1910c0fff50dfa00b15f5b2446099 Mon Sep 17 00:00:00 2001 From: Zlatko Knezevic Date: Thu, 14 Jan 2016 15:10:46 -0800 Subject: [PATCH 256/872] Update platforms.json Add "popular" key to drive the download page UX. Also switching to a sub-object for the supported information. --- data/platforms.json | 58 ++++++++++++++++++++++++++++++++++++++------- 1 file changed, 49 insertions(+), 9 deletions(-) diff --git a/data/platforms.json b/data/platforms.json index 9d30b4e59..c98cc3240 100644 --- a/data/platforms.json +++ b/data/platforms.json @@ -36,7 +36,12 @@ { "platform":".NET Framework 4.6.1", "category":"netfx", -"support": "Supported", +"supportInfo" : + { + "support": "Supported", + "link" : "" + }, +"popular": true, "info":"http://blogs.msdn.com/b/dotnet/archive/2015/11/30/net-framework-4-6-1-is-now-available.aspx", "includedIn":["VS2015"], "supportedBy":["VS2013","VS2012"], @@ -50,7 +55,12 @@ { "platform":".NET Framework 4.6", "category":"netfx", -"support": "Supported", +"supportInfo" : + { + "support": "Supported", + "link" : "" + }, +"popular": true, "info":"http://blogs.msdn.com/b/dotnet/archive/2015/07/20/announcing-net-framework-4-6.aspx", "includedIn":["VS2015"], "supportedBy":["VS2013","VS2012"], @@ -63,7 +73,12 @@ { "platform":".NET Framework 4.5.2", "category":"netfx", -"support": "Supported", +"supportInfo" : + { + "support": "Supported", + "link" : "" + }, +"popular": true, "info":"http://go.microsoft.com/fwlink/?LinkID=309958", "includedIn":["VS2015"], "supportedBy":["VS2013","VS2012"], @@ -77,7 +92,12 @@ { "platform":".NET Framework 4.5.1", "category":"netfx", -"support": "Not Supported", +"supportInfo" : + { + "support": "Not Supported", + "link" : "http://blogs.msdn.com/b/dotnet/archive/2015/12/09/support-ending-for-the-net-framework-4-4-5-and-4-5-1.aspx" + }, +"popular": false, "info":"http://go.microsoft.com/fwlink/?LinkID=309958", "includedIn":["VS2015","VS2013"], "supportedBy":["VS2012"], @@ -90,7 +110,12 @@ { "platform":".NET Framework 4.5", "category":"netfx", -"support": "Not Supported", +"supportInfo" : + { + "support": "Not Supported", + "link" : "http://blogs.msdn.com/b/dotnet/archive/2015/12/09/support-ending-for-the-net-framework-4-4-5-and-4-5-1.aspx" + }, +"popular": false, "info":"http://blogs.msdn.com/b/dotnet/archive/2012/08/15/announcing-the-release-of-net-framework-4-5-rtm-product-and-source-code.aspx", "includedIn":["VS2015","VS2013","VS2012"], "supportedBy":[], @@ -103,7 +128,12 @@ { "platform":".NET Framework 4.0.3", "category":"netfx", -"support": "Not Supported", +"supportInfo" : + { + "support": "Not Supported", + "link" : "http://blogs.msdn.com/b/dotnet/archive/2015/12/09/support-ending-for-the-net-framework-4-4-5-and-4-5-1.aspx" + }, +"popular": false, "info":"http://blogs.msdn.com/b/dotnet/archive/2012/03/05/update-4-0-3-for-the-microsoft-net-framework-4.aspx", "includedIn":[], "supportedBy":["VS2010"], @@ -119,7 +149,12 @@ { "platform":".NET Framework 4", "category":"netfx", -"support": "Not Supported", +"supportInfo" : + { + "support": "Supported", + "link" : "" + }, +"popular": true, "info":"http://blogs.msdn.com/b/dotnet/archive/2012/08/15/announcing-the-release-of-net-framework-4-5-rtm-product-and-source-code.aspx", "includedIn":["VS2015","VS2013","VS2012","VS2010"], "supportedBy":[], @@ -133,7 +168,12 @@ { "platform":".NET Framework 2.0 + 3.5 SP1", "category":"netfx", -"support": "Supported", +"supportInfo" : + { + "support": "Supported", + "link" : "" + }, +"popular": true, "info":"http://msdn.microsoft.com/library/w0x726c2(VS.90).aspx", "includedIn":[], "supportedBy":["VS2015","VS2013","VS2012","VS2010"], @@ -355,4 +395,4 @@ "tools":[] } ] -} \ No newline at end of file +} From ed9b86f119eac4ec71080893b830bcd50cadf3b0 Mon Sep 17 00:00:00 2001 From: Stacey Haffner Date: Fri, 15 Jan 2016 08:33:29 -0800 Subject: [PATCH 257/872] Corrected the support column for 4.0 --- data/platforms.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/data/platforms.json b/data/platforms.json index c98cc3240..e667a7d9b 100644 --- a/data/platforms.json +++ b/data/platforms.json @@ -151,8 +151,8 @@ "category":"netfx", "supportInfo" : { - "support": "Supported", - "link" : "" + "support": "Not Supported", + "link" : "http://blogs.msdn.com/b/dotnet/archive/2015/12/09/support-ending-for-the-net-framework-4-4-5-and-4-5-1.aspx" }, "popular": true, "info":"http://blogs.msdn.com/b/dotnet/archive/2012/08/15/announcing-the-release-of-net-framework-4-5-rtm-product-and-source-code.aspx", From 7288aee7fec52eecf439b66a4fe99ec220937805 Mon Sep 17 00:00:00 2001 From: Stacey Haffner Date: Fri, 15 Jan 2016 09:27:09 -0800 Subject: [PATCH 258/872] Correcting the platform links for 4.6.1 and 4.6 --- data/platforms.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/data/platforms.json b/data/platforms.json index e667a7d9b..8e8bcdf23 100644 --- a/data/platforms.json +++ b/data/platforms.json @@ -46,7 +46,7 @@ "includedIn":["VS2015"], "supportedBy":["VS2013","VS2012"], "runtime":[ -{"name":".NET Framework 4.6.1","link":"http://go.microsoft.com/fwlink/?LinkId=528259"}], +{"name":".NET Framework 4.6.1","link":"http://go.microsoft.com/fwlink/?LinkId=671729"}], "tools":[ {"name":"Visual Studio Community 2015 (free)","link":"https://www.visualstudio.com/products/visual-studio-community-vs"}, {"name":".NET Framework 4.6.1 Targeting Pack","link":"http://go.microsoft.com/fwlink/?LinkId=690706","description":"The .NET 4.6.1 Developer pack includes the 4.6.1 reference assemblies needed by Visual Studio and msbuild."} @@ -65,7 +65,7 @@ "includedIn":["VS2015"], "supportedBy":["VS2013","VS2012"], "runtime":[ -{"name":".NET Framework 4.6","link":"http://go.microsoft.com/fwlink/?LinkId=671729"}], +{"name":".NET Framework 4.6","link":"http://go.microsoft.com/fwlink/?LinkId=528259"}], "tools":[ {"name":".NET Framework 4.6 Targeting Pack","link":"http://go.microsoft.com/fwlink/?LinkId=528261","description":"The .NET 4.6 Developer pack includes the 4.6 reference assemblies needed by Visual Studio and msbuild."} ] From 55002a72ba44ff3ada8fd6a8e895f60d505529a8 Mon Sep 17 00:00:00 2001 From: fonlow Date: Thu, 28 Jan 2016 20:53:24 +1000 Subject: [PATCH 259/872] Update dotnet-developer-projects.md reference to Strongly Typed Client API Generators for ASP.NET Web API --- dotnet-developer-projects.md | 1 + 1 file changed, 1 insertion(+) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 47aa2d417..ec22c57b6 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -139,6 +139,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [SmartIrc4net](https://github.com/meebey/SmartIrc4net) - IRC C# Library * [Splat](https://github.com/paulcbetts/splat) - A library to make things cross-platform that should be. * [SSH.NET](https://sshnet.codeplex.com/) - A client-side library for SSH, SCP and SFTP. + * [Strongly Typed Client API Generators for ASP.NET Web API](https://webapiclientgen.codeplex.com/) - Strongly Typed Client API Generators generate strongly typed client API in TypeScript and C# codes supporting desktop, Universal Windows, Android and iOS. * [SuperSocket](https://github.com/kerryjiang/SuperSocket) - An extensible socket server engine which supports .NET and Mono * [Sweet.Jayson](https://github.com/ocdogan/Sweet.Jayson) - Fast, reliable, easy to use, fully json.org compliant, thread safe C# JSON library for server side and desktop operations. * [VkSharp](https://github.com/kasthack/vksharp) - VK client library From 3e4946049a3aa5c5b9b2d68da56a254a662e53c6 Mon Sep 17 00:00:00 2001 From: Brock Allen Date: Thu, 28 Jan 2016 11:27:59 -0500 Subject: [PATCH 260/872] updating IdentityServer and IdentityManager to correct names/URLs --- dotnet-developer-projects.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 47aa2d417..1119a9170 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -43,8 +43,8 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * Security / Identity Management * [NWebsec](https://github.com/NWebsec/NWebsec) - Security headers for ASP.NET applications. - * [Thinktecture IdentityManager](https://github.com/thinktecture/Thinktecture.IdentityManager) - * [Thinktecture IdentityServer](https://github.com/thinktecture/Thinktecture.IdentityServer.v3) + * [IdentityManager](https://github.com/IdentityManager/IdentityManager) + * [IdentityServer](https://github.com/IdentityServer/IdentityServer3) * [SKGL - Serial Key Generating Library](https://skgl.codeplex.com/) * Web CMS From 1bf6f7a50bb795b2ae652577227361f92a437cf5 Mon Sep 17 00:00:00 2001 From: Todd Menier Date: Wed, 17 Feb 2016 09:23:26 -0600 Subject: [PATCH 261/872] Added Flurl --- dotnet-developer-projects.md | 1 + 1 file changed, 1 insertion(+) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 47aa2d417..4ff212d03 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -105,6 +105,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [FluentBootstrap](https://github.com/somedave/FluentBootstrap) * [FluentConsole](https://github.com/ashmind/FluentConsole) - Alternative approach to colored console (`FluentConsole.Red.Text().Green.Text()`). * [FluentValidation](https://github.com/JeremySkinner/FluentValidation) - A small validation library for .NET that uses a fluent interface and lambda expressions for building validation rules. + * [Flurl](https://github.com/tmenier/Flurl) - A fluent, portable, testable URL builder and HTTP client library. * [Font-Awesome-WPF](https://github.com/charri/Font-Awesome-WPF) - WPF controls for the iconic font and CSS toolkit [Font Awesome](http://fortawesome.github.io/Font-Awesome/). * [GongSolutions.Wpf.DragDrop](https://github.com/punker76/gong-wpf-dragdrop) - A drag'n'drop framework for WPF. * [GeckoFX](https://bitbucket.org/geckofx) - Mozilla's Gecko layout engine wrapper in .NET. From f76b88bed548236d371c90ec315a41f5c4df2889 Mon Sep 17 00:00:00 2001 From: Joao Matos Silva Date: Fri, 19 Feb 2016 23:31:33 +0000 Subject: [PATCH 262/872] Added FlatMapper --- dotnet-developer-projects.md | 1 + 1 file changed, 1 insertion(+) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 47aa2d417..f40d88583 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -102,6 +102,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [Excel-DNA](https://github.com/Excel-DNA/ExcelDna) - Create high-performance, easy to deploy Excel add-ins with .NET - [Home](http://excel-dna.net) * [ExtraLINQ](https://github.com/mariusschulz/ExtraLINQ) - Various extension methods for working with .NET collections. * [FeatureToggle](https://github.com/jason-roberts/FeatureToggle) - Simple, reliable feature toggles in .NET. + * [FlatMapper](https://github.com/kappy/FlatMapper) - A library to import and export data from and to plain text files in a Linq compatible way * [FluentBootstrap](https://github.com/somedave/FluentBootstrap) * [FluentConsole](https://github.com/ashmind/FluentConsole) - Alternative approach to colored console (`FluentConsole.Red.Text().Green.Text()`). * [FluentValidation](https://github.com/JeremySkinner/FluentValidation) - A small validation library for .NET that uses a fluent interface and lambda expressions for building validation rules. From eae57e4533cf7e58c21f68bed5decdec4f807f90 Mon Sep 17 00:00:00 2001 From: Joao Matos Silva Date: Fri, 19 Feb 2016 23:36:03 +0000 Subject: [PATCH 263/872] Added DateTimeExtensions --- dotnet-developer-projects.md | 1 + 1 file changed, 1 insertion(+) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 47aa2d417..37ad7e30d 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -95,6 +95,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [ColorSharp](https://github.com/Litipk/ColorSharp) - Library to handle color spaces and light spectrums. * [ComparerExtensions](https://github.com/jehugaleahsa/comparerextensions) - Build IComparer and IEqualityComparer objects using natural language syntax. * [Cricket](https://github.com/fsprojects/Cricket) - Actor library + * [DateTimeExtensions](https://github.com/kappy/DateTimeExtensions) - Common Date Time operations on the form of extensions to System.DateTime, including holidays and working days calculations on several culture locales. * [DiffSharp](https://github.com/gbaydin/DiffSharp) - Automatic Differentiation Library * [DotNetOpenAuth](https://github.com/DotNetOpenAuth) - Library that adds support for your site visitors to login with their OpenIDs by just dropping an ASP.NET control onto your page. * [DropboxRestAPI](https://github.com/saguiitay/DropboxRestAPI) - DropBox .Net Client Library From 7e9f7b07fbadfdf54566e16a465c34ed3dd14fd8 Mon Sep 17 00:00:00 2001 From: Atif Aziz Date: Tue, 9 Feb 2016 08:25:42 +0100 Subject: [PATCH 264/872] Update ELMAH link to its new home ELMAH has a new home now that Google Code Project Hosting has shutdown. --- dotnet-developer-projects.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 47aa2d417..1ce2cc0b4 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -169,7 +169,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * Logging * [Exceptionless](https://github.com/exceptionless/Exceptionless) - Provides real-time .NET error reporting for your ASP.NET, Web API, WebForms, WPF, Console, and MVC apps. It organizes the gathered information into simple actionable data that will help your app become exceptionless! - * [ELMAH](https://code.google.com/p/elmah/) - ELMAH (Error Logging Modules and Handlers) is an application-wide error logging facility that is completely pluggable. It can be dynamically added to a running ASP.NET web application, or even all ASP.NET web applications on a machine, without any need for re-compilation or re-deployment. + * [ELMAH](https://github.com/elmah/Elmah) - [ELMAH (Error Logging Modules and Handlers)](https://elmah.github.io/) is an application-wide error logging facility that is completely pluggable. It can be dynamically added to a running ASP.NET web application, or even all ASP.NET web applications on a machine, without any need for re-compilation or re-deployment. * [log4net](http://logging.apache.org/log4net/) - A tool to help the programmer output log statements to a variety of output targets. * [LogMaster4Net](https://github.com/kerryjiang/LogMaster4Net) - It is a central log server which can organize your logs in different applications in a same place but have same log behaviors (loggers, appenders, levels and rules) like in the indepedent applications before. * [NLog](https://github.com/NLog/NLog) - NLog is a free logging platform for .NET with rich log routing and management capabilities. From 5632b482b7ffedd4dd682e1e186f9ebd00998482 Mon Sep 17 00:00:00 2001 From: Preeti Krishna Date: Wed, 30 Mar 2016 08:59:10 -0700 Subject: [PATCH 265/872] .NET 4.6.2 change and API diffs .NET 4.6.2 preview change and API diffs --- .../net462/dotnet462-preview-api-changes.md | 1021 +++++++++++++++++ releases/net462/dotnet462preview-changes.md | 115 ++ 2 files changed, 1136 insertions(+) create mode 100644 releases/net462/dotnet462-preview-api-changes.md create mode 100644 releases/net462/dotnet462preview-changes.md diff --git a/releases/net462/dotnet462-preview-api-changes.md b/releases/net462/dotnet462-preview-api-changes.md new file mode 100644 index 000000000..6d0444183 --- /dev/null +++ b/releases/net462/dotnet462-preview-api-changes.md @@ -0,0 +1,1021 @@ +```diff + namespace System.Data.SqlClient { ++ public enum PoolBlockingPeriod { ++ AlwaysBlock = 1, ++ Auto = 0, ++ NeverBlock = 2, ++ } + public sealed class SqlConnection : DbConnection, ICloneable { ++ public static TimeSpan ColumnEncryptionKeyCacheTtl { get; set; } ++ public static bool ColumnEncryptionQueryMetadataCacheEnabled { get; set; } + } + public sealed class SqlConnectionStringBuilder : DbConnectionStringBuilder { ++ public PoolBlockingPeriod PoolBlockingPeriod { get; set; } + } + } + namespace System.Diagnostics.Tracing { +- public abstract class EventListener : IDisposable { ++ public class EventListener : IDisposable { +- protected EventListener(); ++ public EventListener(); +- protected internal abstract void OnEventWritten(EventWrittenEventArgs eventData); ++ protected internal virtual void OnEventWritten(EventWrittenEventArgs eventData); ++ public event EventHandler EventSourceCreated; ++ public event EventHandler EventWritten; + } + public class EventSource : IDisposable { ++ public event EventHandler EventCommandExecuted; + } ++ public class EventSourceCreatedEventArgs : EventArgs { ++ public EventSourceCreatedEventArgs(); ++ public EventSource EventSource { get; internal set; } ++ } + } + namespace System.Security.Cryptography { ++ public sealed class AesCng : Aes { ++ public AesCng(); ++ public AesCng(string keyName); ++ public AesCng(string keyName, CngProvider provider); ++ public AesCng(string keyName, CngProvider provider, CngKeyOpenOptions openOptions); ++ public override byte[] Key { get; set; } ++ public override int KeySize { get; set; } ++ public override ICryptoTransform CreateDecryptor(); ++ public override ICryptoTransform CreateDecryptor(byte[] rgbKey, byte[] rgbIV); ++ public override ICryptoTransform CreateEncryptor(); ++ public override ICryptoTransform CreateEncryptor(byte[] rgbKey, byte[] rgbIV); ++ public override void GenerateIV(); ++ public override void GenerateKey(); ++ } + public abstract class DSA : AsymmetricAlgorithm { ++ protected virtual byte[] HashData(byte[] data, int offset, int count, HashAlgorithmName hashAlgorithm); ++ protected virtual byte[] HashData(Stream data, HashAlgorithmName hashAlgorithm); ++ public byte[] SignData(byte[] data, HashAlgorithmName hashAlgorithm); ++ public virtual byte[] SignData(byte[] data, int offset, int count, HashAlgorithmName hashAlgorithm); ++ public virtual byte[] SignData(Stream data, HashAlgorithmName hashAlgorithm); ++ public bool VerifyData(byte[] data, byte[] signature, HashAlgorithmName hashAlgorithm); ++ public virtual bool VerifyData(byte[] data, int offset, int count, byte[] signature, HashAlgorithmName hashAlgorithm); ++ public virtual bool VerifyData(Stream data, byte[] signature, HashAlgorithmName hashAlgorithm); + } ++ public sealed class DSACng : DSA { ++ public DSACng(); ++ public DSACng(CngKey key); ++ public DSACng(int keySize); ++ public CngKey Key { get; private set; } ++ public override string KeyExchangeAlgorithm { get; } ++ public override KeySizes[] LegalKeySizes { get; } ++ public override string SignatureAlgorithm { get; } ++ public override byte[] CreateSignature(byte[] rgbHash); ++ public override DSAParameters ExportParameters(bool includePrivateParameters); ++ public override void ImportParameters(DSAParameters parameters); ++ public override bool VerifySignature(byte[] rgbHash, byte[] rgbSignature); ++ } + public abstract class ECDiffieHellman : AsymmetricAlgorithm { ++ public byte[] DeriveKeyFromHash(ECDiffieHellmanPublicKey otherPartyPublicKey, HashAlgorithmName hashAlgorithm); ++ public virtual byte[] DeriveKeyFromHash(ECDiffieHellmanPublicKey otherPartyPublicKey, HashAlgorithmName hashAlgorithm, byte[] secretPrepend, byte[] secretAppend); ++ public byte[] DeriveKeyFromHmac(ECDiffieHellmanPublicKey otherPartyPublicKey, HashAlgorithmName hashAlgorithm, byte[] hmacKey); ++ public virtual byte[] DeriveKeyFromHmac(ECDiffieHellmanPublicKey otherPartyPublicKey, HashAlgorithmName hashAlgorithm, byte[] hmacKey, byte[] secretPrepend, byte[] secretAppend); +- public abstract byte[] DeriveKeyMaterial(ECDiffieHellmanPublicKey otherPartyPublicKey); ++ public virtual byte[] DeriveKeyMaterial(ECDiffieHellmanPublicKey otherPartyPublicKey); ++ public virtual byte[] DeriveKeyTls(ECDiffieHellmanPublicKey otherPartyPublicKey, byte[] prfLabel, byte[] prfSeed); + } + public sealed class ECDiffieHellmanCng : ECDiffieHellman { ++ public override byte[] DeriveKeyFromHash(ECDiffieHellmanPublicKey otherPartyPublicKey, HashAlgorithmName hashAlgorithm, byte[] secretPrepend, byte[] secretAppend); ++ public override byte[] DeriveKeyFromHmac(ECDiffieHellmanPublicKey otherPartyPublicKey, HashAlgorithmName hashAlgorithm, byte[] hmacKey, byte[] secretPrepend, byte[] secretAppend); ++ public override byte[] DeriveKeyTls(ECDiffieHellmanPublicKey otherPartyPublicKey, byte[] prfLabel, byte[] prfSeed); + } + public abstract class ECDiffieHellmanPublicKey : IDisposable { +- public abstract string ToXmlString(); ++ public virtual string ToXmlString(); + } ++ public sealed class TripleDESCng : TripleDES { ++ public TripleDESCng(); ++ public TripleDESCng(string keyName); ++ public TripleDESCng(string keyName, CngProvider provider); ++ public TripleDESCng(string keyName, CngProvider provider, CngKeyOpenOptions openOptions); ++ public override byte[] Key { get; set; } ++ public override int KeySize { get; set; } ++ public override ICryptoTransform CreateDecryptor(); ++ public override ICryptoTransform CreateDecryptor(byte[] rgbKey, byte[] rgbIV); ++ public override ICryptoTransform CreateEncryptor(); ++ public override ICryptoTransform CreateEncryptor(byte[] rgbKey, byte[] rgbIV); ++ public override void GenerateIV(); ++ public override void GenerateKey(); ++ } + } + namespace System.Security.Cryptography.X509Certificates { ++ public static class DSACertificateExtensions { ++ public static DSA GetDSAPrivateKey(this X509Certificate2 certificate); ++ public static DSA GetDSAPublicKey(this X509Certificate2 certificate); ++ } + } + namespace System.Security.Cryptography.Xml { + public class SignedXml { ++ public const string XmlDsigRSASHA256Url = "http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"; ++ public const string XmlDsigRSASHA384Url = "http://www.w3.org/2001/04/xmldsig-more#rsa-sha384"; ++ public const string XmlDsigRSASHA512Url = "http://www.w3.org/2001/04/xmldsig-more#rsa-sha512"; ++ public const string XmlDsigSHA256Url = "http://www.w3.org/2001/04/xmlenc#sha256"; ++ public const string XmlDsigSHA384Url = "http://www.w3.org/2001/04/xmldsig-more#sha384"; ++ public const string XmlDsigSHA512Url = "http://www.w3.org/2001/04/xmlenc#sha512"; + } + } + namespace System.Security.Principal { + public class WindowsIdentity : ClaimsIdentity, IDeserializationCallback, IDisposable, ISerializable { +- public static T RunImpersonated(SafeAccessTokenHandle safeAccessTokenHandle, Func func); ++ [MethodImpl(NoInlining)]public static T RunImpersonated(SafeAccessTokenHandle safeAccessTokenHandle, Func func); +- public static void RunImpersonated(SafeAccessTokenHandle safeAccessTokenHandle, Action action); ++ [MethodImpl(NoInlining)]public static void RunImpersonated(SafeAccessTokenHandle safeAccessTokenHandle, Action action); + } + } + namespace System.Web { + public sealed class HttpCachePolicy { ++ public DateTime UtcTimestampCreated { get; set; } ++ public HttpCacheability GetCacheability(); ++ public string GetCacheExtensions(); ++ public string GetETag(); ++ public bool GetETagFromFileDependencies(); ++ public DateTime GetExpires(); ++ public bool GetIgnoreRangeRequests(); ++ public bool GetLastModifiedFromFileDependencies(); ++ public TimeSpan GetMaxAge(); ++ public bool GetNoServerCaching(); ++ public bool GetNoStore(); ++ public bool GetNoTransforms(); ++ public int GetOmitVaryStar(); ++ public TimeSpan GetProxyMaxAge(); ++ public HttpCacheRevalidation GetRevalidation(); ++ public DateTime GetUtcLastModified(); ++ public string GetVaryByCustom(); ++ public bool HasSlidingExpiration(); ++ public bool IsModified(); ++ public bool IsValidUntilExpires(); + } + public sealed class HttpCacheVaryByContentEncodings { ++ public string[] GetContentEncodings(); ++ public void SetContentEncodings(string[] contentEncodings); + } + public sealed class HttpCacheVaryByHeaders { ++ public string[] GetHeaders(); ++ public void SetHeaders(string[] headers); + } + public sealed class HttpCacheVaryByParams { ++ public string[] GetParams(); ++ public void SetParams(string[] parameters); + } + } + namespace System.Web.Caching { + public sealed class AggregateCacheDependency : CacheDependency, ICacheDependencyChanged { ++ public override string[] GetFileDependencies(); + } + public class CacheDependency : IDisposable { ++ public virtual string[] GetFileDependencies(); + } ++ public abstract class OutputCacheProviderAsync : OutputCacheProvider { ++ protected OutputCacheProviderAsync(); ++ public abstract Task AddAsync(string key, object entry, DateTime utcExpiry); ++ public abstract Task GetAsync(string key); ++ public abstract Task RemoveAsync(string key); ++ public abstract Task SetAsync(string key, object entry, DateTime utcExpiry); ++ } ++ public static class OutputCacheUtility { ++ public static CacheDependency CreateCacheDependency(HttpResponse response); ++ public static ArrayList GetContentBuffers(HttpResponse response); ++ public static IEnumerable> GetValidationCallbacks(HttpResponse response); ++ public static void SetContentBuffers(HttpResponse response, ArrayList buffers); ++ public static string SetupKernelCaching(string originalCacheUrl, HttpResponse response); ++ } + } ++namespace System.Web.Globalization { ++ public interface IStringLocalizerProvider { ++ string GetLocalizedString(CultureInfo culture, string name, params object[] arguments); ++ } ++ public sealed class ResourceFileStringLocalizerProvider : IStringLocalizerProvider { ++ public const string ResourceFileName = "DataAnnotation.Localization"; ++ public ResourceFileStringLocalizerProvider(); ++ public string GetLocalizedString(CultureInfo culture, string name, params object[] arguments); ++ } ++ public static class StringLocalizerProviders { ++ public static IStringLocalizerProvider DataAnnotationStringLocalizerProvider { get; set; } ++ } ++} + namespace System.Web.ModelBinding { + public class DataAnnotationsModelValidator : ModelValidator { ++ protected virtual string GetLocalizedErrorMessage(string errorMessage); ++ protected string GetLocalizedString(string name, params object[] arguments); + } ++ public sealed class MaxLengthAttributeAdapter : DataAnnotationsModelValidator { ++ public MaxLengthAttributeAdapter(ModelMetadata metadata, ModelBindingExecutionContext context, MaxLengthAttribute attribute); ++ } ++ public sealed class MinLengthAttributeAdapter : DataAnnotationsModelValidator { ++ public MinLengthAttributeAdapter(ModelMetadata metadata, ModelBindingExecutionContext context, MinLengthAttribute attribute); ++ } + } + namespace System.Web.SessionState { ++ public interface ISessionStateModule : IHttpModule { ++ void ReleaseSessionState(HttpContext context); ++ Task ReleaseSessionStateAsync(HttpContext context); ++ } +- public sealed class SessionStateModule : IHttpModule { ++ public sealed class SessionStateModule : IHttpModule, ISessionStateModule { ++ public void ReleaseSessionState(HttpContext context); ++ public Task ReleaseSessionStateAsync(HttpContext context); + } + public static class SessionStateUtility { ++ public static bool IsSessionStateReadOnly(HttpContext context); ++ public static bool IsSessionStateRequired(HttpContext context); + } + } + namespace System.Windows { ++ public sealed class DpiChangedEventArgs : RoutedEventArgs { ++ public DpiScale NewDpi { get; private set; } ++ public DpiScale OldDpi { get; private set; } ++ } ++ public delegate void DpiChangedEventHandler(object sender, DpiChangedEventArgs e); { ++ public DpiChangedEventHandler(object @object, IntPtr method); ++ public virtual IAsyncResult BeginInvoke(object sender, DpiChangedEventArgs e, AsyncCallback callback, object @object); ++ public virtual void EndInvoke(IAsyncResult result); ++ public virtual void Invoke(object sender, DpiChangedEventArgs e); ++ } ++ [System.Runtime.InteropServices.StructLayoutAttribute(System.Runtime.InteropServices.LayoutKind.Sequential)] ++ public struct DpiScale { ++ public DpiScale(double dpiScaleX, double dpiScaleY); ++ public double DpiScaleX { get; } ++ public double DpiScaleY { get; } ++ public double PixelsPerDip { get; } ++ public double PixelsPerInchX { get; } ++ public double PixelsPerInchY { get; } ++ } + public static class FrameworkCompatibilityPreferences { ++ public static bool ShouldThrowOnCopyOrCutFailure { get; set; } + } ++ public sealed class HwndDpiChangedEventArgs : HandledEventArgs { ++ public DpiScale NewDpi { get; private set; } ++ public DpiScale OldDpi { get; private set; } ++ public Rect SuggestedRect { get; private set; } ++ } ++ public delegate void HwndDpiChangedEventHandler(object sender, HwndDpiChangedEventArgs e); { ++ public HwndDpiChangedEventHandler(object @object, IntPtr method); ++ public virtual IAsyncResult BeginInvoke(object sender, HwndDpiChangedEventArgs e, AsyncCallback callback, object @object); ++ public virtual void EndInvoke(IAsyncResult result); ++ public virtual void Invoke(object sender, HwndDpiChangedEventArgs e); ++ } + public class Window : ContentControl, IWindowService { ++ public static readonly RoutedEvent DpiChangedEvent; ++ protected override void OnDpiChanged(DpiScale oldDpi, DpiScale newDpi); ++ public event DpiChangedEventHandler DpiChanged; + } + } + namespace System.Windows.Controls { + public class FlowDocumentReader : Control, IAddChild, IJournalState { ++ protected override void OnDpiChanged(DpiScale oldDpiScaleInfo, DpiScale newDpiScaleInfo); + } + public class Image : FrameworkElement, IProvidePropertyFallback, IUriContext { ++ public static readonly RoutedEvent DpiChangedEvent; ++ protected override void OnDpiChanged(DpiScale oldDpi, DpiScale newDpi); ++ public event DpiChangedEventHandler DpiChanged; + } + public class RichTextBox : TextBoxBase, IAddChild { ++ protected override void OnDpiChanged(DpiScale oldDpiScaleInfo, DpiScale newDpiScaleInfo); + } + } + namespace System.Windows.Controls.Primitives { + public class DocumentPageView : FrameworkElement, IDisposable, IServiceProvider { ++ protected override void OnDpiChanged(DpiScale oldDpiScaleInfo, DpiScale newDpiScaleInfo); + } + public abstract class DocumentViewerBase : Control, IAddChild, IServiceProvider { ++ protected override void OnDpiChanged(DpiScale oldDpiScaleInfo, DpiScale newDpiScaleInfo); + } + } + namespace System.Windows.Diagnostics { ++ public static class ResourceDictionaryDiagnostics { ++ public static IEnumerable GenericResourceDictionaries { get; } ++ public static IEnumerable ThemedResourceDictionaries { get; } ++ public static event EventHandler GenericResourceDictionaryLoaded; ++ public static event EventHandler ThemedResourceDictionaryLoaded; ++ public static event EventHandler ThemedResourceDictionaryUnloaded; ++ } ++ public class ResourceDictionaryInfo { ++ public Assembly Assembly { get; private set; } ++ public ResourceDictionary ResourceDictionary { get; private set; } ++ public Assembly ResourceDictionaryAssembly { get; private set; } ++ public Uri SourceUri { get; private set; } ++ } ++ public class ResourceDictionaryLoadedEventArgs : EventArgs { ++ public ResourceDictionaryInfo ResourceDictionaryInfo { get; private set; } ++ } ++ public class ResourceDictionaryUnloadedEventArgs : EventArgs { ++ public ResourceDictionaryInfo ResourceDictionaryInfo { get; private set; } ++ } + } + namespace System.Windows.Documents { + public class FlowDocument : FrameworkContentElement, IAddChild, IDocumentPaginatorSource, IServiceProvider { ++ public void SetDpi(DpiScale dpiInfo); + } + } + namespace System.Windows.Interop { + public abstract class HwndHost : FrameworkElement, IDisposable, IKeyboardInputSink, IWin32Window { ++ public static readonly RoutedEvent DpiChangedEvent; ++ protected override void OnDpiChanged(DpiScale oldDpi, DpiScale newDpi); ++ public event DpiChangedEventHandler DpiChanged; + } + public class HwndSource : PresentationSource, IDisposable, IKeyboardInputSink, IWin32Window { ++ protected virtual void OnDpiChanged(HwndDpiChangedEventArgs e); ++ public event HwndDpiChangedEventHandler DpiChanged; + } + } + namespace System.Windows.Media { + public class FormattedText { ++ public FormattedText(string textToFormat, CultureInfo culture, FlowDirection flowDirection, Typeface typeface, double emSize, Brush foreground, double pixelsPerDip); ++ public FormattedText(string textToFormat, CultureInfo culture, FlowDirection flowDirection, Typeface typeface, double emSize, Brush foreground, NumberSubstitution numberSubstitution, double pixelsPerDip); ++ public FormattedText(string textToFormat, CultureInfo culture, FlowDirection flowDirection, Typeface typeface, double emSize, Brush foreground, NumberSubstitution numberSubstitution, TextFormattingMode textFormattingMode, double pixelsPerDip); ++ public double PixelsPerDip { get; set; } + } + public class GlyphRun : DUCE.IResource, ISupportInitialize { ++ public GlyphRun(GlyphTypeface glyphTypeface, int bidiLevel, bool isSideways, double renderingEmSize, float pixelsPerDip, IList glyphIndices, Point baselineOrigin, IList advanceWidths, IList glyphOffsets, IList characters, string deviceFontName, IList clusterMap, IList caretStops, XmlLanguage language); ++ public GlyphRun(float pixelsPerDip); ++ public float PixelsPerDip { get; set; } + } + public abstract class Visual : DependencyObject, DUCE.IResource { ++ protected virtual void OnDpiChanged(DpiScale oldDpi, DpiScale newDpi); + } + public static class VisualTreeHelper { ++ public static DpiScale GetDpi(Visual visual); ++ public static void SetRootDpi(Visual visual, DpiScale dpiInfo); + } + } + namespace System.Windows.Media.TextFormatting { + public abstract class TextLine : IDisposable, ITextMetrics { ++ protected TextLine(double pixelsPerDip); ++ public double PixelsPerDip { get; set; } + } + public abstract class TextRunProperties { ++ public double PixelsPerDip { get; set; } + } + public abstract class TextSource { ++ public double PixelsPerDip { get; set; } + } + } + namespace Microsoft.JScript { + public sealed class LenientMathObject : MathObject { +- public const double SQRT2 = 1.4142135623730952; ++ public const double SQRT2 = 1.4142135623730951; + } + public class MathObject : JSObject { +- public const double SQRT2 = 1.4142135623730952; ++ public const double SQRT2 = 1.4142135623730951; + } + } +-namespace Microsoft.VisualC { +- public sealed class DebugInfoInPDBAttribute : Attribute { +- public DebugInfoInPDBAttribute(); +- } +- public sealed class DecoratedNameAttribute : Attribute { +- public DecoratedNameAttribute(); +- public DecoratedNameAttribute(string decoratedName); +- } +- public sealed class IsConstModifier { +- public IsConstModifier(); +- } +- public sealed class IsCXXReferenceModifier { +- public IsCXXReferenceModifier(); +- } +- public sealed class IsLongModifier { +- public IsLongModifier(); +- } +- public sealed class IsSignedModifier { +- public IsSignedModifier(); +- } +- public sealed class IsVolatileModifier { +- public IsVolatileModifier(); +- } +- public sealed class MiscellaneousBitsAttribute : Attribute { +- public int m_dwAttrs; +- public MiscellaneousBitsAttribute(int miscellaneousBits); +- } +- public sealed class NeedsCopyConstructorModifier { +- public NeedsCopyConstructorModifier(); +- } +- public sealed class NoSignSpecifiedModifier { +- public NoSignSpecifiedModifier(); +- } +-} +-namespace Microsoft.VisualC.StlClr { +- public delegate TResult BinaryDelegate(TArg1 A_0, TArg2 A_1); { +- [MethodImpl(ForwardRef)]public BinaryDelegate(object A_0, IntPtr A_1); +- [MethodImpl(ForwardRef)]public IAsyncResult BeginInvoke(TArg1 __unnamed000, TArg2 __unnamed001, AsyncCallback callback, object obj); +- [MethodImpl(ForwardRef)]public TResult EndInvoke(IAsyncResult result); +- [MethodImpl(ForwardRef)]public TResult Invoke(TArg1 A_0, TArg2 A_1); +- } +- public class DequeEnumerator : DequeEnumeratorBase, IEnumerator { +- public DequeEnumerator(IDeque _Cont, int _First); +- public virtual new TValue Current { get; set; } +- public sealed override void Dispose(); +- protected virtual void Dispose(bool A_0); +- public override bool MoveNext(); +- public override void Reset(); +- } +- public class DequeEnumeratorBase : IEnumerator { +- public DequeEnumeratorBase(IDeque _Cont, int _First); +- public virtual object Current { get; set; } +- public virtual bool MoveNext(); +- public virtual void Reset(); +- } +- public class GenericPair { +- public TValue1 first; +- public TValue2 second; +- public GenericPair(); +- public GenericPair(GenericPair _Right); +- public GenericPair(ref KeyValuePair _Right); +- public GenericPair(TValue1 _Val1); +- public GenericPair(TValue1 _Val1, TValue2 _Val2); +- public override bool Equals(object _Right_arg); +- public GenericPair op_Assign(GenericPair _Right); +- public void swap(GenericPair _Right); +- } +- public class HashEnumerator : HashEnumeratorBase, IEnumerator { +- public HashEnumerator(INode _First); +- public virtual new TValue Current { get; set; } +- public sealed override void Dispose(); +- protected virtual void Dispose(bool A_0); +- public override bool MoveNext(); +- public override void Reset(); +- } +- public class HashEnumeratorBase : IEnumerator { +- public HashEnumeratorBase(INode _First); +- public virtual object Current { get; set; } +- public virtual bool MoveNext(); +- public virtual void Reset(); +- } +- public interface IDeque : ICloneable, ICollection, IEnumerable, IRandomAccessContainer { +- TValue back_item { get; set; } +- TValue front_item { get; set; } +- TValue this[int _Pos] { get; set; } +- void assign(IEnumerable _Right); +- void assign(IInputIterator _First, IInputIterator _Last); +- void assign(int _Count, TValue _Val); +- TValue at(int _Pos); +- TValue back(); +- void begin(ref ContainerRandomAccessIterator ); +- int begin_bias(); +- void clear(); +- bool empty(); +- void end(ref ContainerRandomAccessIterator ); +- int end_bias(); +- void erase(ref ContainerRandomAccessIterator , ContainerRandomAccessIterator _Where); +- void erase(ref ContainerRandomAccessIterator , ContainerRandomAccessIterator _First_iter, ContainerRandomAccessIterator _Last_iter); +- TValue front(); +- uint get_generation(); +- void insert(ContainerRandomAccessIterator _Where_iter, IEnumerable _Right); +- void insert(ContainerRandomAccessIterator _Where, int _Count, TValue _Val); +- void insert(ref ContainerRandomAccessIterator , ContainerRandomAccessIterator _Where, TValue _Val); +- void insert(ContainerRandomAccessIterator _Where, IInputIterator _First, IInputIterator _Last); +- void pop_back(); +- void pop_front(); +- void push_back(TValue _Val); +- void push_front(TValue _Val); +- void rbegin(ref ReverseRandomAccessIterator ); +- void rend(ref ReverseRandomAccessIterator ); +- void resize(int _Newsize); +- void resize(int _Newsize, TValue _Val); +- int size(); +- void swap(IDeque A_0); +- } +- public interface IHash : IBidirectionalContainer, ICloneable, ICollection, IEnumerable { +- void begin(ref ContainerBidirectionalIterator ); +- int bucket_count(); +- void clear(); +- int count(TKey _Keyval); +- bool empty(); +- void end(ref ContainerBidirectionalIterator ); +- void equal_range(ref GenericPair, ContainerBidirectionalIterator> , TKey _Keyval); +- void erase(ref ContainerBidirectionalIterator , ContainerBidirectionalIterator _Where); +- void erase(ref ContainerBidirectionalIterator , ContainerBidirectionalIterator _First_iter, ContainerBidirectionalIterator _Last_iter); +- int erase(TKey _Keyval); +- void find(ref ContainerBidirectionalIterator , TKey _Keyval); +- UnaryDelegate hash_delegate(); +- void insert(ref ContainerBidirectionalIterator , ContainerBidirectionalIterator _Where, TValue _Val); +- void insert(ref GenericPair, bool> , TValue _Val); +- void insert(IEnumerable _Right); +- void insert(IInputIterator _First, IInputIterator _Last); +- BinaryDelegate key_comp(); +- float load_factor(); +- void lower_bound(ref ContainerBidirectionalIterator , TKey _Keyval); +- float max_load_factor(); +- void max_load_factor(float _Newmax); +- void rbegin(ref ReverseBidirectionalIterator ); +- void rehash(int _Buckets); +- void rend(ref ReverseBidirectionalIterator ); +- int size(); +- void swap(IHash _Right); +- void upper_bound(ref ContainerBidirectionalIterator , TKey _Keyval); +- BinaryDelegate value_comp(); +- } +- public interface IList : IBidirectionalContainer, ICloneable, ICollection, IEnumerable { +- TValue back_item { get; set; } +- TValue front_item { get; set; } +- void assign(IEnumerable _Right); +- void assign(IInputIterator _First, IInputIterator _Last); +- void assign(int _Count, TValue _Val); +- TValue back(); +- void begin(ref ContainerBidirectionalIterator ); +- void clear(); +- bool empty(); +- void end(ref ContainerBidirectionalIterator ); +- void erase(ref ContainerBidirectionalIterator , ContainerBidirectionalIterator _Where); +- void erase(ref ContainerBidirectionalIterator , ContainerBidirectionalIterator _First_iter, ContainerBidirectionalIterator _Last_iter); +- TValue front(); +- void insert(ContainerBidirectionalIterator _Where_iter, IEnumerable _Right); +- void insert(ContainerBidirectionalIterator _Where, int _Count, TValue _Val); +- void insert(ref ContainerBidirectionalIterator , ContainerBidirectionalIterator _Where, TValue _Val); +- void insert(ContainerBidirectionalIterator _Where, IInputIterator _First, IInputIterator _Last); +- void merge(IList _Right, BinaryDelegate _Pred); +- void pop_back(); +- void pop_front(); +- void push_back(TValue _Val); +- void push_front(TValue _Val); +- void rbegin(ref ReverseBidirectionalIterator ); +- void remove(TValue _Val); +- void remove_if(UnaryDelegate _Pred); +- void rend(ref ReverseBidirectionalIterator ); +- void resize(int _Newsize); +- void resize(int _Newsize, TValue _Val); +- void reverse(); +- int size(); +- void sort(BinaryDelegate _Pred); +- void splice(ContainerBidirectionalIterator _Where, IList _Right); +- void splice(ContainerBidirectionalIterator _Where, IList _Right, ContainerBidirectionalIterator _First); +- void splice(ContainerBidirectionalIterator _Where, IList _Right, ContainerBidirectionalIterator _First, ContainerBidirectionalIterator _Last); +- void swap(IList _Right); +- void unique(BinaryDelegate _Pred); +- } +- public interface IPriorityQueue : ICloneable { +- TValue top_item { get; set; } +- void assign(IPriorityQueue _Right); +- bool empty(); +- TCont get_container(); +- void pop(); +- void push(TValue _Val); +- int size(); +- TValue top(); +- BinaryDelegate value_comp(); +- } +- public interface IQueue : ICloneable { +- void assign(IQueue _Right); +- TValue back(); +- bool empty(); +- TValue front(); +- TCont get_container(); +- void pop(); +- void push(TValue _Val); +- int size(); +- } +- public interface IStack : ICloneable { +- TValue top_item { get; set; } +- void assign(IStack _Right); +- bool empty(); +- TCont get_container(); +- void pop(); +- void push(TValue _Val); +- int size(); +- TValue top(); +- } +- public interface ITree : IBidirectionalContainer, ICloneable, ICollection, IEnumerable { +- void begin(ref ContainerBidirectionalIterator ); +- void clear(); +- int count(TKey _Keyval); +- bool empty(); +- void end(ref ContainerBidirectionalIterator ); +- void equal_range(ref GenericPair, ContainerBidirectionalIterator> , TKey _Keyval); +- void erase(ref ContainerBidirectionalIterator , ContainerBidirectionalIterator _Where); +- void erase(ref ContainerBidirectionalIterator , ContainerBidirectionalIterator _First_iter, ContainerBidirectionalIterator _Last_iter); +- int erase(TKey _Keyval); +- void find(ref ContainerBidirectionalIterator , TKey _Keyval); +- void insert(ref ContainerBidirectionalIterator , ContainerBidirectionalIterator _Where, TValue _Val); +- void insert(ref GenericPair, bool> , TValue _Val); +- void insert(IEnumerable _Right); +- void insert(IInputIterator _First, IInputIterator _Last); +- BinaryDelegate key_comp(); +- void lower_bound(ref ContainerBidirectionalIterator , TKey _Keyval); +- void rbegin(ref ReverseBidirectionalIterator ); +- void rend(ref ReverseBidirectionalIterator ); +- int size(); +- void swap(ITree _Right); +- void upper_bound(ref ContainerBidirectionalIterator , TKey _Keyval); +- BinaryDelegate value_comp(); +- } +- public interface IVector : ICloneable, ICollection, IEnumerable, IRandomAccessContainer { +- TValue back_item { get; set; } +- TValue front_item { get; set; } +- TValue this[int _Pos] { get; set; } +- void assign(IEnumerable _Right); +- void assign(IInputIterator _First, IInputIterator _Last); +- void assign(int _Count, TValue _Val); +- TValue at(int _Pos); +- TValue back(); +- void begin(ref ContainerRandomAccessIterator ); +- int capacity(); +- void clear(); +- bool empty(); +- void end(ref ContainerRandomAccessIterator ); +- void erase(ref ContainerRandomAccessIterator , ContainerRandomAccessIterator _Where); +- void erase(ref ContainerRandomAccessIterator , ContainerRandomAccessIterator _First_iter, ContainerRandomAccessIterator _Last_iter); +- TValue front(); +- uint get_generation(); +- void insert(ContainerRandomAccessIterator _Where_iter, IEnumerable _Right); +- void insert(ContainerRandomAccessIterator _Where, int _Count, TValue _Val); +- void insert(ref ContainerRandomAccessIterator , ContainerRandomAccessIterator _Where, TValue _Val); +- void insert(ContainerRandomAccessIterator _Where, IInputIterator _First, IInputIterator _Last); +- void pop_back(); +- void push_back(TValue _Val); +- void rbegin(ref ReverseRandomAccessIterator ); +- void rend(ref ReverseRandomAccessIterator ); +- void reserve(int _Capacity); +- void resize(int _Newsize); +- void resize(int _Newsize, TValue _Val); +- int size(); +- void swap(IVector A_0); +- } +- public class ListEnumerator : ListEnumeratorBase, IEnumerator { +- public ListEnumerator(INode _First); +- public virtual new TValue Current { get; set; } +- public sealed override void Dispose(); +- protected virtual void Dispose(bool A_0); +- public override bool MoveNext(); +- public override void Reset(); +- } +- public class ListEnumeratorBase : IEnumerator { +- public ListEnumeratorBase(INode _First); +- public virtual object Current { get; set; } +- public virtual bool MoveNext(); +- public virtual void Reset(); +- } +- public class TreeEnumerator : TreeEnumeratorBase, IEnumerator { +- public TreeEnumerator(INode _First); +- public virtual new TValue Current { get; set; } +- public sealed override void Dispose(); +- protected virtual void Dispose(bool A_0); +- public override bool MoveNext(); +- public override void Reset(); +- } +- public class TreeEnumeratorBase : IEnumerator { +- public TreeEnumeratorBase(INode _First); +- public virtual object Current { get; set; } +- public virtual bool MoveNext(); +- public virtual void Reset(); +- } +- public delegate TResult UnaryDelegate(TArg A_0); { +- [MethodImpl(ForwardRef)]public UnaryDelegate(object A_0, IntPtr A_1); +- [MethodImpl(ForwardRef)]public IAsyncResult BeginInvoke(TArg __unnamed000, AsyncCallback callback, object obj); +- [MethodImpl(ForwardRef)]public TResult EndInvoke(IAsyncResult result); +- [MethodImpl(ForwardRef)]public TResult Invoke(TArg A_0); +- } +- public class VectorEnumerator : VectorEnumeratorBase, IEnumerator { +- public VectorEnumerator(IVector _Cont, int _First); +- public virtual new TValue Current { get; set; } +- public sealed override void Dispose(); +- protected virtual void Dispose(bool A_0); +- public override bool MoveNext(); +- public override void Reset(); +- } +- public class VectorEnumeratorBase : IEnumerator { +- public VectorEnumeratorBase(IVector _Cont, int _First); +- public virtual object Current { get; set; } +- public virtual bool MoveNext(); +- public virtual void Reset(); +- } +-} +-namespace Microsoft.VisualC.StlClr.Generic { +- public class ConstContainerBidirectionalIterator : IBidirectionalIterator { +- public ConstContainerBidirectionalIterator(); +- public ConstContainerBidirectionalIterator(ConstContainerBidirectionalIterator _Right); +- public ConstContainerBidirectionalIterator(ContainerBidirectionalIterator _Right); +- public ConstContainerBidirectionalIterator(INode _Node); +- public virtual object Clone(); +- public virtual object container(); +- public bool equal_to(ConstContainerBidirectionalIterator _Right); +- public virtual bool equal_to(IInputIterator _Right); +- public virtual int get_bias(); +- public virtual TValue get_cref(); +- public virtual object get_node(); +- public virtual TValue get_ref(); +- public virtual void next(); +- public ConstContainerBidirectionalIterator op_Assign(ConstContainerBidirectionalIterator _Right); +- public ConstContainerBidirectionalIterator op_Assign(ContainerBidirectionalIterator _Right); +- public void operator --(ref ConstContainerBidirectionalIterator ); +- public void operator --(ref ConstContainerBidirectionalIterator , int A_0); +- public bool operator ==(ConstContainerBidirectionalIterator _Right); +- public bool operator ==(IInputIterator _Right); +- public implicit operator IBidirectionalIterator (); +- public void operator ++(ref ConstContainerBidirectionalIterator ); +- public void operator ++(ref ConstContainerBidirectionalIterator , int A_0); +- public bool operator !=(ConstContainerBidirectionalIterator _Right); +- public bool operator !=(IInputIterator _Right); +- public static TValue op_MemberSelection(ConstContainerBidirectionalIterator _Left); +- public static TValue op_PointerDereference(ConstContainerBidirectionalIterator _Left); +- public virtual void prev(); +- public virtual bool valid(); +- } +- public class ConstContainerRandomAccessIterator : IRandomAccessIterator { +- public ConstContainerRandomAccessIterator(); +- public ConstContainerRandomAccessIterator(ConstContainerRandomAccessIterator _Right); +- public ConstContainerRandomAccessIterator(ContainerRandomAccessIterator _Right); +- public ConstContainerRandomAccessIterator(IRandomAccessContainer _Cont, int _Offset); +- public TValue this[int _Pos] { get; } +- public virtual object Clone(); +- public virtual object container(); +- public int distance(ConstContainerRandomAccessIterator _Right); +- public virtual int distance(IRandomAccessIterator _Right); +- public bool equal_to(ConstContainerRandomAccessIterator _Right); +- public virtual bool equal_to(IInputIterator _Right); +- public virtual int get_bias(); +- public virtual TValue get_cref(); +- public virtual object get_node(); +- public virtual TValue get_ref(); +- public bool less_than(ConstContainerRandomAccessIterator _Right); +- public virtual bool less_than(IRandomAccessIterator _Right); +- public virtual int move(int _Offset); +- public virtual void next(); +- public void operator +(ref ConstContainerRandomAccessIterator , int _Right); +- public static void operator +(ref ConstContainerRandomAccessIterator , int _Left, ConstContainerRandomAccessIterator _Right); +- public ConstContainerRandomAccessIterator op_Assign(ConstContainerRandomAccessIterator _Right); +- public ConstContainerRandomAccessIterator op_Assign(ContainerRandomAccessIterator _Right); +- public void operator --(ref ConstContainerRandomAccessIterator ); +- public void operator --(ref ConstContainerRandomAccessIterator , int A_0); +- public bool operator ==(ConstContainerRandomAccessIterator _Right); +- public bool operator ==(IInputIterator _Right); +- public bool operator >(ConstContainerRandomAccessIterator _Right); +- public static bool operator >(IRandomAccessIterator _Left, ConstContainerRandomAccessIterator _Right); +- public bool operator >=(ConstContainerRandomAccessIterator _Right); +- public bool operator >=(IRandomAccessIterator _Right); +- public implicit operator IRandomAccessIterator (); +- public void operator ++(ref ConstContainerRandomAccessIterator ); +- public void operator ++(ref ConstContainerRandomAccessIterator , int A_0); +- public bool operator !=(ConstContainerRandomAccessIterator _Right); +- public bool operator !=(IInputIterator _Right); +- public bool operator <(ConstContainerRandomAccessIterator _Right); +- public bool operator <(IRandomAccessIterator _Right); +- public bool operator <=(ConstContainerRandomAccessIterator _Right); +- public static bool operator <=(IRandomAccessIterator _Left, ConstContainerRandomAccessIterator _Right); +- public static TValue op_MemberSelection(ConstContainerRandomAccessIterator _Left); +- public static TValue op_PointerDereference(ConstContainerRandomAccessIterator _Left); +- public void operator -(ref ConstContainerRandomAccessIterator , int _Right); +- public int operator -(IRandomAccessIterator _Right); +- public virtual void prev(); +- public virtual bool valid(); +- } +- public class ConstReverseBidirectionalIterator : IBidirectionalIterator { +- public ConstReverseBidirectionalIterator(); +- public ConstReverseBidirectionalIterator(ConstReverseBidirectionalIterator _Right); +- public ConstReverseBidirectionalIterator(IBidirectionalIterator _Iter); +- public ConstReverseBidirectionalIterator(ReverseBidirectionalIterator _Iter); +- public IBidirectionalIterator base(); +- public virtual object Clone(); +- public virtual object container(); +- public bool equal_to(ConstReverseBidirectionalIterator _Right); +- public virtual bool equal_to(IInputIterator _Right); +- public virtual int get_bias(); +- public virtual TValue get_cref(); +- public virtual object get_node(); +- public virtual TValue get_ref(); +- public virtual void next(); +- public ConstReverseBidirectionalIterator op_Assign(ConstReverseBidirectionalIterator _Right); +- public ConstReverseBidirectionalIterator op_Assign(ReverseBidirectionalIterator _Right); +- public void operator --(ref ConstReverseBidirectionalIterator ); +- public void operator --(ref ConstReverseBidirectionalIterator , int A_0); +- public bool operator ==(ConstReverseBidirectionalIterator _Right); +- public bool operator ==(IInputIterator _Right); +- public implicit operator IBidirectionalIterator (); +- public void operator ++(ref ConstReverseBidirectionalIterator ); +- public void operator ++(ref ConstReverseBidirectionalIterator , int A_0); +- public bool operator !=(ConstReverseBidirectionalIterator _Right); +- public bool operator !=(IInputIterator _Right); +- public static TValue op_MemberSelection(ConstReverseBidirectionalIterator _Left); +- public static TValue op_PointerDereference(ConstReverseBidirectionalIterator _Left); +- public virtual void prev(); +- public virtual bool valid(); +- } +- public class ConstReverseRandomAccessIterator : IRandomAccessIterator { +- public ConstReverseRandomAccessIterator(); +- public ConstReverseRandomAccessIterator(ConstReverseRandomAccessIterator _Right); +- public ConstReverseRandomAccessIterator(IRandomAccessIterator _Iter); +- public ConstReverseRandomAccessIterator(ReverseRandomAccessIterator _Iter); +- public TValue this[int _Pos] { get; } +- public IRandomAccessIterator base(); +- public virtual object Clone(); +- public virtual object container(); +- public int distance(ConstReverseRandomAccessIterator _Right); +- public virtual int distance(IRandomAccessIterator _Right); +- public bool equal_to(ConstReverseRandomAccessIterator _Right); +- public virtual bool equal_to(IInputIterator _Right); +- public virtual int get_bias(); +- public virtual TValue get_cref(); +- public virtual object get_node(); +- public virtual TValue get_ref(); +- public bool less_than(ConstReverseRandomAccessIterator _Right); +- public virtual bool less_than(IRandomAccessIterator _Right); +- public virtual int move(int _Offset); +- public virtual void next(); +- public void operator +(ref ConstReverseRandomAccessIterator , int _Right); +- public static void operator +(ref ConstReverseRandomAccessIterator , int _Left, ConstReverseRandomAccessIterator _Right); +- public ConstReverseRandomAccessIterator op_Assign(ConstReverseRandomAccessIterator _Right); +- public ConstReverseRandomAccessIterator op_Assign(ReverseRandomAccessIterator _Right); +- public void operator --(ref ConstReverseRandomAccessIterator ); +- public void operator --(ref ConstReverseRandomAccessIterator , int A_0); +- public bool operator ==(ConstReverseRandomAccessIterator _Right); +- public bool operator >(ConstReverseRandomAccessIterator _Right); +- public bool operator >=(ConstReverseRandomAccessIterator _Right); +- public implicit operator IRandomAccessIterator (); +- public void operator ++(ref ConstReverseRandomAccessIterator ); +- public void operator ++(ref ConstReverseRandomAccessIterator , int A_0); +- public bool operator !=(ConstReverseRandomAccessIterator _Right); +- public bool operator <(ConstReverseRandomAccessIterator _Right); +- public bool operator <=(ConstReverseRandomAccessIterator _Right); +- public static TValue op_MemberSelection(ConstReverseRandomAccessIterator _Left); +- public static TValue op_PointerDereference(ConstReverseRandomAccessIterator _Left); +- public void operator -(ref ConstReverseRandomAccessIterator , int _Right); +- public int operator -(IRandomAccessIterator _Right); +- public virtual void prev(); +- public virtual bool valid(); +- } +- public class ContainerBidirectionalIterator : IBidirectionalIterator { +- public ContainerBidirectionalIterator(); +- public ContainerBidirectionalIterator(ContainerBidirectionalIterator _Right); +- public ContainerBidirectionalIterator(INode _Node); +- public virtual object Clone(); +- public virtual object container(); +- public bool equal_to(ContainerBidirectionalIterator _Right); +- public virtual bool equal_to(IInputIterator _Right); +- public virtual int get_bias(); +- public virtual TValue get_cref(); +- public virtual object get_node(); +- public virtual TValue get_ref(); +- public virtual void next(); +- public ContainerBidirectionalIterator op_Assign(ContainerBidirectionalIterator _Right); +- public void operator --(ref ContainerBidirectionalIterator ); +- public void operator --(ref ContainerBidirectionalIterator , int A_0); +- public bool operator ==(ContainerBidirectionalIterator _Right); +- public bool operator ==(IInputIterator _Right); +- public implicit operator IBidirectionalIterator (); +- public void operator ++(ref ContainerBidirectionalIterator ); +- public void operator ++(ref ContainerBidirectionalIterator , int A_0); +- public bool operator !=(ContainerBidirectionalIterator _Right); +- public bool operator !=(IInputIterator _Right); +- public static TValue op_MemberSelection(ContainerBidirectionalIterator _Left); +- public static TValue op_PointerDereference(ContainerBidirectionalIterator _Left); +- public virtual void prev(); +- public virtual bool valid(); +- } +- public class ContainerRandomAccessIterator : IRandomAccessIterator { +- public ContainerRandomAccessIterator(); +- public ContainerRandomAccessIterator(ContainerRandomAccessIterator _Right); +- public ContainerRandomAccessIterator(IRandomAccessContainer _Cont, int _Offset); +- public TValue this[int _Pos] { get; set; } +- public virtual object Clone(); +- public virtual object container(); +- public int distance(ContainerRandomAccessIterator _Right); +- public virtual int distance(IRandomAccessIterator _Right); +- public bool equal_to(ContainerRandomAccessIterator _Right); +- public virtual bool equal_to(IInputIterator _Right); +- public virtual int get_bias(); +- public virtual TValue get_cref(); +- public virtual object get_node(); +- public virtual TValue get_ref(); +- public bool less_than(ContainerRandomAccessIterator _Right); +- public virtual bool less_than(IRandomAccessIterator _Right); +- public virtual int move(int _Offset); +- public virtual void next(); +- public void operator +(ref ContainerRandomAccessIterator , int _Right); +- public static void operator +(ref ContainerRandomAccessIterator , int _Left, ContainerRandomAccessIterator _Right); +- public ContainerRandomAccessIterator op_Assign(ContainerRandomAccessIterator _Right); +- public void operator --(ref ContainerRandomAccessIterator ); +- public void operator --(ref ContainerRandomAccessIterator , int A_0); +- public bool operator ==(ContainerRandomAccessIterator _Right); +- public bool operator ==(IInputIterator _Right); +- public bool operator >(ContainerRandomAccessIterator _Right); +- public static bool operator >(IRandomAccessIterator _Left, ContainerRandomAccessIterator _Right); +- public bool operator >=(ContainerRandomAccessIterator _Right); +- public bool operator >=(IRandomAccessIterator _Right); +- public implicit operator IRandomAccessIterator (); +- public void operator ++(ref ContainerRandomAccessIterator ); +- public void operator ++(ref ContainerRandomAccessIterator , int A_0); +- public bool operator !=(ContainerRandomAccessIterator _Right); +- public bool operator !=(IInputIterator _Right); +- public bool operator <(ContainerRandomAccessIterator _Right); +- public bool operator <(IRandomAccessIterator _Right); +- public bool operator <=(ContainerRandomAccessIterator _Right); +- public static bool operator <=(IRandomAccessIterator _Left, ContainerRandomAccessIterator _Right); +- public static TValue op_MemberSelection(ContainerRandomAccessIterator _Left); +- public static TValue op_PointerDereference(ContainerRandomAccessIterator _Left); +- public void operator -(ref ContainerRandomAccessIterator , int _Right); +- public int operator -(IRandomAccessIterator _Right); +- public virtual void prev(); +- public virtual bool valid(); +- } +- public interface IBaseIterator : ICloneable { +- object container(); +- int get_bias(); +- object get_node(); +- void next(); +- bool valid(); +- } +- public interface IBidirectionalContainer { +- uint get_generation(); +- } +- public interface IBidirectionalIterator : IForwardIterator { +- void prev(); +- } +- public interface IForwardIterator : IInputIterator, IOutputIterator +- public interface IInputIterator : IBaseIterator { +- bool equal_to(IInputIterator A_0); +- TValue get_cref(); +- } +- public interface INode { +- TValue _Value { get; set; } +- IBidirectionalContainer container(); +- bool is_head(); +- INode next_node(); +- INode prev_node(); +- } +- public interface IOutputIterator : IBaseIterator { +- TValue get_ref(); +- } +- public interface IRandomAccessContainer { +- TValue at_bias(int A_0); +- bool valid_bias(int A_0); +- } +- public interface IRandomAccessIterator : IBidirectionalIterator { +- int distance(IRandomAccessIterator _Right); +- bool less_than(IRandomAccessIterator _Right); +- int move(int _Offset); +- } +- public class ReverseBidirectionalIterator : IBidirectionalIterator { +- public ReverseBidirectionalIterator(); +- public ReverseBidirectionalIterator(IBidirectionalIterator _Iter); +- public ReverseBidirectionalIterator(ReverseBidirectionalIterator _Right); +- public IBidirectionalIterator base(); +- public virtual object Clone(); +- public virtual object container(); +- public virtual bool equal_to(IInputIterator _Right); +- public bool equal_to(ReverseBidirectionalIterator _Right); +- public virtual int get_bias(); +- public virtual TValue get_cref(); +- public virtual object get_node(); +- public virtual TValue get_ref(); +- public virtual void next(); +- public ReverseBidirectionalIterator op_Assign(ReverseBidirectionalIterator _Right); +- public void operator --(ref ReverseBidirectionalIterator ); +- public void operator --(ref ReverseBidirectionalIterator , int A_0); +- public bool operator ==(IInputIterator _Right); +- public bool operator ==(ReverseBidirectionalIterator _Right); +- public implicit operator IBidirectionalIterator (); +- public void operator ++(ref ReverseBidirectionalIterator ); +- public void operator ++(ref ReverseBidirectionalIterator , int A_0); +- public bool operator !=(IInputIterator _Right); +- public bool operator !=(ReverseBidirectionalIterator _Right); +- public static TValue op_MemberSelection(ReverseBidirectionalIterator _Left); +- public static TValue op_PointerDereference(ReverseBidirectionalIterator _Left); +- public virtual void prev(); +- public virtual bool valid(); +- } +- public class ReverseRandomAccessIterator : IRandomAccessIterator { +- public ReverseRandomAccessIterator(); +- public ReverseRandomAccessIterator(IRandomAccessIterator _Iter); +- public ReverseRandomAccessIterator(ReverseRandomAccessIterator _Right); +- public TValue this[int _Pos] { get; set; } +- public IRandomAccessIterator base(); +- public virtual object Clone(); +- public virtual object container(); +- public virtual int distance(IRandomAccessIterator _Right); +- public int distance(ReverseRandomAccessIterator _Right); +- public virtual bool equal_to(IInputIterator _Right); +- public bool equal_to(ReverseRandomAccessIterator _Right); +- public virtual int get_bias(); +- public virtual TValue get_cref(); +- public virtual object get_node(); +- public virtual TValue get_ref(); +- public virtual bool less_than(IRandomAccessIterator _Right); +- public bool less_than(ReverseRandomAccessIterator _Right); +- public virtual int move(int _Offset); +- public virtual void next(); +- public void operator +(ref ReverseRandomAccessIterator , int _Right); +- public static void operator +(ref ReverseRandomAccessIterator , int _Left, ReverseRandomAccessIterator _Right); +- public ReverseRandomAccessIterator op_Assign(ReverseRandomAccessIterator _Right); +- public void operator --(ref ReverseRandomAccessIterator ); +- public void operator --(ref ReverseRandomAccessIterator , int A_0); +- public bool operator ==(ReverseRandomAccessIterator _Right); +- public bool operator >(ReverseRandomAccessIterator _Right); +- public bool operator >=(ReverseRandomAccessIterator _Right); +- public implicit operator IRandomAccessIterator (); +- public void operator ++(ref ReverseRandomAccessIterator ); +- public void operator ++(ref ReverseRandomAccessIterator , int A_0); +- public bool operator !=(ReverseRandomAccessIterator _Right); +- public bool operator <(ReverseRandomAccessIterator _Right); +- public bool operator <=(ReverseRandomAccessIterator _Right); +- public static TValue op_MemberSelection(ReverseRandomAccessIterator _Left); +- public static TValue op_PointerDereference(ReverseRandomAccessIterator _Left); +- public int operator -(IRandomAccessIterator _Right); +- public void operator -(ref ReverseRandomAccessIterator , int _Right); +- public virtual void prev(); +- public virtual bool valid(); +- } +-} +``` diff --git a/releases/net462/dotnet462preview-changes.md b/releases/net462/dotnet462preview-changes.md new file mode 100644 index 000000000..2857e214e --- /dev/null +++ b/releases/net462/dotnet462preview-changes.md @@ -0,0 +1,115 @@ +.NET Framework 4.6.2 Preview List of Changes +============================================ + +.NET Framework 4.6.2 Preview contains dozens of bug fixes and improvements. +This list details those changes, grouped by feature area. +Each change includes our TFS bug numbers at the end of the line. Please include those numbers in your communication if you wish to contact us to obtain more information. + +CLR +--- + +* Added Custom attribute to opt out of NGen with method granularity [186172] +* Support .NET in packaged desktop apps. [191774] +* Fixed incorrect result generation while comparing 16-bit signed values. [187325] +* Fixed a JIT optimization bug [174983] +* Fixed crashes due to JIT32 inlining�s handling of struct [171773] +* Fixed issue with incomplete PDB information when invoking ildasm. [150267] +* Fixed a performance regression in debug start [164437] +* Fixed an issue in CLR type loader that causes type load failures in rare conditions. [185570] +* Fixed usability issues with error message received when System.BitConverter.ToString(Byte[] value, Int32 startIndex, Int32 length) is called [100012] +* Performance fixes in GC [162854] +* Fixed stress issues in GC [161104] +* Fixed crashes in EventListener.DisposeOnShutdown [156238] +* Implement EventCounter support [150674] +* Fixed System.Diagnostics.Tracing.EventSource does not serialize byte[] correctly [153224] +* Fixed RelatedActivityID is not set properly when using EventSource's ActivityTracker [154432] +* Fixed [EventSource] .WriteEvent handles null strings inconsistently depending on the overload getting called [95999] +* Added the event name to ThrowEventSourceException message [112066] +* Fixed typo in EventSource resource string [118799] +* Fixed unexpected exceptions thrown during OnEventSourceCreated [121699] +* In .NET 4.6 if two event names in EventSource differ by a suffix of Start or Stop, then the EventSource will fail to construct and never emit any logging. This is now fixed. [121820] +* Improve Diagnostic when using RelatedActivityID in EventSource [128437] +* User-defined subclasses named "EventSource" can be allowed by checking that the EventSource's type is not equal to typeof(EventSource) which is the type of the built in EventSource. [125529] +* When a byte array is written to an Event a spurious warning is generated by EventSource, claiming that the event has a mismatch in parameter count when it does not. [166228] + +BCL +--- +* Fix RunContinuationsAscynchronously flag for all continuation types. [146618] +* Fixed NullReference exception if "sha1RSA" is passed to RSACryptoServiceProvider.SignHash(). [147247] +* Fixed �Unhandled Exception: System.Security.SecurityException: Unable to retrieve security descriptor for this frame.� in System.Security.Principal.WindowsIdentity.RunImpersonated() [149685] +* Removed the System.Numerics.Vectors fa�ade from the targeting pack. If this fa�ade is needed, add a reference to the System.Numerics.Vectors NuGet package. [120400] +* SignedXml now supports SHA256/384/512 signing. [125387] +* Added a new type called DSACng. [180229] +* Fixed Warnings generated during build that before required a global disable. [185846] +* Fixed potential threading issues with inconsistent values returned from the calls to AppContext. [181890] +* Framework support Unicode 8.0 for character categories. [176613] +* Improved interoperability with PFX files created with OpenSSL in GetECDsaPrivateKey. [171017] +* The ECDiffieHellman base class has been updated to provide better exposure for the hash, HMAC, and TLS-PRF key derivation methods, and the parameters they accept. [171018] +* Fixed System.Security.Cryptography.RSAPKCS1SignatureFormatter.ComputeSignature() and VerifySignature() failures with a NotSupportedException when an RSACng key is specified. [162556] +* Fixed message decryption issues in System.Security.Cryptography.Pkcs.EnvelopedCMS if the recipient certificate's private key is stored in a CNG key container. [163800] +* The factory method now returns SHA256Cng in FIPS-only mode. [163804] +* Fixed behavioral inconsistencies between .NET Core and .NET Framework 4.6 implementations of RSACng [164390] +* Update .NET to support packaged desktop applications. [191801] +* Fixed app crashes related to CompatSortNLSVersion handler initializations [191561] +* System.Security.Cryptography RSAOAEPKeyExchangeDeformatter, RSAOAEPKeyExchangeFormatter, RSAPKCS1KeyExchangeDeformatters and RSAPKCS1KeyExchangeFormatter no longer fail when used with a CNG key. [190217] +* Added support for AesCng and TripleDESCng. [187062] +* The DSA base class has been updated in the same manner as RSA in 4.6, and ECDsa in 4.6.1. Accessing the public/private key of a DSA certificate can be done in a type-safe manner via cert.GetDSAPublicKey()/cert.GetDSAPrivateKey(), and signing and verification operations can be done without further casting. [167883] + +ASP.NET +------- +* Fixed deadlock in AspNetSynchronizationContext [152944] +* Add support for sorting Model binding items by nested property names [173528] +* Fix Unhandled non-serializable exceptions in ASP.NET [160528] +* Fixed Non-interlocked update/read of 64-bit variable leads to wrong behavior. [92099] +* Since .NET 4.5 ASP.NET cache reports invalid size of the cache. This has been fixed. [154451] +* Fixed client side project compilation failure [156379] + +WPF +--- +* Nested Markup Expressions scenarios, where the parent markup extension is locally defined, have been fixed now. Developers can use markup extension within their custom defined markup extensions without causing a compiler error. [117193] +* Fixed potential periodic hangs or poor performance of a WPF application running on a device that has touch support. This is mostly seen when running over a touch-enabled remote desktop or other touch enabled remote access solutions. [146399] +* Enable automatic invocation and dismissal of the touch keyboard in WPF applications without disabling WPF stylus/touch support on Windows 10 [178044] +* Fixed missing glyph symbol display issues for those WPF applications that render text in the following ranges using a font that does not contain these ranges. [165725] + Ranges: + Unicode = "0000-052F, 0590-06FF, 0750-077F, 08A0-08FF, 1D00-1FFF, 2C60-2C7F, A720-A7FF, FB00-FB0F, FB1D-FBFF" + Unicode = "FC00-FDCF, FDF0-FDFF, FE20-FE2F, FE70-FEFE" +* Developers of WPF applications on .NET 4.6.1 may notice that the number of promotions from a touch move event to a mouse move event do not correspond 1:1. This change ensures that there is a corresponding mouse move promotion for every applicable touch move. [169470] +* Enable WPF Applications to look and feel great in multi DPI environments. This means crisper text, sharper images and general polish. [191569] +* WPF applications that allocate large numbers of bitmaps over time can possibly see performance issues such as frequent pauses and large numbers of garbage collections. This fix changes the bitmap garbage collection strategy to help alleviate these issues. [121913] +* Enables enumeration of generic and themed ResourceDictionary instances, and provides a notification infrastructure for listening to loading and unloading of ResourceDictionary instances. [159740] +* Starting .NET 4.6, CurrentCulture or CurrentUICulture changes made by event handlers (or any other method that WPF orchestrates the dispatch for) are lost when the method completes. This can result in various unintended side-effects ranging from the selection of incorrect UI language by application code, to potential loss of state information. This fix addresses the bug described above. [157919] +* Fixed compilation error in situations when a locally defined custom type in a XAML resource dictionary is immediately followed by something like x:Array. [131561] + +WCF +--- +* Added a new option for client to find best matching WCF service endpoint using NetNamePipeBinding.[157498] +* CryptoConfig.CreateName(string algorithm) is now updated to understand SHA256 algorithms. [195341] +* Fixed a reliability issue in DataContractCriticalHelper which throws as a SerializationException when reading objects concurrently. [146940] + +Workflow +-------- +* Workflow designer now supports �prepared for update� dynamic update XAML [98185] + +Windows Forms +------------- +* Fixed a crash in Windows Forms designer related to switching windows themes [172691] +* "Smart Tag" dialog processes "enter" key press properly and is same as in Visual Studio 2013 [174771] +* Enabled shortcut keys in the preferences dialog in mageui.exe tool [184655] +* A Windows Forms application that is using print preview dialog when printing to a network printer with certain non-default preferences set, can now opt in into a performance optimization that would considerably speed up the preview generation. [159091] +* Fixed a hang in Windows Forms app when Control.Invoke is called but the caller thread terminates before the invoke finishes [149183] +* Added an Application compatibility switch that fixes implementation of MemberDescriptor.Equals function so that it compares the corresponding fields, instead of comparing description field to category field. [149471] +* Fixed potential race condition in System.Windows.Forms.Application.ThreadContext [146065] +* Fixed a control in MageUI tool that is not accessible by a keyboard shortcut because the same shortcut letter is used for two controls [146678] +* Fixed a memory leak in Control.DrawToBitmap method. [188396] +* Fixed control text truncations issue in �Items Collection Editor� dialog in Visual Studio. [187716] +* Fixed a crash in Windows Forms Designer in Visual Studio related to adjusting TableLayoutPanel control. [190415] +* Fixed a crash in Windows Forms Designer in Visual Studio [190416] + +ClickOnce +--------- +* Added support for TLS1.1/1.2 in ClickOnce runtime. [193676] +* Fixed string truncations issue on ClickOnce security dialog. [176656] + + + + From b7c98f17d3dc66853a58cacf35a517341ac6a06b Mon Sep 17 00:00:00 2001 From: Preeti Krishna Date: Wed, 30 Mar 2016 12:26:41 -0700 Subject: [PATCH 266/872] Update dotnet462-preview-api-changes.md --- .../net462/dotnet462-preview-api-changes.md | 789 ------------------ 1 file changed, 789 deletions(-) diff --git a/releases/net462/dotnet462-preview-api-changes.md b/releases/net462/dotnet462-preview-api-changes.md index 6d0444183..cec37982c 100644 --- a/releases/net462/dotnet462-preview-api-changes.md +++ b/releases/net462/dotnet462-preview-api-changes.md @@ -1,18 +1,4 @@ ```diff - namespace System.Data.SqlClient { -+ public enum PoolBlockingPeriod { -+ AlwaysBlock = 1, -+ Auto = 0, -+ NeverBlock = 2, -+ } - public sealed class SqlConnection : DbConnection, ICloneable { -+ public static TimeSpan ColumnEncryptionKeyCacheTtl { get; set; } -+ public static bool ColumnEncryptionQueryMetadataCacheEnabled { get; set; } - } - public sealed class SqlConnectionStringBuilder : DbConnectionStringBuilder { -+ public PoolBlockingPeriod PoolBlockingPeriod { get; set; } - } - } namespace System.Diagnostics.Tracing { - public abstract class EventListener : IDisposable { + public class EventListener : IDisposable { @@ -74,8 +60,6 @@ + public virtual byte[] DeriveKeyFromHash(ECDiffieHellmanPublicKey otherPartyPublicKey, HashAlgorithmName hashAlgorithm, byte[] secretPrepend, byte[] secretAppend); + public byte[] DeriveKeyFromHmac(ECDiffieHellmanPublicKey otherPartyPublicKey, HashAlgorithmName hashAlgorithm, byte[] hmacKey); + public virtual byte[] DeriveKeyFromHmac(ECDiffieHellmanPublicKey otherPartyPublicKey, HashAlgorithmName hashAlgorithm, byte[] hmacKey, byte[] secretPrepend, byte[] secretAppend); -- public abstract byte[] DeriveKeyMaterial(ECDiffieHellmanPublicKey otherPartyPublicKey); -+ public virtual byte[] DeriveKeyMaterial(ECDiffieHellmanPublicKey otherPartyPublicKey); + public virtual byte[] DeriveKeyTls(ECDiffieHellmanPublicKey otherPartyPublicKey, byte[] prfLabel, byte[] prfSeed); } public sealed class ECDiffieHellmanCng : ECDiffieHellman { @@ -118,112 +102,6 @@ + public const string XmlDsigSHA512Url = "http://www.w3.org/2001/04/xmlenc#sha512"; } } - namespace System.Security.Principal { - public class WindowsIdentity : ClaimsIdentity, IDeserializationCallback, IDisposable, ISerializable { -- public static T RunImpersonated(SafeAccessTokenHandle safeAccessTokenHandle, Func func); -+ [MethodImpl(NoInlining)]public static T RunImpersonated(SafeAccessTokenHandle safeAccessTokenHandle, Func func); -- public static void RunImpersonated(SafeAccessTokenHandle safeAccessTokenHandle, Action action); -+ [MethodImpl(NoInlining)]public static void RunImpersonated(SafeAccessTokenHandle safeAccessTokenHandle, Action action); - } - } - namespace System.Web { - public sealed class HttpCachePolicy { -+ public DateTime UtcTimestampCreated { get; set; } -+ public HttpCacheability GetCacheability(); -+ public string GetCacheExtensions(); -+ public string GetETag(); -+ public bool GetETagFromFileDependencies(); -+ public DateTime GetExpires(); -+ public bool GetIgnoreRangeRequests(); -+ public bool GetLastModifiedFromFileDependencies(); -+ public TimeSpan GetMaxAge(); -+ public bool GetNoServerCaching(); -+ public bool GetNoStore(); -+ public bool GetNoTransforms(); -+ public int GetOmitVaryStar(); -+ public TimeSpan GetProxyMaxAge(); -+ public HttpCacheRevalidation GetRevalidation(); -+ public DateTime GetUtcLastModified(); -+ public string GetVaryByCustom(); -+ public bool HasSlidingExpiration(); -+ public bool IsModified(); -+ public bool IsValidUntilExpires(); - } - public sealed class HttpCacheVaryByContentEncodings { -+ public string[] GetContentEncodings(); -+ public void SetContentEncodings(string[] contentEncodings); - } - public sealed class HttpCacheVaryByHeaders { -+ public string[] GetHeaders(); -+ public void SetHeaders(string[] headers); - } - public sealed class HttpCacheVaryByParams { -+ public string[] GetParams(); -+ public void SetParams(string[] parameters); - } - } - namespace System.Web.Caching { - public sealed class AggregateCacheDependency : CacheDependency, ICacheDependencyChanged { -+ public override string[] GetFileDependencies(); - } - public class CacheDependency : IDisposable { -+ public virtual string[] GetFileDependencies(); - } -+ public abstract class OutputCacheProviderAsync : OutputCacheProvider { -+ protected OutputCacheProviderAsync(); -+ public abstract Task AddAsync(string key, object entry, DateTime utcExpiry); -+ public abstract Task GetAsync(string key); -+ public abstract Task RemoveAsync(string key); -+ public abstract Task SetAsync(string key, object entry, DateTime utcExpiry); -+ } -+ public static class OutputCacheUtility { -+ public static CacheDependency CreateCacheDependency(HttpResponse response); -+ public static ArrayList GetContentBuffers(HttpResponse response); -+ public static IEnumerable> GetValidationCallbacks(HttpResponse response); -+ public static void SetContentBuffers(HttpResponse response, ArrayList buffers); -+ public static string SetupKernelCaching(string originalCacheUrl, HttpResponse response); -+ } - } -+namespace System.Web.Globalization { -+ public interface IStringLocalizerProvider { -+ string GetLocalizedString(CultureInfo culture, string name, params object[] arguments); -+ } -+ public sealed class ResourceFileStringLocalizerProvider : IStringLocalizerProvider { -+ public const string ResourceFileName = "DataAnnotation.Localization"; -+ public ResourceFileStringLocalizerProvider(); -+ public string GetLocalizedString(CultureInfo culture, string name, params object[] arguments); -+ } -+ public static class StringLocalizerProviders { -+ public static IStringLocalizerProvider DataAnnotationStringLocalizerProvider { get; set; } -+ } -+} - namespace System.Web.ModelBinding { - public class DataAnnotationsModelValidator : ModelValidator { -+ protected virtual string GetLocalizedErrorMessage(string errorMessage); -+ protected string GetLocalizedString(string name, params object[] arguments); - } -+ public sealed class MaxLengthAttributeAdapter : DataAnnotationsModelValidator { -+ public MaxLengthAttributeAdapter(ModelMetadata metadata, ModelBindingExecutionContext context, MaxLengthAttribute attribute); -+ } -+ public sealed class MinLengthAttributeAdapter : DataAnnotationsModelValidator { -+ public MinLengthAttributeAdapter(ModelMetadata metadata, ModelBindingExecutionContext context, MinLengthAttribute attribute); -+ } - } - namespace System.Web.SessionState { -+ public interface ISessionStateModule : IHttpModule { -+ void ReleaseSessionState(HttpContext context); -+ Task ReleaseSessionStateAsync(HttpContext context); -+ } -- public sealed class SessionStateModule : IHttpModule { -+ public sealed class SessionStateModule : IHttpModule, ISessionStateModule { -+ public void ReleaseSessionState(HttpContext context); -+ public Task ReleaseSessionStateAsync(HttpContext context); - } - public static class SessionStateUtility { -+ public static bool IsSessionStateReadOnly(HttpContext context); -+ public static bool IsSessionStateRequired(HttpContext context); - } - } namespace System.Windows { + public sealed class DpiChangedEventArgs : RoutedEventArgs { + public DpiScale NewDpi { get; private set; } @@ -244,9 +122,6 @@ + public double PixelsPerInchX { get; } + public double PixelsPerInchY { get; } + } - public static class FrameworkCompatibilityPreferences { -+ public static bool ShouldThrowOnCopyOrCutFailure { get; set; } - } + public sealed class HwndDpiChangedEventArgs : HandledEventArgs { + public DpiScale NewDpi { get; private set; } + public DpiScale OldDpi { get; private set; } @@ -354,668 +229,4 @@ + public double PixelsPerDip { get; set; } } } - namespace Microsoft.JScript { - public sealed class LenientMathObject : MathObject { -- public const double SQRT2 = 1.4142135623730952; -+ public const double SQRT2 = 1.4142135623730951; - } - public class MathObject : JSObject { -- public const double SQRT2 = 1.4142135623730952; -+ public const double SQRT2 = 1.4142135623730951; - } - } --namespace Microsoft.VisualC { -- public sealed class DebugInfoInPDBAttribute : Attribute { -- public DebugInfoInPDBAttribute(); -- } -- public sealed class DecoratedNameAttribute : Attribute { -- public DecoratedNameAttribute(); -- public DecoratedNameAttribute(string decoratedName); -- } -- public sealed class IsConstModifier { -- public IsConstModifier(); -- } -- public sealed class IsCXXReferenceModifier { -- public IsCXXReferenceModifier(); -- } -- public sealed class IsLongModifier { -- public IsLongModifier(); -- } -- public sealed class IsSignedModifier { -- public IsSignedModifier(); -- } -- public sealed class IsVolatileModifier { -- public IsVolatileModifier(); -- } -- public sealed class MiscellaneousBitsAttribute : Attribute { -- public int m_dwAttrs; -- public MiscellaneousBitsAttribute(int miscellaneousBits); -- } -- public sealed class NeedsCopyConstructorModifier { -- public NeedsCopyConstructorModifier(); -- } -- public sealed class NoSignSpecifiedModifier { -- public NoSignSpecifiedModifier(); -- } --} --namespace Microsoft.VisualC.StlClr { -- public delegate TResult BinaryDelegate(TArg1 A_0, TArg2 A_1); { -- [MethodImpl(ForwardRef)]public BinaryDelegate(object A_0, IntPtr A_1); -- [MethodImpl(ForwardRef)]public IAsyncResult BeginInvoke(TArg1 __unnamed000, TArg2 __unnamed001, AsyncCallback callback, object obj); -- [MethodImpl(ForwardRef)]public TResult EndInvoke(IAsyncResult result); -- [MethodImpl(ForwardRef)]public TResult Invoke(TArg1 A_0, TArg2 A_1); -- } -- public class DequeEnumerator : DequeEnumeratorBase, IEnumerator { -- public DequeEnumerator(IDeque _Cont, int _First); -- public virtual new TValue Current { get; set; } -- public sealed override void Dispose(); -- protected virtual void Dispose(bool A_0); -- public override bool MoveNext(); -- public override void Reset(); -- } -- public class DequeEnumeratorBase : IEnumerator { -- public DequeEnumeratorBase(IDeque _Cont, int _First); -- public virtual object Current { get; set; } -- public virtual bool MoveNext(); -- public virtual void Reset(); -- } -- public class GenericPair { -- public TValue1 first; -- public TValue2 second; -- public GenericPair(); -- public GenericPair(GenericPair _Right); -- public GenericPair(ref KeyValuePair _Right); -- public GenericPair(TValue1 _Val1); -- public GenericPair(TValue1 _Val1, TValue2 _Val2); -- public override bool Equals(object _Right_arg); -- public GenericPair op_Assign(GenericPair _Right); -- public void swap(GenericPair _Right); -- } -- public class HashEnumerator : HashEnumeratorBase, IEnumerator { -- public HashEnumerator(INode _First); -- public virtual new TValue Current { get; set; } -- public sealed override void Dispose(); -- protected virtual void Dispose(bool A_0); -- public override bool MoveNext(); -- public override void Reset(); -- } -- public class HashEnumeratorBase : IEnumerator { -- public HashEnumeratorBase(INode _First); -- public virtual object Current { get; set; } -- public virtual bool MoveNext(); -- public virtual void Reset(); -- } -- public interface IDeque : ICloneable, ICollection, IEnumerable, IRandomAccessContainer { -- TValue back_item { get; set; } -- TValue front_item { get; set; } -- TValue this[int _Pos] { get; set; } -- void assign(IEnumerable _Right); -- void assign(IInputIterator _First, IInputIterator _Last); -- void assign(int _Count, TValue _Val); -- TValue at(int _Pos); -- TValue back(); -- void begin(ref ContainerRandomAccessIterator ); -- int begin_bias(); -- void clear(); -- bool empty(); -- void end(ref ContainerRandomAccessIterator ); -- int end_bias(); -- void erase(ref ContainerRandomAccessIterator , ContainerRandomAccessIterator _Where); -- void erase(ref ContainerRandomAccessIterator , ContainerRandomAccessIterator _First_iter, ContainerRandomAccessIterator _Last_iter); -- TValue front(); -- uint get_generation(); -- void insert(ContainerRandomAccessIterator _Where_iter, IEnumerable _Right); -- void insert(ContainerRandomAccessIterator _Where, int _Count, TValue _Val); -- void insert(ref ContainerRandomAccessIterator , ContainerRandomAccessIterator _Where, TValue _Val); -- void insert(ContainerRandomAccessIterator _Where, IInputIterator _First, IInputIterator _Last); -- void pop_back(); -- void pop_front(); -- void push_back(TValue _Val); -- void push_front(TValue _Val); -- void rbegin(ref ReverseRandomAccessIterator ); -- void rend(ref ReverseRandomAccessIterator ); -- void resize(int _Newsize); -- void resize(int _Newsize, TValue _Val); -- int size(); -- void swap(IDeque A_0); -- } -- public interface IHash : IBidirectionalContainer, ICloneable, ICollection, IEnumerable { -- void begin(ref ContainerBidirectionalIterator ); -- int bucket_count(); -- void clear(); -- int count(TKey _Keyval); -- bool empty(); -- void end(ref ContainerBidirectionalIterator ); -- void equal_range(ref GenericPair, ContainerBidirectionalIterator> , TKey _Keyval); -- void erase(ref ContainerBidirectionalIterator , ContainerBidirectionalIterator _Where); -- void erase(ref ContainerBidirectionalIterator , ContainerBidirectionalIterator _First_iter, ContainerBidirectionalIterator _Last_iter); -- int erase(TKey _Keyval); -- void find(ref ContainerBidirectionalIterator , TKey _Keyval); -- UnaryDelegate hash_delegate(); -- void insert(ref ContainerBidirectionalIterator , ContainerBidirectionalIterator _Where, TValue _Val); -- void insert(ref GenericPair, bool> , TValue _Val); -- void insert(IEnumerable _Right); -- void insert(IInputIterator _First, IInputIterator _Last); -- BinaryDelegate key_comp(); -- float load_factor(); -- void lower_bound(ref ContainerBidirectionalIterator , TKey _Keyval); -- float max_load_factor(); -- void max_load_factor(float _Newmax); -- void rbegin(ref ReverseBidirectionalIterator ); -- void rehash(int _Buckets); -- void rend(ref ReverseBidirectionalIterator ); -- int size(); -- void swap(IHash _Right); -- void upper_bound(ref ContainerBidirectionalIterator , TKey _Keyval); -- BinaryDelegate value_comp(); -- } -- public interface IList : IBidirectionalContainer, ICloneable, ICollection, IEnumerable { -- TValue back_item { get; set; } -- TValue front_item { get; set; } -- void assign(IEnumerable _Right); -- void assign(IInputIterator _First, IInputIterator _Last); -- void assign(int _Count, TValue _Val); -- TValue back(); -- void begin(ref ContainerBidirectionalIterator ); -- void clear(); -- bool empty(); -- void end(ref ContainerBidirectionalIterator ); -- void erase(ref ContainerBidirectionalIterator , ContainerBidirectionalIterator _Where); -- void erase(ref ContainerBidirectionalIterator , ContainerBidirectionalIterator _First_iter, ContainerBidirectionalIterator _Last_iter); -- TValue front(); -- void insert(ContainerBidirectionalIterator _Where_iter, IEnumerable _Right); -- void insert(ContainerBidirectionalIterator _Where, int _Count, TValue _Val); -- void insert(ref ContainerBidirectionalIterator , ContainerBidirectionalIterator _Where, TValue _Val); -- void insert(ContainerBidirectionalIterator _Where, IInputIterator _First, IInputIterator _Last); -- void merge(IList _Right, BinaryDelegate _Pred); -- void pop_back(); -- void pop_front(); -- void push_back(TValue _Val); -- void push_front(TValue _Val); -- void rbegin(ref ReverseBidirectionalIterator ); -- void remove(TValue _Val); -- void remove_if(UnaryDelegate _Pred); -- void rend(ref ReverseBidirectionalIterator ); -- void resize(int _Newsize); -- void resize(int _Newsize, TValue _Val); -- void reverse(); -- int size(); -- void sort(BinaryDelegate _Pred); -- void splice(ContainerBidirectionalIterator _Where, IList _Right); -- void splice(ContainerBidirectionalIterator _Where, IList _Right, ContainerBidirectionalIterator _First); -- void splice(ContainerBidirectionalIterator _Where, IList _Right, ContainerBidirectionalIterator _First, ContainerBidirectionalIterator _Last); -- void swap(IList _Right); -- void unique(BinaryDelegate _Pred); -- } -- public interface IPriorityQueue : ICloneable { -- TValue top_item { get; set; } -- void assign(IPriorityQueue _Right); -- bool empty(); -- TCont get_container(); -- void pop(); -- void push(TValue _Val); -- int size(); -- TValue top(); -- BinaryDelegate value_comp(); -- } -- public interface IQueue : ICloneable { -- void assign(IQueue _Right); -- TValue back(); -- bool empty(); -- TValue front(); -- TCont get_container(); -- void pop(); -- void push(TValue _Val); -- int size(); -- } -- public interface IStack : ICloneable { -- TValue top_item { get; set; } -- void assign(IStack _Right); -- bool empty(); -- TCont get_container(); -- void pop(); -- void push(TValue _Val); -- int size(); -- TValue top(); -- } -- public interface ITree : IBidirectionalContainer, ICloneable, ICollection, IEnumerable { -- void begin(ref ContainerBidirectionalIterator ); -- void clear(); -- int count(TKey _Keyval); -- bool empty(); -- void end(ref ContainerBidirectionalIterator ); -- void equal_range(ref GenericPair, ContainerBidirectionalIterator> , TKey _Keyval); -- void erase(ref ContainerBidirectionalIterator , ContainerBidirectionalIterator _Where); -- void erase(ref ContainerBidirectionalIterator , ContainerBidirectionalIterator _First_iter, ContainerBidirectionalIterator _Last_iter); -- int erase(TKey _Keyval); -- void find(ref ContainerBidirectionalIterator , TKey _Keyval); -- void insert(ref ContainerBidirectionalIterator , ContainerBidirectionalIterator _Where, TValue _Val); -- void insert(ref GenericPair, bool> , TValue _Val); -- void insert(IEnumerable _Right); -- void insert(IInputIterator _First, IInputIterator _Last); -- BinaryDelegate key_comp(); -- void lower_bound(ref ContainerBidirectionalIterator , TKey _Keyval); -- void rbegin(ref ReverseBidirectionalIterator ); -- void rend(ref ReverseBidirectionalIterator ); -- int size(); -- void swap(ITree _Right); -- void upper_bound(ref ContainerBidirectionalIterator , TKey _Keyval); -- BinaryDelegate value_comp(); -- } -- public interface IVector : ICloneable, ICollection, IEnumerable, IRandomAccessContainer { -- TValue back_item { get; set; } -- TValue front_item { get; set; } -- TValue this[int _Pos] { get; set; } -- void assign(IEnumerable _Right); -- void assign(IInputIterator _First, IInputIterator _Last); -- void assign(int _Count, TValue _Val); -- TValue at(int _Pos); -- TValue back(); -- void begin(ref ContainerRandomAccessIterator ); -- int capacity(); -- void clear(); -- bool empty(); -- void end(ref ContainerRandomAccessIterator ); -- void erase(ref ContainerRandomAccessIterator , ContainerRandomAccessIterator _Where); -- void erase(ref ContainerRandomAccessIterator , ContainerRandomAccessIterator _First_iter, ContainerRandomAccessIterator _Last_iter); -- TValue front(); -- uint get_generation(); -- void insert(ContainerRandomAccessIterator _Where_iter, IEnumerable _Right); -- void insert(ContainerRandomAccessIterator _Where, int _Count, TValue _Val); -- void insert(ref ContainerRandomAccessIterator , ContainerRandomAccessIterator _Where, TValue _Val); -- void insert(ContainerRandomAccessIterator _Where, IInputIterator _First, IInputIterator _Last); -- void pop_back(); -- void push_back(TValue _Val); -- void rbegin(ref ReverseRandomAccessIterator ); -- void rend(ref ReverseRandomAccessIterator ); -- void reserve(int _Capacity); -- void resize(int _Newsize); -- void resize(int _Newsize, TValue _Val); -- int size(); -- void swap(IVector A_0); -- } -- public class ListEnumerator : ListEnumeratorBase, IEnumerator { -- public ListEnumerator(INode _First); -- public virtual new TValue Current { get; set; } -- public sealed override void Dispose(); -- protected virtual void Dispose(bool A_0); -- public override bool MoveNext(); -- public override void Reset(); -- } -- public class ListEnumeratorBase : IEnumerator { -- public ListEnumeratorBase(INode _First); -- public virtual object Current { get; set; } -- public virtual bool MoveNext(); -- public virtual void Reset(); -- } -- public class TreeEnumerator : TreeEnumeratorBase, IEnumerator { -- public TreeEnumerator(INode _First); -- public virtual new TValue Current { get; set; } -- public sealed override void Dispose(); -- protected virtual void Dispose(bool A_0); -- public override bool MoveNext(); -- public override void Reset(); -- } -- public class TreeEnumeratorBase : IEnumerator { -- public TreeEnumeratorBase(INode _First); -- public virtual object Current { get; set; } -- public virtual bool MoveNext(); -- public virtual void Reset(); -- } -- public delegate TResult UnaryDelegate(TArg A_0); { -- [MethodImpl(ForwardRef)]public UnaryDelegate(object A_0, IntPtr A_1); -- [MethodImpl(ForwardRef)]public IAsyncResult BeginInvoke(TArg __unnamed000, AsyncCallback callback, object obj); -- [MethodImpl(ForwardRef)]public TResult EndInvoke(IAsyncResult result); -- [MethodImpl(ForwardRef)]public TResult Invoke(TArg A_0); -- } -- public class VectorEnumerator : VectorEnumeratorBase, IEnumerator { -- public VectorEnumerator(IVector _Cont, int _First); -- public virtual new TValue Current { get; set; } -- public sealed override void Dispose(); -- protected virtual void Dispose(bool A_0); -- public override bool MoveNext(); -- public override void Reset(); -- } -- public class VectorEnumeratorBase : IEnumerator { -- public VectorEnumeratorBase(IVector _Cont, int _First); -- public virtual object Current { get; set; } -- public virtual bool MoveNext(); -- public virtual void Reset(); -- } --} --namespace Microsoft.VisualC.StlClr.Generic { -- public class ConstContainerBidirectionalIterator : IBidirectionalIterator { -- public ConstContainerBidirectionalIterator(); -- public ConstContainerBidirectionalIterator(ConstContainerBidirectionalIterator _Right); -- public ConstContainerBidirectionalIterator(ContainerBidirectionalIterator _Right); -- public ConstContainerBidirectionalIterator(INode _Node); -- public virtual object Clone(); -- public virtual object container(); -- public bool equal_to(ConstContainerBidirectionalIterator _Right); -- public virtual bool equal_to(IInputIterator _Right); -- public virtual int get_bias(); -- public virtual TValue get_cref(); -- public virtual object get_node(); -- public virtual TValue get_ref(); -- public virtual void next(); -- public ConstContainerBidirectionalIterator op_Assign(ConstContainerBidirectionalIterator _Right); -- public ConstContainerBidirectionalIterator op_Assign(ContainerBidirectionalIterator _Right); -- public void operator --(ref ConstContainerBidirectionalIterator ); -- public void operator --(ref ConstContainerBidirectionalIterator , int A_0); -- public bool operator ==(ConstContainerBidirectionalIterator _Right); -- public bool operator ==(IInputIterator _Right); -- public implicit operator IBidirectionalIterator (); -- public void operator ++(ref ConstContainerBidirectionalIterator ); -- public void operator ++(ref ConstContainerBidirectionalIterator , int A_0); -- public bool operator !=(ConstContainerBidirectionalIterator _Right); -- public bool operator !=(IInputIterator _Right); -- public static TValue op_MemberSelection(ConstContainerBidirectionalIterator _Left); -- public static TValue op_PointerDereference(ConstContainerBidirectionalIterator _Left); -- public virtual void prev(); -- public virtual bool valid(); -- } -- public class ConstContainerRandomAccessIterator : IRandomAccessIterator { -- public ConstContainerRandomAccessIterator(); -- public ConstContainerRandomAccessIterator(ConstContainerRandomAccessIterator _Right); -- public ConstContainerRandomAccessIterator(ContainerRandomAccessIterator _Right); -- public ConstContainerRandomAccessIterator(IRandomAccessContainer _Cont, int _Offset); -- public TValue this[int _Pos] { get; } -- public virtual object Clone(); -- public virtual object container(); -- public int distance(ConstContainerRandomAccessIterator _Right); -- public virtual int distance(IRandomAccessIterator _Right); -- public bool equal_to(ConstContainerRandomAccessIterator _Right); -- public virtual bool equal_to(IInputIterator _Right); -- public virtual int get_bias(); -- public virtual TValue get_cref(); -- public virtual object get_node(); -- public virtual TValue get_ref(); -- public bool less_than(ConstContainerRandomAccessIterator _Right); -- public virtual bool less_than(IRandomAccessIterator _Right); -- public virtual int move(int _Offset); -- public virtual void next(); -- public void operator +(ref ConstContainerRandomAccessIterator , int _Right); -- public static void operator +(ref ConstContainerRandomAccessIterator , int _Left, ConstContainerRandomAccessIterator _Right); -- public ConstContainerRandomAccessIterator op_Assign(ConstContainerRandomAccessIterator _Right); -- public ConstContainerRandomAccessIterator op_Assign(ContainerRandomAccessIterator _Right); -- public void operator --(ref ConstContainerRandomAccessIterator ); -- public void operator --(ref ConstContainerRandomAccessIterator , int A_0); -- public bool operator ==(ConstContainerRandomAccessIterator _Right); -- public bool operator ==(IInputIterator _Right); -- public bool operator >(ConstContainerRandomAccessIterator _Right); -- public static bool operator >(IRandomAccessIterator _Left, ConstContainerRandomAccessIterator _Right); -- public bool operator >=(ConstContainerRandomAccessIterator _Right); -- public bool operator >=(IRandomAccessIterator _Right); -- public implicit operator IRandomAccessIterator (); -- public void operator ++(ref ConstContainerRandomAccessIterator ); -- public void operator ++(ref ConstContainerRandomAccessIterator , int A_0); -- public bool operator !=(ConstContainerRandomAccessIterator _Right); -- public bool operator !=(IInputIterator _Right); -- public bool operator <(ConstContainerRandomAccessIterator _Right); -- public bool operator <(IRandomAccessIterator _Right); -- public bool operator <=(ConstContainerRandomAccessIterator _Right); -- public static bool operator <=(IRandomAccessIterator _Left, ConstContainerRandomAccessIterator _Right); -- public static TValue op_MemberSelection(ConstContainerRandomAccessIterator _Left); -- public static TValue op_PointerDereference(ConstContainerRandomAccessIterator _Left); -- public void operator -(ref ConstContainerRandomAccessIterator , int _Right); -- public int operator -(IRandomAccessIterator _Right); -- public virtual void prev(); -- public virtual bool valid(); -- } -- public class ConstReverseBidirectionalIterator : IBidirectionalIterator { -- public ConstReverseBidirectionalIterator(); -- public ConstReverseBidirectionalIterator(ConstReverseBidirectionalIterator _Right); -- public ConstReverseBidirectionalIterator(IBidirectionalIterator _Iter); -- public ConstReverseBidirectionalIterator(ReverseBidirectionalIterator _Iter); -- public IBidirectionalIterator base(); -- public virtual object Clone(); -- public virtual object container(); -- public bool equal_to(ConstReverseBidirectionalIterator _Right); -- public virtual bool equal_to(IInputIterator _Right); -- public virtual int get_bias(); -- public virtual TValue get_cref(); -- public virtual object get_node(); -- public virtual TValue get_ref(); -- public virtual void next(); -- public ConstReverseBidirectionalIterator op_Assign(ConstReverseBidirectionalIterator _Right); -- public ConstReverseBidirectionalIterator op_Assign(ReverseBidirectionalIterator _Right); -- public void operator --(ref ConstReverseBidirectionalIterator ); -- public void operator --(ref ConstReverseBidirectionalIterator , int A_0); -- public bool operator ==(ConstReverseBidirectionalIterator _Right); -- public bool operator ==(IInputIterator _Right); -- public implicit operator IBidirectionalIterator (); -- public void operator ++(ref ConstReverseBidirectionalIterator ); -- public void operator ++(ref ConstReverseBidirectionalIterator , int A_0); -- public bool operator !=(ConstReverseBidirectionalIterator _Right); -- public bool operator !=(IInputIterator _Right); -- public static TValue op_MemberSelection(ConstReverseBidirectionalIterator _Left); -- public static TValue op_PointerDereference(ConstReverseBidirectionalIterator _Left); -- public virtual void prev(); -- public virtual bool valid(); -- } -- public class ConstReverseRandomAccessIterator : IRandomAccessIterator { -- public ConstReverseRandomAccessIterator(); -- public ConstReverseRandomAccessIterator(ConstReverseRandomAccessIterator _Right); -- public ConstReverseRandomAccessIterator(IRandomAccessIterator _Iter); -- public ConstReverseRandomAccessIterator(ReverseRandomAccessIterator _Iter); -- public TValue this[int _Pos] { get; } -- public IRandomAccessIterator base(); -- public virtual object Clone(); -- public virtual object container(); -- public int distance(ConstReverseRandomAccessIterator _Right); -- public virtual int distance(IRandomAccessIterator _Right); -- public bool equal_to(ConstReverseRandomAccessIterator _Right); -- public virtual bool equal_to(IInputIterator _Right); -- public virtual int get_bias(); -- public virtual TValue get_cref(); -- public virtual object get_node(); -- public virtual TValue get_ref(); -- public bool less_than(ConstReverseRandomAccessIterator _Right); -- public virtual bool less_than(IRandomAccessIterator _Right); -- public virtual int move(int _Offset); -- public virtual void next(); -- public void operator +(ref ConstReverseRandomAccessIterator , int _Right); -- public static void operator +(ref ConstReverseRandomAccessIterator , int _Left, ConstReverseRandomAccessIterator _Right); -- public ConstReverseRandomAccessIterator op_Assign(ConstReverseRandomAccessIterator _Right); -- public ConstReverseRandomAccessIterator op_Assign(ReverseRandomAccessIterator _Right); -- public void operator --(ref ConstReverseRandomAccessIterator ); -- public void operator --(ref ConstReverseRandomAccessIterator , int A_0); -- public bool operator ==(ConstReverseRandomAccessIterator _Right); -- public bool operator >(ConstReverseRandomAccessIterator _Right); -- public bool operator >=(ConstReverseRandomAccessIterator _Right); -- public implicit operator IRandomAccessIterator (); -- public void operator ++(ref ConstReverseRandomAccessIterator ); -- public void operator ++(ref ConstReverseRandomAccessIterator , int A_0); -- public bool operator !=(ConstReverseRandomAccessIterator _Right); -- public bool operator <(ConstReverseRandomAccessIterator _Right); -- public bool operator <=(ConstReverseRandomAccessIterator _Right); -- public static TValue op_MemberSelection(ConstReverseRandomAccessIterator _Left); -- public static TValue op_PointerDereference(ConstReverseRandomAccessIterator _Left); -- public void operator -(ref ConstReverseRandomAccessIterator , int _Right); -- public int operator -(IRandomAccessIterator _Right); -- public virtual void prev(); -- public virtual bool valid(); -- } -- public class ContainerBidirectionalIterator : IBidirectionalIterator { -- public ContainerBidirectionalIterator(); -- public ContainerBidirectionalIterator(ContainerBidirectionalIterator _Right); -- public ContainerBidirectionalIterator(INode _Node); -- public virtual object Clone(); -- public virtual object container(); -- public bool equal_to(ContainerBidirectionalIterator _Right); -- public virtual bool equal_to(IInputIterator _Right); -- public virtual int get_bias(); -- public virtual TValue get_cref(); -- public virtual object get_node(); -- public virtual TValue get_ref(); -- public virtual void next(); -- public ContainerBidirectionalIterator op_Assign(ContainerBidirectionalIterator _Right); -- public void operator --(ref ContainerBidirectionalIterator ); -- public void operator --(ref ContainerBidirectionalIterator , int A_0); -- public bool operator ==(ContainerBidirectionalIterator _Right); -- public bool operator ==(IInputIterator _Right); -- public implicit operator IBidirectionalIterator (); -- public void operator ++(ref ContainerBidirectionalIterator ); -- public void operator ++(ref ContainerBidirectionalIterator , int A_0); -- public bool operator !=(ContainerBidirectionalIterator _Right); -- public bool operator !=(IInputIterator _Right); -- public static TValue op_MemberSelection(ContainerBidirectionalIterator _Left); -- public static TValue op_PointerDereference(ContainerBidirectionalIterator _Left); -- public virtual void prev(); -- public virtual bool valid(); -- } -- public class ContainerRandomAccessIterator : IRandomAccessIterator { -- public ContainerRandomAccessIterator(); -- public ContainerRandomAccessIterator(ContainerRandomAccessIterator _Right); -- public ContainerRandomAccessIterator(IRandomAccessContainer _Cont, int _Offset); -- public TValue this[int _Pos] { get; set; } -- public virtual object Clone(); -- public virtual object container(); -- public int distance(ContainerRandomAccessIterator _Right); -- public virtual int distance(IRandomAccessIterator _Right); -- public bool equal_to(ContainerRandomAccessIterator _Right); -- public virtual bool equal_to(IInputIterator _Right); -- public virtual int get_bias(); -- public virtual TValue get_cref(); -- public virtual object get_node(); -- public virtual TValue get_ref(); -- public bool less_than(ContainerRandomAccessIterator _Right); -- public virtual bool less_than(IRandomAccessIterator _Right); -- public virtual int move(int _Offset); -- public virtual void next(); -- public void operator +(ref ContainerRandomAccessIterator , int _Right); -- public static void operator +(ref ContainerRandomAccessIterator , int _Left, ContainerRandomAccessIterator _Right); -- public ContainerRandomAccessIterator op_Assign(ContainerRandomAccessIterator _Right); -- public void operator --(ref ContainerRandomAccessIterator ); -- public void operator --(ref ContainerRandomAccessIterator , int A_0); -- public bool operator ==(ContainerRandomAccessIterator _Right); -- public bool operator ==(IInputIterator _Right); -- public bool operator >(ContainerRandomAccessIterator _Right); -- public static bool operator >(IRandomAccessIterator _Left, ContainerRandomAccessIterator _Right); -- public bool operator >=(ContainerRandomAccessIterator _Right); -- public bool operator >=(IRandomAccessIterator _Right); -- public implicit operator IRandomAccessIterator (); -- public void operator ++(ref ContainerRandomAccessIterator ); -- public void operator ++(ref ContainerRandomAccessIterator , int A_0); -- public bool operator !=(ContainerRandomAccessIterator _Right); -- public bool operator !=(IInputIterator _Right); -- public bool operator <(ContainerRandomAccessIterator _Right); -- public bool operator <(IRandomAccessIterator _Right); -- public bool operator <=(ContainerRandomAccessIterator _Right); -- public static bool operator <=(IRandomAccessIterator _Left, ContainerRandomAccessIterator _Right); -- public static TValue op_MemberSelection(ContainerRandomAccessIterator _Left); -- public static TValue op_PointerDereference(ContainerRandomAccessIterator _Left); -- public void operator -(ref ContainerRandomAccessIterator , int _Right); -- public int operator -(IRandomAccessIterator _Right); -- public virtual void prev(); -- public virtual bool valid(); -- } -- public interface IBaseIterator : ICloneable { -- object container(); -- int get_bias(); -- object get_node(); -- void next(); -- bool valid(); -- } -- public interface IBidirectionalContainer { -- uint get_generation(); -- } -- public interface IBidirectionalIterator : IForwardIterator { -- void prev(); -- } -- public interface IForwardIterator : IInputIterator, IOutputIterator -- public interface IInputIterator : IBaseIterator { -- bool equal_to(IInputIterator A_0); -- TValue get_cref(); -- } -- public interface INode { -- TValue _Value { get; set; } -- IBidirectionalContainer container(); -- bool is_head(); -- INode next_node(); -- INode prev_node(); -- } -- public interface IOutputIterator : IBaseIterator { -- TValue get_ref(); -- } -- public interface IRandomAccessContainer { -- TValue at_bias(int A_0); -- bool valid_bias(int A_0); -- } -- public interface IRandomAccessIterator : IBidirectionalIterator { -- int distance(IRandomAccessIterator _Right); -- bool less_than(IRandomAccessIterator _Right); -- int move(int _Offset); -- } -- public class ReverseBidirectionalIterator : IBidirectionalIterator { -- public ReverseBidirectionalIterator(); -- public ReverseBidirectionalIterator(IBidirectionalIterator _Iter); -- public ReverseBidirectionalIterator(ReverseBidirectionalIterator _Right); -- public IBidirectionalIterator base(); -- public virtual object Clone(); -- public virtual object container(); -- public virtual bool equal_to(IInputIterator _Right); -- public bool equal_to(ReverseBidirectionalIterator _Right); -- public virtual int get_bias(); -- public virtual TValue get_cref(); -- public virtual object get_node(); -- public virtual TValue get_ref(); -- public virtual void next(); -- public ReverseBidirectionalIterator op_Assign(ReverseBidirectionalIterator _Right); -- public void operator --(ref ReverseBidirectionalIterator ); -- public void operator --(ref ReverseBidirectionalIterator , int A_0); -- public bool operator ==(IInputIterator _Right); -- public bool operator ==(ReverseBidirectionalIterator _Right); -- public implicit operator IBidirectionalIterator (); -- public void operator ++(ref ReverseBidirectionalIterator ); -- public void operator ++(ref ReverseBidirectionalIterator , int A_0); -- public bool operator !=(IInputIterator _Right); -- public bool operator !=(ReverseBidirectionalIterator _Right); -- public static TValue op_MemberSelection(ReverseBidirectionalIterator _Left); -- public static TValue op_PointerDereference(ReverseBidirectionalIterator _Left); -- public virtual void prev(); -- public virtual bool valid(); -- } -- public class ReverseRandomAccessIterator : IRandomAccessIterator { -- public ReverseRandomAccessIterator(); -- public ReverseRandomAccessIterator(IRandomAccessIterator _Iter); -- public ReverseRandomAccessIterator(ReverseRandomAccessIterator _Right); -- public TValue this[int _Pos] { get; set; } -- public IRandomAccessIterator base(); -- public virtual object Clone(); -- public virtual object container(); -- public virtual int distance(IRandomAccessIterator _Right); -- public int distance(ReverseRandomAccessIterator _Right); -- public virtual bool equal_to(IInputIterator _Right); -- public bool equal_to(ReverseRandomAccessIterator _Right); -- public virtual int get_bias(); -- public virtual TValue get_cref(); -- public virtual object get_node(); -- public virtual TValue get_ref(); -- public virtual bool less_than(IRandomAccessIterator _Right); -- public bool less_than(ReverseRandomAccessIterator _Right); -- public virtual int move(int _Offset); -- public virtual void next(); -- public void operator +(ref ReverseRandomAccessIterator , int _Right); -- public static void operator +(ref ReverseRandomAccessIterator , int _Left, ReverseRandomAccessIterator _Right); -- public ReverseRandomAccessIterator op_Assign(ReverseRandomAccessIterator _Right); -- public void operator --(ref ReverseRandomAccessIterator ); -- public void operator --(ref ReverseRandomAccessIterator , int A_0); -- public bool operator ==(ReverseRandomAccessIterator _Right); -- public bool operator >(ReverseRandomAccessIterator _Right); -- public bool operator >=(ReverseRandomAccessIterator _Right); -- public implicit operator IRandomAccessIterator (); -- public void operator ++(ref ReverseRandomAccessIterator ); -- public void operator ++(ref ReverseRandomAccessIterator , int A_0); -- public bool operator !=(ReverseRandomAccessIterator _Right); -- public bool operator <(ReverseRandomAccessIterator _Right); -- public bool operator <=(ReverseRandomAccessIterator _Right); -- public static TValue op_MemberSelection(ReverseRandomAccessIterator _Left); -- public static TValue op_PointerDereference(ReverseRandomAccessIterator _Left); -- public int operator -(IRandomAccessIterator _Right); -- public void operator -(ref ReverseRandomAccessIterator , int _Right); -- public virtual void prev(); -- public virtual bool valid(); -- } --} ``` From 9affae8ed53e31b31ed26a9f772cea6dbfce6314 Mon Sep 17 00:00:00 2001 From: Richard Lander Date: Wed, 30 Mar 2016 13:31:34 -0700 Subject: [PATCH 267/872] Remove 'preview' in filenames --- ...{dotnet462-preview-api-changes.md => dotnet462-api-changes.md} | 0 .../net462/{dotnet462preview-changes.md => dotnet462-changes.md} | 0 2 files changed, 0 insertions(+), 0 deletions(-) rename releases/net462/{dotnet462-preview-api-changes.md => dotnet462-api-changes.md} (100%) rename releases/net462/{dotnet462preview-changes.md => dotnet462-changes.md} (100%) diff --git a/releases/net462/dotnet462-preview-api-changes.md b/releases/net462/dotnet462-api-changes.md similarity index 100% rename from releases/net462/dotnet462-preview-api-changes.md rename to releases/net462/dotnet462-api-changes.md diff --git a/releases/net462/dotnet462preview-changes.md b/releases/net462/dotnet462-changes.md similarity index 100% rename from releases/net462/dotnet462preview-changes.md rename to releases/net462/dotnet462-changes.md From 1d63bb71d4b54adcfc460a3506107d76a354fbea Mon Sep 17 00:00:00 2001 From: Preeti Krishna Date: Wed, 30 Mar 2016 15:45:37 -0700 Subject: [PATCH 268/872] Added .NET 4.6.2 entries to platforms.json --- data/platforms.json | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/data/platforms.json b/data/platforms.json index 8e8bcdf23..007304fec 100644 --- a/data/platforms.json +++ b/data/platforms.json @@ -33,6 +33,31 @@ "platforms": [ + { + "platform": ".NET Framework 4.6.2", + "category": "netfx", + "supportInfo": { + "support": "Supported", + "link": "" + }, + "popular": true, + "info": "http://go.microsoft.com/fwlink/?LinkID=708776", + "includedIn": [ "VS2015" ], + "supportedBy": [ "VS2013", "VS2012" ], + "runtime": [ + { + "name": ".NET Framework 4.6.2 Preview", + "link": "http://go.microsoft.com/fwlink/?LinkId=708735" + } + ], + "tools": [ + { + "name": ".NET Framework 4.6.2 Preview Developer Pack", + "link": "http://go.microsoft.com/fwlink/?LinkId=708774", + "description": "The .NET 4.6.2 Developer pack includes 4.6.2 reference assemblies needed by Visual Studio and msbuild." + } + ] + }, { "platform":".NET Framework 4.6.1", "category":"netfx", From 95e9cdf1be05b69be7f4308d5992e65ecfcc1c81 Mon Sep 17 00:00:00 2001 From: cedrozor Date: Sat, 2 Apr 2016 14:57:49 +0200 Subject: [PATCH 269/872] added myrtille --- dotnet-developer-projects.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 76f1c6fe2..d2fe31bd8 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -328,6 +328,9 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * Amazon Echo/Alexa Integration * [AlexaSkillsKit.NET](https://github.com/AreYouFreeBusy/AlexaSkillsKit.NET) - .NET library to write Alexa Skills that's interface-compatible with Amazon's AlexaSkillsKit for Java and matches that functionality. +* Remote Desktop + * [Myrtille](https://github.com/cedrozor/myrtille) - A native HTML4/5 Remote Desktop Protocol client, HTTP gateway written in C# for .NET + This list is just a starting point - also take a look at all the projects on [CodePlex](http://www.codeplex.com/) and on [GitHub Trending C#](https://github.com/trending?l=csharp). [@quozd](http://twitter.com/quozd "@quozd on Twitter") hosts an [Awesome .NET!](https://github.com/quozd/awesome-dotnet) list. Also worth checking out. From 8d120eda6f07916b16bf8e2ee857bb2dc96b52ff Mon Sep 17 00:00:00 2001 From: Stacey Haffner Date: Tue, 5 Apr 2016 15:03:55 -0700 Subject: [PATCH 270/872] Changed ASP .NET 5 to ASP .NET Core. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 316fa307e..6188d42cc 100644 --- a/README.md +++ b/README.md @@ -14,7 +14,7 @@ There are many [open source .NET projects](dotnet-developer-projects.md), a few * [.NET Compiler Platform ("Roslyn")](https://github.com/dotnet/roslyn) * [.NET Core](https://github.com/dotnet/core) -* [ASP.NET 5](https://github.com/aspnet/home) +* [ASP.NET Core](https://github.com/aspnet/home) * [EntityFramework](https://github.com/aspnet/EntityFramework) * [Orleans](https://github.com/dotnet/orleans) * [Exceptionless](https://github.com/exceptionless/Exceptionless) From 84c2b44804a12439ba3e74b4989dd70e5aff42ac Mon Sep 17 00:00:00 2001 From: Antonello Provenzano Date: Thu, 7 Apr 2016 17:28:12 +0200 Subject: [PATCH 271/872] Update dotnet-developer-projects.md --- dotnet-developer-projects.md | 1 + 1 file changed, 1 insertion(+) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 76f1c6fe2..88d94c747 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -277,6 +277,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [NHibernate](https://github.com/nhibernate) - Object Relational Mapper * [Simple Data](https://github.com/markrendle/Simple.Data) - A light-weight, dynamic data access component for C# 4.0. * [Sqlite-net](https://github.com/praeclarum/sqlite-net) - Simple, powerful, cross-platform SQLite client and ORM. + * [DeveelDB](https://github.com/deveel/deveeldb) - A complete SQL-99 embeddable database management system for .NET and Mono * [NMEA Parser](https://github.com/dotMorten/NmeaParser) - Library for handling NMEA message in Windows Desktop, Store, Phone and Xamarin (Android + iOS), coming from files, Bluetooth, serial port or any stream. * [Neyro.Data](https://github.com/neyromant/Neyro.Data) - Tiny, simple and fast ORM. * [StackExchange.Redis](https://github.com/StackExchange/StackExchange.Redis) From f67ec98c869f7e5d0bd1e2881bc3fc786163120b Mon Sep 17 00:00:00 2001 From: Bertrand Le Roy Date: Wed, 20 Apr 2016 11:04:51 -0700 Subject: [PATCH 272/872] Make the 4.6 change list real markdown --- releases/net46/dotnet46-api-changes.md | 2549 +++++++++++++----------- 1 file changed, 1331 insertions(+), 1218 deletions(-) diff --git a/releases/net46/dotnet46-api-changes.md b/releases/net46/dotnet46-api-changes.md index 3d894ee18..a269e203f 100644 --- a/releases/net46/dotnet46-api-changes.md +++ b/releases/net46/dotnet46-api-changes.md @@ -1,1218 +1,1331 @@ -.NET Framework 4.6 API Changes - - -
C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.2
-C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6
-namespace Microsoft.Win32 {
-  public sealed class RegistryKey : MarshalByRefObject, IDisposable {
-    public RegistryKey CreateSubKey(string subkey, bool writable);
-    public RegistryKey CreateSubKey(string subkey, bool writable, RegistryOptions options);
-    public RegistryKey OpenSubKey(string name, RegistryRights rights);
-  }
-}
-namespace Microsoft.Win32.SafeHandles {
-  public sealed class SafeAccessTokenHandle : SafeHandle {
-    public SafeAccessTokenHandle(IntPtr handle);
-    public static SafeAccessTokenHandle InvalidHandle { get; }
-    public override bool IsInvalid { get; }
-    protected override bool ReleaseHandle();
-  }
-  public sealed class SafeProcessHandle : SafeHandleZeroOrMinusOneIsInvalid {
-    public SafeProcessHandle(IntPtr existingHandle, bool ownsHandle);
-    protected override bool ReleaseHandle();
-  }
-  public sealed class SafeX509ChainHandle : SafeHandleZeroOrMinusOneIsInvalid {
-    protected override bool ReleaseHandle();
-  }
-}
-namespace System {
-  public static class AppContext {
-    public static string BaseDirectory { get; }
-    public static void SetSwitch(string switchName, bool isEnabled);
-    public static bool TryGetSwitch(string switchName, out bool isEnabled);
-  }
-  public abstract class Array : ICloneable, ICollection, IEnumerable, IList, IStructuralComparable, IStructuralEquatable {
-    public static T[] Empty<T>();
-  }
-  public static class Buffer {
-    [MethodImpl(AggressiveInlining)]public unsafe static void MemoryCopy(void* source, void* destination, long destinationSizeInBytes, long sourceBytesToCopy);
-    [MethodImpl(AggressiveInlining)]public unsafe static void MemoryCopy(void* source, void* destination, ulong destinationSizeInBytes, ulong sourceBytesToCopy);
-  }
-  public static class Console {
-    [MethodImpl(NoInlining)]public static int Read();
-    [MethodImpl(NoInlining)]public static string ReadLine();
-    [MethodImpl(NoInlining)]public static void Write(bool value);
-    [MethodImpl(NoInlining)]public static void Write(char value);
-    [MethodImpl(NoInlining)]public static void Write(char[] buffer);
-    [MethodImpl(NoInlining)]public static void Write(char[] buffer, int index, int count);
-    [MethodImpl(NoInlining)]public static void Write(decimal value);
-    [MethodImpl(NoInlining)]public static void Write(double value);
-    [MethodImpl(NoInlining)]public static void Write(int value);
-    [MethodImpl(NoInlining)]public static void Write(long value);
-    [MethodImpl(NoInlining)]public static void Write(object value);
-    [MethodImpl(NoInlining)]public static void Write(float value);
-    [MethodImpl(NoInlining)]public static void Write(string value);
-    [MethodImpl(NoInlining)]public static void Write(string format, object arg0);
-    [MethodImpl(NoInlining)]public static void Write(string format, object arg0, object arg1);
-    [MethodImpl(NoInlining)]public static void Write(string format, object arg0, object arg1, object arg2);
-    [MethodImpl(NoInlining)]public static void Write(string format, object arg0, object arg1, object arg2, object arg3, __arglist);
-    [MethodImpl(NoInlining)]public static void Write(string format, params object[] arg);
-    [MethodImpl(NoInlining)]public static void Write(uint value);
-    [MethodImpl(NoInlining)]public static void Write(ulong value);
-    [MethodImpl(NoInlining)]public static void WriteLine();
-    [MethodImpl(NoInlining)]public static void WriteLine(bool value);
-    [MethodImpl(NoInlining)]public static void WriteLine(char value);
-    [MethodImpl(NoInlining)]public static void WriteLine(char[] buffer);
-    [MethodImpl(NoInlining)]public static void WriteLine(char[] buffer, int index, int count);
-    [MethodImpl(NoInlining)]public static void WriteLine(decimal value);
-    [MethodImpl(NoInlining)]public static void WriteLine(double value);
-    [MethodImpl(NoInlining)]public static void WriteLine(int value);
-    [MethodImpl(NoInlining)]public static void WriteLine(long value);
-    [MethodImpl(NoInlining)]public static void WriteLine(object value);
-    [MethodImpl(NoInlining)]public static void WriteLine(float value);
-    [MethodImpl(NoInlining)]public static void WriteLine(string value);
-    [MethodImpl(NoInlining)]public static void WriteLine(string format, object arg0);
-    [MethodImpl(NoInlining)]public static void WriteLine(string format, object arg0, object arg1);
-    [MethodImpl(NoInlining)]public static void WriteLine(string format, object arg0, object arg1, object arg2);
-    [MethodImpl(NoInlining)]public static void WriteLine(string format, object arg0, object arg1, object arg2, object arg3, __arglist);
-    [MethodImpl(NoInlining)]public static void WriteLine(string format, params object[] arg);
-    [MethodImpl(NoInlining)]public static void WriteLine(uint value);
-    [MethodImpl(NoInlining)]public static void WriteLine(ulong value);
-  }
-  public struct DateTimeOffset : IComparable, IComparable<DateTimeOffset>, IDeserializationCallback, IEquatable<DateTimeOffset>, IFormattable, ISerializable {
-    public static DateTimeOffset FromUnixTimeMilliseconds(long milliseconds);
-    public static DateTimeOffset FromUnixTimeSeconds(long seconds);
-    public long ToUnixTimeMilliseconds();
-    public long ToUnixTimeSeconds();
-  }
-  public abstract class FormattableString : IFormattable {
-    protected FormattableString();
-    public abstract int ArgumentCount { get; }
-    public abstract string Format { get; }
-    public abstract object GetArgument(int index);
-    public abstract object[] GetArguments();
-    public static string Invariant(FormattableString formattable);
-    string System.IFormattable.ToString(string ignored, IFormatProvider formatProvider);
-    public override string ToString();
-    public abstract string ToString(IFormatProvider formatProvider);
-  }
-  public static class GC {
-    public static void Collect(int generation, GCCollectionMode mode, bool blocking, bool compacting);
-    public static void EndNoGCRegion();
-    public static bool TryStartNoGCRegion(long totalSize);
-    public static bool TryStartNoGCRegion(long totalSize, bool disallowFullBlockingGC);
-    public static bool TryStartNoGCRegion(long totalSize, long lohSize);
-    public static bool TryStartNoGCRegion(long totalSize, long lohSize, bool disallowFullBlockingGC);
-  }
-  public sealed class String : ICloneable, IComparable, IComparable<string>, IConvertible, IEnumerable, IEnumerable<char>, IEquatable<string> {
-    public static string Format(IFormatProvider provider, string format, object arg0);
-    public static string Format(IFormatProvider provider, string format, object arg0, object arg1);
-    public static string Format(IFormatProvider provider, string format, object arg0, object arg1, object arg2);
-  }
-  public class Uri : ISerializable {
-    public string IdnHost { get; }
-  }
-}
-namespace System.Collections.Concurrent {
-  public class BlockingCollection<T> : ICollection, IDisposable, IEnumerable, IEnumerable<T>, IReadOnlyCollection<T> {
-  }
-  public class ConcurrentBag<T> : ICollection, IEnumerable, IEnumerable<T>, IProducerConsumerCollection<T>, IReadOnlyCollection<T> {
-  }
-  public class ConcurrentDictionary<TKey, TValue> : ICollection, ICollection<KeyValuePair<TKey, TValue>>, IDictionary, IDictionary<TKey, TValue>, IEnumerable, IEnumerable<KeyValuePair<TKey, TValue>>, IReadOnlyCollection<KeyValuePair<TKey, TValue>>, IReadOnlyDictionary<TKey, TValue> {
-    IEnumerable<TKey> System.Collections.Generic.IReadOnlyDictionary<TKey,TValue>.Keys { get; }
-    IEnumerable<TValue> System.Collections.Generic.IReadOnlyDictionary<TKey,TValue>.Values { get; }
-  }
-  public class ConcurrentQueue<T> : ICollection, IEnumerable, IEnumerable<T>, IProducerConsumerCollection<T>, IReadOnlyCollection<T> {
-  }
-  public class ConcurrentStack<T> : ICollection, IEnumerable, IEnumerable<T>, IProducerConsumerCollection<T>, IReadOnlyCollection<T> {
-  }
-}
-namespace System.Collections.Generic {
-  public class HashSet<T> : ICollection<T>, IDeserializationCallback, IEnumerable, IEnumerable<T>, IReadOnlyCollection<T>, ISerializable, ISet<T> {
-  }
-  public class LinkedList<T> : ICollection, ICollection<T>, IDeserializationCallback, IEnumerable, IEnumerable<T>, IReadOnlyCollection<T>, ISerializable {
-  }
-  public class Queue<T> : ICollection, IEnumerable, IEnumerable<T>, IReadOnlyCollection<T> {
-  }
-  public class SortedDictionary<TKey, TValue> : ICollection, ICollection<KeyValuePair<TKey, TValue>>, IDictionary, IDictionary<TKey, TValue>, IEnumerable, IEnumerable<KeyValuePair<TKey, TValue>>, IReadOnlyCollection<KeyValuePair<TKey, TValue>>, IReadOnlyDictionary<TKey, TValue> {
-    IEnumerable<TKey> System.Collections.Generic.IReadOnlyDictionary<TKey,TValue>.Keys { get; }
-    IEnumerable<TValue> System.Collections.Generic.IReadOnlyDictionary<TKey,TValue>.Values { get; }
-    public sealed class KeyCollection : ICollection, ICollection<TKey>, IEnumerable, IEnumerable<TKey>, IReadOnlyCollection<TKey> {
-    }
-    public sealed class ValueCollection : ICollection, ICollection<TValue>, IEnumerable, IEnumerable<TValue>, IReadOnlyCollection<TValue> {
-    }
-  }
-  public class SortedList<TKey, TValue> : ICollection, ICollection<KeyValuePair<TKey, TValue>>, IDictionary, IDictionary<TKey, TValue>, IEnumerable, IEnumerable<KeyValuePair<TKey, TValue>>, IReadOnlyCollection<KeyValuePair<TKey, TValue>>, IReadOnlyDictionary<TKey, TValue> {
-    IEnumerable<TKey> System.Collections.Generic.IReadOnlyDictionary<TKey,TValue>.Keys { get; }
-    IEnumerable<TValue> System.Collections.Generic.IReadOnlyDictionary<TKey,TValue>.Values { get; }
-  }
-  public class SortedSet<T> : ICollection, ICollection<T>, IDeserializationCallback, IEnumerable, IEnumerable<T>, IReadOnlyCollection<T>, ISerializable, ISet<T> {
-  }
-  public class Stack<T> : ICollection, IEnumerable, IEnumerable<T>, IReadOnlyCollection<T> {
-  }
-}
-namespace System.Configuration {
-  public sealed class RsaProtectedConfigurationProvider : ProtectedConfigurationProvider {
-    public bool UseFIPS { get; }
-  }
-}
-namespace System.Data.Common {
-  public class DbEnumerator : IEnumerator {
-    public DbEnumerator(DbDataReader reader);
-    public DbEnumerator(DbDataReader reader, bool closeReader);
-  }
-}
-namespace System.Data.SqlClient {
-  public enum SqlAuthenticationMethod {
-    ActiveDirectoryIntegrated = 3,
-    ActiveDirectoryPassword = 2,
-    NotSpecified = 0,
-    SqlPassword = 1,
-  }
-  public sealed class SqlBulkCopy : IDisposable {
-    public void WriteToServer(DbDataReader reader);
-    public Task WriteToServerAsync(DbDataReader reader);
-    public Task WriteToServerAsync(DbDataReader reader, CancellationToken cancellationToken);
-  }
-  public sealed class SqlColumnEncryptionCertificateStoreProvider : SqlColumnEncryptionKeyStoreProvider {
-    public SqlColumnEncryptionCertificateStoreProvider();
-    public override byte[] DecryptColumnEncryptionKey(string masterKeyPath, string encryptionAlgorithm, byte[] encryptedColumnEncryptionKey);
-    public override byte[] EncryptColumnEncryptionKey(string masterKeyPath, string encryptionAlgorithm, byte[] columnEncryptionKey);
-  }
-  public abstract class SqlColumnEncryptionKeyStoreProvider {
-    protected SqlColumnEncryptionKeyStoreProvider();
-    public abstract byte[] DecryptColumnEncryptionKey(string masterKeyPath, string encryptionAlgorithm, byte[] encryptedColumnEncryptionKey);
-    public abstract byte[] EncryptColumnEncryptionKey(string masterKeyPath, string encryptionAlgorithm, byte[] columnEncryptionKey);
-  }
-  public sealed class SqlCommand : DbCommand, ICloneable {
-    public SqlCommand(string cmdText, SqlConnection connection, SqlTransaction transaction, SqlCommandColumnEncryptionSetting columnEncryptionSetting);
-    public SqlCommandColumnEncryptionSetting ColumnEncryptionSetting { get; }
-  }
-  public enum SqlCommandColumnEncryptionSetting {
-    Disabled = 3,
-    Enabled = 1,
-    ResultSetOnly = 2,
-    UseConnectionSetting = 0,
-  }
-  public sealed class SqlConnection : DbConnection, ICloneable {
-    public string AccessToken { get; set; }
-    public static IDictionary<string, IList<string>> ColumnEncryptionTrustedMasterKeyPaths { get; }
-    public static void RegisterColumnEncryptionKeyStoreProviders(IDictionary<string, SqlColumnEncryptionKeyStoreProvider> customProviders);
-  }
-  public enum SqlConnectionColumnEncryptionSetting {
-    Disabled = 0,
-    Enabled = 1,
-  }
-  public sealed class SqlConnectionStringBuilder : DbConnectionStringBuilder {
-    public SqlAuthenticationMethod Authentication { get; set; }
-    public SqlConnectionColumnEncryptionSetting ColumnEncryptionSetting { get; set; }
-  }
-  public sealed class SqlParameter : DbParameter, ICloneable, IDataParameter, IDbDataParameter {
-    public bool ForceColumnEncryption { get; set; }
-  }
-}
-namespace System.Diagnostics {
-  public sealed class Debugger {
-    public static bool IsAttached { [MethodImpl(InternalCall)]get; }
-  }
-  public class Process : Component {
-    public SafeProcessHandle SafeHandle { get; }
-  }
-  public sealed class ProcessStartInfo {
-    public IDictionary<string, string> Environment { get; }
-  }
-}
-namespace System.Diagnostics.Tracing {
-  public enum EventActivityOptions {
-    Detachable = 8,
-    Disable = 2,
-    None = 0,
-    Recursive = 4,
-  }
-  public sealed class EventAttribute : Attribute {
-    public EventActivityOptions ActivityOptions { get; set; }
-    public EventChannel Channel { get; set; }
-    public EventTags Tags { get; set; }
-  }
-  public enum EventChannel : byte {
-    Admin = (byte)16,
-    Analytic = (byte)18,
-    Debug = (byte)19,
-    None = (byte)0,
-    Operational = (byte)17,
-  }
-  public class EventDataAttribute : Attribute {
-    public EventDataAttribute();
-    public string Name { get; set; }
-  }
-  public class EventFieldAttribute : Attribute {
-    public EventFieldAttribute();
-    public EventFieldFormat Format { get; set; }
-    public EventFieldTags Tags { get; set; }
-  }
-  public enum EventFieldFormat {
-    Boolean = 3,
-    Default = 0,
-    Hexadecimal = 4,
-    HResult = 15,
-    Json = 12,
-    String = 2,
-    Xml = 11,
-  }
-  public enum EventFieldTags {
-    None = 0,
-  }
-  public class EventIgnoreAttribute : Attribute {
-    public EventIgnoreAttribute();
-  }
-  public enum EventKeywords : long {
-    All = (long)-1,
-    MicrosoftTelemetry = (long)562949953421312,
-  }
-  public enum EventManifestOptions {
-    AllCultures = 2,
-    AllowEventSourceOverride = 8,
-    None = 0,
-    OnlyIfNeededForRegistration = 4,
-    Strict = 1,
-  }
-  public class EventSource : IDisposable {
-    protected EventSource(EventSourceSettings settings);
-    protected EventSource(EventSourceSettings settings, params string[] traits);
-    public EventSource(string eventSourceName);
-    public EventSource(string eventSourceName, EventSourceSettings config);
-    public EventSource(string eventSourceName, EventSourceSettings config, params string[] traits);
-    public EventSourceSettings Settings { get; }
-    public static string GenerateManifest(Type eventSourceType, string assemblyPathToIncludeInManifest, EventManifestOptions flags);
-    public string GetTrait(string key);
-    public bool IsEnabled(EventLevel level, EventKeywords keywords, EventChannel channel);
-    public void Write(string eventName);
-    public void Write(string eventName, EventSourceOptions options);
-    public void Write<T>(string eventName, ref EventSourceOptions options, ref Guid activityId, ref Guid relatedActivityId, ref T data);
-    public void Write<T>(string eventName, ref EventSourceOptions options, ref T data);
-    public void Write<T>(string eventName, T data);
-    protected void WriteEvent(int eventId, byte[] arg1);
-    protected void WriteEvent(int eventId, int arg1, string arg2);
-    protected void WriteEvent(int eventId, long arg1, byte[] arg2);
-    protected void WriteEvent(int eventId, long arg1, string arg2);
-    protected void WriteEventWithRelatedActivityId(int eventId, Guid childActivityIDrelatedActivityId, params object[] args);
-    protected unsafe void WriteEventWithRelatedActivityIdCore(int eventId, Guid* childActivityIDrelatedActivityId, int eventDataCount, EventSource.EventData* data);
-  }
-  [System.Runtime.InteropServices.StructLayoutAttribute(System.Runtime.InteropServices.LayoutKind.Sequential)]
-  public struct EventSourceOptions {
-    public EventActivityOptions ActivityOptions { get; set; }
-    public EventKeywords Keywords { get; set; }
-    public EventLevel Level { get; set; }
-    public EventOpcode Opcode { get; set; }
-    public EventTags Tags { get; set; }
-  }
-  public enum EventSourceSettings {
-    Default = 0,
-    EtwManifestEventFormat = 4,
-    EtwSelfDescribingEventFormat = 8,
-    ThrowOnEventWriteErrors = 1,
-  }
-  public enum EventTags {
-    None = 0,
-  }
-  public class EventWrittenEventArgs : EventArgs {
-    public EventChannel Channel { get; }
-    public string EventName { get; }
-    public ReadOnlyCollection<string> PayloadNames { get; }
-    public EventTags Tags { get; }
-  }
-}
-namespace System.DirectoryServices.ActiveDirectory {
-  public class Domain : ActiveDirectoryPartition {
-    public int DomainModeLevel { get; }
-    public void RaiseDomainFunctionalityLevel(int domainMode);
-  }
-  public enum DomainMode {
-    Unknown = -1,
-  }
-  public class Forest : IDisposable {
-    public int ForestModeLevel { get; }
-    public void RaiseForestFunctionalityLevel(int forestMode);
-  }
-  public enum ForestMode {
-    Unknown = -1,
-  }
-}
-namespace System.Globalization {
-  public class CompareInfo : IDeserializationCallback {
-    public virtual int GetHashCode(string source, CompareOptions options);
-  }
-  public class CultureInfo : ICloneable, IFormatProvider {
-    public static CultureInfo CurrentCulture { get; set; }
-    public static CultureInfo CurrentUICulture { get; set; }
-  }
-}
-namespace System.IO {
-  public class MemoryStream : Stream {
-    public virtual bool TryGetBuffer(out ArraySegment<byte> buffer);
-  }
-}
-namespace System.IO.MemoryMappedFiles {
-  public class MemoryMappedFile : IDisposable {
-    public static MemoryMappedFile CreateFromFile(FileStream fileStream, string mapName, long capacity, MemoryMappedFileAccess access, HandleInheritability inheritability, bool leaveOpen);
-    public static MemoryMappedFile CreateNew(string mapName, long capacity, MemoryMappedFileAccess access, MemoryMappedFileOptions options, HandleInheritability inheritability);
-    public static MemoryMappedFile CreateOrOpen(string mapName, long capacity, MemoryMappedFileAccess access, MemoryMappedFileOptions options, HandleInheritability inheritability);
-  }
-}
-namespace System.IO.Pipes {
-  public sealed class NamedPipeClientStream : PipeStream {
-    public Task ConnectAsync();
-    public Task ConnectAsync(int timeout);
-    public Task ConnectAsync(int timeout, CancellationToken cancellationToken);
-    public Task ConnectAsync(CancellationToken cancellationToken);
-  }
-  public sealed class NamedPipeServerStream : PipeStream {
-    public Task WaitForConnectionAsync();
-    public Task WaitForConnectionAsync(CancellationToken cancellationToken);
-  }
-}
-namespace System.Linq.Expressions {
-  public class DynamicExpression : Expression, IArgumentProvider, IDynamicExpression {
-    int System.Linq.Expressions.IArgumentProvider.ArgumentCount { get; }
-    Expression System.Linq.Expressions.IArgumentProvider.GetArgument(int index);
-    object System.Linq.Expressions.IDynamicExpression.CreateCallSite();
-    Expression System.Linq.Expressions.IDynamicExpression.Rewrite(Expression[] args);
-  }
-  public sealed class ElementInit : IArgumentProvider {
-    int System.Linq.Expressions.IArgumentProvider.ArgumentCount { get; }
-    Expression System.Linq.Expressions.IArgumentProvider.GetArgument(int index);
-  }
-  public interface IArgumentProvider {
-    int ArgumentCount { get; }
-    Expression GetArgument(int index);
-  }
-  public interface IDynamicExpression : IArgumentProvider {
-    Type DelegateType { get; }
-    object CreateCallSite();
-    Expression Rewrite(Expression[] args);
-  }
-  public sealed class IndexExpression : Expression, IArgumentProvider {
-    int System.Linq.Expressions.IArgumentProvider.ArgumentCount { get; }
-    Expression System.Linq.Expressions.IArgumentProvider.GetArgument(int index);
-  }
-  public sealed class InvocationExpression : Expression, IArgumentProvider {
-    int System.Linq.Expressions.IArgumentProvider.ArgumentCount { get; }
-    Expression System.Linq.Expressions.IArgumentProvider.GetArgument(int index);
-  }
-  public class MethodCallExpression : Expression, IArgumentProvider {
-    int System.Linq.Expressions.IArgumentProvider.ArgumentCount { get; }
-    Expression System.Linq.Expressions.IArgumentProvider.GetArgument(int index);
-  }
-  public class NewExpression : Expression, IArgumentProvider {
-    int System.Linq.Expressions.IArgumentProvider.ArgumentCount { get; }
-    Expression System.Linq.Expressions.IArgumentProvider.GetArgument(int index);
-  }
-}
-namespace System.Net {
-  public class ServicePointManager {
-    public static bool ReusePort { get; set; }
-  }
-}
-namespace System.Net.Sockets {
-  public enum SocketOptionName {
-    ReuseUnicastPort = 12295,
-  }
-  public class TcpClient : IDisposable {
-    public void Dispose();
-    void System.IDisposable.Dispose();
-  }
-  public class UdpClient : IDisposable {
-    public void Dispose();
-    void System.IDisposable.Dispose();
-  }
-}
-namespace System.Numerics {
-  [System.Runtime.InteropServices.StructLayoutAttribute(System.Runtime.InteropServices.LayoutKind.Sequential)]
-  public struct Matrix3x2 : IEquatable<Matrix3x2> {
-    public float M11;
-    public float M12;
-    public float M21;
-    public float M22;
-    public float M31;
-    public float M32;
-    public Matrix3x2(float m11, float m12, float m21, float m22, float m31, float m32);
-    public static Matrix3x2 Identity { get; }
-    public bool IsIdentity { get; }
-    public Vector2 Translation { get; set; }
-    public static Matrix3x2 Add(Matrix3x2 value1, Matrix3x2 value2);
-    public static Matrix3x2 CreateRotation(float radians);
-    public static Matrix3x2 CreateRotation(float radians, Vector2 centerPoint);
-    public static Matrix3x2 CreateScale(Vector2 scales);
-    public static Matrix3x2 CreateScale(Vector2 scales, Vector2 centerPoint);
-    public static Matrix3x2 CreateScale(float scale);
-    public static Matrix3x2 CreateScale(float scale, Vector2 centerPoint);
-    public static Matrix3x2 CreateScale(float xScale, float yScale);
-    public static Matrix3x2 CreateScale(float xScale, float yScale, Vector2 centerPoint);
-    public static Matrix3x2 CreateSkew(float radiansX, float radiansY);
-    public static Matrix3x2 CreateSkew(float radiansX, float radiansY, Vector2 centerPoint);
-    public static Matrix3x2 CreateTranslation(Vector2 position);
-    public static Matrix3x2 CreateTranslation(float xPosition, float yPosition);
-    public bool Equals(Matrix3x2 other);
-    public override bool Equals(object obj);
-    public float GetDeterminant();
-    public override int GetHashCode();
-    public static bool Invert(Matrix3x2 matrix, out Matrix3x2 result);
-    public static Matrix3x2 Lerp(Matrix3x2 matrix1, Matrix3x2 matrix2, float amount);
-    public static Matrix3x2 Multiply(Matrix3x2 value1, Matrix3x2 value2);
-    public static Matrix3x2 Multiply(Matrix3x2 value1, float value2);
-    public static Matrix3x2 Negate(Matrix3x2 value);
-    public static Matrix3x2 operator +(Matrix3x2 value1, Matrix3x2 value2);
-    public static bool operator ==(Matrix3x2 value1, Matrix3x2 value2);
-    public static bool operator !=(Matrix3x2 value1, Matrix3x2 value2);
-    public static Matrix3x2 operator *(Matrix3x2 value1, Matrix3x2 value2);
-    public static Matrix3x2 operator *(Matrix3x2 value1, float value2);
-    public static Matrix3x2 operator -(Matrix3x2 value1, Matrix3x2 value2);
-    public static Matrix3x2 operator -(Matrix3x2 value);
-    public static Matrix3x2 Subtract(Matrix3x2 value1, Matrix3x2 value2);
-    public override string ToString();
-  }
-  [System.Runtime.InteropServices.StructLayoutAttribute(System.Runtime.InteropServices.LayoutKind.Sequential)]
-  public struct Matrix4x4 : IEquatable<Matrix4x4> {
-    public float M11;
-    public float M12;
-    public float M13;
-    public float M14;
-    public float M21;
-    public float M22;
-    public float M23;
-    public float M24;
-    public float M31;
-    public float M32;
-    public float M33;
-    public float M34;
-    public float M41;
-    public float M42;
-    public float M43;
-    public float M44;
-    public Matrix4x4(Matrix3x2 value);
-    public Matrix4x4(float m11, float m12, float m13, float m14, float m21, float m22, float m23, float m24, float m31, float m32, float m33, float m34, float m41, float m42, float m43, float m44);
-    public static Matrix4x4 Identity { get; }
-    public bool IsIdentity { get; }
-    public Vector3 Translation { get; set; }
-    public static Matrix4x4 Add(Matrix4x4 value1, Matrix4x4 value2);
-    public static Matrix4x4 CreateBillboard(Vector3 objectPosition, Vector3 cameraPosition, Vector3 cameraUpVector, Vector3 cameraForwardVector);
-    public static Matrix4x4 CreateConstrainedBillboard(Vector3 objectPosition, Vector3 cameraPosition, Vector3 rotateAxis, Vector3 cameraForwardVector, Vector3 objectForwardVector);
-    public static Matrix4x4 CreateFromAxisAngle(Vector3 axis, float angle);
-    public static Matrix4x4 CreateFromQuaternion(Quaternion quaternion);
-    public static Matrix4x4 CreateFromYawPitchRoll(float yaw, float pitch, float roll);
-    public static Matrix4x4 CreateLookAt(Vector3 cameraPosition, Vector3 cameraTarget, Vector3 cameraUpVector);
-    public static Matrix4x4 CreateOrthographic(float width, float height, float zNearPlane, float zFarPlane);
-    public static Matrix4x4 CreateOrthographicOffCenter(float left, float right, float bottom, float top, float zNearPlane, float zFarPlane);
-    public static Matrix4x4 CreatePerspective(float width, float height, float nearPlaneDistance, float farPlaneDistance);
-    public static Matrix4x4 CreatePerspectiveFieldOfView(float fieldOfView, float aspectRatio, float nearPlaneDistance, float farPlaneDistance);
-    public static Matrix4x4 CreatePerspectiveOffCenter(float left, float right, float bottom, float top, float nearPlaneDistance, float farPlaneDistance);
-    public static Matrix4x4 CreateReflection(Plane value);
-    public static Matrix4x4 CreateRotationX(float radians);
-    public static Matrix4x4 CreateRotationX(float radians, Vector3 centerPoint);
-    public static Matrix4x4 CreateRotationY(float radians);
-    public static Matrix4x4 CreateRotationY(float radians, Vector3 centerPoint);
-    public static Matrix4x4 CreateRotationZ(float radians);
-    public static Matrix4x4 CreateRotationZ(float radians, Vector3 centerPoint);
-    public static Matrix4x4 CreateScale(Vector3 scales);
-    public static Matrix4x4 CreateScale(Vector3 scales, Vector3 centerPoint);
-    public static Matrix4x4 CreateScale(float scale);
-    public static Matrix4x4 CreateScale(float scale, Vector3 centerPoint);
-    public static Matrix4x4 CreateScale(float xScale, float yScale, float zScale);
-    public static Matrix4x4 CreateScale(float xScale, float yScale, float zScale, Vector3 centerPoint);
-    public static Matrix4x4 CreateShadow(Vector3 lightDirection, Plane plane);
-    public static Matrix4x4 CreateTranslation(Vector3 position);
-    public static Matrix4x4 CreateTranslation(float xPosition, float yPosition, float zPosition);
-    public static Matrix4x4 CreateWorld(Vector3 position, Vector3 forward, Vector3 up);
-    public static bool Decompose(Matrix4x4 matrix, out Vector3 scale, out Quaternion rotation, out Vector3 translation);
-    public bool Equals(Matrix4x4 other);
-    public override bool Equals(object obj);
-    public float GetDeterminant();
-    public override int GetHashCode();
-    public static bool Invert(Matrix4x4 matrix, out Matrix4x4 result);
-    public static Matrix4x4 Lerp(Matrix4x4 matrix1, Matrix4x4 matrix2, float amount);
-    public static Matrix4x4 Multiply(Matrix4x4 value1, Matrix4x4 value2);
-    public static Matrix4x4 Multiply(Matrix4x4 value1, float value2);
-    public static Matrix4x4 Negate(Matrix4x4 value);
-    public static Matrix4x4 operator +(Matrix4x4 value1, Matrix4x4 value2);
-    public static bool operator ==(Matrix4x4 value1, Matrix4x4 value2);
-    public static bool operator !=(Matrix4x4 value1, Matrix4x4 value2);
-    public static Matrix4x4 operator *(Matrix4x4 value1, Matrix4x4 value2);
-    public static Matrix4x4 operator *(Matrix4x4 value1, float value2);
-    public static Matrix4x4 operator -(Matrix4x4 value1, Matrix4x4 value2);
-    public static Matrix4x4 operator -(Matrix4x4 value);
-    public static Matrix4x4 Subtract(Matrix4x4 value1, Matrix4x4 value2);
-    public override string ToString();
-    public static Matrix4x4 Transform(Matrix4x4 value, Quaternion rotation);
-    public static Matrix4x4 Transpose(Matrix4x4 matrix);
-  }
-  [System.Runtime.InteropServices.StructLayoutAttribute(System.Runtime.InteropServices.LayoutKind.Sequential)]
-  public struct Plane : IEquatable<Plane> {
-    public Vector3 Normal;
-    public float D;
-    public Plane(Vector3 normal, float d);
-    public Plane(Vector4 value);
-    public Plane(float x, float y, float z, float d);
-    [MethodImpl(AggressiveInlining)]public static Plane CreateFromVertices(Vector3 point1, Vector3 point2, Vector3 point3);
-    [MethodImpl(AggressiveInlining)]public static float Dot(Plane plane, Vector4 value);
-    [MethodImpl(AggressiveInlining)]public static float DotCoordinate(Plane plane, Vector3 value);
-    [MethodImpl(AggressiveInlining)]public static float DotNormal(Plane plane, Vector3 value);
-    [MethodImpl(AggressiveInlining)]public bool Equals(Plane other);
-    [MethodImpl(AggressiveInlining)]public override bool Equals(object obj);
-    public override int GetHashCode();
-    [MethodImpl(AggressiveInlining)]public static Plane Normalize(Plane value);
-    [MethodImpl(AggressiveInlining)]public static bool operator ==(Plane value1, Plane value2);
-    [MethodImpl(AggressiveInlining)]public static bool operator !=(Plane value1, Plane value2);
-    public override string ToString();
-    [MethodImpl(AggressiveInlining)]public static Plane Transform(Plane plane, Matrix4x4 matrix);
-    [MethodImpl(AggressiveInlining)]public static Plane Transform(Plane plane, Quaternion rotation);
-  }
-  [System.Runtime.InteropServices.StructLayoutAttribute(System.Runtime.InteropServices.LayoutKind.Sequential)]
-  public struct Quaternion : IEquatable<Quaternion> {
-    public float W;
-    public float X;
-    public float Y;
-    public float Z;
-    public Quaternion(Vector3 vectorPart, float scalarPart);
-    public Quaternion(float x, float y, float z, float w);
-    public static Quaternion Identity { get; }
-    public bool IsIdentity { get; }
-    public static Quaternion Add(Quaternion value1, Quaternion value2);
-    public static Quaternion Concatenate(Quaternion value1, Quaternion value2);
-    public static Quaternion Conjugate(Quaternion value);
-    public static Quaternion CreateFromAxisAngle(Vector3 axis, float angle);
-    public static Quaternion CreateFromRotationMatrix(Matrix4x4 matrix);
-    public static Quaternion CreateFromYawPitchRoll(float yaw, float pitch, float roll);
-    public static Quaternion Divide(Quaternion value1, Quaternion value2);
-    public static float Dot(Quaternion quaternion1, Quaternion quaternion2);
-    public bool Equals(Quaternion other);
-    public override bool Equals(object obj);
-    public override int GetHashCode();
-    public static Quaternion Inverse(Quaternion value);
-    public float Length();
-    public float LengthSquared();
-    public static Quaternion Lerp(Quaternion quaternion1, Quaternion quaternion2, float amount);
-    public static Quaternion Multiply(Quaternion value1, Quaternion value2);
-    public static Quaternion Multiply(Quaternion value1, float value2);
-    public static Quaternion Negate(Quaternion value);
-    public static Quaternion Normalize(Quaternion value);
-    public static Quaternion operator +(Quaternion value1, Quaternion value2);
-    public static Quaternion operator /(Quaternion value1, Quaternion value2);
-    public static bool operator ==(Quaternion value1, Quaternion value2);
-    public static bool operator !=(Quaternion value1, Quaternion value2);
-    public static Quaternion operator *(Quaternion value1, Quaternion value2);
-    public static Quaternion operator *(Quaternion value1, float value2);
-    public static Quaternion operator -(Quaternion value1, Quaternion value2);
-    public static Quaternion operator -(Quaternion value);
-    public static Quaternion Slerp(Quaternion quaternion1, Quaternion quaternion2, float amount);
-    public static Quaternion Subtract(Quaternion value1, Quaternion value2);
-    public override string ToString();
-  }
-  [System.Runtime.InteropServices.StructLayoutAttribute(System.Runtime.InteropServices.LayoutKind.Sequential)]
-  public struct Vector2 : IEquatable<Vector2>, IFormattable {
-    public float X;
-    public float Y;
-    public Vector2(float value);
-    public Vector2(float x, float y);
-    public static Vector2 One { get; }
-    public static Vector2 UnitX { get; }
-    public static Vector2 UnitY { get; }
-    public static Vector2 Zero { get; }
-    [MethodImpl(AggressiveInlining)]public static Vector2 Abs(Vector2 value);
-    [MethodImpl(AggressiveInlining)]public static Vector2 Add(Vector2 left, Vector2 right);
-    [MethodImpl(AggressiveInlining)]public static Vector2 Clamp(Vector2 value1, Vector2 min, Vector2 max);
-    [MethodImpl(AggressiveInlining)]public void CopyTo(float[] array);
-    public void CopyTo(float[] array, int index);
-    [MethodImpl(AggressiveInlining)]public static float Distance(Vector2 value1, Vector2 value2);
-    [MethodImpl(AggressiveInlining)]public static float DistanceSquared(Vector2 value1, Vector2 value2);
-    [MethodImpl(AggressiveInlining)]public static Vector2 Divide(Vector2 left, Vector2 right);
-    [MethodImpl(AggressiveInlining)]public static Vector2 Divide(Vector2 left, float divisor);
-    [MethodImpl(AggressiveInlining)]public static float Dot(Vector2 value1, Vector2 value2);
-    public bool Equals(Vector2 other);
-    [MethodImpl(AggressiveInlining)]public override bool Equals(object obj);
-    public override int GetHashCode();
-    [MethodImpl(AggressiveInlining)]public float Length();
-    [MethodImpl(AggressiveInlining)]public float LengthSquared();
-    [MethodImpl(AggressiveInlining)]public static Vector2 Lerp(Vector2 value1, Vector2 value2, float amount);
-    [MethodImpl(AggressiveInlining)]public static Vector2 Max(Vector2 value1, Vector2 value2);
-    [MethodImpl(AggressiveInlining)]public static Vector2 Min(Vector2 value1, Vector2 value2);
-    [MethodImpl(AggressiveInlining)]public static Vector2 Multiply(Vector2 left, Vector2 right);
-    [MethodImpl(AggressiveInlining)]public static Vector2 Multiply(Vector2 left, float right);
-    [MethodImpl(AggressiveInlining)]public static Vector2 Multiply(float left, Vector2 right);
-    [MethodImpl(AggressiveInlining)]public static Vector2 Negate(Vector2 value);
-    [MethodImpl(AggressiveInlining)]public static Vector2 Normalize(Vector2 value);
-    [MethodImpl(AggressiveInlining)]public static Vector2 operator +(Vector2 left, Vector2 right);
-    [MethodImpl(AggressiveInlining)]public static Vector2 operator /(Vector2 left, Vector2 right);
-    [MethodImpl(AggressiveInlining)]public static Vector2 operator /(Vector2 value1, float value2);
-    [MethodImpl(AggressiveInlining)]public static bool operator ==(Vector2 left, Vector2 right);
-    [MethodImpl(AggressiveInlining)]public static bool operator !=(Vector2 left, Vector2 right);
-    [MethodImpl(AggressiveInlining)]public static Vector2 operator *(Vector2 left, Vector2 right);
-    [MethodImpl(AggressiveInlining)]public static Vector2 operator *(Vector2 left, float right);
-    [MethodImpl(AggressiveInlining)]public static Vector2 operator *(float left, Vector2 right);
-    [MethodImpl(AggressiveInlining)]public static Vector2 operator -(Vector2 left, Vector2 right);
-    [MethodImpl(AggressiveInlining)]public static Vector2 operator -(Vector2 value);
-    [MethodImpl(AggressiveInlining)]public static Vector2 Reflect(Vector2 vector, Vector2 normal);
-    [MethodImpl(AggressiveInlining)]public static Vector2 SquareRoot(Vector2 value);
-    [MethodImpl(AggressiveInlining)]public static Vector2 Subtract(Vector2 left, Vector2 right);
-    public override string ToString();
-    public string ToString(string format);
-    public string ToString(string format, IFormatProvider formatProvider);
-    [MethodImpl(AggressiveInlining)]public static Vector2 Transform(Vector2 position, Matrix3x2 matrix);
-    [MethodImpl(AggressiveInlining)]public static Vector2 Transform(Vector2 position, Matrix4x4 matrix);
-    [MethodImpl(AggressiveInlining)]public static Vector2 Transform(Vector2 value, Quaternion rotation);
-    [MethodImpl(AggressiveInlining)]public static Vector2 TransformNormal(Vector2 normal, Matrix3x2 matrix);
-    [MethodImpl(AggressiveInlining)]public static Vector2 TransformNormal(Vector2 normal, Matrix4x4 matrix);
-  }
-  [System.Runtime.InteropServices.StructLayoutAttribute(System.Runtime.InteropServices.LayoutKind.Sequential)]
-  public struct Vector3 : IEquatable<Vector3>, IFormattable {
-    public float X;
-    public float Y;
-    public float Z;
-    public Vector3(Vector2 value, float z);
-    public Vector3(float value);
-    public Vector3(float x, float y, float z);
-    public static Vector3 One { get; }
-    public static Vector3 UnitX { get; }
-    public static Vector3 UnitY { get; }
-    public static Vector3 UnitZ { get; }
-    public static Vector3 Zero { get; }
-    [MethodImpl(AggressiveInlining)]public static Vector3 Abs(Vector3 value);
-    [MethodImpl(AggressiveInlining)]public static Vector3 Add(Vector3 left, Vector3 right);
-    [MethodImpl(AggressiveInlining)]public static Vector3 Clamp(Vector3 value1, Vector3 min, Vector3 max);
-    [MethodImpl(AggressiveInlining)]public void CopyTo(float[] array);
-    [MethodImpl(AggressiveInlining)]public void CopyTo(float[] array, int index);
-    [MethodImpl(AggressiveInlining)]public static Vector3 Cross(Vector3 vector1, Vector3 vector2);
-    [MethodImpl(AggressiveInlining)]public static float Distance(Vector3 value1, Vector3 value2);
-    [MethodImpl(AggressiveInlining)]public static float DistanceSquared(Vector3 value1, Vector3 value2);
-    [MethodImpl(AggressiveInlining)]public static Vector3 Divide(Vector3 left, Vector3 right);
-    [MethodImpl(AggressiveInlining)]public static Vector3 Divide(Vector3 left, float divisor);
-    [MethodImpl(AggressiveInlining)]public static float Dot(Vector3 vector1, Vector3 vector2);
-    public bool Equals(Vector3 other);
-    [MethodImpl(AggressiveInlining)]public override bool Equals(object obj);
-    public override int GetHashCode();
-    [MethodImpl(AggressiveInlining)]public float Length();
-    [MethodImpl(AggressiveInlining)]public float LengthSquared();
-    [MethodImpl(AggressiveInlining)]public static Vector3 Lerp(Vector3 value1, Vector3 value2, float amount);
-    [MethodImpl(AggressiveInlining)]public static Vector3 Max(Vector3 value1, Vector3 value2);
-    public static Vector3 Min(Vector3 value1, Vector3 value2);
-    [MethodImpl(AggressiveInlining)]public static Vector3 Multiply(Vector3 left, Vector3 right);
-    [MethodImpl(AggressiveInlining)]public static Vector3 Multiply(Vector3 left, float right);
-    [MethodImpl(AggressiveInlining)]public static Vector3 Multiply(float left, Vector3 right);
-    [MethodImpl(AggressiveInlining)]public static Vector3 Negate(Vector3 value);
-    [MethodImpl(AggressiveInlining)]public static Vector3 Normalize(Vector3 value);
-    [MethodImpl(AggressiveInlining)]public static Vector3 operator +(Vector3 left, Vector3 right);
-    [MethodImpl(AggressiveInlining)]public static Vector3 operator /(Vector3 left, Vector3 right);
-    [MethodImpl(AggressiveInlining)]public static Vector3 operator /(Vector3 value1, float value2);
-    [MethodImpl(AggressiveInlining)]public static bool operator ==(Vector3 left, Vector3 right);
-    [MethodImpl(AggressiveInlining)]public static bool operator !=(Vector3 left, Vector3 right);
-    [MethodImpl(AggressiveInlining)]public static Vector3 operator *(Vector3 left, Vector3 right);
-    [MethodImpl(AggressiveInlining)]public static Vector3 operator *(Vector3 left, float right);
-    [MethodImpl(AggressiveInlining)]public static Vector3 operator *(float left, Vector3 right);
-    [MethodImpl(AggressiveInlining)]public static Vector3 operator -(Vector3 left, Vector3 right);
-    [MethodImpl(AggressiveInlining)]public static Vector3 operator -(Vector3 value);
-    [MethodImpl(AggressiveInlining)]public static Vector3 Reflect(Vector3 vector, Vector3 normal);
-    [MethodImpl(AggressiveInlining)]public static Vector3 SquareRoot(Vector3 value);
-    [MethodImpl(AggressiveInlining)]public static Vector3 Subtract(Vector3 left, Vector3 right);
-    public override string ToString();
-    public string ToString(string format);
-    public string ToString(string format, IFormatProvider formatProvider);
-    [MethodImpl(AggressiveInlining)]public static Vector3 Transform(Vector3 position, Matrix4x4 matrix);
-    [MethodImpl(AggressiveInlining)]public static Vector3 Transform(Vector3 value, Quaternion rotation);
-    [MethodImpl(AggressiveInlining)]public static Vector3 TransformNormal(Vector3 normal, Matrix4x4 matrix);
-  }
-  [System.Runtime.InteropServices.StructLayoutAttribute(System.Runtime.InteropServices.LayoutKind.Sequential)]
-  public struct Vector4 : IEquatable<Vector4>, IFormattable {
-    public float W;
-    public float X;
-    public float Y;
-    public float Z;
-    public Vector4(Vector2 value, float z, float w);
-    public Vector4(Vector3 value, float w);
-    public Vector4(float value);
-    public Vector4(float x, float y, float z, float w);
-    public static Vector4 One { get; }
-    public static Vector4 UnitW { get; }
-    public static Vector4 UnitX { get; }
-    public static Vector4 UnitY { get; }
-    public static Vector4 UnitZ { get; }
-    public static Vector4 Zero { get; }
-    [MethodImpl(AggressiveInlining)]public static Vector4 Abs(Vector4 value);
-    [MethodImpl(AggressiveInlining)]public static Vector4 Add(Vector4 left, Vector4 right);
-    [MethodImpl(AggressiveInlining)]public static Vector4 Clamp(Vector4 value1, Vector4 min, Vector4 max);
-    [MethodImpl(AggressiveInlining)]public void CopyTo(float[] array);
-    [MethodImpl(AggressiveInlining)]public void CopyTo(float[] array, int index);
-    [MethodImpl(AggressiveInlining)]public static float Distance(Vector4 value1, Vector4 value2);
-    [MethodImpl(AggressiveInlining)]public static float DistanceSquared(Vector4 value1, Vector4 value2);
-    [MethodImpl(AggressiveInlining)]public static Vector4 Divide(Vector4 left, Vector4 right);
-    [MethodImpl(AggressiveInlining)]public static Vector4 Divide(Vector4 left, float divisor);
-    [MethodImpl(AggressiveInlining)]public static float Dot(Vector4 vector1, Vector4 vector2);
-    public bool Equals(Vector4 other);
-    [MethodImpl(AggressiveInlining)]public override bool Equals(object obj);
-    public override int GetHashCode();
-    [MethodImpl(AggressiveInlining)]public float Length();
-    [MethodImpl(AggressiveInlining)]public float LengthSquared();
-    [MethodImpl(AggressiveInlining)]public static Vector4 Lerp(Vector4 value1, Vector4 value2, float amount);
-    [MethodImpl(AggressiveInlining)]public static Vector4 Max(Vector4 value1, Vector4 value2);
-    [MethodImpl(AggressiveInlining)]public static Vector4 Min(Vector4 value1, Vector4 value2);
-    [MethodImpl(AggressiveInlining)]public static Vector4 Multiply(Vector4 left, Vector4 right);
-    [MethodImpl(AggressiveInlining)]public static Vector4 Multiply(Vector4 left, float right);
-    [MethodImpl(AggressiveInlining)]public static Vector4 Multiply(float left, Vector4 right);
-    [MethodImpl(AggressiveInlining)]public static Vector4 Negate(Vector4 value);
-    [MethodImpl(AggressiveInlining)]public static Vector4 Normalize(Vector4 vector);
-    [MethodImpl(AggressiveInlining)]public static Vector4 operator +(Vector4 left, Vector4 right);
-    [MethodImpl(AggressiveInlining)]public static Vector4 operator /(Vector4 left, Vector4 right);
-    [MethodImpl(AggressiveInlining)]public static Vector4 operator /(Vector4 value1, float value2);
-    [MethodImpl(AggressiveInlining)]public static bool operator ==(Vector4 left, Vector4 right);
-    [MethodImpl(AggressiveInlining)]public static bool operator !=(Vector4 left, Vector4 right);
-    [MethodImpl(AggressiveInlining)]public static Vector4 operator *(Vector4 left, Vector4 right);
-    [MethodImpl(AggressiveInlining)]public static Vector4 operator *(Vector4 left, float right);
-    [MethodImpl(AggressiveInlining)]public static Vector4 operator *(float left, Vector4 right);
-    [MethodImpl(AggressiveInlining)]public static Vector4 operator -(Vector4 left, Vector4 right);
-    [MethodImpl(AggressiveInlining)]public static Vector4 operator -(Vector4 value);
-    [MethodImpl(AggressiveInlining)]public static Vector4 SquareRoot(Vector4 value);
-    [MethodImpl(AggressiveInlining)]public static Vector4 Subtract(Vector4 left, Vector4 right);
-    public override string ToString();
-    public string ToString(string format);
-    public string ToString(string format, IFormatProvider formatProvider);
-    [MethodImpl(AggressiveInlining)]public static Vector4 Transform(Vector2 position, Matrix4x4 matrix);
-    [MethodImpl(AggressiveInlining)]public static Vector4 Transform(Vector2 value, Quaternion rotation);
-    [MethodImpl(AggressiveInlining)]public static Vector4 Transform(Vector3 position, Matrix4x4 matrix);
-    [MethodImpl(AggressiveInlining)]public static Vector4 Transform(Vector3 value, Quaternion rotation);
-    [MethodImpl(AggressiveInlining)]public static Vector4 Transform(Vector4 vector, Matrix4x4 matrix);
-    [MethodImpl(AggressiveInlining)]public static Vector4 Transform(Vector4 value, Quaternion rotation);
-  }
-}
-namespace System.Reflection {
-  public sealed class AssemblyName : _AssemblyName, ICloneable, IDeserializationCallback, ISerializable {
-    public string CultureName { get; set; }
-  }
-}
-namespace System.Runtime {
-  public enum GCLatencyMode {
-    NoGCRegion = 4,
-  }
-}
-namespace System.Runtime.CompilerServices {
-  public sealed class DisablePrivateReflectionAttribute : Attribute {
-    public DisablePrivateReflectionAttribute();
-  }
-  public static class FormattableStringFactory {
-    public static FormattableString Create(string format, params object[] arguments);
-  }
-}
-namespace System.Runtime.InteropServices {
-  public static class Marshal {
-    [MethodImpl(InternalCall)]public static IntPtr CreateAggregatedObject(IntPtr pOuter, object o);
-    [MethodImpl(InternalCall)]public static void DestroyStructure(IntPtr ptr, Type structuretype);
-    [MethodImpl(InternalCall)]public static int GetExceptionCode();
-    [MethodImpl(InternalCall)]public static void GetNativeVariantForObject(object obj, IntPtr pDstNativeVariant);
-    [MethodImpl(InternalCall)]public static object GetObjectForIUnknown(IntPtr pUnk);
-    [MethodImpl(InternalCall)]public static object GetObjectForNativeVariant(IntPtr pSrcNativeVariant);
-    [MethodImpl(InternalCall)]public static object[] GetObjectsForNativeVariants(IntPtr aSrcNativeVariant, int cVars);
-    [MethodImpl(InternalCall)]public static int GetStartComSlot(Type t);
-    [MethodImpl(InternalCall)]public static object GetUniqueObjectForIUnknown(IntPtr unknown);
-    [MethodImpl(InternalCall)]public static void StructureToPtr(object structure, IntPtr ptr, bool fDeleteOld);
-    [MethodImpl(InternalCall)]public static IntPtr UnsafeAddrOfPinnedArrayElement(Array arr, int index);
-  }
-}
-namespace System.Runtime.Serialization {
-  public sealed class CollectionDataContractAttribute : Attribute {
-    public bool IsItemNameSetExplicitly { get; }
-    public bool IsKeyNameSetExplicitly { get; }
-    public bool IsNameSetExplicitly { get; }
-    public bool IsNamespaceSetExplicitly { get; }
-    public bool IsReferenceSetExplicitly { get; }
-    public bool IsValueNameSetExplicitly { get; }
-  }
-  public sealed class DataContractAttribute : Attribute {
-    public bool IsNameSetExplicitly { get; }
-    public bool IsNamespaceSetExplicitly { get; }
-    public bool IsReferenceSetExplicitly { get; }
-  }
-  public sealed class DataMemberAttribute : Attribute {
-    public bool IsNameSetExplicitly { get; }
-  }
-  public sealed class EnumMemberAttribute : Attribute {
-    public bool IsValueSetExplicitly { get; }
-  }
-}
-namespace System.Security.AccessControl {
-  public sealed class AuthorizationRuleCollection : ReadOnlyCollectionBase {
-    public AuthorizationRuleCollection();
-    public void AddRule(AuthorizationRule rule);
-  }
-  public sealed class CommonSecurityDescriptor : GenericSecurityDescriptor {
-    public void AddDiscretionaryAcl(byte revision, int trusted);
-    public void AddSystemAcl(byte revision, int trusted);
-  }
-  public sealed class DiscretionaryAcl : CommonAcl {
-    public void AddAccess(AccessControlType accessType, SecurityIdentifier sid, ObjectAccessRule rule);
-    public bool RemoveAccess(AccessControlType accessType, SecurityIdentifier sid, ObjectAccessRule rule);
-    public void RemoveAccessSpecific(AccessControlType accessType, SecurityIdentifier sid, ObjectAccessRule rule);
-    public void SetAccess(AccessControlType accessType, SecurityIdentifier sid, ObjectAccessRule rule);
-  }
-  public abstract class ObjectSecurity {
-    protected ObjectSecurity();
-    protected ObjectSecurity(CommonSecurityDescriptor securityDescriptor);
-  }
-  public sealed class SystemAcl : CommonAcl {
-    public void AddAudit(SecurityIdentifier sid, ObjectAuditRule rule);
-    public bool RemoveAudit(SecurityIdentifier sid, ObjectAuditRule rule);
-    public void RemoveAuditSpecific(SecurityIdentifier sid, ObjectAuditRule rule);
-    public void SetAudit(SecurityIdentifier sid, ObjectAuditRule rule);
-  }
-}
-namespace System.Security.Claims {
-  public class Claim {
-    public Claim(BinaryReader reader);
-    public Claim(BinaryReader reader, ClaimsIdentity subject);
-    protected Claim(Claim other);
-    protected Claim(Claim other, ClaimsIdentity subject);
-    protected virtual byte[] CustomSerializationData { get; }
-    public virtual void WriteTo(BinaryWriter writer);
-    protected virtual void WriteTo(BinaryWriter writer, byte[] userData);
-  }
-  public class ClaimsIdentity : IIdentity {
-    public ClaimsIdentity(BinaryReader reader);
-    protected ClaimsIdentity(ClaimsIdentity other);
-    protected virtual byte[] CustomSerializationData { get; }
-    protected virtual Claim CreateClaim(BinaryReader reader);
-    public virtual void WriteTo(BinaryWriter writer);
-    protected virtual void WriteTo(BinaryWriter writer, byte[] userData);
-  }
-  public class ClaimsPrincipal : IPrincipal {
-    public ClaimsPrincipal(BinaryReader reader);
-    protected virtual byte[] CustomSerializationData { get; }
-    public virtual ClaimsPrincipal Clone();
-    protected virtual ClaimsIdentity CreateClaimsIdentity(BinaryReader reader);
-    public virtual void WriteTo(BinaryWriter writer);
-    protected virtual void WriteTo(BinaryWriter writer, byte[] userData);
-  }
-}
-namespace System.Security.Cryptography {
-  public abstract class AsymmetricAlgorithm : IDisposable {
-    public abstractvirtual string KeyExchangeAlgorithm { get; }
-    public abstractvirtual string SignatureAlgorithm { get; }
-    public abstractvirtual void FromXmlString(string xmlString);
-    public abstractvirtual string ToXmlString(bool includePrivateParameters);
-  }
-  public sealed class CngAlgorithm : IEquatable<CngAlgorithm> {
-    public static CngAlgorithm Rsa { get; }
-  }
-  [System.Runtime.InteropServices.StructLayoutAttribute(System.Runtime.InteropServices.LayoutKind.Sequential)]
-  public struct HashAlgorithmName : IEquatable<HashAlgorithmName> {
-    public HashAlgorithmName(string name);
-    public static HashAlgorithmName MD5 { get; }
-    public string Name { get; }
-    public static HashAlgorithmName SHA1 { get; }
-    public static HashAlgorithmName SHA256 { get; }
-    public static HashAlgorithmName SHA384 { get; }
-    public static HashAlgorithmName SHA512 { get; }
-    public override bool Equals(object obj);
-    public bool Equals(HashAlgorithmName other);
-    public override int GetHashCode();
-    public static bool operator ==(HashAlgorithmName left, HashAlgorithmName right);
-    public static bool operator !=(HashAlgorithmName left, HashAlgorithmName right);
-    public override string ToString();
-  }
-  public abstract class RandomNumberGenerator : IDisposable {
-    public virtual void GetBytes(byte[] data, int offset, int count);
-  }
-  public class Rfc2898DeriveBytes : DeriveBytes {
-    public byte[] CryptDeriveKey(string algname, string alghashname, int keySize, byte[] rgbIV);
-  }
-  public abstract class RSA : AsymmetricAlgorithm {
-    public override string KeyExchangeAlgorithm { get; }
-    public override string SignatureAlgorithm { get; }
-    public virtual byte[] Decrypt(byte[] data, RSAEncryptionPadding padding);
-    public abstractvirtual byte[] DecryptValue(byte[] rgb);
-    public virtual byte[] Encrypt(byte[] data, RSAEncryptionPadding padding);
-    public abstractvirtual byte[] EncryptValue(byte[] rgb);
-    protected virtual byte[] HashData(byte[] data, int offset, int count, HashAlgorithmName hashAlgorithm);
-    protected virtual byte[] HashData(Stream data, HashAlgorithmName hashAlgorithm);
-    public virtual byte[] SignData(byte[] data, int offset, int count, HashAlgorithmName hashAlgorithm, RSASignaturePadding padding);
-    public byte[] SignData(byte[] data, HashAlgorithmName hashAlgorithm, RSASignaturePadding padding);
-    public virtual byte[] SignData(Stream data, HashAlgorithmName hashAlgorithm, RSASignaturePadding padding);
-    public virtual byte[] SignHash(byte[] hash, HashAlgorithmName hashAlgorithm, RSASignaturePadding padding);
-    public bool VerifyData(byte[] data, byte[] signature, HashAlgorithmName hashAlgorithm, RSASignaturePadding padding);
-    public virtual bool VerifyData(byte[] data, int offset, int count, byte[] signature, HashAlgorithmName hashAlgorithm, RSASignaturePadding padding);
-    public bool VerifyData(Stream data, byte[] signature, HashAlgorithmName hashAlgorithm, RSASignaturePadding padding);
-    public virtual bool VerifyHash(byte[] hash, byte[] signature, HashAlgorithmName hashAlgorithm, RSASignaturePadding padding);
-  }
-  public sealed class RSACng : RSA {
-    public RSACng();
-    public RSACng(int keySize);
-    public RSACng(CngKey key);
-    public CngKey Key { get; }
-    public override byte[] Decrypt(byte[] data, RSAEncryptionPadding padding);
-    protected override void Dispose(bool disposing);
-    public override byte[] Encrypt(byte[] data, RSAEncryptionPadding padding);
-    public override RSAParameters ExportParameters(bool includePrivateParameters);
-    protected override byte[] HashData(byte[] data, int offset, int count, HashAlgorithmName hashAlgorithm);
-    protected override byte[] HashData(Stream data, HashAlgorithmName hashAlgorithm);
-    public override void ImportParameters(RSAParameters parameters);
-    public override byte[] SignHash(byte[] hash, HashAlgorithmName hashAlgorithm, RSASignaturePadding padding);
-    public override bool VerifyHash(byte[] hash, byte[] signature, HashAlgorithmName hashAlgorithm, RSASignaturePadding padding);
-  }
-  public sealed class RSACryptoServiceProvider : RSA, ICspAsymmetricAlgorithm {
-    public override byte[] Decrypt(byte[] data, RSAEncryptionPadding padding);
-    public override byte[] Encrypt(byte[] data, RSAEncryptionPadding padding);
-    protected override byte[] HashData(byte[] data, int offset, int count, HashAlgorithmName hashAlgorithm);
-    protected override byte[] HashData(Stream data, HashAlgorithmName hashAlgorithm);
-    public override byte[] SignHash(byte[] hash, HashAlgorithmName hashAlgorithm, RSASignaturePadding padding);
-    public override bool VerifyHash(byte[] hash, byte[] signature, HashAlgorithmName hashAlgorithm, RSASignaturePadding padding);
-  }
-  public sealed class RSAEncryptionPadding : IEquatable<RSAEncryptionPadding> {
-    public RSAEncryptionPaddingMode Mode { get; }
-    public HashAlgorithmName OaepHashAlgorithm { get; }
-    public static RSAEncryptionPadding OaepSHA1 { get; }
-    public static RSAEncryptionPadding OaepSHA256 { get; }
-    public static RSAEncryptionPadding OaepSHA384 { get; }
-    public static RSAEncryptionPadding OaepSHA512 { get; }
-    public static RSAEncryptionPadding Pkcs1 { get; }
-    public static RSAEncryptionPadding CreateOaep(HashAlgorithmName hashAlgorithm);
-    public override bool Equals(object obj);
-    public bool Equals(RSAEncryptionPadding other);
-    public override int GetHashCode();
-    public static bool operator ==(RSAEncryptionPadding left, RSAEncryptionPadding right);
-    public static bool operator !=(RSAEncryptionPadding left, RSAEncryptionPadding right);
-    public override string ToString();
-  }
-  public enum RSAEncryptionPaddingMode {
-    Oaep = 1,
-    Pkcs1 = 0,
-  }
-  public sealed class RSASignaturePadding : IEquatable<RSASignaturePadding> {
-    public RSASignaturePaddingMode Mode { get; }
-    public static RSASignaturePadding Pkcs1 { get; }
-    public static RSASignaturePadding Pss { get; }
-    public override bool Equals(object obj);
-    public bool Equals(RSASignaturePadding other);
-    public override int GetHashCode();
-    public static bool operator ==(RSASignaturePadding left, RSASignaturePadding right);
-    public static bool operator !=(RSASignaturePadding left, RSASignaturePadding right);
-    public override string ToString();
-  }
-  public enum RSASignaturePaddingMode {
-    Pkcs1 = 0,
-    Pss = 1,
-  }
-}
-namespace System.Security.Cryptography.X509Certificates {
-  public static class RSACertificateExtensions {
-    public static RSA GetRSAPrivateKey(this X509Certificate2 certificate);
-    public static RSA GetRSAPublicKey(this X509Certificate2 certificate);
-  }
-  public class X509Certificate : IDeserializationCallback, IDisposable, ISerializable {
-    public void Dispose();
-    protected virtual void Dispose(bool disposing);
-  }
-  public class X509Chain : IDisposable {
-    public SafeX509ChainHandle SafeHandle { get; }
-    public void Dispose();
-    protected virtual void Dispose(bool disposing);
-  }
-  public sealed class X509Store : IDisposable {
-    public void Dispose();
-  }
-}
-namespace System.Security.Cryptography.Xml {
-  public class EncryptedXml {
-    public int XmlDSigSearchDepth { get; set; }
-  }
-}
-namespace System.Security.Principal {
-  public class WindowsIdentity : ClaimsIdentity, IDeserializationCallback, IDisposable, ISerializable {
-    public SafeAccessTokenHandle AccessToken { get; }
-    public static void RunImpersonated(SafeAccessTokenHandle safeAccessTokenHandle, Action action);
-    public static T RunImpersonated<T>(SafeAccessTokenHandle safeAccessTokenHandle, Func<T> func);
-  }
-}
-namespace System.ServiceModel {
-  public sealed class TcpTransportSecurity {
-    public SslProtocols SslProtocols { get; set; }
-  }
-}
-namespace System.ServiceModel.Channels {
-  public class SslStreamSecurityBindingElement : StreamUpgradeBindingElement, IPolicyExportExtension, ITransportTokenAssertionProvider {
-    public SslProtocols SslProtocols { get; set; }
-  }
-}
-namespace System.ServiceModel.Configuration {
-  public sealed class SslStreamSecurityElement : BindingElementExtensionElement {
-    public SslProtocols SslProtocols { get; }
-  }
-  public sealed class TcpTransportSecurityElement : ServiceModelConfigurationElement {
-    public SslProtocols SslProtocols { get; }
-  }
-}
-namespace System.Text {
-  public abstract class Encoding : ICloneable {
-    protected Encoding(int codePage, EncoderFallback encoderFallback, DecoderFallback decoderFallback);
-    public unsafe string GetString(byte* bytes, int byteCount);
-    public static void RegisterProvider(EncodingProvider provider);
-  }
-  public abstract class EncodingProvider {
-    public EncodingProvider();
-    public abstract Encoding GetEncoding(int codepage);
-    public virtual Encoding GetEncoding(int codepage, EncoderFallback encoderFallback, DecoderFallback decoderFallback);
-    public abstract Encoding GetEncoding(string name);
-    public virtual Encoding GetEncoding(string name, EncoderFallback encoderFallback, DecoderFallback decoderFallback);
-  }
-  public sealed class StringBuilder : ISerializable {
-    public unsafe StringBuilder Append(char* value, int valueCount);
-    public StringBuilder AppendFormat(IFormatProvider provider, string format, object arg0);
-    public StringBuilder AppendFormat(IFormatProvider provider, string format, object arg0, object arg1);
-    public StringBuilder AppendFormat(IFormatProvider provider, string format, object arg0, object arg1, object arg2);
-  }
-}
-namespace System.Threading {
-  public sealed class AsyncLocal<T> {
-    public AsyncLocal();
-    public AsyncLocal(Action<AsyncLocalValueChangedArgs<T>> valueChangedHandler);
-    public T Value { get; set; }
-  }
-  [System.Runtime.InteropServices.StructLayoutAttribute(System.Runtime.InteropServices.LayoutKind.Sequential)]
-  public struct AsyncLocalValueChangedArgs<T> {
-    public T CurrentValue { get; }
-    public T PreviousValue { get; }
-    public bool ThreadContextChanged { get; }
-  }
-  public static class WaitHandleExtensions {
-    public static SafeWaitHandle GetSafeWaitHandle(this WaitHandle waitHandle);
-    public static void SetSafeWaitHandle(this WaitHandle waitHandle, SafeWaitHandle value);
-  }
-}
-namespace System.Threading.Tasks {
-  public class Task : IAsyncResult, IDisposable {
-    public static Task CompletedTask { get; }
-    public static Task FromCanceled(CancellationToken cancellationToken);
-    public static Task<TResult> FromCanceled<TResult>(CancellationToken cancellationToken);
-    public static Task FromException(Exception exception);
-    public static Task<TResult> FromException<TResult>(Exception exception);
-  }
-  public class TaskCompletionSource<TResult> {
-    public bool TrySetCanceled(CancellationToken cancellationToken);
-  }
-  public enum TaskContinuationOptions {
-    RunContinuationsAsynchronously = 64,
-  }
-  public enum TaskCreationOptions {
-    RunContinuationsAsynchronously = 64,
-  }
-}
-namespace System.Web {
-  public sealed class HttpRequest {
-    public ITlsTokenBindingInfo TlsTokenBindingInfo { get; }
-  }
-  public abstract class HttpRequestBase {
-    public virtual ITlsTokenBindingInfo TlsTokenBindingInfo { get; }
-  }
-  public class HttpRequestWrapper : HttpRequestBase {
-    public override ITlsTokenBindingInfo TlsTokenBindingInfo { get; }
-  }
-  public sealed class HttpResponse {
-    public Task FlushAsync();
-    public void PushPromise(string path);
-    public void PushPromise(string path, string method, NameValueCollection headers);
-  }
-  public abstract class HttpResponseBase {
-    public virtual Task FlushAsync();
-    public virtual void PushPromise(string path);
-    public virtual void PushPromise(string path, string method, NameValueCollection headers);
-  }
-  public class HttpResponseWrapper : HttpResponseBase {
-    public override Task FlushAsync();
-    public override void PushPromise(string path);
-    public override void PushPromise(string path, string method, NameValueCollection headers);
-  }
-  public interface ITlsTokenBindingInfo {
-    byte[] GetProvidedTokenBindingId();
-    byte[] GetReferredTokenBindingId();
-  }
-}
-namespace System.Web.UI.WebControls {
-  public class ModelDataSourceView : DataSourceView, IStateManager {
-    public override void Delete(IDictionary keys, IDictionary oldValues, DataSourceViewOperationCallback callback);
-    public override void Insert(IDictionary values, DataSourceViewOperationCallback callback);
-    public override void Select(DataSourceSelectArguments arguments, DataSourceViewSelectCallback callback);
-    public override void Update(IDictionary keys, IDictionary values, IDictionary oldValues, DataSourceViewOperationCallback callback);
-  }
-  public sealed class SelectResult {
-    public SelectResult(int totalRowCount, IEnumerable results);
-    public IEnumerable Results { get; }
-    public int TotalRowCount { get; }
-  }
-}
-namespace System.Windows {
-  public static class CoreCompatibilityPreferences {
-    public static Nullable<bool> EnableMultiMonitorDisplayClipping { get; set; }
-  }
-}
-namespace System.Windows.Diagnostics {
-  public static class VisualDiagnostics {
-    public static event EventHandler<VisualTreeChangeEventArgs> VisualTreeChanged;
-    public static XamlSourceInfo GetXamlSourceInfo(object obj);
-  }
-  public class VisualTreeChangeEventArgs : EventArgs {
-    public VisualTreeChangeEventArgs(DependencyObject parent, DependencyObject child, int childIndex, VisualTreeChangeType changeType);
-    public VisualTreeChangeType ChangeType { get; }
-    public DependencyObject Child { get; }
-    public int ChildIndex { get; }
-    public DependencyObject Parent { get; }
-  }
-  public enum VisualTreeChangeType {
-    Add = 0,
-    Remove = 1,
-  }
-  public class XamlSourceInfo {
-    public XamlSourceInfo(Uri sourceUri, int lineNumber, int linePosition);
-    public int LineNumber { get; }
-    public int LinePosition { get; }
-    public Uri SourceUri { get; }
-  }
-}
-namespace System.Windows.Forms {
-  public class MonthCalendar : Control {
-    protected override void DefWndProc(ref Message m);
-  }
-}
-namespace System.Windows.Input {
-  public sealed class Cursor : IDisposable {
-    public Cursor(Stream cursorStream, bool scaleWithDpi);
-    public Cursor(string cursorFile, bool scaleWithDpi);
-  }
-  public sealed class StylusDevice : InputDevice {
-    public bool IsValid { get; }
-  }
-}
-namespace System.Windows.Interop {
-  [System.Runtime.InteropServices.StructLayoutAttribute(System.Runtime.InteropServices.LayoutKind.Sequential)]
-  public struct HwndSourceParameters {
-    public bool UsesPerPixelTransparency { get; set; }
-  }
-}
-namespace System.Xaml {
-  public class XamlObjectEventArgs : EventArgs {
-    public int ElementLineNumber { get; }
-    public int ElementLinePosition { get; }
-    public Uri SourceBamlUri { get; }
-  }
-}
-namespace System.Xml {
-  public class XmlCDataSection : XmlCharacterData {
-    public override XmlNode PreviousText { get; }
-  }
-  public abstract class XmlNode : ICloneable, IEnumerable, IXPathNavigable {
-    public virtual XmlNode PreviousText { get; }
-  }
-  public class XmlSignificantWhitespace : XmlCharacterData {
-    public override XmlNode PreviousText { get; }
-  }
-  public class XmlText : XmlCharacterData {
-    public override XmlNode PreviousText { get; }
-  }
-  public class XmlWhitespace : XmlCharacterData {
-    public override XmlNode PreviousText { get; }
-  }
-}
-
\ No newline at end of file +```diff + namespace System { ++ public static class AppContext { ++ public static string BaseDirectory { get; } ++ public static void SetSwitch(string switchName, bool isEnabled); ++ public static bool TryGetSwitch(string switchName, out bool isEnabled); ++ } + public abstract class Array : ICloneable, ICollection, IEnumerable, IList, IStructuralComparable, IStructuralEquatable { ++ public static T[] Empty(); + } + public static class Buffer { ++ [MethodImpl(AggressiveInlining)]public unsafe static void MemoryCopy(void* source, void* destination, long destinationSizeInBytes, long sourceBytesToCopy); ++ [MethodImpl(AggressiveInlining)]public unsafe static void MemoryCopy(void* source, void* destination, ulong destinationSizeInBytes, ulong sourceBytesToCopy); + } + public static class Console { +- public static int Read(); ++ [MethodImpl(NoInlining)]public static int Read(); +- public static string ReadLine(); ++ [MethodImpl(NoInlining)]public static string ReadLine(); +- public static void Write(bool value); ++ [MethodImpl(NoInlining)]public static void Write(bool value); +- public static void Write(char value); ++ [MethodImpl(NoInlining)]public static void Write(char value); +- public static void Write(char[] buffer); ++ [MethodImpl(NoInlining)]public static void Write(char[] buffer); +- public static void Write(char[] buffer, int index, int count); ++ [MethodImpl(NoInlining)]public static void Write(char[] buffer, int index, int count); +- public static void Write(decimal value); ++ [MethodImpl(NoInlining)]public static void Write(decimal value); +- public static void Write(double value); ++ [MethodImpl(NoInlining)]public static void Write(double value); +- public static void Write(int value); ++ [MethodImpl(NoInlining)]public static void Write(int value); +- public static void Write(long value); ++ [MethodImpl(NoInlining)]public static void Write(long value); +- public static void Write(object value); ++ [MethodImpl(NoInlining)]public static void Write(object value); +- public static void Write(float value); ++ [MethodImpl(NoInlining)]public static void Write(float value); +- public static void Write(string value); ++ [MethodImpl(NoInlining)]public static void Write(string value); +- public static void Write(string format, object arg0); ++ [MethodImpl(NoInlining)]public static void Write(string format, object arg0); +- public static void Write(string format, object arg0, object arg1); ++ [MethodImpl(NoInlining)]public static void Write(string format, object arg0, object arg1); +- public static void Write(string format, object arg0, object arg1, object arg2); ++ [MethodImpl(NoInlining)]public static void Write(string format, object arg0, object arg1, object arg2); +- public static void Write(string format, object arg0, object arg1, object arg2, object arg3, __arglist); ++ [MethodImpl(NoInlining)]public static void Write(string format, object arg0, object arg1, object arg2, object arg3, __arglist); +- public static void Write(string format, params object[] arg); ++ [MethodImpl(NoInlining)]public static void Write(string format, params object[] arg); +- public static void Write(uint value); ++ [MethodImpl(NoInlining)]public static void Write(uint value); +- public static void Write(ulong value); ++ [MethodImpl(NoInlining)]public static void Write(ulong value); +- public static void WriteLine(); ++ [MethodImpl(NoInlining)]public static void WriteLine(); +- public static void WriteLine(bool value); ++ [MethodImpl(NoInlining)]public static void WriteLine(bool value); +- public static void WriteLine(char value); ++ [MethodImpl(NoInlining)]public static void WriteLine(char value); +- public static void WriteLine(char[] buffer); ++ [MethodImpl(NoInlining)]public static void WriteLine(char[] buffer); +- public static void WriteLine(char[] buffer, int index, int count); ++ [MethodImpl(NoInlining)]public static void WriteLine(char[] buffer, int index, int count); +- public static void WriteLine(decimal value); ++ [MethodImpl(NoInlining)]public static void WriteLine(decimal value); +- public static void WriteLine(double value); ++ [MethodImpl(NoInlining)]public static void WriteLine(double value); +- public static void WriteLine(int value); ++ [MethodImpl(NoInlining)]public static void WriteLine(int value); +- public static void WriteLine(long value); ++ [MethodImpl(NoInlining)]public static void WriteLine(long value); +- public static void WriteLine(object value); ++ [MethodImpl(NoInlining)]public static void WriteLine(object value); +- public static void WriteLine(float value); ++ [MethodImpl(NoInlining)]public static void WriteLine(float value); +- public static void WriteLine(string value); ++ [MethodImpl(NoInlining)]public static void WriteLine(string value); +- public static void WriteLine(string format, object arg0); ++ [MethodImpl(NoInlining)]public static void WriteLine(string format, object arg0); +- public static void WriteLine(string format, object arg0, object arg1); ++ [MethodImpl(NoInlining)]public static void WriteLine(string format, object arg0, object arg1); +- public static void WriteLine(string format, object arg0, object arg1, object arg2); ++ [MethodImpl(NoInlining)]public static void WriteLine(string format, object arg0, object arg1, object arg2); +- public static void WriteLine(string format, object arg0, object arg1, object arg2, object arg3, __arglist); ++ [MethodImpl(NoInlining)]public static void WriteLine(string format, object arg0, object arg1, object arg2, object arg3, __arglist); +- public static void WriteLine(string format, params object[] arg); ++ [MethodImpl(NoInlining)]public static void WriteLine(string format, params object[] arg); +- public static void WriteLine(uint value); ++ [MethodImpl(NoInlining)]public static void WriteLine(uint value); +- public static void WriteLine(ulong value); ++ [MethodImpl(NoInlining)]public static void WriteLine(ulong value); + } + public struct DateTimeOffset : IComparable, IComparable, IDeserializationCallback, IEquatable, IFormattable, ISerializable { ++ public static DateTimeOffset FromUnixTimeMilliseconds(long milliseconds); ++ public static DateTimeOffset FromUnixTimeSeconds(long seconds); ++ public long ToUnixTimeMilliseconds(); ++ public long ToUnixTimeSeconds(); + } ++ public abstract class FormattableString : IFormattable { ++ protected FormattableString(); ++ public abstract int ArgumentCount { get; } ++ public abstract string Format { get; } ++ public abstract object GetArgument(int index); ++ public abstract object[] GetArguments(); ++ public static string Invariant(FormattableString formattable); ++ string System.IFormattable.ToString(string ignored, IFormatProvider formatProvider); ++ public override string ToString(); ++ public abstract string ToString(IFormatProvider formatProvider); ++ } + public static class GC { ++ public static void Collect(int generation, GCCollectionMode mode, bool blocking, bool compacting); ++ public static void EndNoGCRegion(); ++ public static bool TryStartNoGCRegion(long totalSize); ++ public static bool TryStartNoGCRegion(long totalSize, bool disallowFullBlockingGC); ++ public static bool TryStartNoGCRegion(long totalSize, long lohSize); ++ public static bool TryStartNoGCRegion(long totalSize, long lohSize, bool disallowFullBlockingGC); + } + public sealed class String : ICloneable, IComparable, IComparable, IConvertible, IEnumerable, IEnumerable, IEquatable { ++ public static string Format(IFormatProvider provider, string format, object arg0); ++ public static string Format(IFormatProvider provider, string format, object arg0, object arg1); ++ public static string Format(IFormatProvider provider, string format, object arg0, object arg1, object arg2); + } + public class Uri : ISerializable { ++ public string IdnHost { get; } + } + } + namespace System.Collections.Concurrent { +- public class BlockingCollection : ICollection, IDisposable, IEnumerable, IEnumerable { ++ public class BlockingCollection : ICollection, IDisposable, IEnumerable, IEnumerable, IReadOnlyCollection { + } +- public class ConcurrentBag : ICollection, IEnumerable, IEnumerable, IProducerConsumerCollection { ++ public class ConcurrentBag : ICollection, IEnumerable, IEnumerable, IProducerConsumerCollection, IReadOnlyCollection { + } +- public class ConcurrentDictionary : ICollection, ICollection>, IDictionary, IDictionary, IEnumerable, IEnumerable> { ++ public class ConcurrentDictionary : ICollection, ICollection>, IDictionary, IDictionary, IEnumerable, IEnumerable>, IReadOnlyCollection>, IReadOnlyDictionary { ++ IEnumerable System.Collections.Generic.IReadOnlyDictionary.Keys { get; } ++ IEnumerable System.Collections.Generic.IReadOnlyDictionary.Values { get; } + } +- public class ConcurrentQueue : ICollection, IEnumerable, IEnumerable, IProducerConsumerCollection { ++ public class ConcurrentQueue : ICollection, IEnumerable, IEnumerable, IProducerConsumerCollection, IReadOnlyCollection { + } +- public class ConcurrentStack : ICollection, IEnumerable, IEnumerable, IProducerConsumerCollection { ++ public class ConcurrentStack : ICollection, IEnumerable, IEnumerable, IProducerConsumerCollection, IReadOnlyCollection { + } + } + namespace System.Collections.Generic { + public class Dictionary : ICollection, ICollection>, IDeserializationCallback, IDictionary, IDictionary, IEnumerable, IEnumerable>, IReadOnlyCollection>, IReadOnlyDictionary, ISerializable { +- public sealed class KeyCollection : ICollection, ICollection, IEnumerable, IEnumerable { ++ public sealed class KeyCollection : ICollection, ICollection, IEnumerable, IEnumerable, IReadOnlyCollection { + } +- public sealed class ValueCollection : ICollection, ICollection, IEnumerable, IEnumerable { ++ public sealed class ValueCollection : ICollection, ICollection, IEnumerable, IEnumerable, IReadOnlyCollection { + } + } +- public class HashSet : ICollection, IDeserializationCallback, IEnumerable, IEnumerable, ISerializable, ISet { ++ public class HashSet : ICollection, IDeserializationCallback, IEnumerable, IEnumerable, IReadOnlyCollection, ISerializable, ISet { + } +- public class LinkedList : ICollection, ICollection, IDeserializationCallback, IEnumerable, IEnumerable, ISerializable { ++ public class LinkedList : ICollection, ICollection, IDeserializationCallback, IEnumerable, IEnumerable, IReadOnlyCollection, ISerializable { + } +- public class Queue : ICollection, IEnumerable, IEnumerable { ++ public class Queue : ICollection, IEnumerable, IEnumerable, IReadOnlyCollection { + } +- public class SortedDictionary : ICollection, ICollection>, IDictionary, IDictionary, IEnumerable, IEnumerable> { ++ public class SortedDictionary : ICollection, ICollection>, IDictionary, IDictionary, IEnumerable, IEnumerable>, IReadOnlyCollection>, IReadOnlyDictionary { +- public sealed class KeyCollection : ICollection, ICollection, IEnumerable, IEnumerable { ++ public sealed class KeyCollection : ICollection, ICollection, IEnumerable, IEnumerable, IReadOnlyCollection { + } +- public sealed class ValueCollection : ICollection, ICollection, IEnumerable, IEnumerable { ++ public sealed class ValueCollection : ICollection, ICollection, IEnumerable, IEnumerable, IReadOnlyCollection { + } ++ IEnumerable System.Collections.Generic.IReadOnlyDictionary.Keys { get; } ++ IEnumerable System.Collections.Generic.IReadOnlyDictionary.Values { get; } + } +- public class SortedList : ICollection, ICollection>, IDictionary, IDictionary, IEnumerable, IEnumerable> { ++ public class SortedList : ICollection, ICollection>, IDictionary, IDictionary, IEnumerable, IEnumerable>, IReadOnlyCollection>, IReadOnlyDictionary { ++ IEnumerable System.Collections.Generic.IReadOnlyDictionary.Keys { get; } ++ IEnumerable System.Collections.Generic.IReadOnlyDictionary.Values { get; } + } +- public class SortedSet : ICollection, ICollection, IDeserializationCallback, IEnumerable, IEnumerable, ISerializable, ISet { ++ public class SortedSet : ICollection, ICollection, IDeserializationCallback, IEnumerable, IEnumerable, IReadOnlyCollection, ISerializable, ISet { + } +- public class Stack : ICollection, IEnumerable, IEnumerable { ++ public class Stack : ICollection, IEnumerable, IEnumerable, IReadOnlyCollection { + } + } + namespace System.Collections.ObjectModel { + public class ReadOnlyDictionary : ICollection, ICollection>, IDictionary, IDictionary, IEnumerable, IEnumerable>, IReadOnlyCollection>, IReadOnlyDictionary { +- public sealed class KeyCollection : ICollection, ICollection, IEnumerable, IEnumerable { ++ public sealed class KeyCollection : ICollection, ICollection, IEnumerable, IEnumerable, IReadOnlyCollection { + } +- public sealed class ValueCollection : ICollection, ICollection, IEnumerable, IEnumerable { ++ public sealed class ValueCollection : ICollection, ICollection, IEnumerable, IEnumerable, IReadOnlyCollection { + } + } + } + namespace System.Configuration { + public sealed class RsaProtectedConfigurationProvider : ProtectedConfigurationProvider { ++ public bool UseFIPS { get; } + } + } + namespace System.Data.Common { + public class DbEnumerator : IEnumerator { ++ public DbEnumerator(DbDataReader reader); ++ public DbEnumerator(DbDataReader reader, bool closeReader); + } + } + namespace System.Data.SqlClient { ++ public enum SqlAuthenticationMethod { ++ ActiveDirectoryIntegrated = 3, ++ ActiveDirectoryPassword = 2, ++ NotSpecified = 0, ++ SqlPassword = 1, ++ } + public sealed class SqlBulkCopy : IDisposable { ++ public void WriteToServer(DbDataReader reader); ++ public Task WriteToServerAsync(DbDataReader reader); ++ public Task WriteToServerAsync(DbDataReader reader, CancellationToken cancellationToken); + } ++ public sealed class SqlColumnEncryptionCertificateStoreProvider : SqlColumnEncryptionKeyStoreProvider { ++ public SqlColumnEncryptionCertificateStoreProvider(); ++ public override byte[] DecryptColumnEncryptionKey(string masterKeyPath, string encryptionAlgorithm, byte[] encryptedColumnEncryptionKey); ++ public override byte[] EncryptColumnEncryptionKey(string masterKeyPath, string encryptionAlgorithm, byte[] columnEncryptionKey); ++ } ++ public abstract class SqlColumnEncryptionKeyStoreProvider { ++ protected SqlColumnEncryptionKeyStoreProvider(); ++ public abstract byte[] DecryptColumnEncryptionKey(string masterKeyPath, string encryptionAlgorithm, byte[] encryptedColumnEncryptionKey); ++ public abstract byte[] EncryptColumnEncryptionKey(string masterKeyPath, string encryptionAlgorithm, byte[] columnEncryptionKey); ++ } + public sealed class SqlCommand : DbCommand, ICloneable { ++ public SqlCommand(string cmdText, SqlConnection connection, SqlTransaction transaction, SqlCommandColumnEncryptionSetting columnEncryptionSetting); ++ public SqlCommandColumnEncryptionSetting ColumnEncryptionSetting { get; } + } ++ public enum SqlCommandColumnEncryptionSetting { ++ Disabled = 3, ++ Enabled = 1, ++ ResultSetOnly = 2, ++ UseConnectionSetting = 0, ++ } + public sealed class SqlConnection : DbConnection, ICloneable { ++ public string AccessToken { get; set; } ++ public static IDictionary> ColumnEncryptionTrustedMasterKeyPaths { get; } ++ public static void RegisterColumnEncryptionKeyStoreProviders(IDictionary customProviders); + } ++ public enum SqlConnectionColumnEncryptionSetting { ++ Disabled = 0, ++ Enabled = 1, ++ } + public sealed class SqlConnectionStringBuilder : DbConnectionStringBuilder { ++ public SqlAuthenticationMethod Authentication { get; set; } ++ public SqlConnectionColumnEncryptionSetting ColumnEncryptionSetting { get; set; } + } + public sealed class SqlParameter : DbParameter, ICloneable, IDataParameter, IDbDataParameter { ++ public bool ForceColumnEncryption { get; set; } + } + } + namespace System.Diagnostics { + public sealed class Debugger { +- public static bool IsAttached { get; } ++ public static bool IsAttached { [MethodImpl(InternalCall)]get; } + } + public class Process : Component { ++ public SafeProcessHandle SafeHandle { get; } + } + public sealed class ProcessStartInfo { ++ public IDictionary Environment { get; } + } + } + namespace System.Diagnostics.Tracing { ++ public enum EventActivityOptions { ++ Detachable = 8, ++ Disable = 2, ++ None = 0, ++ Recursive = 4, ++ } + public sealed class EventAttribute : Attribute { ++ public EventActivityOptions ActivityOptions { get; set; } ++ public EventChannel Channel { get; set; } ++ public EventTags Tags { get; set; } + } ++ public enum EventChannel : byte { ++ Admin = (byte)16, ++ Analytic = (byte)18, ++ Debug = (byte)19, ++ None = (byte)0, ++ Operational = (byte)17, ++ } + public class EventCommandEventArgs : EventArgs { +- public IDictionary Arguments { get; private set; } ++ public IDictionary Arguments { get; internal set; } +- public EventCommand Command { get; private set; } ++ public EventCommand Command { get; internal set; } + } ++ public class EventDataAttribute : Attribute { ++ public EventDataAttribute(); ++ public string Name { get; set; } ++ } ++ public class EventFieldAttribute : Attribute { ++ public EventFieldAttribute(); ++ public EventFieldFormat Format { get; set; } ++ public EventFieldTags Tags { get; set; } ++ } ++ public enum EventFieldFormat { ++ Boolean = 3, ++ Default = 0, ++ Hexadecimal = 4, ++ HResult = 15, ++ Json = 12, ++ String = 2, ++ Xml = 11, ++ } ++ public enum EventFieldTags { ++ None = 0, ++ } ++ public class EventIgnoreAttribute : Attribute { ++ public EventIgnoreAttribute(); ++ } + public enum EventKeywords : long { ++ All = (long)-1, ++ MicrosoftTelemetry = (long)562949953421312, + } ++ public enum EventManifestOptions { ++ AllCultures = 2, ++ AllowEventSourceOverride = 8, ++ None = 0, ++ OnlyIfNeededForRegistration = 4, ++ Strict = 1, ++ } + public class EventSource : IDisposable { ++ protected EventSource(EventSourceSettings settings); ++ protected EventSource(EventSourceSettings settings, params string[] traits); ++ public EventSource(string eventSourceName); ++ public EventSource(string eventSourceName, EventSourceSettings config); ++ public EventSource(string eventSourceName, EventSourceSettings config, params string[] traits); ++ public EventSourceSettings Settings { get; } ++ public static string GenerateManifest(Type eventSourceType, string assemblyPathToIncludeInManifest, EventManifestOptions flags); ++ public string GetTrait(string key); ++ public bool IsEnabled(EventLevel level, EventKeywords keywords, EventChannel channel); ++ public void Write(string eventName, T data); ++ public void Write(string eventName, EventSourceOptions options, T data); ++ public void Write(string eventName, ref EventSourceOptions options, ref T data); ++ public void Write(string eventName, ref EventSourceOptions options, ref Guid activityId, ref Guid relatedActivityId, ref T data); ++ public void Write(string eventName); ++ public void Write(string eventName, EventSourceOptions options); ++ protected void WriteEvent(int eventId, byte[] arg1); ++ protected void WriteEvent(int eventId, int arg1, string arg2); ++ protected void WriteEvent(int eventId, long arg1, byte[] arg2); ++ protected void WriteEvent(int eventId, long arg1, string arg2); +- protected void WriteEventWithRelatedActivityId(int eventId, Guid childActivityID, params object[] args); ++ protected void WriteEventWithRelatedActivityId(int eventId, Guid relatedActivityId, params object[] args); +- protected unsafe void WriteEventWithRelatedActivityIdCore(int eventId, Guid* childActivityID, int eventDataCount, EventSource.EventData* data); ++ protected unsafe void WriteEventWithRelatedActivityIdCore(int eventId, Guid* relatedActivityId, int eventDataCount, EventSource.EventData* data); + } ++ [System.Runtime.InteropServices.StructLayoutAttribute(System.Runtime.InteropServices.LayoutKind.Sequential)] ++ public struct EventSourceOptions { ++ public EventActivityOptions ActivityOptions { get; set; } ++ public EventKeywords Keywords { get; set; } ++ public EventLevel Level { get; set; } ++ public EventOpcode Opcode { get; set; } ++ public EventTags Tags { get; set; } ++ } ++ public enum EventSourceSettings { ++ Default = 0, ++ EtwManifestEventFormat = 4, ++ EtwSelfDescribingEventFormat = 8, ++ ThrowOnEventWriteErrors = 1, ++ } ++ public enum EventTags { ++ None = 0, ++ } + public class EventWrittenEventArgs : EventArgs { ++ public EventChannel Channel { get; } ++ public string EventName { get; internal set; } ++ public ReadOnlyCollection PayloadNames { get; internal set; } ++ public EventTags Tags { get; } + } + } + namespace System.DirectoryServices.ActiveDirectory { + public class Domain : ActiveDirectoryPartition { ++ public int DomainModeLevel { get; } ++ public void RaiseDomainFunctionalityLevel(int domainMode); + } + public enum DomainMode { ++ Unknown = -1, + } + public class Forest : IDisposable { ++ public int ForestModeLevel { get; } ++ public void RaiseForestFunctionalityLevel(int forestMode); + } + public enum ForestMode { ++ Unknown = -1, + } + } + namespace System.Globalization { + public class CompareInfo : IDeserializationCallback { ++ public virtual int GetHashCode(string source, CompareOptions options); + } + public class CultureInfo : ICloneable, IFormatProvider { +- public static CultureInfo CurrentCulture { get; } ++ public static CultureInfo CurrentCulture { get; set; } +- public static CultureInfo CurrentUICulture { get; } ++ public static CultureInfo CurrentUICulture { get; set; } + } + } + namespace System.IO { + public class MemoryStream : Stream { ++ public virtual bool TryGetBuffer(out ArraySegment buffer); + } + } + namespace System.IO.MemoryMappedFiles { + public class MemoryMappedFile : IDisposable { ++ public static MemoryMappedFile CreateFromFile(FileStream fileStream, string mapName, long capacity, MemoryMappedFileAccess access, HandleInheritability inheritability, bool leaveOpen); ++ public static MemoryMappedFile CreateNew(string mapName, long capacity, MemoryMappedFileAccess access, MemoryMappedFileOptions options, HandleInheritability inheritability); ++ public static MemoryMappedFile CreateOrOpen(string mapName, long capacity, MemoryMappedFileAccess access, MemoryMappedFileOptions options, HandleInheritability inheritability); + } + } + namespace System.IO.Pipes { + public sealed class NamedPipeClientStream : PipeStream { ++ public Task ConnectAsync(); ++ public Task ConnectAsync(CancellationToken cancellationToken); ++ public Task ConnectAsync(int timeout); ++ public Task ConnectAsync(int timeout, CancellationToken cancellationToken); + } + public sealed class NamedPipeServerStream : PipeStream { ++ public Task WaitForConnectionAsync(); ++ public Task WaitForConnectionAsync(CancellationToken cancellationToken); + } + } + namespace System.Linq.Expressions { +- public class DynamicExpression : Expression { ++ public class DynamicExpression : Expression, IArgumentProvider, IDynamicExpression { ++ int System.Linq.Expressions.IArgumentProvider.ArgumentCount { get; } ++ Expression System.Linq.Expressions.IArgumentProvider.GetArgument(int index); ++ object System.Linq.Expressions.IDynamicExpression.CreateCallSite(); ++ Expression System.Linq.Expressions.IDynamicExpression.Rewrite(Expression[] args); + } +- public sealed class ElementInit { ++ public sealed class ElementInit : IArgumentProvider { ++ int System.Linq.Expressions.IArgumentProvider.ArgumentCount { get; } ++ Expression System.Linq.Expressions.IArgumentProvider.GetArgument(int index); + } ++ public interface IArgumentProvider { ++ int ArgumentCount { get; } ++ Expression GetArgument(int index); ++ } ++ public interface IDynamicExpression : IArgumentProvider { ++ Type DelegateType { get; } ++ object CreateCallSite(); ++ Expression Rewrite(Expression[] args); ++ } +- public sealed class IndexExpression : Expression { ++ public sealed class IndexExpression : Expression, IArgumentProvider { ++ int System.Linq.Expressions.IArgumentProvider.ArgumentCount { get; } ++ Expression System.Linq.Expressions.IArgumentProvider.GetArgument(int index); + } +- public sealed class InvocationExpression : Expression { ++ public sealed class InvocationExpression : Expression, IArgumentProvider { ++ int System.Linq.Expressions.IArgumentProvider.ArgumentCount { get; } ++ Expression System.Linq.Expressions.IArgumentProvider.GetArgument(int index); + } +- public class MethodCallExpression : Expression { ++ public class MethodCallExpression : Expression, IArgumentProvider { ++ int System.Linq.Expressions.IArgumentProvider.ArgumentCount { get; } ++ Expression System.Linq.Expressions.IArgumentProvider.GetArgument(int index); + } +- public class NewExpression : Expression { ++ public class NewExpression : Expression, IArgumentProvider { ++ int System.Linq.Expressions.IArgumentProvider.ArgumentCount { get; } ++ Expression System.Linq.Expressions.IArgumentProvider.GetArgument(int index); + } + } + namespace System.Net { + public class ServicePointManager { ++ public static bool ReusePort { get; set; } + } + } + namespace System.Net.Sockets { + public enum SocketOptionName { ++ ReuseUnicastPort = 12295, + } + public class TcpClient : IDisposable { ++ public void Dispose(); +- void System.IDisposable.Dispose(); + } + public class UdpClient : IDisposable { ++ public void Dispose(); +- void System.IDisposable.Dispose(); + } + } + namespace System.Numerics { ++ [System.Runtime.InteropServices.StructLayoutAttribute(System.Runtime.InteropServices.LayoutKind.Sequential)] ++ public struct Matrix3x2 : IEquatable { ++ public float M11; ++ public float M12; ++ public float M21; ++ public float M22; ++ public float M31; ++ public float M32; ++ public Matrix3x2(float m11, float m12, float m21, float m22, float m31, float m32); ++ public static Matrix3x2 Identity { get; } ++ public bool IsIdentity { get; } ++ public Vector2 Translation { get; set; } ++ public static Matrix3x2 Add(Matrix3x2 value1, Matrix3x2 value2); ++ public static Matrix3x2 CreateRotation(float radians); ++ public static Matrix3x2 CreateRotation(float radians, Vector2 centerPoint); ++ public static Matrix3x2 CreateScale(float scale); ++ public static Matrix3x2 CreateScale(float xScale, float yScale); ++ public static Matrix3x2 CreateScale(float xScale, float yScale, Vector2 centerPoint); ++ public static Matrix3x2 CreateScale(float scale, Vector2 centerPoint); ++ public static Matrix3x2 CreateScale(Vector2 scales); ++ public static Matrix3x2 CreateScale(Vector2 scales, Vector2 centerPoint); ++ public static Matrix3x2 CreateSkew(float radiansX, float radiansY); ++ public static Matrix3x2 CreateSkew(float radiansX, float radiansY, Vector2 centerPoint); ++ public static Matrix3x2 CreateTranslation(float xPosition, float yPosition); ++ public static Matrix3x2 CreateTranslation(Vector2 position); ++ public bool Equals(Matrix3x2 other); ++ public override bool Equals(object obj); ++ public float GetDeterminant(); ++ public override int GetHashCode(); ++ public static bool Invert(Matrix3x2 matrix, out Matrix3x2 result); ++ public static Matrix3x2 Lerp(Matrix3x2 matrix1, Matrix3x2 matrix2, float amount); ++ public static Matrix3x2 Multiply(Matrix3x2 value1, Matrix3x2 value2); ++ public static Matrix3x2 Multiply(Matrix3x2 value1, float value2); ++ public static Matrix3x2 Negate(Matrix3x2 value); ++ public static Matrix3x2 operator +(Matrix3x2 value1, Matrix3x2 value2); ++ public static bool operator ==(Matrix3x2 value1, Matrix3x2 value2); ++ public static bool operator !=(Matrix3x2 value1, Matrix3x2 value2); ++ public static Matrix3x2 operator *(Matrix3x2 value1, Matrix3x2 value2); ++ public static Matrix3x2 operator *(Matrix3x2 value1, float value2); ++ public static Matrix3x2 operator -(Matrix3x2 value1, Matrix3x2 value2); ++ public static Matrix3x2 operator -(Matrix3x2 value); ++ public static Matrix3x2 Subtract(Matrix3x2 value1, Matrix3x2 value2); ++ public override string ToString(); ++ } ++ [System.Runtime.InteropServices.StructLayoutAttribute(System.Runtime.InteropServices.LayoutKind.Sequential)] ++ public struct Matrix4x4 : IEquatable { ++ public float M11; ++ public float M12; ++ public float M13; ++ public float M14; ++ public float M21; ++ public float M22; ++ public float M23; ++ public float M24; ++ public float M31; ++ public float M32; ++ public float M33; ++ public float M34; ++ public float M41; ++ public float M42; ++ public float M43; ++ public float M44; ++ public Matrix4x4(Matrix3x2 value); ++ public Matrix4x4(float m11, float m12, float m13, float m14, float m21, float m22, float m23, float m24, float m31, float m32, float m33, float m34, float m41, float m42, float m43, float m44); ++ public static Matrix4x4 Identity { get; } ++ public bool IsIdentity { get; } ++ public Vector3 Translation { get; set; } ++ public static Matrix4x4 Add(Matrix4x4 value1, Matrix4x4 value2); ++ public static Matrix4x4 CreateBillboard(Vector3 objectPosition, Vector3 cameraPosition, Vector3 cameraUpVector, Vector3 cameraForwardVector); ++ public static Matrix4x4 CreateConstrainedBillboard(Vector3 objectPosition, Vector3 cameraPosition, Vector3 rotateAxis, Vector3 cameraForwardVector, Vector3 objectForwardVector); ++ public static Matrix4x4 CreateFromAxisAngle(Vector3 axis, float angle); ++ public static Matrix4x4 CreateFromQuaternion(Quaternion quaternion); ++ public static Matrix4x4 CreateFromYawPitchRoll(float yaw, float pitch, float roll); ++ public static Matrix4x4 CreateLookAt(Vector3 cameraPosition, Vector3 cameraTarget, Vector3 cameraUpVector); ++ public static Matrix4x4 CreateOrthographic(float width, float height, float zNearPlane, float zFarPlane); ++ public static Matrix4x4 CreateOrthographicOffCenter(float left, float right, float bottom, float top, float zNearPlane, float zFarPlane); ++ public static Matrix4x4 CreatePerspective(float width, float height, float nearPlaneDistance, float farPlaneDistance); ++ public static Matrix4x4 CreatePerspectiveFieldOfView(float fieldOfView, float aspectRatio, float nearPlaneDistance, float farPlaneDistance); ++ public static Matrix4x4 CreatePerspectiveOffCenter(float left, float right, float bottom, float top, float nearPlaneDistance, float farPlaneDistance); ++ public static Matrix4x4 CreateReflection(Plane value); ++ public static Matrix4x4 CreateRotationX(float radians); ++ public static Matrix4x4 CreateRotationX(float radians, Vector3 centerPoint); ++ public static Matrix4x4 CreateRotationY(float radians); ++ public static Matrix4x4 CreateRotationY(float radians, Vector3 centerPoint); ++ public static Matrix4x4 CreateRotationZ(float radians); ++ public static Matrix4x4 CreateRotationZ(float radians, Vector3 centerPoint); ++ public static Matrix4x4 CreateScale(float scale); ++ public static Matrix4x4 CreateScale(float xScale, float yScale, float zScale); ++ public static Matrix4x4 CreateScale(float xScale, float yScale, float zScale, Vector3 centerPoint); ++ public static Matrix4x4 CreateScale(float scale, Vector3 centerPoint); ++ public static Matrix4x4 CreateScale(Vector3 scales); ++ public static Matrix4x4 CreateScale(Vector3 scales, Vector3 centerPoint); ++ public static Matrix4x4 CreateShadow(Vector3 lightDirection, Plane plane); ++ public static Matrix4x4 CreateTranslation(float xPosition, float yPosition, float zPosition); ++ public static Matrix4x4 CreateTranslation(Vector3 position); ++ public static Matrix4x4 CreateWorld(Vector3 position, Vector3 forward, Vector3 up); ++ public static bool Decompose(Matrix4x4 matrix, out Vector3 scale, out Quaternion rotation, out Vector3 translation); ++ public bool Equals(Matrix4x4 other); ++ public override bool Equals(object obj); ++ public float GetDeterminant(); ++ public override int GetHashCode(); ++ public static bool Invert(Matrix4x4 matrix, out Matrix4x4 result); ++ public static Matrix4x4 Lerp(Matrix4x4 matrix1, Matrix4x4 matrix2, float amount); ++ public static Matrix4x4 Multiply(Matrix4x4 value1, Matrix4x4 value2); ++ public static Matrix4x4 Multiply(Matrix4x4 value1, float value2); ++ public static Matrix4x4 Negate(Matrix4x4 value); ++ public static Matrix4x4 operator +(Matrix4x4 value1, Matrix4x4 value2); ++ public static bool operator ==(Matrix4x4 value1, Matrix4x4 value2); ++ public static bool operator !=(Matrix4x4 value1, Matrix4x4 value2); ++ public static Matrix4x4 operator *(Matrix4x4 value1, Matrix4x4 value2); ++ public static Matrix4x4 operator *(Matrix4x4 value1, float value2); ++ public static Matrix4x4 operator -(Matrix4x4 value1, Matrix4x4 value2); ++ public static Matrix4x4 operator -(Matrix4x4 value); ++ public static Matrix4x4 Subtract(Matrix4x4 value1, Matrix4x4 value2); ++ public override string ToString(); ++ public static Matrix4x4 Transform(Matrix4x4 value, Quaternion rotation); ++ public static Matrix4x4 Transpose(Matrix4x4 matrix); ++ } ++ [System.Runtime.InteropServices.StructLayoutAttribute(System.Runtime.InteropServices.LayoutKind.Sequential)] ++ public struct Plane : IEquatable { ++ public float D; ++ public Vector3 Normal; ++ public Plane(float x, float y, float z, float d); ++ public Plane(Vector3 normal, float d); ++ public Plane(Vector4 value); ++ [MethodImpl(AggressiveInlining)]public static Plane CreateFromVertices(Vector3 point1, Vector3 point2, Vector3 point3); ++ [MethodImpl(AggressiveInlining)]public static float Dot(Plane plane, Vector4 value); ++ [MethodImpl(AggressiveInlining)]public static float DotCoordinate(Plane plane, Vector3 value); ++ [MethodImpl(AggressiveInlining)]public static float DotNormal(Plane plane, Vector3 value); ++ [MethodImpl(AggressiveInlining)]public override bool Equals(object obj); ++ [MethodImpl(AggressiveInlining)]public bool Equals(Plane other); ++ public override int GetHashCode(); ++ [MethodImpl(AggressiveInlining)]public static Plane Normalize(Plane value); ++ [MethodImpl(AggressiveInlining)]public static bool operator ==(Plane value1, Plane value2); ++ [MethodImpl(AggressiveInlining)]public static bool operator !=(Plane value1, Plane value2); ++ public override string ToString(); ++ [MethodImpl(AggressiveInlining)]public static Plane Transform(Plane plane, Matrix4x4 matrix); ++ [MethodImpl(AggressiveInlining)]public static Plane Transform(Plane plane, Quaternion rotation); ++ } ++ [System.Runtime.InteropServices.StructLayoutAttribute(System.Runtime.InteropServices.LayoutKind.Sequential)] ++ public struct Quaternion : IEquatable { ++ public float W; ++ public float X; ++ public float Y; ++ public float Z; ++ public Quaternion(float x, float y, float z, float w); ++ public Quaternion(Vector3 vectorPart, float scalarPart); ++ public static Quaternion Identity { get; } ++ public bool IsIdentity { get; } ++ public static Quaternion Add(Quaternion value1, Quaternion value2); ++ public static Quaternion Concatenate(Quaternion value1, Quaternion value2); ++ public static Quaternion Conjugate(Quaternion value); ++ public static Quaternion CreateFromAxisAngle(Vector3 axis, float angle); ++ public static Quaternion CreateFromRotationMatrix(Matrix4x4 matrix); ++ public static Quaternion CreateFromYawPitchRoll(float yaw, float pitch, float roll); ++ public static Quaternion Divide(Quaternion value1, Quaternion value2); ++ public static float Dot(Quaternion quaternion1, Quaternion quaternion2); ++ public override bool Equals(object obj); ++ public bool Equals(Quaternion other); ++ public override int GetHashCode(); ++ public static Quaternion Inverse(Quaternion value); ++ public float Length(); ++ public float LengthSquared(); ++ public static Quaternion Lerp(Quaternion quaternion1, Quaternion quaternion2, float amount); ++ public static Quaternion Multiply(Quaternion value1, Quaternion value2); ++ public static Quaternion Multiply(Quaternion value1, float value2); ++ public static Quaternion Negate(Quaternion value); ++ public static Quaternion Normalize(Quaternion value); ++ public static Quaternion operator +(Quaternion value1, Quaternion value2); ++ public static Quaternion operator /(Quaternion value1, Quaternion value2); ++ public static bool operator ==(Quaternion value1, Quaternion value2); ++ public static bool operator !=(Quaternion value1, Quaternion value2); ++ public static Quaternion operator *(Quaternion value1, Quaternion value2); ++ public static Quaternion operator *(Quaternion value1, float value2); ++ public static Quaternion operator -(Quaternion value1, Quaternion value2); ++ public static Quaternion operator -(Quaternion value); ++ public static Quaternion Slerp(Quaternion quaternion1, Quaternion quaternion2, float amount); ++ public static Quaternion Subtract(Quaternion value1, Quaternion value2); ++ public override string ToString(); ++ } ++ [System.Runtime.InteropServices.StructLayoutAttribute(System.Runtime.InteropServices.LayoutKind.Sequential)] ++ public struct Vector2 : IEquatable, IFormattable { ++ public float X; ++ public float Y; ++ public Vector2(float value); ++ public Vector2(float x, float y); ++ public static Vector2 One { get; } ++ public static Vector2 UnitX { get; } ++ public static Vector2 UnitY { get; } ++ public static Vector2 Zero { get; } ++ [MethodImpl(AggressiveInlining)]public static Vector2 Abs(Vector2 value); ++ [MethodImpl(AggressiveInlining)]public static Vector2 Add(Vector2 left, Vector2 right); ++ [MethodImpl(AggressiveInlining)]public static Vector2 Clamp(Vector2 value1, Vector2 min, Vector2 max); ++ [MethodImpl(AggressiveInlining)]public void CopyTo(float[] array); ++ public void CopyTo(float[] array, int index); ++ [MethodImpl(AggressiveInlining)]public static float Distance(Vector2 value1, Vector2 value2); ++ [MethodImpl(AggressiveInlining)]public static float DistanceSquared(Vector2 value1, Vector2 value2); ++ [MethodImpl(AggressiveInlining)]public static Vector2 Divide(Vector2 left, float divisor); ++ [MethodImpl(AggressiveInlining)]public static Vector2 Divide(Vector2 left, Vector2 right); ++ [MethodImpl(AggressiveInlining)]public static float Dot(Vector2 value1, Vector2 value2); ++ [MethodImpl(AggressiveInlining)]public override bool Equals(object obj); ++ public bool Equals(Vector2 other); ++ public override int GetHashCode(); ++ [MethodImpl(AggressiveInlining)]public float Length(); ++ [MethodImpl(AggressiveInlining)]public float LengthSquared(); ++ [MethodImpl(AggressiveInlining)]public static Vector2 Lerp(Vector2 value1, Vector2 value2, float amount); ++ [MethodImpl(AggressiveInlining)]public static Vector2 Max(Vector2 value1, Vector2 value2); ++ [MethodImpl(AggressiveInlining)]public static Vector2 Min(Vector2 value1, Vector2 value2); ++ [MethodImpl(AggressiveInlining)]public static Vector2 Multiply(float left, Vector2 right); ++ [MethodImpl(AggressiveInlining)]public static Vector2 Multiply(Vector2 left, float right); ++ [MethodImpl(AggressiveInlining)]public static Vector2 Multiply(Vector2 left, Vector2 right); ++ [MethodImpl(AggressiveInlining)]public static Vector2 Negate(Vector2 value); ++ [MethodImpl(AggressiveInlining)]public static Vector2 Normalize(Vector2 value); ++ [MethodImpl(AggressiveInlining)]public static Vector2 operator +(Vector2 left, Vector2 right); ++ [MethodImpl(AggressiveInlining)]public static Vector2 operator /(Vector2 value1, float value2); ++ [MethodImpl(AggressiveInlining)]public static Vector2 operator /(Vector2 left, Vector2 right); ++ [MethodImpl(AggressiveInlining)]public static bool operator ==(Vector2 left, Vector2 right); ++ [MethodImpl(AggressiveInlining)]public static bool operator !=(Vector2 left, Vector2 right); ++ [MethodImpl(AggressiveInlining)]public static Vector2 operator *(float left, Vector2 right); ++ [MethodImpl(AggressiveInlining)]public static Vector2 operator *(Vector2 left, float right); ++ [MethodImpl(AggressiveInlining)]public static Vector2 operator *(Vector2 left, Vector2 right); ++ [MethodImpl(AggressiveInlining)]public static Vector2 operator -(Vector2 left, Vector2 right); ++ [MethodImpl(AggressiveInlining)]public static Vector2 operator -(Vector2 value); ++ [MethodImpl(AggressiveInlining)]public static Vector2 Reflect(Vector2 vector, Vector2 normal); ++ [MethodImpl(AggressiveInlining)]public static Vector2 SquareRoot(Vector2 value); ++ [MethodImpl(AggressiveInlining)]public static Vector2 Subtract(Vector2 left, Vector2 right); ++ public override string ToString(); ++ public string ToString(string format); ++ public string ToString(string format, IFormatProvider formatProvider); ++ [MethodImpl(AggressiveInlining)]public static Vector2 Transform(Vector2 position, Matrix3x2 matrix); ++ [MethodImpl(AggressiveInlining)]public static Vector2 Transform(Vector2 position, Matrix4x4 matrix); ++ [MethodImpl(AggressiveInlining)]public static Vector2 Transform(Vector2 value, Quaternion rotation); ++ [MethodImpl(AggressiveInlining)]public static Vector2 TransformNormal(Vector2 normal, Matrix3x2 matrix); ++ [MethodImpl(AggressiveInlining)]public static Vector2 TransformNormal(Vector2 normal, Matrix4x4 matrix); ++ } ++ [System.Runtime.InteropServices.StructLayoutAttribute(System.Runtime.InteropServices.LayoutKind.Sequential)] ++ public struct Vector3 : IEquatable, IFormattable { ++ public float X; ++ public float Y; ++ public float Z; ++ public Vector3(float value); ++ public Vector3(float x, float y, float z); ++ public Vector3(Vector2 value, float z); ++ public static Vector3 One { get; } ++ public static Vector3 UnitX { get; } ++ public static Vector3 UnitY { get; } ++ public static Vector3 UnitZ { get; } ++ public static Vector3 Zero { get; } ++ [MethodImpl(AggressiveInlining)]public static Vector3 Abs(Vector3 value); ++ [MethodImpl(AggressiveInlining)]public static Vector3 Add(Vector3 left, Vector3 right); ++ [MethodImpl(AggressiveInlining)]public static Vector3 Clamp(Vector3 value1, Vector3 min, Vector3 max); ++ [MethodImpl(AggressiveInlining)]public void CopyTo(float[] array); ++ [MethodImpl(AggressiveInlining)]public void CopyTo(float[] array, int index); ++ [MethodImpl(AggressiveInlining)]public static Vector3 Cross(Vector3 vector1, Vector3 vector2); ++ [MethodImpl(AggressiveInlining)]public static float Distance(Vector3 value1, Vector3 value2); ++ [MethodImpl(AggressiveInlining)]public static float DistanceSquared(Vector3 value1, Vector3 value2); ++ [MethodImpl(AggressiveInlining)]public static Vector3 Divide(Vector3 left, float divisor); ++ [MethodImpl(AggressiveInlining)]public static Vector3 Divide(Vector3 left, Vector3 right); ++ [MethodImpl(AggressiveInlining)]public static float Dot(Vector3 vector1, Vector3 vector2); ++ [MethodImpl(AggressiveInlining)]public override bool Equals(object obj); ++ public bool Equals(Vector3 other); ++ public override int GetHashCode(); ++ [MethodImpl(AggressiveInlining)]public float Length(); ++ [MethodImpl(AggressiveInlining)]public float LengthSquared(); ++ [MethodImpl(AggressiveInlining)]public static Vector3 Lerp(Vector3 value1, Vector3 value2, float amount); ++ [MethodImpl(AggressiveInlining)]public static Vector3 Max(Vector3 value1, Vector3 value2); ++ public static Vector3 Min(Vector3 value1, Vector3 value2); ++ [MethodImpl(AggressiveInlining)]public static Vector3 Multiply(float left, Vector3 right); ++ [MethodImpl(AggressiveInlining)]public static Vector3 Multiply(Vector3 left, float right); ++ [MethodImpl(AggressiveInlining)]public static Vector3 Multiply(Vector3 left, Vector3 right); ++ [MethodImpl(AggressiveInlining)]public static Vector3 Negate(Vector3 value); ++ [MethodImpl(AggressiveInlining)]public static Vector3 Normalize(Vector3 value); ++ [MethodImpl(AggressiveInlining)]public static Vector3 operator +(Vector3 left, Vector3 right); ++ [MethodImpl(AggressiveInlining)]public static Vector3 operator /(Vector3 value1, float value2); ++ [MethodImpl(AggressiveInlining)]public static Vector3 operator /(Vector3 left, Vector3 right); ++ [MethodImpl(AggressiveInlining)]public static bool operator ==(Vector3 left, Vector3 right); ++ [MethodImpl(AggressiveInlining)]public static bool operator !=(Vector3 left, Vector3 right); ++ [MethodImpl(AggressiveInlining)]public static Vector3 operator *(float left, Vector3 right); ++ [MethodImpl(AggressiveInlining)]public static Vector3 operator *(Vector3 left, float right); ++ [MethodImpl(AggressiveInlining)]public static Vector3 operator *(Vector3 left, Vector3 right); ++ [MethodImpl(AggressiveInlining)]public static Vector3 operator -(Vector3 left, Vector3 right); ++ [MethodImpl(AggressiveInlining)]public static Vector3 operator -(Vector3 value); ++ [MethodImpl(AggressiveInlining)]public static Vector3 Reflect(Vector3 vector, Vector3 normal); ++ [MethodImpl(AggressiveInlining)]public static Vector3 SquareRoot(Vector3 value); ++ [MethodImpl(AggressiveInlining)]public static Vector3 Subtract(Vector3 left, Vector3 right); ++ public override string ToString(); ++ public string ToString(string format); ++ public string ToString(string format, IFormatProvider formatProvider); ++ [MethodImpl(AggressiveInlining)]public static Vector3 Transform(Vector3 position, Matrix4x4 matrix); ++ [MethodImpl(AggressiveInlining)]public static Vector3 Transform(Vector3 value, Quaternion rotation); ++ [MethodImpl(AggressiveInlining)]public static Vector3 TransformNormal(Vector3 normal, Matrix4x4 matrix); ++ } ++ [System.Runtime.InteropServices.StructLayoutAttribute(System.Runtime.InteropServices.LayoutKind.Sequential)] ++ public struct Vector4 : IEquatable, IFormattable { ++ public float W; ++ public float X; ++ public float Y; ++ public float Z; ++ public Vector4(float value); ++ public Vector4(float x, float y, float z, float w); ++ public Vector4(Vector2 value, float z, float w); ++ public Vector4(Vector3 value, float w); ++ public static Vector4 One { get; } ++ public static Vector4 UnitW { get; } ++ public static Vector4 UnitX { get; } ++ public static Vector4 UnitY { get; } ++ public static Vector4 UnitZ { get; } ++ public static Vector4 Zero { get; } ++ [MethodImpl(AggressiveInlining)]public static Vector4 Abs(Vector4 value); ++ [MethodImpl(AggressiveInlining)]public static Vector4 Add(Vector4 left, Vector4 right); ++ [MethodImpl(AggressiveInlining)]public static Vector4 Clamp(Vector4 value1, Vector4 min, Vector4 max); ++ [MethodImpl(AggressiveInlining)]public void CopyTo(float[] array); ++ [MethodImpl(AggressiveInlining)]public void CopyTo(float[] array, int index); ++ [MethodImpl(AggressiveInlining)]public static float Distance(Vector4 value1, Vector4 value2); ++ [MethodImpl(AggressiveInlining)]public static float DistanceSquared(Vector4 value1, Vector4 value2); ++ [MethodImpl(AggressiveInlining)]public static Vector4 Divide(Vector4 left, float divisor); ++ [MethodImpl(AggressiveInlining)]public static Vector4 Divide(Vector4 left, Vector4 right); ++ [MethodImpl(AggressiveInlining)]public static float Dot(Vector4 vector1, Vector4 vector2); ++ [MethodImpl(AggressiveInlining)]public override bool Equals(object obj); ++ public bool Equals(Vector4 other); ++ public override int GetHashCode(); ++ [MethodImpl(AggressiveInlining)]public float Length(); ++ [MethodImpl(AggressiveInlining)]public float LengthSquared(); ++ [MethodImpl(AggressiveInlining)]public static Vector4 Lerp(Vector4 value1, Vector4 value2, float amount); ++ [MethodImpl(AggressiveInlining)]public static Vector4 Max(Vector4 value1, Vector4 value2); ++ [MethodImpl(AggressiveInlining)]public static Vector4 Min(Vector4 value1, Vector4 value2); ++ [MethodImpl(AggressiveInlining)]public static Vector4 Multiply(float left, Vector4 right); ++ [MethodImpl(AggressiveInlining)]public static Vector4 Multiply(Vector4 left, float right); ++ [MethodImpl(AggressiveInlining)]public static Vector4 Multiply(Vector4 left, Vector4 right); ++ [MethodImpl(AggressiveInlining)]public static Vector4 Negate(Vector4 value); ++ [MethodImpl(AggressiveInlining)]public static Vector4 Normalize(Vector4 vector); ++ [MethodImpl(AggressiveInlining)]public static Vector4 operator +(Vector4 left, Vector4 right); ++ [MethodImpl(AggressiveInlining)]public static Vector4 operator /(Vector4 value1, float value2); ++ [MethodImpl(AggressiveInlining)]public static Vector4 operator /(Vector4 left, Vector4 right); ++ [MethodImpl(AggressiveInlining)]public static bool operator ==(Vector4 left, Vector4 right); ++ [MethodImpl(AggressiveInlining)]public static bool operator !=(Vector4 left, Vector4 right); ++ [MethodImpl(AggressiveInlining)]public static Vector4 operator *(float left, Vector4 right); ++ [MethodImpl(AggressiveInlining)]public static Vector4 operator *(Vector4 left, float right); ++ [MethodImpl(AggressiveInlining)]public static Vector4 operator *(Vector4 left, Vector4 right); ++ [MethodImpl(AggressiveInlining)]public static Vector4 operator -(Vector4 left, Vector4 right); ++ [MethodImpl(AggressiveInlining)]public static Vector4 operator -(Vector4 value); ++ [MethodImpl(AggressiveInlining)]public static Vector4 SquareRoot(Vector4 value); ++ [MethodImpl(AggressiveInlining)]public static Vector4 Subtract(Vector4 left, Vector4 right); ++ public override string ToString(); ++ public string ToString(string format); ++ public string ToString(string format, IFormatProvider formatProvider); ++ [MethodImpl(AggressiveInlining)]public static Vector4 Transform(Vector2 position, Matrix4x4 matrix); ++ [MethodImpl(AggressiveInlining)]public static Vector4 Transform(Vector2 value, Quaternion rotation); ++ [MethodImpl(AggressiveInlining)]public static Vector4 Transform(Vector3 position, Matrix4x4 matrix); ++ [MethodImpl(AggressiveInlining)]public static Vector4 Transform(Vector3 value, Quaternion rotation); ++ [MethodImpl(AggressiveInlining)]public static Vector4 Transform(Vector4 vector, Matrix4x4 matrix); ++ [MethodImpl(AggressiveInlining)]public static Vector4 Transform(Vector4 value, Quaternion rotation); ++ } + } + namespace System.Reflection { + public sealed class AssemblyName : _AssemblyName, ICloneable, IDeserializationCallback, ISerializable { +- public string CultureName { get; } ++ public string CultureName { get; set; } + } + } + namespace System.Runtime { + public enum GCLatencyMode { ++ NoGCRegion = 4, + } + } + namespace System.Runtime.CompilerServices { +- [System.Runtime.InteropServices.StructLayoutAttribute(System.Runtime.InteropServices.LayoutKind.Sequential)] +- public struct AsyncTaskMethodBuilder : IAsyncMethodBuilder { ++ [System.Runtime.InteropServices.StructLayoutAttribute(System.Runtime.InteropServices.LayoutKind.Sequential)] ++ public struct AsyncTaskMethodBuilder { + } +- [System.Runtime.InteropServices.StructLayoutAttribute(System.Runtime.InteropServices.LayoutKind.Sequential)] +- public struct AsyncTaskMethodBuilder : IAsyncMethodBuilder { ++ [System.Runtime.InteropServices.StructLayoutAttribute(System.Runtime.InteropServices.LayoutKind.Sequential)] ++ public struct AsyncTaskMethodBuilder { + } +- [System.Runtime.InteropServices.StructLayoutAttribute(System.Runtime.InteropServices.LayoutKind.Sequential)] +- public struct AsyncVoidMethodBuilder : IAsyncMethodBuilder { ++ [System.Runtime.InteropServices.StructLayoutAttribute(System.Runtime.InteropServices.LayoutKind.Sequential)] ++ public struct AsyncVoidMethodBuilder { + } ++ public sealed class DisablePrivateReflectionAttribute : Attribute { ++ public DisablePrivateReflectionAttribute(); ++ } ++ public static class FormattableStringFactory { ++ public static FormattableString Create(string format, params object[] arguments); ++ } + } + namespace System.Runtime.InteropServices { + public static class Marshal { +- public static IntPtr CreateAggregatedObject(IntPtr pOuter, object o); ++ [MethodImpl(InternalCall)]public static IntPtr CreateAggregatedObject(IntPtr pOuter, object o); +- public static void DestroyStructure(IntPtr ptr, Type structuretype); ++ [MethodImpl(InternalCall)]public static void DestroyStructure(IntPtr ptr, Type structuretype); +- public static int GetExceptionCode(); ++ [MethodImpl(InternalCall)]public static int GetExceptionCode(); +- public static void GetNativeVariantForObject(object obj, IntPtr pDstNativeVariant); ++ [MethodImpl(InternalCall)]public static void GetNativeVariantForObject(object obj, IntPtr pDstNativeVariant); +- public static object GetObjectForIUnknown(IntPtr pUnk); ++ [MethodImpl(InternalCall)]public static object GetObjectForIUnknown(IntPtr pUnk); +- public static object GetObjectForNativeVariant(IntPtr pSrcNativeVariant); ++ [MethodImpl(InternalCall)]public static object GetObjectForNativeVariant(IntPtr pSrcNativeVariant); +- public static object[] GetObjectsForNativeVariants(IntPtr aSrcNativeVariant, int cVars); ++ [MethodImpl(InternalCall)]public static object[] GetObjectsForNativeVariants(IntPtr aSrcNativeVariant, int cVars); +- public static int GetStartComSlot(Type t); ++ [MethodImpl(InternalCall)]public static int GetStartComSlot(Type t); +- public static object GetUniqueObjectForIUnknown(IntPtr unknown); ++ [MethodImpl(InternalCall)]public static object GetUniqueObjectForIUnknown(IntPtr unknown); +- public static void StructureToPtr(object structure, IntPtr ptr, bool fDeleteOld); ++ [MethodImpl(InternalCall)]public static void StructureToPtr(object structure, IntPtr ptr, bool fDeleteOld); +- public static IntPtr UnsafeAddrOfPinnedArrayElement(Array arr, int index); ++ [MethodImpl(InternalCall)]public static IntPtr UnsafeAddrOfPinnedArrayElement(Array arr, int index); + } + } + namespace System.Runtime.Serialization { + public sealed class CollectionDataContractAttribute : Attribute { ++ public bool IsItemNameSetExplicitly { get; } ++ public bool IsKeyNameSetExplicitly { get; } ++ public bool IsNameSetExplicitly { get; } ++ public bool IsNamespaceSetExplicitly { get; } ++ public bool IsReferenceSetExplicitly { get; } ++ public bool IsValueNameSetExplicitly { get; } + } + public sealed class DataContractAttribute : Attribute { ++ public bool IsNameSetExplicitly { get; } ++ public bool IsNamespaceSetExplicitly { get; } ++ public bool IsReferenceSetExplicitly { get; } + } + public sealed class DataMemberAttribute : Attribute { ++ public bool IsNameSetExplicitly { get; } + } + public sealed class EnumMemberAttribute : Attribute { ++ public bool IsValueSetExplicitly { get; } + } + } + namespace System.Security.AccessControl { + public sealed class AuthorizationRuleCollection : ReadOnlyCollectionBase { ++ public AuthorizationRuleCollection(); ++ public void AddRule(AuthorizationRule rule); + } + public sealed class CommonSecurityDescriptor : GenericSecurityDescriptor { ++ public void AddDiscretionaryAcl(byte revision, int trusted); ++ public void AddSystemAcl(byte revision, int trusted); + } + public sealed class DiscretionaryAcl : CommonAcl { ++ public void AddAccess(AccessControlType accessType, SecurityIdentifier sid, ObjectAccessRule rule); ++ public bool RemoveAccess(AccessControlType accessType, SecurityIdentifier sid, ObjectAccessRule rule); ++ public void RemoveAccessSpecific(AccessControlType accessType, SecurityIdentifier sid, ObjectAccessRule rule); ++ public void SetAccess(AccessControlType accessType, SecurityIdentifier sid, ObjectAccessRule rule); + } + public abstract class ObjectSecurity { ++ protected ObjectSecurity(); ++ protected ObjectSecurity(CommonSecurityDescriptor securityDescriptor); + } + public sealed class SystemAcl : CommonAcl { ++ public void AddAudit(SecurityIdentifier sid, ObjectAuditRule rule); ++ public bool RemoveAudit(SecurityIdentifier sid, ObjectAuditRule rule); ++ public void RemoveAuditSpecific(SecurityIdentifier sid, ObjectAuditRule rule); ++ public void SetAudit(SecurityIdentifier sid, ObjectAuditRule rule); + } + } + namespace System.Security.Claims { + public class Claim { ++ public Claim(BinaryReader reader); ++ public Claim(BinaryReader reader, ClaimsIdentity subject); ++ protected Claim(Claim other); ++ protected Claim(Claim other, ClaimsIdentity subject); ++ protected virtual byte[] CustomSerializationData { get; } ++ public virtual void WriteTo(BinaryWriter writer); ++ protected virtual void WriteTo(BinaryWriter writer, byte[] userData); + } + public class ClaimsIdentity : IIdentity { ++ public ClaimsIdentity(BinaryReader reader); ++ protected ClaimsIdentity(ClaimsIdentity other); ++ protected virtual byte[] CustomSerializationData { get; } ++ protected virtual Claim CreateClaim(BinaryReader reader); ++ public virtual void WriteTo(BinaryWriter writer); ++ protected virtual void WriteTo(BinaryWriter writer, byte[] userData); + } + public class ClaimsPrincipal : IPrincipal { ++ public ClaimsPrincipal(BinaryReader reader); ++ protected virtual byte[] CustomSerializationData { get; } ++ public virtual ClaimsPrincipal Clone(); ++ protected virtual ClaimsIdentity CreateClaimsIdentity(BinaryReader reader); ++ public virtual void WriteTo(BinaryWriter writer); ++ protected virtual void WriteTo(BinaryWriter writer, byte[] userData); + } + } + namespace System.Security.Cryptography { + public abstract class AsymmetricAlgorithm : IDisposable { +- public abstract string KeyExchangeAlgorithm { get; } ++ public virtual string KeyExchangeAlgorithm { get; } +- public abstract string SignatureAlgorithm { get; } ++ public virtual string SignatureAlgorithm { get; } +- public abstract void FromXmlString(string xmlString); ++ public virtual void FromXmlString(string xmlString); +- public abstract string ToXmlString(bool includePrivateParameters); ++ public virtual string ToXmlString(bool includePrivateParameters); + } + public sealed class CngAlgorithm : IEquatable { ++ public static CngAlgorithm Rsa { get; } + } ++ [System.Runtime.InteropServices.StructLayoutAttribute(System.Runtime.InteropServices.LayoutKind.Sequential)] ++ public struct HashAlgorithmName : IEquatable { ++ public HashAlgorithmName(string name); ++ public static HashAlgorithmName MD5 { get; } ++ public string Name { get; } ++ public static HashAlgorithmName SHA1 { get; } ++ public static HashAlgorithmName SHA256 { get; } ++ public static HashAlgorithmName SHA384 { get; } ++ public static HashAlgorithmName SHA512 { get; } ++ public bool Equals(HashAlgorithmName other); ++ public override bool Equals(object obj); ++ public override int GetHashCode(); ++ public static bool operator ==(HashAlgorithmName left, HashAlgorithmName right); ++ public static bool operator !=(HashAlgorithmName left, HashAlgorithmName right); ++ public override string ToString(); ++ } + public abstract class RandomNumberGenerator : IDisposable { ++ public virtual void GetBytes(byte[] data, int offset, int count); + } + public class Rfc2898DeriveBytes : DeriveBytes { ++ public byte[] CryptDeriveKey(string algname, string alghashname, int keySize, byte[] rgbIV); + } + public abstract class RSA : AsymmetricAlgorithm { ++ public override string KeyExchangeAlgorithm { get; } ++ public override string SignatureAlgorithm { get; } ++ public virtual byte[] Decrypt(byte[] data, RSAEncryptionPadding padding); +- public abstract byte[] DecryptValue(byte[] rgb); ++ public virtual byte[] DecryptValue(byte[] rgb); ++ public virtual byte[] Encrypt(byte[] data, RSAEncryptionPadding padding); +- public abstract byte[] EncryptValue(byte[] rgb); ++ public virtual byte[] EncryptValue(byte[] rgb); ++ protected virtual byte[] HashData(byte[] data, int offset, int count, HashAlgorithmName hashAlgorithm); ++ protected virtual byte[] HashData(Stream data, HashAlgorithmName hashAlgorithm); ++ public byte[] SignData(byte[] data, HashAlgorithmName hashAlgorithm, RSASignaturePadding padding); ++ public virtual byte[] SignData(byte[] data, int offset, int count, HashAlgorithmName hashAlgorithm, RSASignaturePadding padding); ++ public virtual byte[] SignData(Stream data, HashAlgorithmName hashAlgorithm, RSASignaturePadding padding); ++ public virtual byte[] SignHash(byte[] hash, HashAlgorithmName hashAlgorithm, RSASignaturePadding padding); ++ public bool VerifyData(byte[] data, byte[] signature, HashAlgorithmName hashAlgorithm, RSASignaturePadding padding); ++ public virtual bool VerifyData(byte[] data, int offset, int count, byte[] signature, HashAlgorithmName hashAlgorithm, RSASignaturePadding padding); ++ public bool VerifyData(Stream data, byte[] signature, HashAlgorithmName hashAlgorithm, RSASignaturePadding padding); ++ public virtual bool VerifyHash(byte[] hash, byte[] signature, HashAlgorithmName hashAlgorithm, RSASignaturePadding padding); + } ++ public sealed class RSACng : RSA { ++ public RSACng(); ++ public RSACng(CngKey key); ++ public RSACng(int keySize); ++ public CngKey Key { get; private set; } ++ public override byte[] Decrypt(byte[] data, RSAEncryptionPadding padding); ++ public override byte[] Encrypt(byte[] data, RSAEncryptionPadding padding); ++ public override RSAParameters ExportParameters(bool includePrivateParameters); ++ public override void ImportParameters(RSAParameters parameters); ++ public override byte[] SignHash(byte[] hash, HashAlgorithmName hashAlgorithm, RSASignaturePadding padding); ++ public override bool VerifyHash(byte[] hash, byte[] signature, HashAlgorithmName hashAlgorithm, RSASignaturePadding padding); ++ } + public sealed class RSACryptoServiceProvider : RSA, ICspAsymmetricAlgorithm { ++ public override byte[] Decrypt(byte[] data, RSAEncryptionPadding padding); ++ public override byte[] Encrypt(byte[] data, RSAEncryptionPadding padding); ++ public override byte[] SignHash(byte[] hash, HashAlgorithmName hashAlgorithm, RSASignaturePadding padding); ++ public override bool VerifyHash(byte[] hash, byte[] signature, HashAlgorithmName hashAlgorithm, RSASignaturePadding padding); + } ++ public sealed class RSAEncryptionPadding : IEquatable { ++ public RSAEncryptionPaddingMode Mode { get; } ++ public HashAlgorithmName OaepHashAlgorithm { get; } ++ public static RSAEncryptionPadding OaepSHA1 { get; } ++ public static RSAEncryptionPadding OaepSHA256 { get; } ++ public static RSAEncryptionPadding OaepSHA384 { get; } ++ public static RSAEncryptionPadding OaepSHA512 { get; } ++ public static RSAEncryptionPadding Pkcs1 { get; } ++ public static RSAEncryptionPadding CreateOaep(HashAlgorithmName hashAlgorithm); ++ public override bool Equals(object obj); ++ public bool Equals(RSAEncryptionPadding other); ++ public override int GetHashCode(); ++ public static bool operator ==(RSAEncryptionPadding left, RSAEncryptionPadding right); ++ public static bool operator !=(RSAEncryptionPadding left, RSAEncryptionPadding right); ++ public override string ToString(); ++ } ++ public enum RSAEncryptionPaddingMode { ++ Oaep = 1, ++ Pkcs1 = 0, ++ } ++ public sealed class RSASignaturePadding : IEquatable { ++ public RSASignaturePaddingMode Mode { get; } ++ public static RSASignaturePadding Pkcs1 { get; } ++ public static RSASignaturePadding Pss { get; } ++ public override bool Equals(object obj); ++ public bool Equals(RSASignaturePadding other); ++ public override int GetHashCode(); ++ public static bool operator ==(RSASignaturePadding left, RSASignaturePadding right); ++ public static bool operator !=(RSASignaturePadding left, RSASignaturePadding right); ++ public override string ToString(); ++ } ++ public enum RSASignaturePaddingMode { ++ Pkcs1 = 0, ++ Pss = 1, ++ } + } + namespace System.Security.Cryptography.X509Certificates { ++ public static class RSACertificateExtensions { ++ public static RSA GetRSAPrivateKey(this X509Certificate2 certificate); ++ public static RSA GetRSAPublicKey(this X509Certificate2 certificate); ++ } +- public class X509Certificate : IDeserializationCallback, ISerializable { ++ public class X509Certificate : IDeserializationCallback, IDisposable, ISerializable { ++ public void Dispose(); ++ protected virtual void Dispose(bool disposing); + } +- public class X509Chain { ++ public class X509Chain : IDisposable { ++ public SafeX509ChainHandle SafeHandle { get; } ++ public void Dispose(); ++ protected virtual void Dispose(bool disposing); + } +- public sealed class X509Store { ++ public sealed class X509Store : IDisposable { ++ public void Dispose(); + } + } + namespace System.Security.Cryptography.Xml { + public class EncryptedXml { ++ public int XmlDSigSearchDepth { get; set; } + } + } + namespace System.Security.Principal { + public class WindowsIdentity : ClaimsIdentity, IDeserializationCallback, IDisposable, ISerializable { ++ public SafeAccessTokenHandle AccessToken { get; } ++ public static T RunImpersonated(SafeAccessTokenHandle safeAccessTokenHandle, Func func); ++ public static void RunImpersonated(SafeAccessTokenHandle safeAccessTokenHandle, Action action); + } + } + namespace System.ServiceModel { + public sealed class TcpTransportSecurity { ++ public SslProtocols SslProtocols { get; set; } + } + } + namespace System.ServiceModel.Channels { + public class SslStreamSecurityBindingElement : StreamUpgradeBindingElement, IPolicyExportExtension, ITransportTokenAssertionProvider { ++ public SslProtocols SslProtocols { get; set; } + } + } + namespace System.ServiceModel.Configuration { + public sealed class SslStreamSecurityElement : BindingElementExtensionElement { ++ public SslProtocols SslProtocols { get; private set; } + } + public sealed class TcpTransportSecurityElement : ServiceModelConfigurationElement { ++ public SslProtocols SslProtocols { get; private set; } + } + } + namespace System.Text { + public abstract class Encoding : ICloneable { ++ protected Encoding(int codePage, EncoderFallback encoderFallback, DecoderFallback decoderFallback); ++ public unsafe string GetString(byte* bytes, int byteCount); ++ public static void RegisterProvider(EncodingProvider provider); + } ++ public abstract class EncodingProvider { ++ public EncodingProvider(); ++ public abstract Encoding GetEncoding(int codepage); ++ public virtual Encoding GetEncoding(int codepage, EncoderFallback encoderFallback, DecoderFallback decoderFallback); ++ public abstract Encoding GetEncoding(string name); ++ public virtual Encoding GetEncoding(string name, EncoderFallback encoderFallback, DecoderFallback decoderFallback); ++ } + public sealed class StringBuilder : ISerializable { ++ public unsafe StringBuilder Append(char* value, int valueCount); ++ public StringBuilder AppendFormat(IFormatProvider provider, string format, object arg0); ++ public StringBuilder AppendFormat(IFormatProvider provider, string format, object arg0, object arg1); ++ public StringBuilder AppendFormat(IFormatProvider provider, string format, object arg0, object arg1, object arg2); + } + } + namespace System.Threading { ++ public sealed class AsyncLocal : IAsyncLocal { ++ public AsyncLocal(); ++ public AsyncLocal(Action> valueChangedHandler); ++ public T Value { get; set; } ++ } ++ [System.Runtime.InteropServices.StructLayoutAttribute(System.Runtime.InteropServices.LayoutKind.Sequential)] ++ public struct AsyncLocalValueChangedArgs { ++ public T CurrentValue { get; private set; } ++ public T PreviousValue { get; private set; } ++ public bool ThreadContextChanged { get; private set; } ++ } ++ public static class WaitHandleExtensions { ++ public static SafeWaitHandle GetSafeWaitHandle(this WaitHandle waitHandle); ++ public static void SetSafeWaitHandle(this WaitHandle waitHandle, SafeWaitHandle value); ++ } + } + namespace System.Threading.Tasks { + public class Task : IAsyncResult, IDisposable, IThreadPoolWorkItem { ++ public static Task CompletedTask { get; } ++ public static Task FromCanceled(CancellationToken cancellationToken); ++ public static Task FromCanceled(CancellationToken cancellationToken); ++ public static Task FromException(Exception exception); ++ public static Task FromException(Exception exception); + } + public class TaskCompletionSource { ++ public bool TrySetCanceled(CancellationToken cancellationToken); + } + public enum TaskContinuationOptions { ++ RunContinuationsAsynchronously = 64, + } + public enum TaskCreationOptions { ++ RunContinuationsAsynchronously = 64, + } + } + namespace System.Web { + public sealed class HttpRequest { ++ public ITlsTokenBindingInfo TlsTokenBindingInfo { get; } + } + public abstract class HttpRequestBase { ++ public virtual ITlsTokenBindingInfo TlsTokenBindingInfo { get; } + } + public class HttpRequestWrapper : HttpRequestBase { ++ public override ITlsTokenBindingInfo TlsTokenBindingInfo { get; } + } + public sealed class HttpResponse { ++ public Task FlushAsync(); ++ public void PushPromise(string path); ++ public void PushPromise(string path, string method, NameValueCollection headers); + } + public abstract class HttpResponseBase { ++ public virtual Task FlushAsync(); ++ public virtual void PushPromise(string path); ++ public virtual void PushPromise(string path, string method, NameValueCollection headers); + } + public class HttpResponseWrapper : HttpResponseBase { ++ public override Task FlushAsync(); ++ public override void PushPromise(string path); ++ public override void PushPromise(string path, string method, NameValueCollection headers); + } ++ public interface ITlsTokenBindingInfo { ++ byte[] GetProvidedTokenBindingId(); ++ byte[] GetReferredTokenBindingId(); ++ } + } + namespace System.Web.UI.WebControls { + public class ModelDataSourceView : DataSourceView, IStateManager { ++ public override void Delete(IDictionary keys, IDictionary oldValues, DataSourceViewOperationCallback callback); ++ public override void Insert(IDictionary values, DataSourceViewOperationCallback callback); ++ public override void Select(DataSourceSelectArguments arguments, DataSourceViewSelectCallback callback); ++ public override void Update(IDictionary keys, IDictionary values, IDictionary oldValues, DataSourceViewOperationCallback callback); + } ++ public sealed class SelectResult { ++ public SelectResult(int totalRowCount, IEnumerable results); ++ public IEnumerable Results { get; private set; } ++ public int TotalRowCount { get; private set; } ++ } + } + namespace System.Windows { + public static class CoreCompatibilityPreferences { ++ public static Nullable EnableMultiMonitorDisplayClipping { get; set; } + } + } ++namespace System.Windows.Diagnostics { ++ public static class VisualDiagnostics { ++ public static XamlSourceInfo GetXamlSourceInfo(object obj); ++ public static event EventHandler VisualTreeChanged; ++ } ++ public class VisualTreeChangeEventArgs : EventArgs { ++ public VisualTreeChangeEventArgs(DependencyObject parent, DependencyObject child, int childIndex, VisualTreeChangeType changeType); ++ public VisualTreeChangeType ChangeType { get; private set; } ++ public DependencyObject Child { get; private set; } ++ public int ChildIndex { get; private set; } ++ public DependencyObject Parent { get; private set; } ++ } ++ public enum VisualTreeChangeType { ++ Add = 0, ++ Remove = 1, ++ } ++ public class XamlSourceInfo { ++ public XamlSourceInfo(Uri sourceUri, int lineNumber, int linePosition); ++ public int LineNumber { get; private set; } ++ public int LinePosition { get; private set; } ++ public Uri SourceUri { get; private set; } ++ } ++} + namespace System.Windows.Forms { + public class MonthCalendar : Control { ++ protected override void DefWndProc(ref Message m); + } + } + namespace System.Windows.Input { + public sealed class Cursor : IDisposable { ++ public Cursor(Stream cursorStream, bool scaleWithDpi); ++ public Cursor(string cursorFile, bool scaleWithDpi); + } + public sealed class StylusDevice : InputDevice { ++ public bool IsValid { get; } + } + } + namespace System.Windows.Interop { + [System.Runtime.InteropServices.StructLayoutAttribute(System.Runtime.InteropServices.LayoutKind.Sequential)] + public struct HwndSourceParameters { ++ public bool UsesPerPixelTransparency { get; set; } + } + } + namespace System.Xaml { + public class XamlObjectEventArgs : EventArgs { ++ public int ElementLineNumber { get; private set; } ++ public int ElementLinePosition { get; private set; } ++ public Uri SourceBamlUri { get; private set; } + } + } + namespace System.Xml { + public class XmlCDataSection : XmlCharacterData { ++ public override XmlNode PreviousText { get; } + } + public abstract class XmlNode : ICloneable, IEnumerable, IXPathNavigable { ++ public virtual XmlNode PreviousText { get; } + } + public class XmlSignificantWhitespace : XmlCharacterData { ++ public override XmlNode PreviousText { get; } + } + public class XmlText : XmlCharacterData { ++ public override XmlNode PreviousText { get; } + } + public class XmlWhitespace : XmlCharacterData { ++ public override XmlNode PreviousText { get; } + } + } + namespace Microsoft.Win32 { + public sealed class RegistryKey : MarshalByRefObject, IDisposable { ++ public RegistryKey CreateSubKey(string subkey, bool writable); ++ public RegistryKey CreateSubKey(string subkey, bool writable, RegistryOptions options); ++ public RegistryKey OpenSubKey(string name, RegistryRights rights); + } + } + namespace Microsoft.Win32.SafeHandles { ++ public sealed class SafeAccessTokenHandle : SafeHandle { ++ public SafeAccessTokenHandle(IntPtr handle); ++ public static SafeAccessTokenHandle InvalidHandle { get; } ++ public override bool IsInvalid { get; } ++ } ++ public sealed class SafeProcessHandle : SafeHandleZeroOrMinusOneIsInvalid { ++ public SafeProcessHandle(IntPtr existingHandle, bool ownsHandle); ++ } ++ public sealed class SafeX509ChainHandle : SafeHandleZeroOrMinusOneIsInvalid { ++ } + } +``` From 6f7f17386900f0286969d1e3d7430990070c8da3 Mon Sep 17 00:00:00 2001 From: Kaarthik Sivashanmugam Date: Wed, 20 Apr 2016 16:42:34 -0700 Subject: [PATCH 273/872] adding Mobius to .NET open source projects list --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 6188d42cc..589f869ce 100644 --- a/README.md +++ b/README.md @@ -25,6 +25,7 @@ There are many [open source .NET projects](dotnet-developer-projects.md), a few * [MVVM Cross](https://github.com/MvvmCross/MvvmCross) * [MVVM Light Toolkit](http://www.mvvmlight.net) * [ReactiveUI](https://github.com/reactiveui/ReactiveUI) +* [Mobius: C# API for Apache Spark](https://github.com/Microsoft/Mobius) For a longer list, see: From aac25bac40ac118a2830311a5dc4a0ee9a5c34c7 Mon Sep 17 00:00:00 2001 From: Kaarthik Sivashanmugam Date: Thu, 21 Apr 2016 10:54:23 -0700 Subject: [PATCH 274/872] moving newly added entry to the correct alphabetical order --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 589f869ce..1ad4842c8 100644 --- a/README.md +++ b/README.md @@ -20,12 +20,12 @@ There are many [open source .NET projects](dotnet-developer-projects.md), a few * [Exceptionless](https://github.com/exceptionless/Exceptionless) * [Glimpse](http://getglimpse.com) * [JSON.NET](http://json.net/) +* [Mobius: C# API for Apache Spark](https://github.com/Microsoft/Mobius) * [MonoGame](http://monogame.net) * [Mono Project](https://github.com/mono/) * [MVVM Cross](https://github.com/MvvmCross/MvvmCross) * [MVVM Light Toolkit](http://www.mvvmlight.net) * [ReactiveUI](https://github.com/reactiveui/ReactiveUI) -* [Mobius: C# API for Apache Spark](https://github.com/Microsoft/Mobius) For a longer list, see: From 912a1a67c5b31bcc5767cf6dfa7b74e8c4d5187d Mon Sep 17 00:00:00 2001 From: Sean Killeen Date: Fri, 29 Apr 2016 11:58:52 -0400 Subject: [PATCH 275/872] Add Akka.NET to Platforms section Resolves #290. --- dotnet-developer-projects.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index ddb12928d..51bc3fcd0 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -18,7 +18,8 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [Catel](https://github.com/catel/catel) - Application platform with IoC, logging, reflection and much more that serves as a base for applications that must be ready for future growth. * [Enterprise Web Library (EWL)](https://github.com/enduracode/enterprise-web-library) - An extremely opinionated platform for web applications that trades off performance, scalability, and development flexibility for an ease of maintenance you won't find anywhere else. [Enterprise Web Library site](http://www.enterpriseweblibrary.org/). * [KonfDB](https://github.com/punitganshani/konfdb) - Configuration Management as a Service for cross-platform, multi-tenant enterprise/hobby applications. - + * [Akka.NET](http://github.com/akkadotnet) - Akka.NET is a toolkit and runtime for building highly concurrent, distributed, and fault tolerant event-driven applications on .NET & Mono. This community-driven port brings C# & F# developers the capabilities of the original Akka framework in Java/Scala. [[Project Site]](http://getakka.net/) + * Languages * [Boo](https://github.com/bamboo/boo) - A .NET language similar to Python but with static typing, and many meta-programming capabilities. * [ClojureCLR](https://github.com/clojure/clojure-clr) - A .NET implemention of the [Clojure](http://clojure.org) programming language, built on the DLR. From 003d0e6ba5b6430f60c80c92b8995f5bf65a25aa Mon Sep 17 00:00:00 2001 From: William Ivanski Date: Sat, 30 Apr 2016 23:03:32 -0300 Subject: [PATCH 276/872] Added Spartacus and OmniDB --- dotnet-developer-projects.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index ddb12928d..66bd1c326 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -140,6 +140,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [SharpSnmpLib](https://sharpsnmplib.codeplex.com) - An easy-to-use SNMP library for use on all platforms (.NET/Mono/Xamarin) * [Shielded](https://github.com/jbakic/Shielded) - Software Transactional Memory for .NET * [SmartIrc4net](https://github.com/meebey/SmartIrc4net) - IRC C# Library + * [Spartacus](https://github.com/wind39/spartacus) - Multi-purpose C# library, containing: 1) classes to access many types of databases in a fast, generic way; 2) classes to work with XLSX, CSV and DBF files; 3) PDF report engine. * [Splat](https://github.com/paulcbetts/splat) - A library to make things cross-platform that should be. * [SSH.NET](https://sshnet.codeplex.com/) - A client-side library for SSH, SCP and SFTP. * [Strongly Typed Client API Generators for ASP.NET Web API](https://webapiclientgen.codeplex.com/) - Strongly Typed Client API Generators generate strongly typed client API in TypeScript and C# codes supporting desktop, Universal Windows, Android and iOS. @@ -209,6 +210,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [Mini Profiler](https://github.com/MiniProfiler/dotnet) - A simple but effective mini-profiler for .NET. * [Node.js Tools For Visual Studio](https://github.com/Microsoft/nodejstools) - Plugin that turns Visual Studio into a Node.js IDE * [Obfuscar](https://obfuscar.codeplex.com) - MSIL obfuscation utility for .NET assemblies. + * [OmniDB](http://omnidb.com.br)(https://github.com/OmniDB/OmniDB) - Web tool for database management and conversion. * [Outcomes.Net](https://github.com/kinetiq/Ether.Outcomes/) - Fluent wrapper that eliminates plumbing code around failure-prone functions. * [Paket](https://github.com/fsprojects/Paket) - Dependency manager for .NET and Mono projects, which is designed to work well with NuGet packages and also enables referencing files directly from GitHub repositories. * [Protobuf-net](https://code.google.com/p/protobuf-net/) - A .NET implementation of protobuf, allowing you to serialize your .NET objects efficiently and easily. From f8b82d8c5421b7447f612cfb2e192c9607978bab Mon Sep 17 00:00:00 2001 From: William Ivanski Date: Sat, 30 Apr 2016 23:04:45 -0300 Subject: [PATCH 277/872] Update dotnet-developer-projects.md --- dotnet-developer-projects.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 66bd1c326..9cb975fd9 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -210,7 +210,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [Mini Profiler](https://github.com/MiniProfiler/dotnet) - A simple but effective mini-profiler for .NET. * [Node.js Tools For Visual Studio](https://github.com/Microsoft/nodejstools) - Plugin that turns Visual Studio into a Node.js IDE * [Obfuscar](https://obfuscar.codeplex.com) - MSIL obfuscation utility for .NET assemblies. - * [OmniDB](http://omnidb.com.br)(https://github.com/OmniDB/OmniDB) - Web tool for database management and conversion. + * [OmniDB](http://omnidb.com.br) (https://github.com/OmniDB/OmniDB) - Web tool for database management and conversion. * [Outcomes.Net](https://github.com/kinetiq/Ether.Outcomes/) - Fluent wrapper that eliminates plumbing code around failure-prone functions. * [Paket](https://github.com/fsprojects/Paket) - Dependency manager for .NET and Mono projects, which is designed to work well with NuGet packages and also enables referencing files directly from GitHub repositories. * [Protobuf-net](https://code.google.com/p/protobuf-net/) - A .NET implementation of protobuf, allowing you to serialize your .NET objects efficiently and easily. From b05e700201545befe0eba3d3c21e83bc1265fd8c Mon Sep 17 00:00:00 2001 From: William Ivanski Date: Sat, 30 Apr 2016 23:05:55 -0300 Subject: [PATCH 278/872] Update dotnet-developer-projects.md --- dotnet-developer-projects.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 9cb975fd9..264ef6567 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -210,7 +210,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [Mini Profiler](https://github.com/MiniProfiler/dotnet) - A simple but effective mini-profiler for .NET. * [Node.js Tools For Visual Studio](https://github.com/Microsoft/nodejstools) - Plugin that turns Visual Studio into a Node.js IDE * [Obfuscar](https://obfuscar.codeplex.com) - MSIL obfuscation utility for .NET assemblies. - * [OmniDB](http://omnidb.com.br) (https://github.com/OmniDB/OmniDB) - Web tool for database management and conversion. + * [OmniDB](https://github.com/OmniDB/OmniDB) - Web tool for database management and conversion. [Site](http://omnidb.com.br) * [Outcomes.Net](https://github.com/kinetiq/Ether.Outcomes/) - Fluent wrapper that eliminates plumbing code around failure-prone functions. * [Paket](https://github.com/fsprojects/Paket) - Dependency manager for .NET and Mono projects, which is designed to work well with NuGet packages and also enables referencing files directly from GitHub repositories. * [Protobuf-net](https://code.google.com/p/protobuf-net/) - A .NET implementation of protobuf, allowing you to serialize your .NET objects efficiently and easily. From 272ce3dee902d3db871e4ecebca1dc6d53547d2e Mon Sep 17 00:00:00 2001 From: WilliamBZA Date: Fri, 10 Jun 2016 15:43:02 +0200 Subject: [PATCH 279/872] Add NServiceBus to the list --- dotnet-developer-projects.md | 1 + 1 file changed, 1 insertion(+) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index f90c94d7a..fb3a5cae9 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -71,6 +71,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [System.Data.SQLite](https://system.data.sqlite.org) - SQLite * Messaging + * [NServiceBus](https://github.com/Particular/NServiceBus) - The most popular service bus for .NET * [AzureNetQ](https://github.com/Roysvork/AzureNetQ) - An easy to use .NET API for Azure Service Bus. * [EasyNetQ](https://github.com/mikehadlow/EasyNetQ) - An easy to use .NET API for RabbitMQ. * [Lime](https://github.com/takenet/lime-csharp) - A lightweight messaging library. From d0160680052a3fa5fd0cfa23d951c7f3efd1037f Mon Sep 17 00:00:00 2001 From: Dave Glick Date: Sat, 25 Jun 2016 17:46:32 -0400 Subject: [PATCH 280/872] Added some static site generators to developer projects (#301) --- dotnet-developer-projects.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index fb3a5cae9..f5c86347c 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -65,6 +65,12 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [Nancy](https://github.com/NancyFx/Nancy) - A lightweight, low-ceremony, framework for building HTTP based services on .NET and Mono. * [NemerleWeb](https://github.com/NemerleWeb/NemerleWeb) - Web MVVM library for .Net. It uses reactive data model which allows creating rich internet applications. +* Static Site Generators + * [FsBlog](https://github.com/fsprojects/FsBlog/) - Blog aware, static site generation using F#. + * [Pretzel](https://github.com/Code52/pretzel) - A site generation tool (and then some) for .NET platforms. + * [Sandra.Snow](https://github.com/Sandra/Sandra.Snow) - Jekyll inspired static site generation for .NET. + * [Wyam](http://wyam.io) - A simple to use, highly modular, and extremely configurable static content generator. + * ADO.NET providers * [Firebird .NET client](https://sourceforge.net/p/firebird/NETProvider/) - Firebird * [Npgsql](https://github.com/npgsql/npgsql) - PostgreSQL From 092a67678bab95c2c39a7fcc7e7c56b0314a2f70 Mon Sep 17 00:00:00 2001 From: Joshua McKinney Date: Fri, 1 Jul 2016 01:16:41 -0500 Subject: [PATCH 281/872] (minor) Add missing http:// in OSS projects doc (#302) --- dotnet-developer-projects.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index f5c86347c..2df1014c0 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -40,7 +40,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [Roslyn (.NET Compiler Platform)](https://roslyn.codeplex.com/) - Open-source C# and Visual Basic compilers with rich code analysis APIs. * Quality Assurance - * [C# Coding Guidelines](csharpcodingguidelines.com) - A set of coding guidelines for C# 3.0, 4.0 and 5.0 that extend StyleCop and can be forked and adapted for internal use. + * [C# Coding Guidelines](http://csharpcodingguidelines.com) - A set of coding guidelines for C# 3.0, 4.0 and 5.0 that extend StyleCop and can be forked and adapted for internal use. * Security / Identity Management * [NWebsec](https://github.com/NWebsec/NWebsec) - Security headers for ASP.NET applications. From 74b630631279b7a9440fdabd1c2c6c48ad432851 Mon Sep 17 00:00:00 2001 From: Joshua McKinney Date: Fri, 1 Jul 2016 01:17:44 -0500 Subject: [PATCH 282/872] Fix Vagrant / Vagabond project name in dev projects doc (#303) --- dotnet-developer-projects.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 2df1014c0..b3e9dd320 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -225,7 +225,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [scriptcs](https://github.com/scriptcs/scriptcs) - scriptcs makes it easy to write and execute C# with a simple text editor. * [Snoop WPF](https://github.com/cplotts/snoopwpf) - Snoop - The WPF Spy Utility * [Sql Bulk Copy Sync](https://github.com/WCOMAB/SqlBulkSync) - * [Vagrant](https://github.com/nessos/Vagrant) - Automated dependency resolution and dynamic assembly compilation framework. + * [Vagabond](https://github.com/nessos/Vagabond) - Automated dependency resolution and dynamic assembly compilation framework. * [Waf DotNetPad](http://dotnetpad.codeplex.com) - The Waf DotNetPad is a simple and fast code editor that makes fun program with C# or Visual Basic. * [Weighted Selector](https://github.com/kinetiq/Ether.WeightedSelector/) - Easy to use (but high performance!) weighted selection implementation. * [XDav](https://github.com/rezabazargan/xDav) - A .net server mudole for webdav standard. From 3ef5bd8fe1d13e17e05bf6f6d47eacceefeb36dd Mon Sep 17 00:00:00 2001 From: Petr Onderka Date: Tue, 12 Jul 2016 18:18:12 +0100 Subject: [PATCH 283/872] Fixed link (#304) --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 1ad4842c8..1a94b67b1 100644 --- a/README.md +++ b/README.md @@ -54,7 +54,7 @@ details. Most .NET open source projects at Microsoft have been contributed to the [.NET Foundation](http://www.dotnetfoundation.org/projects). There are two main .NET Foundation projects for Microsoft open source projects: -[ASP.NET Core 5 project](http://www.dotnetfoundation.org/aspnet-5) +[ASP.NET Core project](http://www.dotnetfoundation.org/aspnet-core) and the [.NET Core project](http://www.dotnetfoundation.org/netcore). ## License From f130da62aa5d63a2052c10d10c06691b7aba4756 Mon Sep 17 00:00:00 2001 From: James Singleton Date: Tue, 12 Jul 2016 18:19:11 +0100 Subject: [PATCH 284/872] Add ASP.NET Core Library and Framework Support (#305) Add link to ASP.NET Core (and .NET Core) Library and Framework Support GitHub repository and ANCLAFS.com. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 1a94b67b1..813c653ea 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,7 @@ on the .NET blog. ## Finding .NET Open Source Projects -There are many [open source .NET projects](dotnet-developer-projects.md), a few of which are listed below. Additionally [@quozd](https://github.com/quozd) maintains a list of [awesome open source .NET libraries, tools, frameworks, and software](https://github.com/quozd/awesome-dotnet). +There are many [open source .NET projects](dotnet-developer-projects.md), a few of which are listed below. Additionally [@quozd](https://github.com/quozd) maintains a list of [awesome open source .NET libraries, tools, frameworks, and software](https://github.com/quozd/awesome-dotnet). [ASP.NET Core (and .NET Core) Library and Framework Support](https://github.com/jpsingleton/ANCLAFS) is listed at [ANCLAFS.com](https://ANCLAFS.com). From 8375d018a0fd6c4e4b924f31274b9b9dae24184d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mesut=20Pi=C5=9Fkin?= Date: Fri, 22 Jul 2016 19:03:56 +0300 Subject: [PATCH 285/872] Update dotnet-developer-projects.md (#306) added new library (Accord.NET Framework) link --- dotnet-developer-projects.md | 1 + 1 file changed, 1 insertion(+) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index b3e9dd320..416e6ddb1 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -165,6 +165,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * Data Mine/Data Extraction/Machine Learning/AI * [AForge.NET](http://www.aforgenet.com/) - a C# framework designed for developers and researchers in the fields of Computer Vision and Artificial Intelligence - image processing, neural networks, genetic algorithms, machine learning, robotics + * [Accord.NET Framework](https://github.com/accord-net/framework) - The Accord.NET Framework is a .NET machine learning framework combined with audio and image processing libraries completely written in C#. * [Nepy](http://nepy.codeplex.com) - A collection of NLP parsers for .NET * [SharpNLP](http://sharpnlp.codeplex.com) - SharpNLP is a collection of natural language processing tools written in C# * [Toxy](http://toxy.codeplex.com) - An data/text extraction framework for .NET, similar to Tika in Java. From 69faafca3a255866a316e5b88cd7c09062655039 Mon Sep 17 00:00:00 2001 From: Preeti Krishna Date: Tue, 2 Aug 2016 11:04:00 -0700 Subject: [PATCH 286/872] .NET Framework 4.6.2 Change List (#307) List of changes --- releases/net462/dotnet462-changes.md | 108 +++++++++++++++++++++++++-- 1 file changed, 103 insertions(+), 5 deletions(-) diff --git a/releases/net462/dotnet462-changes.md b/releases/net462/dotnet462-changes.md index 2857e214e..ae6db2b68 100644 --- a/releases/net462/dotnet462-changes.md +++ b/releases/net462/dotnet462-changes.md @@ -1,7 +1,7 @@ -.NET Framework 4.6.2 Preview List of Changes +.NET Framework 4.6.2 List of Changes ============================================ -.NET Framework 4.6.2 Preview contains dozens of bug fixes and improvements. +.NET Framework 4.6.2 contains dozens of bug fixes and improvements. This list details those changes, grouped by feature area. Each change includes our TFS bug numbers at the end of the line. Please include those numbers in your communication if you wish to contact us to obtain more information. @@ -31,6 +31,20 @@ CLR * Improve Diagnostic when using RelatedActivityID in EventSource [128437] * User-defined subclasses named "EventSource" can be allowed by checking that the EventSource's type is not equal to typeof(EventSource) which is the type of the built in EventSource. [125529] * When a byte array is written to an Event a spurious warning is generated by EventSource, claiming that the event has a mismatch in parameter count when it does not. [166228] +* Fixed erroneous removal of IF condition in a finally or catch handler if the condition check exists in the exit from the try-body and entry to the try-body. [149697] +* Fixed a codegen bug when encountering an unbox instruction while the evaluation stack has pending evaluations that side-effect arguments of the unbox. [150586] +* Fix for optimization bug in the JIT component of .NET 4.6.1 may incorrectly combine branches that test bit patterns into a single branch incorrectly leading to program failure. [168744] +* Fix for hang in GC when ETW happens to request to walk the heap at the end of a background server GC [179589] +* Fixed NullReferenceException in EventSource if activity tracking is enabled. [182896] +* Fixed an EventSource exception indicating the maximum number of arguments has been exceeded. [191686] +* Added support for memory limit specified by job objects to GC. [194795] +* Fixed JIT Optimizer bug causing structs to be treated as reference objects instead of values objects in .Net 4.6 when targeting amd64. [194809] +* Fixed potential crash when the JIT generates an incorrect initialization value for an initblk and initializes memory incorrectly. [199169] +* Added VariableHome API for NullReferenceException improvements. [199851] +* Fixed [EventSource] Tags field is ignored for complex types. [205969] +* Allowed the debugger to determine the layout of types without an instance of the type. [211562] +* Reduced events are being sent for telemetry to the CLR for Windows Server OSes. [211794] +* Support resolving Windows Runtime references through simple name in .NET SDK. [219126] BCL --- @@ -54,6 +68,33 @@ BCL * System.Security.Cryptography RSAOAEPKeyExchangeDeformatter, RSAOAEPKeyExchangeFormatter, RSAPKCS1KeyExchangeDeformatters and RSAPKCS1KeyExchangeFormatter no longer fail when used with a CNG key. [190217] * Added support for AesCng and TripleDESCng. [187062] * The DSA base class has been updated in the same manner as RSA in 4.6, and ECDsa in 4.6.1. Accessing the public/private key of a DSA certificate can be done in a type-safe manner via cert.GetDSAPublicKey()/cert.GetDSAPrivateKey(), and signing and verification operations can be done without further casting. [167883] +* Improved usability of error message for System.BitConverter.ToString(Byte[] value, Int32 startIndex, Int32 length). [100012] +* Fix in bulletin MS16-019. [145386] +* Fix in bulletin MS16-035. [171029] +* AesCng() and TripleDEScng() updated to honor optional provider value. [176670] +* Fixes in System.Security.Cryptography [190217] + RSAOAEPKeyExchangeDeformatter + RSAOAEPKeyExchangeFormatter + RSAPKCS1KeyExchangeDeformatters + RSAPKCS1KeyExchangeFormatter +* Localized RegionInfo object "BW". [194531] +* Fixed SignedXml.CheckSignature(X509Certificate2) will fail for DSA certs with large keys. [194760] +* Added support for long path names on Windows. [195340] +* Fixed EncryptedXml not supporting CNG certificates. [196759] +* Fixed AppContext switch default. [198124] +* Fixed string comparison hitting before the AppDomain is fully initialized. [198570] +* Fixed potential errors with String comparison hitting before the AppDomain is fully initialized. [199217] +* Added validation that AppContext defaults are correctly enabled. [200028] +* Fixed potential errors with String comparison hitting before the AppDomain is fully initialized. [200330] and [201338] +* Fixed file path syntax to correctly handle device path syntaxes (\\.\, \\?\) [202926] +* Fix for StringBuilder overflow and the length becoming negative when > 2GB of data is added/inserted. [216203] + +Networking +---------- +* Fixed a crash with Null Reference in PinnableBufferCache.Free. [144864] +* Fix in bulletin MS16-065. [186985] +* Added CNG certificate support to NCL code in System.dll. [195318] +* An AccessViolationException gets thrown in HttpListenerRequest.GetTlsTokenBindingRequestInfo() if the RequestBuffer of the HttpListenerRequest has been moved by the garbage collector. This AccessViolation is caused by the fact that HttpListenerRequest is dereferencing a pointer inside RequestBuffer, without adjusting the pointer address the way other HttpListenerRequest methods do. This is now fixed. [204580] ASP.NET ------- @@ -63,6 +104,10 @@ ASP.NET * Fixed Non-interlocked update/read of 64-bit variable leads to wrong behavior. [92099] * Since .NET 4.5 ASP.NET cache reports invalid size of the cache. This has been fixed. [154451] * Fixed client side project compilation failure [156379] +* Fixed an issue with missing ".NET Memory Cache 4.0" performance counter [145677] +* Improve error message localization for DataAnnotationValidiation in ASP.NET model binding and Dynamic data. [176731] +* Enable customers using the Session State Store Providers with task returning methods. [179604] +* Enabling task returning methods to be used with the OutputCache Providers, to allow ASP.Net customers to get the scalability benefits of async. [187841] WPF --- @@ -79,16 +124,52 @@ WPF * Enables enumeration of generic and themed ResourceDictionary instances, and provides a notification infrastructure for listening to loading and unloading of ResourceDictionary instances. [159740] * Starting .NET 4.6, CurrentCulture or CurrentUICulture changes made by event handlers (or any other method that WPF orchestrates the dispatch for) are lost when the method completes. This can result in various unintended side-effects ranging from the selection of incorrect UI language by application code, to potential loss of state information. This fix addresses the bug described above. [157919] * Fixed compilation error in situations when a locally defined custom type in a XAML resource dictionary is immediately followed by something like x:Array. [131561] +* Long runs of dashes are now displayed correctly, without spurious spaces. [92892] +* On environments where the secondary monitor is larger than the primary monitor, a WPF application won't maximize to the correct size. This is now fixed. [104034] +* Fixed Crash after refreshing a collection underlying a ComboBox. [125219] +* Fixed crash in DataGrid view. [150804] +* Fixed Groups not being sorted correctly after property changes. [165198] +* Fixed RibbonGallery being disabled. [173053] +* Fixed memory usage issues with printing in Windows 8 and above. [174139] +* Fix in bulletin MS16-035. [176941] +* Developers can opt-in to receiving an exception when TextBoxBase controls fail to complete a Copy or Cut operation. [177621] +* WPF applications being used via multi-touch enabled devices could sometimes lose mouse promotion after a multi-touch drag/drop. This occurred when users removed touch points other than the primary (or dragging) touch point first. Doing so would cause an incorrect count of active touch devices causing mouse promotion handling to be incorrect for future touch interaction. This is now fixed. [185548] +* WPF would previously throw an ArgumentException when a UI Automation Client queried for an unknown TextAttribute. This was causing performance issues in WPF applications on Windows 8 and above. WPF will now simply return NotSupported in response to querying an unknown TextAttribute preserving the external behavior and helping alleviate performance issues. [187764] +* Fix for crash that occurs when: App is running more than one dispatcher thread, First thread uses any ItemsControl, Second thread uses a Selector. While something is selected, the underlying collection raises a Reset event, or the ItemsSource changes. [190507] +* Per Monitor DPI Aware apps now can have their title bars scaled to the correct DPI when an app is moved from one DPI to a different one. [206796] +* Images created with BitmapCreateOptions=DelayCreation can now update their ImageSource by listening to the RoutedEvent DpiChanged on the Image. This event is fired before the Image is decoded, and thus the cost of decoding the image twice can be avoided. [206986] +* WPF apps which are Per monitor DPI aware, running on Windows 10 Anniversary Update, will not have their popup windows like Menus clipped the first time they are open on a monitor with a different DPI. [212426] +* Fixed for Wisptis doesn't support some scenarios in Windows 7, trying to load wisptis in certain scenarios can result in delays upon start or crashes. [215016] +* Fixed issues with the touch keyboard showing on controls when it should not. [222625] +* Fixed ArgumentException when scrolling a virtualized ItemsControl after adding new items [194726]. +* Avoid unnecessary iteration through all items displayed in a virtualized ItemsControl with ScrollUnit=Item [202599]. +* Fixed XPS printing crash when InvariantCulture is used. [143947] +* Fixed truncation of contents during copy & paste in HTML format when WPF�s DataGrid control contains full width characters, for e.g. Japanese. [104825] WCF --- * Added a new option for client to find best matching WCF service endpoint using NetNamePipeBinding.[157498] * CryptoConfig.CreateName(string algorithm) is now updated to understand SHA256 algorithms. [195341] * Fixed a reliability issue in DataContractCriticalHelper which throws as a SerializationException when reading objects concurrently. [146940] +* Fixed System.ServiceModel.Activation.HostedAspNetEnvironment.get_WebSocketVersion failing during WP startup. [169409] +* Added support for OperationContext.Current with async. [171085] +* Added telemetry for WCF. [172127] +* Fixed a race in UnescapeDefaultValue in UriTemplate::Match when using Default Values [176590] +* Added Support for usage of X509 certificates which are stored using the CNG key storage provider. [182182] +* Fix for XmlSerializer not correctly serializing with XmlText's DataType set to "time". [184091] +* Removed Ssl3 from the WCF TransportDefaults. [186891] +* Fixed DataContractJsonSerializer producing wrong date/time data after having installed KB3093503 when the time zone is (UTC+2) Istanbul. [187509] +* Fixed Performance in AppServices Throughput. [201205] +* Fixed issue that could occur with tracing enabled on WCF async service; failed call generated double OperationFaulted traces. [208167] +* Fix for ArgumentException when opening service host when user�s certificate has invalid key usage data. [223670] +* Fixed WCF SslStreamSecurity DNS Identity Check failure while targeting .NET Framework 4.6 when Alt subject is not present [182336] Workflow -------- * Workflow designer now supports �prepared for update� dynamic update XAML [98185] +* Fixed a FIPS compliance issue when using workflow tracking in WF3. [181434] +* Added Workflow/System.Messaging/System.Transactions Telemetry. [198681] +* Fixed transaction failure for SQLCLR usage of System.Transactions to promote a local SQL transaction to a distributed transaction. [206276] Windows Forms ------------- @@ -104,12 +185,29 @@ Windows Forms * Fixed control text truncations issue in �Items Collection Editor� dialog in Visual Studio. [187716] * Fixed a crash in Windows Forms Designer in Visual Studio related to adjusting TableLayoutPanel control. [190415] * Fixed a crash in Windows Forms Designer in Visual Studio [190416] +* Fix in bulletin MS16-019. [174623] +* Added Long path support for Windows 10 Anniversary Update in Windows Forms. [191855] +* Improved reliability of Windows Forms applications [193532] +* Added support for CNG key providers to Mage and Mageui SDK tools [194373] +* Fixed printing delay in previewing the document with a network printer. [197824] +* Added Long path support for Windows 10 Anniversary Update in ClientConfigPath. [202970] +* Fixed X1 Professional Client "ok" button is gray and disabled after select Desktop in browse for folder. [207279] + +SQL +--- +* Added Parameter Caching and CEK TTL improvements. [200050] +* Removed connection pool blocking period for Azure SQL DBs. [200140] +* Fixed incorrect error message in SqlClient when a Command Execution fails on Azure. [201189] +* Disallowed WAM option in native ADAL for AAD authorization. [201411] +* Fix in bulletin MS16-091. [222831] +* Fix for a crash that may occur when the connection pool is being replenished and during replenishment of the pool, the connection to SQL server fails. [229717] ClickOnce --------- * Added support for TLS1.1/1.2 in ClickOnce runtime. [193676] * Fixed string truncations issue on ClickOnce security dialog. [176656] +* Added ClickOnce support for installation from web-sites that require Client Certificate to be supplied. [197343] - - - +Active Directory Services +------------------------- +* On calls made to System.DirectoryServices.AccountManagement UserPrincipal.GetAuthorizationGroups method against an Active Directory forest which contains SID History values for migrated users, an empty GroupPrincipal will be added to the list returned by GetAuthorizationGroups for every group with a migrated user SID. [191563] From 999766aba397796e18addc3f7991e2552ac043bb Mon Sep 17 00:00:00 2001 From: Preeti Krishna Date: Tue, 2 Aug 2016 11:18:58 -0700 Subject: [PATCH 287/872] .NET Framework 4.6.2 API changes (#308) API Changes --- releases/net462/dotnet462-api-changes.md | 128 +++++++++++++++++++++++ 1 file changed, 128 insertions(+) diff --git a/releases/net462/dotnet462-api-changes.md b/releases/net462/dotnet462-api-changes.md index cec37982c..ee8d8693d 100644 --- a/releases/net462/dotnet462-api-changes.md +++ b/releases/net462/dotnet462-api-changes.md @@ -1,4 +1,25 @@ ```diff + namespace System.ComponentModel { + public abstract class GroupDescription : INotifyPropertyChanged { ++ public IComparer CustomSort { get; set; } ++ public SortDescriptionCollection SortDescriptions { get; } ++ public bool ShouldSerializeSortDescriptions(); + } + } + namespace System.Data.SqlClient { ++ public enum PoolBlockingPeriod { ++ AlwaysBlock = 1, ++ Auto = 0, ++ NeverBlock = 2, ++ } + public sealed class SqlConnection : DbConnection, ICloneable { ++ public static TimeSpan ColumnEncryptionKeyCacheTtl { get; set; } ++ public static bool ColumnEncryptionQueryMetadataCacheEnabled { get; set; } + } + public sealed class SqlConnectionStringBuilder : DbConnectionStringBuilder { ++ public PoolBlockingPeriod PoolBlockingPeriod { get; set; } + } + } namespace System.Diagnostics.Tracing { - public abstract class EventListener : IDisposable { + public class EventListener : IDisposable { @@ -102,6 +123,104 @@ + public const string XmlDsigSHA512Url = "http://www.w3.org/2001/04/xmlenc#sha512"; } } +namespace System.Web { + public sealed class HttpCachePolicy { ++ public DateTime UtcTimestampCreated { get; set; } ++ public HttpCacheability GetCacheability(); ++ public string GetCacheExtensions(); ++ public string GetETag(); ++ public bool GetETagFromFileDependencies(); ++ public DateTime GetExpires(); ++ public bool GetIgnoreRangeRequests(); ++ public bool GetLastModifiedFromFileDependencies(); ++ public TimeSpan GetMaxAge(); ++ public bool GetNoServerCaching(); ++ public bool GetNoStore(); ++ public bool GetNoTransforms(); ++ public int GetOmitVaryStar(); ++ public TimeSpan GetProxyMaxAge(); ++ public HttpCacheRevalidation GetRevalidation(); ++ public DateTime GetUtcLastModified(); ++ public string GetVaryByCustom(); ++ public bool HasSlidingExpiration(); ++ public bool IsModified(); ++ public bool IsValidUntilExpires(); + } + public sealed class HttpCacheVaryByContentEncodings { ++ public string[] GetContentEncodings(); ++ public void SetContentEncodings(string[] contentEncodings); + } + public sealed class HttpCacheVaryByHeaders { ++ public string[] GetHeaders(); ++ public void SetHeaders(string[] headers); + } + public sealed class HttpCacheVaryByParams { ++ public string[] GetParams(); ++ public void SetParams(string[] parameters); + } + } + namespace System.Web.Caching { + public sealed class AggregateCacheDependency : CacheDependency, ICacheDependencyChanged { ++ public override string[] GetFileDependencies(); + } + public class CacheDependency : IDisposable { ++ public virtual string[] GetFileDependencies(); + } ++ public abstract class OutputCacheProviderAsync : OutputCacheProvider { ++ protected OutputCacheProviderAsync(); ++ public abstract Task AddAsync(string key, object entry, DateTime utcExpiry); ++ public abstract Task GetAsync(string key); ++ public abstract Task RemoveAsync(string key); ++ public abstract Task SetAsync(string key, object entry, DateTime utcExpiry); ++ } ++ public static class OutputCacheUtility { ++ public static CacheDependency CreateCacheDependency(HttpResponse response); ++ public static ArrayList GetContentBuffers(HttpResponse response); ++ public static IEnumerable> GetValidationCallbacks(HttpResponse response); ++ public static void SetContentBuffers(HttpResponse response, ArrayList buffers); ++ public static string SetupKernelCaching(string originalCacheUrl, HttpResponse response); ++ } + } ++namespace System.Web.Globalization { ++ public interface IStringLocalizerProvider { ++ string GetLocalizedString(CultureInfo culture, string name, params object[] arguments); ++ } ++ public sealed class ResourceFileStringLocalizerProvider : IStringLocalizerProvider { ++ public const string ResourceFileName = "DataAnnotation.Localization"; ++ public ResourceFileStringLocalizerProvider(); ++ public string GetLocalizedString(CultureInfo culture, string name, params object[] arguments); ++ } ++ public static class StringLocalizerProviders { ++ public static IStringLocalizerProvider DataAnnotationStringLocalizerProvider { get; set; } ++ } ++} + namespace System.Web.ModelBinding { + public class DataAnnotationsModelValidator : ModelValidator { ++ protected virtual string GetLocalizedErrorMessage(string errorMessage); ++ protected string GetLocalizedString(string name, params object[] arguments); + } ++ public sealed class MaxLengthAttributeAdapter : DataAnnotationsModelValidator { ++ public MaxLengthAttributeAdapter(ModelMetadata metadata, ModelBindingExecutionContext context, MaxLengthAttribute attribute); ++ } ++ public sealed class MinLengthAttributeAdapter : DataAnnotationsModelValidator { ++ public MinLengthAttributeAdapter(ModelMetadata metadata, ModelBindingExecutionContext context, MinLengthAttribute attribute); ++ } + } + namespace System.Web.SessionState { ++ public interface ISessionStateModule : IHttpModule { ++ void ReleaseSessionState(HttpContext context); ++ Task ReleaseSessionStateAsync(HttpContext context); ++ } +- public sealed class SessionStateModule : IHttpModule { ++ public sealed class SessionStateModule : IHttpModule, ISessionStateModule { ++ public void ReleaseSessionState(HttpContext context); ++ public Task ReleaseSessionStateAsync(HttpContext context); + } + public static class SessionStateUtility { ++ public static bool IsSessionStateReadOnly(HttpContext context); ++ public static bool IsSessionStateRequired(HttpContext context); + } + } namespace System.Windows { + public sealed class DpiChangedEventArgs : RoutedEventArgs { + public DpiScale NewDpi { get; private set; } @@ -122,6 +241,9 @@ + public double PixelsPerInchX { get; } + public double PixelsPerInchY { get; } + } + public static class FrameworkCompatibilityPreferences { ++ public static bool ShouldThrowOnCopyOrCutFailure { get; set; } + } + public sealed class HwndDpiChangedEventArgs : HandledEventArgs { + public DpiScale NewDpi { get; private set; } + public DpiScale OldDpi { get; private set; } @@ -229,4 +351,10 @@ + public double PixelsPerDip { get; set; } } } + namespace System.Windows.Data { + public class PropertyGroupDescription : GroupDescription { ++ public static IComparer CompareNameAscending { get; } ++ public static IComparer CompareNameDescending { get; } + } + } ``` From ee21507ac1a72bdabb2d4274930e306010b7c621 Mon Sep 17 00:00:00 2001 From: Preeti Krishna Date: Tue, 2 Aug 2016 11:53:43 -0700 Subject: [PATCH 288/872] .NET Framework 4.6.2 platforms.json update (#309) platforms.json update --- data/platforms.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/data/platforms.json b/data/platforms.json index 007304fec..f704873b1 100644 --- a/data/platforms.json +++ b/data/platforms.json @@ -46,14 +46,14 @@ "supportedBy": [ "VS2013", "VS2012" ], "runtime": [ { - "name": ".NET Framework 4.6.2 Preview", - "link": "http://go.microsoft.com/fwlink/?LinkId=708735" + "name": ".NET Framework 4.6.2", + "link": "http://go.microsoft.com/fwlink/?LinkId=780597" } ], "tools": [ { - "name": ".NET Framework 4.6.2 Preview Developer Pack", - "link": "http://go.microsoft.com/fwlink/?LinkId=708774", + "name": ".NET Framework 4.6.2 Developer Pack", + "link": "http://go.microsoft.com/fwlink/?LinkId=780617", "description": "The .NET 4.6.2 Developer pack includes 4.6.2 reference assemblies needed by Visual Studio and msbuild." } ] From 8515746245d0b05b776cce3ea9bd2487e4be8263 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pauli=20=C3=98ster=C3=B8?= Date: Mon, 15 Aug 2016 19:56:06 +0300 Subject: [PATCH 289/872] Added Composite C1 as Web CMS (#310) --- dotnet-developer-projects.md | 1 + 1 file changed, 1 insertion(+) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 416e6ddb1..d6faf66a4 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -49,6 +49,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [SKGL - Serial Key Generating Library](https://skgl.codeplex.com/) * Web CMS + * [Composite C1](https://github.com/Orckestra/C1-CMS) - Web content management platform (CMS). * [DNN (formerly DotNetNuke)](https://dotnetnuke.codeplex.com/) - Web content management platform (CMS). * [Kaliko CMS](https://github.com/KalikoCMS/KalikoCMS.Core) - Flexible and extensible CMS framework supporting both ASP.NET MVC and WebForms. * [N2CMS](https://github.com/n2cms/n2cms) - Open source, lightweight, code-first CMS able to seamlessly integrate into any MVC project. From cc528d4b74a80372db1e22e07a5b075da2f1f543 Mon Sep 17 00:00:00 2001 From: Bart Lannoeye Date: Wed, 7 Sep 2016 21:44:11 +0200 Subject: [PATCH 290/872] Added UWP Community Toolkit (#315) --- dotnet-developer-projects.md | 1 + 1 file changed, 1 insertion(+) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index d6faf66a4..98df68b5c 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -311,6 +311,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [MahApps.Metro](https://github.com/MahApps/MahApps.Metro) - A toolkit for creating Metro / Modern UI styled WPF apps. [mahapps.com](http://mahapps.com) * [Material Design in XAML Toolkit](https://github.com/ButchersBoy/MaterialDesignInXamlToolkit) - WPF/XAML resources, styles & templates for creating applications using Material Design * [Mono XWT](https://github.com/mono/xwt) - A cross-platform UI toolkit for creating desktop apps + * [UWP Community Toolkit](https://github.com/Microsoft/UWPCommunityToolkit) - The UWP Community Toolkit is a collection of helper functions, custom controls, and app services. It simplifies and demonstrates common developer tasks building UWP apps for Windows 10. * Windows Services * [King.Service](https://github.com/jefking/King.Service) - Task scheduling for Azure and Windows From 88115287081fb72f1d0b6b40e2ea4e3c55f0a137 Mon Sep 17 00:00:00 2001 From: Huachao Mao Date: Thu, 8 Sep 2016 03:44:49 +0800 Subject: [PATCH 291/872] Update dotnet-developer-projects.md (#316) --- dotnet-developer-projects.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 98df68b5c..1bb02cbb8 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -8,7 +8,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [.NET Core](https://github.com/dotnet/core) - Core .NET Framework * [C# Native](https://csnative.codeplex.com) - Compiles C# to native. * [Cosmos](https://github.com/CosmosOS/Cosmos) - C# Open Source Managed Operating System, an operating system "construction kit". - * [Fling OS](http://git.flingos.co.uk/fling-os/src) - [C# Operating System](http://www.flingos.co.uk/) designed for people to learn low-level development from. + * [Fling OS](https://github.com/FlingOS/FlingOS) - [C# Operating System](http://www.flingos.co.uk/) designed for people to learn low-level development from. * [Mono](https://github.com/mono/mono) - Cross-platform implementation of .NET Framework. * [MOSA Project](https://github.com/mosa/MOSA-Project/) - Managed Operating System Alliance Project - C# Operating System. * [SharpLang](https://github.com/xen2/SharpLang) - Compiles C# & .NET to native machine code, using [LLVM](http://llvm.org) as a backend. From ba3b01088ae25747a383c827224fa3f1a1dfbdcd Mon Sep 17 00:00:00 2001 From: James Jackson-South Date: Tue, 13 Sep 2016 04:28:05 +1000 Subject: [PATCH 292/872] Update ImageProcessor description (#318) Adds information to include Core version --- dotnet-developer-projects.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 1bb02cbb8..98631b341 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -173,7 +173,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * Graphics & Server-side Image Processing * [DynamicImage](https://github.com/tgjones/dynamic-image) - WPF-based server-side image rendering system - lots of visual effects implemented as high-performance shaders. Has URL api, several plugins available. - * [ImageProcessor](https://github.com/jimbobsquarepants/imageprocessor/) - A .NET Library For On-The-Fly Processing Of Images (GDI+ based). + * [ImageProcessor](https://github.com/jimbobsquarepants/imageprocessor/) - A cross-platform library for processing of image files written in C#. Available in Core (NetStandard 1.1 X-Plat) and Framework (NET 4.5+ GDI+ based) flavours. * [ImageResizer](https://github.com/imazen/resizer) - Add commands to image URLs to get altered versions in milliseconds. Edit, filter, touch-up images in real-time. (multiple backends - FreeImage, C++/CLI, GDI+, WIC). 45+ plugins available. * [King.Azure.Imaging](https://github.com/jefking/King.Azure.Imaging) - Scalable image uploading and processing for Azure. * [MonoGame](http://www.monogame.net/) - MonoGame is a cross-platform, open-source implementation of the XNA Game Framework. From 7cba4766ca3049504d66c78079fc63d124675424 Mon Sep 17 00:00:00 2001 From: Rich Lander Date: Tue, 13 Sep 2016 09:30:09 -0700 Subject: [PATCH 293/872] Add .NET Core --- data/platforms.json | 78 ++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 74 insertions(+), 4 deletions(-) diff --git a/data/platforms.json b/data/platforms.json index f704873b1..7ec1cf614 100644 --- a/data/platforms.json +++ b/data/platforms.json @@ -19,6 +19,8 @@ , "platformcategories": [ +{"alias":"netcore", +"name":".NET Core"}, {"alias":"netfx", "name":".NET Framework"}, {"alias":"services", @@ -33,6 +35,75 @@ "platforms": [ + { + "platform": ".NET Core 1.0", + "category": "netcore", + "supportInfo": { + "support": "Supported", + "link": "" + }, + "popular": true, + "info": "https://blogs.msdn.microsoft.com/dotnet/2016/06/27/announcing-net-core-1-0/", + "includedIn": [ ], + "supportedBy": [ "VS2015" ], + "runtime": [ + { + "name": ".NET Core 1.0", + "link": "https://dot.net/core" + } + ], + "tools": [ + { + "name": ".NET Core Tools for Visual Studio 2015 Update 3", + "link": "https://go.microsoft.com/fwlink/?LinkID=824849", + "description": "The .NET Core Tools for Visual Studio 2015 (requires Update 3)." + }, + { + "name": "Visual Studio 2015 Update 3", + "link": "https://go.microsoft.com/fwlink/?LinkId=691129", + "description": "Required to install .NET Core 1.0" + }, + + { + "name": ".NET Core SDK (for commandline on Windows)", + "link": "https://go.microsoft.com/fwlink/?LinkID=809122", + "description": "The .NET Core SDK for Windows, including the .NET Core commandline tools." + }, + { + "name": ".NET Core SDK (for commandline on macOS)", + "link": "https://www.microsoft.com/net/core#macos", + "description": "The .NET Core SDK for macOS, including the .NET Core commandline tools." + }, + { + "name": ".NET Core SDK (for commandline on Linux)", + "link": "https://dot.net/core", + "description": "The .NET Core SDK for Linux, including the .NET Core commandline tools." + }, + { + "name": ".NET Core SDK (for Docker)", + "link": "https://www.microsoft.com/net/core#docker", + "description": "Using the .NET Core docker container on Windows, macOS and Linux." + } + ] + }, + { + "platform": "ASP.NET Core 1.0", + "category": "netcore", + "supportInfo": { + "support": "Supported", + "link": "" + }, + "popular": true, + "info": "https://blogs.msdn.microsoft.com/webdev/2016/06/27/announcing-asp-net-core-1-0/", + "includedIn": [ ], + "supportedBy": [ "VS2015" ], + "runtime": [ + { + "name": "ASP.NET Core 1.0", + "link": "http://www.asp.net/get-started" + } + ] + }, { "platform": ".NET Framework 4.6.2", "category": "netfx", @@ -42,8 +113,8 @@ }, "popular": true, "info": "http://go.microsoft.com/fwlink/?LinkID=708776", - "includedIn": [ "VS2015" ], - "supportedBy": [ "VS2013", "VS2012" ], + "includedIn": [ ], + "supportedBy": [ "VS2015", "VS2013", "VS2012" ], "runtime": [ { "name": ".NET Framework 4.6.2", @@ -215,8 +286,7 @@ "includedIn":[], "supportedBy":["VS2015","VS2013","VS2012"], "tools":[ -{"name":"Azure SDK for .NET","link":"http://go.microsoft.com/fwlink/?LinkID=254336"}, -{"name":"Visual Studio Express 2013 for Web","link":"http://www.visualstudio.com/downloads/download-visual-studio-vs#d-express-web"} +{"name":"Azure SDK for .NET","link":"http://go.microsoft.com/fwlink/?LinkID=254336"} ] }, From 743a0465d9ce77b9f2f2d65a7d22df6e4de4ff95 Mon Sep 17 00:00:00 2001 From: Rich Lander Date: Tue, 13 Sep 2016 09:57:04 -0700 Subject: [PATCH 294/872] Add Unity --- data/platforms.json | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/data/platforms.json b/data/platforms.json index 7ec1cf614..ae488e0e3 100644 --- a/data/platforms.json +++ b/data/platforms.json @@ -27,6 +27,8 @@ "name":"Services"}, {"alias":"devices", "name":"Devices"}, +{"alias":"gaming", +"name":"Gaming"}, {"alias":"libraries", "name":"Libraries"}, {"alias":"silverlight", @@ -481,6 +483,46 @@ {"name":"Xamarin Tools for iOS and Android","link":"http://go.microsoft.com/fwlink/?LinkID=398052"}] }, { +"platform":"Unity", +"category":"gaming", +"info":"https://blogs.msdn.microsoft.com/visualstudio/2016/07/14/visual-studio-tools-for-unity-2-3/", +"includedIn":[], +"supportedBy":["VS2015"], +"runtime":[], +"tools":[ +{"name":"Visual Studio 2015 Tools for Unity","link":"https://visualstudiogallery.msdn.microsoft.com/8d26236e-4a64-4d64-8486-7df95156aba9"}] +}, +{ +"platform":"Unity", +"category":"gaming", +"info":"https://blogs.msdn.microsoft.com/visualstudio/2016/07/14/visual-studio-tools-for-unity-2-3/", +"includedIn":[], +"supportedBy":["VS2013"], +"runtime":[], +"tools":[ +{"name":"Visual Studio 2013 Tools for Unity","link":"http://visualstudiogallery.msdn.microsoft.com/20b80b8c-659b-45ef-96c1-437828fe7cf2"}] +}, +{ +"platform":"Unity", +"category":"gaming", +"info":"https://blogs.msdn.microsoft.com/visualstudio/2016/07/14/visual-studio-tools-for-unity-2-3/", +"includedIn":[], +"supportedBy":["VS2012"], +"runtime":[], +"tools":[ +{"name":"Visual Studio 2012 Tools for Unity","link":"http://visualstudiogallery.msdn.microsoft.com/7ab11d2a-f413-4ed6-b3de-ff1d05157714"}] +}, +{ +"platform":"Unity", +"category":"gaming", +"info":"https://blogs.msdn.microsoft.com/visualstudio/2016/07/14/visual-studio-tools-for-unity-2-3/", +"includedIn":[], +"supportedBy":["VS2010"], +"runtime":[], +"tools":[ +{"name":"Visual Studio 2010 Tools for Unity","link":"http://visualstudiogallery.msdn.microsoft.com/6e536faa-ce73-494a-a746-6a14753015f1"}] +}, +{ "platform":".NET Micro Framework", "category":"devices", "info":"http://www.netmf.com/", From 0049c3b1ede704e1f7bb91da1dfcdf8e205f7094 Mon Sep 17 00:00:00 2001 From: Rich Lander Date: Tue, 13 Sep 2016 17:16:55 -0700 Subject: [PATCH 295/872] Update for .NET Core 1.0.1 --- data/platforms.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/data/platforms.json b/data/platforms.json index ae488e0e3..47fabd941 100644 --- a/data/platforms.json +++ b/data/platforms.json @@ -57,7 +57,7 @@ "tools": [ { "name": ".NET Core Tools for Visual Studio 2015 Update 3", - "link": "https://go.microsoft.com/fwlink/?LinkID=824849", + "link": "https://go.microsoft.com/fwlink/?LinkID=827546", "description": "The .NET Core Tools for Visual Studio 2015 (requires Update 3)." }, { @@ -68,7 +68,7 @@ { "name": ".NET Core SDK (for commandline on Windows)", - "link": "https://go.microsoft.com/fwlink/?LinkID=809122", + "link": "https://go.microsoft.com/fwlink/?LinkID=827524", "description": "The .NET Core SDK for Windows, including the .NET Core commandline tools." }, { From 05fc666afa69e168ac88fd691d453cfe3080b4c9 Mon Sep 17 00:00:00 2001 From: Maira Wenzel Date: Tue, 13 Sep 2016 21:29:25 -0700 Subject: [PATCH 296/872] fixed branding (#321) --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 813c653ea..60765170e 100644 --- a/README.md +++ b/README.md @@ -39,7 +39,7 @@ For a list of free services and tools for open source .NET projects, see: ## How to Engage, Contribute and Provide Feedback .NET open source projects from Microsoft (gladly) accept PRs and other -contributions. To contribute to ASP.NET 5 or EntityFramework, see +contributions. To contribute to ASP.NET Core or Entity Framework Core, see [the ASP.NET Contributing Guide](https://github.com/aspnet/Home/blob/master/CONTRIBUTING.md). To contribute to .NET Core, see the [.NET Core Contributing Guide](https://github.com/dotnet/corefx/wiki/Contributing). From 258a2880e4ec97877b8522fa33cda34472ac6324 Mon Sep 17 00:00:00 2001 From: Dirk Lemstra Date: Sat, 24 Sep 2016 05:34:30 +0200 Subject: [PATCH 297/872] Added Magick.NET (#323) --- dotnet-developer-projects.md | 1 + 1 file changed, 1 insertion(+) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 98631b341..499861307 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -176,6 +176,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [ImageProcessor](https://github.com/jimbobsquarepants/imageprocessor/) - A cross-platform library for processing of image files written in C#. Available in Core (NetStandard 1.1 X-Plat) and Framework (NET 4.5+ GDI+ based) flavours. * [ImageResizer](https://github.com/imazen/resizer) - Add commands to image URLs to get altered versions in milliseconds. Edit, filter, touch-up images in real-time. (multiple backends - FreeImage, C++/CLI, GDI+, WIC). 45+ plugins available. * [King.Azure.Imaging](https://github.com/jefking/King.Azure.Imaging) - Scalable image uploading and processing for Azure. + * [Magick.NET](https://magick.codeplex.com) - The .NET (Core/Framework) wrapper for the [ImageMagick](https://www.imagemagick.org) library that supports over [100 major file formats](https://www.imagemagick.org/script/formats.php). * [MonoGame](http://www.monogame.net/) - MonoGame is a cross-platform, open-source implementation of the XNA Game Framework. * [.NET Image Processor](http://dotnetimageprocessor.codeplex.com/) - Extensible, chainable image processing library (GDI+ based). * [OpenTK](https://github.com/opentk/opentk) - OpenTK is a low-level, cross-platform binding to OpenGL, OpenGL ES, OpenCL and OpenAL, available for Windows, Linux, Mac OS X, BSD, Android and iOS. From 0b9e9ac722d43b38dd129647dbe875b603fe1bdc Mon Sep 17 00:00:00 2001 From: mistachkin Date: Sun, 25 Sep 2016 22:59:53 -0700 Subject: [PATCH 298/872] Update the URL for Eagle to use HTTPS. --- dotnet-developer-projects.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 499861307..ce003963d 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -25,7 +25,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [ClojureCLR](https://github.com/clojure/clojure-clr) - A .NET implemention of the [Clojure](http://clojure.org) programming language, built on the DLR. * [Cobra](http://cobra-language.com/source/) - Clean, high-level syntax (Boo/Python-like). Static and dynamic binding. First class support for unit tests and contracts. Compiled performance with scripting conveniences. Lambdas and closures. Extensions and mixins * [Dynamic Language Runtime](http://www.github.com/IronLanguages/main) - A toolkit for building dynamic languages for .NET. - * [Eagle](http://eagle.to) - A .NET implementation of the [Tcl](https://www.tcl.tk) programming language, built on the CLR. + * [Eagle](https://eagle.to) - A .NET implementation of the [Tcl](https://www.tcl.tk) programming language, built on the CLR. * [Essence#](https://essencesharp.codeplex.com/) - Essence# is a fully dynamic and highly polymorphic programming language which features pervasive message passing, pervasive dynamic and strong typing, pervasive and deep reflection and pervasive object orientation. * [F#](https://github.com/fsharp/fsharp) - A mature, open source, cross-platform, functional-first programming language. * [F*](https://github.com/FStarLang/FStar) - An ML-like language with a type system for program verification. From f2f8de0618be41227953e6720908c39a754c0fa2 Mon Sep 17 00:00:00 2001 From: crystaju Date: Wed, 14 Sep 2016 15:50:45 -0700 Subject: [PATCH 299/872] Adding Azure SDK for .NET in the oss services file Added Azure SDK for .NET link directly in the dotnet free oss services .md file --- dotnet-free-oss-services.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/dotnet-free-oss-services.md b/dotnet-free-oss-services.md index 15e3813e7..7d528e718 100644 --- a/dotnet-free-oss-services.md +++ b/dotnet-free-oss-services.md @@ -36,6 +36,9 @@ Please sort projects alphabetically and provide a one-line description. Where po * Analytics and Error Reporting * [Bugsnag](https://bugsnag.com/blog/bugsnag-loves-open-source) - Cross platform error reporting. +* Cloud Resources and Services + * [Azure SDK for .NET](https://www.visualstudio.com/features/azure-tools-vs) - Easily build, manage, and deploy cloud-scale apps with Visual Studio and Azure. + * Misc * [Crowdin](https://crowdin.com/page/open-source-project-setup-request) - Localisation management platform. * [Transifex](https://www.transifex.com/pricing/) - Localisation management platform. \ No newline at end of file From b47ef2c69aabb265c20a330e7e0d05ee0691118b Mon Sep 17 00:00:00 2001 From: John Taubensee Date: Wed, 12 Oct 2016 17:01:13 -0700 Subject: [PATCH 300/872] Adding Event Hubs (#328) ... to the open source developer projects list --- dotnet-developer-projects.md | 1 + 1 file changed, 1 insertion(+) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index ce003963d..6b7323646 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -78,6 +78,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [System.Data.SQLite](https://system.data.sqlite.org) - SQLite * Messaging + * [Azure Event Hubs](https://github.com/azure/azure-event-hubs-dotnet) - A Microsoft supported Event Hubs library for sending and receiving messages at scale. * [NServiceBus](https://github.com/Particular/NServiceBus) - The most popular service bus for .NET * [AzureNetQ](https://github.com/Roysvork/AzureNetQ) - An easy to use .NET API for Azure Service Bus. * [EasyNetQ](https://github.com/mikehadlow/EasyNetQ) - An easy to use .NET API for RabbitMQ. From ae6e4cbe71d1a074488ccc84cf03e0386e069630 Mon Sep 17 00:00:00 2001 From: Rich Lander Date: Wed, 26 Oct 2016 15:33:11 -0700 Subject: [PATCH 301/872] Add scripts to accelerate NGEN compilation (#332) - Context: https://blogs.msdn.microsoft.com/dotnet/2013/08/06/wondering-why-mscorsvw-exe-has-high-cpu-usage-you-can-speed-it-up/ - The files were on a webserver before. Now, they will be more easily accessible --- tools/DrainNGENQueue/DrainNGenQueue.ps | Bin 0 -> 1346 bytes tools/DrainNGENQueue/DrainNGenQueue.wsf | 117 ++++++++++++++++++++++++ 2 files changed, 117 insertions(+) create mode 100644 tools/DrainNGENQueue/DrainNGenQueue.ps create mode 100644 tools/DrainNGENQueue/DrainNGenQueue.wsf diff --git a/tools/DrainNGENQueue/DrainNGenQueue.ps b/tools/DrainNGENQueue/DrainNGenQueue.ps new file mode 100644 index 0000000000000000000000000000000000000000..1357853b93137b80bf86c5868a594a192987b10b GIT binary patch literal 1346 zcmchXO>f#j5Qgvm6{96mK*SCOm!y$$NL89vYG_(eawt74_5j=9U1xU!LAU3@n{O~HBWG>^aH5WibVY6RwxMu^+q^9 z1v-kP`^ClQ$sKA#fr8=<{t}@r zaqFx34~#4v7YD~MJn475qgYvq_MOl!7#;+>Mq7)1$F<<|HMZGS$XIB0!ftr95)xSl zy1-^PBGSsJg?0L7l|EMH=u-x^=?A^wb?>ZyR@uYc9+G{~8@zhMNa7x)&#_f_4qsC1#YqFoijZT%ru{iNHGWt325Ot_@b-{T=0TjswTl9I=GxvRM^&e{tx* z4=)bGI!yD`E4_5hV?dBmX7Njg8O9$iCWgu)%rJZ_EIB-D&QXV<=XtF`-=EXz_&r4L p{AY)Mg%_XuZf|N!;?xv{sj~mADDd5M{9E;_B>zhyO)v9yzX29YtKI+r literal 0 HcmV?d00001 diff --git a/tools/DrainNGENQueue/DrainNGenQueue.wsf b/tools/DrainNGENQueue/DrainNGenQueue.wsf new file mode 100644 index 000000000..abff566ca --- /dev/null +++ b/tools/DrainNGENQueue/DrainNGenQueue.wsf @@ -0,0 +1,117 @@ + + + From b1b234b38c816236ba1c576e1612aa25b0059e54 Mon Sep 17 00:00:00 2001 From: Richard Lander Date: Thu, 24 Nov 2016 11:27:01 -0800 Subject: [PATCH 302/872] Add aliases --- data/platforms.json | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/data/platforms.json b/data/platforms.json index 47fabd941..91770e38b 100644 --- a/data/platforms.json +++ b/data/platforms.json @@ -108,6 +108,7 @@ }, { "platform": ".NET Framework 4.6.2", + "alias": "net462", "category": "netfx", "supportInfo": { "support": "Supported", @@ -133,6 +134,7 @@ }, { "platform":".NET Framework 4.6.1", +"alias": "net461", "category":"netfx", "supportInfo" : { @@ -152,6 +154,7 @@ }, { "platform":".NET Framework 4.6", +"alias": "net46", "category":"netfx", "supportInfo" : { @@ -170,6 +173,7 @@ }, { "platform":".NET Framework 4.5.2", +"alias": "net452", "category":"netfx", "supportInfo" : { @@ -189,6 +193,7 @@ }, { "platform":".NET Framework 4.5.1", +"alias": "net451", "category":"netfx", "supportInfo" : { @@ -207,6 +212,7 @@ }, { "platform":".NET Framework 4.5", +"alias": "net45", "category":"netfx", "supportInfo" : { @@ -225,6 +231,7 @@ { "platform":".NET Framework 4.0.3", +"alias": "net403", "category":"netfx", "supportInfo" : { @@ -246,6 +253,7 @@ { "platform":".NET Framework 4", +"alias": "net4", "category":"netfx", "supportInfo" : { @@ -265,6 +273,7 @@ { "platform":".NET Framework 2.0 + 3.5 SP1", +"alias": "net2", "category":"netfx", "supportInfo" : { From 23852da2a6da78291698bb55105bd7b4e564a753 Mon Sep 17 00:00:00 2001 From: Ian Cooper Date: Thu, 12 Jan 2017 06:35:54 +0000 Subject: [PATCH 303/872] Update dotnet-developer-projects.md (#334) Moved Brighter to messaging. It's a clearer fot for us, as we hold similar functionality to Mass Transit and NServiceBus --- dotnet-developer-projects.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 6b7323646..23afc0eb7 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -81,6 +81,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [Azure Event Hubs](https://github.com/azure/azure-event-hubs-dotnet) - A Microsoft supported Event Hubs library for sending and receiving messages at scale. * [NServiceBus](https://github.com/Particular/NServiceBus) - The most popular service bus for .NET * [AzureNetQ](https://github.com/Roysvork/AzureNetQ) - An easy to use .NET API for Azure Service Bus. + * [Brighter](https://github.com/iancooper/Paramore) - A Command Dispatcher and Command Processor library with support for Work or Task Queues over different MoM implementations such as RabbitMQ * [EasyNetQ](https://github.com/mikehadlow/EasyNetQ) - An easy to use .NET API for RabbitMQ. * [Lime](https://github.com/takenet/lime-csharp) - A lightweight messaging library. * [MassTransit](https://github.com/MassTransit/MassTransit) - A distributed application framework for RabbitMQ and Azure Service Bus. @@ -97,7 +98,6 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [Automatonymous](https://github.com/MassTransit/Automatonymous) - An asynchronous state machine engine with messaging support. * [Bing.RestClient](https://github.com/AdvancedREI/Bing.RestClient) - Access the Bing REST APIs from a unified client. * [BoxKite.Twitter](https://github.com/NickHodge/BoxKite.Twitter/) - Twitter .NET Client Library for the 1.1 Twitter API, incorporating REST API, User streaming and Search Streaming. Uses Reactive Extensions (Rx). - * [Brighter](https://github.com/iancooper/Paramore) - A Command Dispatcher and Command Processor library with support for Work or Task Queues over different MoM implementations such as RabbitMQ * [Cecil](https://github.com/jbevain/cecil) - A popular library to read, modify and write .NET binaries. * [Cimbalino Toolkit](https://github.com/Cimbalino/Cimbalino-Toolkit) - A set of useful and powerful tools that will help you build your Windows Platform applications. * [Coding4Fun Toolkit](https://github.com/Coding4FunProjects/Coding4FunToolkit) From 4505bed087c3a4ca3e620556e4787bcf93182f61 Mon Sep 17 00:00:00 2001 From: NN Date: Thu, 12 Jan 2017 08:36:24 +0200 Subject: [PATCH 304/872] Add CodeJam library (#342) --- dotnet-developer-projects.md | 1 + 1 file changed, 1 insertion(+) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 23afc0eb7..9aa7d7f01 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -100,6 +100,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [BoxKite.Twitter](https://github.com/NickHodge/BoxKite.Twitter/) - Twitter .NET Client Library for the 1.1 Twitter API, incorporating REST API, User streaming and Search Streaming. Uses Reactive Extensions (Rx). * [Cecil](https://github.com/jbevain/cecil) - A popular library to read, modify and write .NET binaries. * [Cimbalino Toolkit](https://github.com/Cimbalino/Cimbalino-Toolkit) - A set of useful and powerful tools that will help you build your Windows Platform applications. + * [CodeJam](https://github.com/rsdn/CodeJam) - Set of handy reusable .NET components that can simplify your daily work and save your time when you copy and paste your favorite helper methods and classes from one project to another. * [Coding4Fun Toolkit](https://github.com/Coding4FunProjects/Coding4FunToolkit) * [ColoredConsole](https://github.com/colored-console/colored-console) - Add some color to your console. * [ColorSharp](https://github.com/Litipk/ColorSharp) - Library to handle color spaces and light spectrums. From 534711bb7f762a4731ae58fa895d71c456cedff5 Mon Sep 17 00:00:00 2001 From: James Jackson-South Date: Thu, 12 Jan 2017 17:36:58 +1100 Subject: [PATCH 305/872] Split up ImageProcessor and ImageSharp (#343) The libraries are no longer part of the same repository so the current information is now out of date. --- dotnet-developer-projects.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 9aa7d7f01..4f75db541 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -175,7 +175,8 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * Graphics & Server-side Image Processing * [DynamicImage](https://github.com/tgjones/dynamic-image) - WPF-based server-side image rendering system - lots of visual effects implemented as high-performance shaders. Has URL api, several plugins available. - * [ImageProcessor](https://github.com/jimbobsquarepants/imageprocessor/) - A cross-platform library for processing of image files written in C#. Available in Core (NetStandard 1.1 X-Plat) and Framework (NET 4.5+ GDI+ based) flavours. + * [ImageSharp](https://github.com/jimbobsquarepants/imagesharp/) - A cross-platform library for processing of image files written in C#. (NetStandard 1.1 X-Plat). + * [ImageProcessor](https://github.com/jimbobsquarepants/imageprocessor/) - A fluent wrapper around System.Drawing for the processing of image files (NET 4.5+ GDI+ based). * [ImageResizer](https://github.com/imazen/resizer) - Add commands to image URLs to get altered versions in milliseconds. Edit, filter, touch-up images in real-time. (multiple backends - FreeImage, C++/CLI, GDI+, WIC). 45+ plugins available. * [King.Azure.Imaging](https://github.com/jefking/King.Azure.Imaging) - Scalable image uploading and processing for Azure. * [Magick.NET](https://magick.codeplex.com) - The .NET (Core/Framework) wrapper for the [ImageMagick](https://www.imagemagick.org) library that supports over [100 major file formats](https://www.imagemagick.org/script/formats.php). From 36624bde411e5ced97822c6a088f2f87bdf4857b Mon Sep 17 00:00:00 2001 From: John Taubensee Date: Thu, 12 Jan 2017 06:37:44 +0000 Subject: [PATCH 306/872] Adding Relay and Service Bus to the list (#344) --- dotnet-developer-projects.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 4f75db541..1b7c993a6 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -78,7 +78,9 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [System.Data.SQLite](https://system.data.sqlite.org) - SQLite * Messaging - * [Azure Event Hubs](https://github.com/azure/azure-event-hubs-dotnet) - A Microsoft supported Event Hubs library for sending and receiving messages at scale. + * [Azure Service Bus](https://github.com/azure/azure-service-bus-dotnet) - .NET Standard client library for [Azure Service Bus](https://docs.microsoft.com/en-us/azure/service-bus/). + * [Azure Event Hubs](https://github.com/azure/azure-event-hubs-dotnet) - .NET Standard client library for [Azure Event Hubs](https://docs.microsoft.com/en-us/azure/event-hubs/). + * [Azure Relay](https://github.com/azure/azure-relay-dotnet) - .NET Standard client library for [Azure Relay](https://docs.microsoft.com/en-us/azure/service-bus-relay/relay-what-is-it). * [NServiceBus](https://github.com/Particular/NServiceBus) - The most popular service bus for .NET * [AzureNetQ](https://github.com/Roysvork/AzureNetQ) - An easy to use .NET API for Azure Service Bus. * [Brighter](https://github.com/iancooper/Paramore) - A Command Dispatcher and Command Processor library with support for Work or Task Queues over different MoM implementations such as RabbitMQ From 7144330766eacc1a81650a331174b6daaa6f06f9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=81=8A=E3=81=84=E3=81=8C=E3=81=BF?= Date: Fri, 10 Feb 2017 11:17:59 +0900 Subject: [PATCH 307/872] fix typo --- releases/net46/dotnet46-changes.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/releases/net46/dotnet46-changes.md b/releases/net46/dotnet46-changes.md index f4ca301c4..6f13b1bd1 100644 --- a/releases/net46/dotnet46-changes.md +++ b/releases/net46/dotnet46-changes.md @@ -218,7 +218,7 @@ WPF * List virtualization doesn't cause crash in GitHub for Windows. [992770] * Scrolling in virtualized DataGrid with items of different heights doesn't cause ArgumentNullException. [996725] * WriteableBitmap isn't causing leaks of CWriteProtectedBitmap virtual memory. [997584] -* Selection doesn't incorrectly include the previously selected item when moving selection of ListBoxItem bound to ObservableCleection. [999613] +* Selection doesn't incorrectly include the previously selected item when moving selection of ListBoxItem bound to ObservableCollection. [999613] * Fixed a UI thread deadlock in pen input code. [1010998] * Margins set in sections in FlowDocuments are respected. [1104560] * Scaling doesn't suffer from rounding errors on odd DPI. [1104807] From 85ab8366b78b5a3b93ea63a09ea9cc63937d88aa Mon Sep 17 00:00:00 2001 From: Khalid Abuhakmeh Date: Tue, 7 Mar 2017 02:12:51 -0500 Subject: [PATCH 308/872] Add Stuntman (#349) --- dotnet-developer-projects.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 1b7c993a6..e0ed2006c 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -156,7 +156,8 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [Spartacus](https://github.com/wind39/spartacus) - Multi-purpose C# library, containing: 1) classes to access many types of databases in a fast, generic way; 2) classes to work with XLSX, CSV and DBF files; 3) PDF report engine. * [Splat](https://github.com/paulcbetts/splat) - A library to make things cross-platform that should be. * [SSH.NET](https://sshnet.codeplex.com/) - A client-side library for SSH, SCP and SFTP. - * [Strongly Typed Client API Generators for ASP.NET Web API](https://webapiclientgen.codeplex.com/) - Strongly Typed Client API Generators generate strongly typed client API in TypeScript and C# codes supporting desktop, Universal Windows, Android and iOS. + * [Strongly Typed Client API Generators for ASP.NET Web API](https://webapiclientgen.codeplex.com/) - Strongly Typed Client API Generators generate strongly typed client API in TypeScript and C# codes supporting desktop, Universal Windows, Android and iOS. + * [Stuntman](https://github.com/ritterim/stuntman) - OWIN middleware for quickly mocking authentication/authorization use case scenarios locally. Supports Cookie Authentication and Bearer Token Authentication. * [SuperSocket](https://github.com/kerryjiang/SuperSocket) - An extensible socket server engine which supports .NET and Mono * [Sweet.Jayson](https://github.com/ocdogan/Sweet.Jayson) - Fast, reliable, easy to use, fully json.org compliant, thread safe C# JSON library for server side and desktop operations. * [VkSharp](https://github.com/kasthack/vksharp) - VK client library From e9973bea3d35f1707faa9d003486197a0c9532c4 Mon Sep 17 00:00:00 2001 From: Sergey Bykov Date: Mon, 6 Mar 2017 23:13:40 -0800 Subject: [PATCH 309/872] Filling the glaring omission of Orleans (#350) --- dotnet-developer-projects.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index e0ed2006c..7382e303b 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -1,3 +1,4 @@ +[ # .NET Open Source Developer Projects This community maintained list showcases .NET open source developer projects. It is intended to include projects that are useful for any aspect of the development process. For consumer projects, see the [.NET open source consumer projects list](dotnet-consumer-projects.md). PR a change into either list and it will be accepted (modulo duplicates). @@ -19,7 +20,8 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [Enterprise Web Library (EWL)](https://github.com/enduracode/enterprise-web-library) - An extremely opinionated platform for web applications that trades off performance, scalability, and development flexibility for an ease of maintenance you won't find anywhere else. [Enterprise Web Library site](http://www.enterpriseweblibrary.org/). * [KonfDB](https://github.com/punitganshani/konfdb) - Configuration Management as a Service for cross-platform, multi-tenant enterprise/hobby applications. * [Akka.NET](http://github.com/akkadotnet) - Akka.NET is a toolkit and runtime for building highly concurrent, distributed, and fault tolerant event-driven applications on .NET & Mono. This community-driven port brings C# & F# developers the capabilities of the original Akka framework in Java/Scala. [[Project Site]](http://getakka.net/) - + * [Orleans](http://dotnet.github.io/orleans/) - Orleans is a framework that provides a straightforward approach to building distributed high-scale computing applications, without the need to learn and apply complex concurrency or other scaling patterns. It was created by Microsoft Research and designed for use in the cloud. Orleans is a mature but fast evolving platform that has been battle tested since 2011 by several Microsoft product groups, such as Halo, Gears of War, Skype, Azure, Xbox, as well as by a growing number of other companies using it in Azure, AWS, GCP, and on premises. + * Languages * [Boo](https://github.com/bamboo/boo) - A .NET language similar to Python but with static typing, and many meta-programming capabilities. * [ClojureCLR](https://github.com/clojure/clojure-clr) - A .NET implemention of the [Clojure](http://clojure.org) programming language, built on the DLR. From c386fe88dc61ba7697faad587508b763f8f1bf5f Mon Sep 17 00:00:00 2001 From: Jiri {x2} Cincura Date: Tue, 7 Mar 2017 08:14:08 +0100 Subject: [PATCH 310/872] Updated link for Firebird's provider. (#351) --- dotnet-developer-projects.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 7382e303b..b58bf9c00 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -75,7 +75,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [Wyam](http://wyam.io) - A simple to use, highly modular, and extremely configurable static content generator. * ADO.NET providers - * [Firebird .NET client](https://sourceforge.net/p/firebird/NETProvider/) - Firebird + * [Firebird .NET Data Provider](https://github.com/cincuranet/FirebirdSql.Data.FirebirdClient) - Firebird * [Npgsql](https://github.com/npgsql/npgsql) - PostgreSQL * [System.Data.SQLite](https://system.data.sqlite.org) - SQLite From 0a55b8eb3eebf794a803b4df58dca15f3c397874 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1=C5=A1=20Herceg?= Date: Tue, 7 Mar 2017 08:14:56 +0100 Subject: [PATCH 311/872] Add DotVVM (#352) DotVVM is an open source Knockout JS based framework that lets you build modern web apps and SPAs using C# and HTML without writing any JavaScript code. It is been developed for more than 2 years by now, in July 2016 there was a first stable release (1.0) and currently we have the version 1.1 RC with .NET Core support. This framework is an interesting alternative to using ASP.NET MVC in combination with Angular, React or any other client-side framework. It is also interesting for client app developers because it uses the MVVM pattern which they are usually familiar with. It doesn't require to learn 20 different JS libraries, tools or frameworks to create a web app, the framework handles all the common tasks like client-server communication, validation, localization and SPAs and includes built-in controls like GridView, FileUpload etc. The framework is open source and there is also a free Visual Studio extension which adds IntelliSense and project templates for DotVVM apps. (My company also develops commercial extensions and we also have a paid version of the VS extension with more features.) I am the founder of the DotVVM project. I have spoken about DotVVM on several conferences in Europe and we got a really great feedback, many people and companies are already using it, so I think it may be the right time for DotVVM to be listed here. --- dotnet-developer-projects.md | 1 + 1 file changed, 1 insertion(+) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index b58bf9c00..03e1e679e 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -65,6 +65,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [BeYourMarket](https://github.com/beyourmarket/beyourmarket) - BeYourMarket is a peer-to-peer marketplace framework http://beyourmarket.com * Web Frameworks + * [DotVVM](https://github.com/riganti/dotvvm) - MVVM framework for people who don't like to write JavaScript, with OWIN and ASP.NET Core support and a free extension for Visual Studio 2015 and 2017. * [Nancy](https://github.com/NancyFx/Nancy) - A lightweight, low-ceremony, framework for building HTTP based services on .NET and Mono. * [NemerleWeb](https://github.com/NemerleWeb/NemerleWeb) - Web MVVM library for .Net. It uses reactive data model which allows creating rich internet applications. From 40c61d92ab98e92fd7a87b4ef8c9b0d65997eb9a Mon Sep 17 00:00:00 2001 From: Dmitry Sikorsky Date: Tue, 7 Mar 2017 09:15:31 +0200 Subject: [PATCH 312/872] Added Platformus and ExtCore projects (#353) --- dotnet-developer-projects.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 03e1e679e..1d6bd99a6 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -60,6 +60,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [Suave](https://github.com/SuaveIO/suave) A lightweight web server and a set of combinators to manipulate route flow and task composition. * [Umbraco](https://github.com/umbraco/Umbraco-CMS/) - Web content management platform (CMS). * [WebSharper](https://bitbucket.org/IntelliFactory/websharper) - Web programming platform including a compiler from F# code to JavaScript. + * [Platformus](https://github.com/Platformus/Platformus) - Free, open source and cross-platform CMS based on ASP.NET Core 1.1 and ExtCore framework. * Web Marketplace * [BeYourMarket](https://github.com/beyourmarket/beyourmarket) - BeYourMarket is a peer-to-peer marketplace framework http://beyourmarket.com @@ -171,7 +172,8 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [WpfToolkit](https://github.com/dotnetprojects/wpftoolkit) - Fork of the MS WPF Toolkit * [XamlEssentials](https://github.com/AdvancedREI/XamlEssentials) - Collection of helpers for Microsoft's XAML platforms. * [Zlib.Portable](https://github.com/AdvancedREI/Zlib.Portable) - A Portable Class Library port of the Zlib library from http://dotnetzip.codeplex.com. - + * [ExtCore](https://github.com/ExtCore/ExtCore) - Free, open source and cross-platform framework for creating modular and extendable web applications based on ASP.NET Core 1.1. + * Data Mine/Data Extraction/Machine Learning/AI * [AForge.NET](http://www.aforgenet.com/) - a C# framework designed for developers and researchers in the fields of Computer Vision and Artificial Intelligence - image processing, neural networks, genetic algorithms, machine learning, robotics * [Accord.NET Framework](https://github.com/accord-net/framework) - The Accord.NET Framework is a .NET machine learning framework combined with audio and image processing libraries completely written in C#. From 4a9b82d7ec53f3a16847d2eadecee93782d61fec Mon Sep 17 00:00:00 2001 From: Adam Hathcock Date: Tue, 7 Mar 2017 07:15:50 +0000 Subject: [PATCH 313/872] Add sharpcompress (#354) --- dotnet-developer-projects.md | 1 + 1 file changed, 1 insertion(+) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 1d6bd99a6..7418310c2 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -153,6 +153,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [PocketSharp](https://github.com/ceee/PocketSharp) * [PortableRest](https://github.com/AdvancedREI/PortableRest) - Portable library for building cross-platform REST API Clients for .NET and Xamarin. * [RestSharp](https://github.com/restsharp/RestSharp) - Simple REST and HTTP API Client for .NET + * [SharpCompress](https://github.com/adamhathcock/sharpcompress) - SharpCompress is a fully managed cross-platform C# library to deal with many compression types and formats: Zip, GZip, RAR, TAR, 7Zip, etc. * [SharpMap](https://sharpmap.codeplex.com/) - An easy-to-use mapping library for use in web and desktop applications * [SharpSnmpLib](https://sharpsnmplib.codeplex.com) - An easy-to-use SNMP library for use on all platforms (.NET/Mono/Xamarin) * [Shielded](https://github.com/jbakic/Shielded) - Software Transactional Memory for .NET From 53cb96331042b289348b38d0d807731b69dc7f20 Mon Sep 17 00:00:00 2001 From: Pure Krome Date: Tue, 7 Mar 2017 18:16:24 +1100 Subject: [PATCH 314/872] Added links to NBuilder and Http.ClientHelpers. (#356) ![](http://i.imgur.com/RqZV0Y7.gif) --- dotnet-developer-projects.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 7418310c2..e0eb5cb6e 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -254,7 +254,9 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [FluentAssertions](http://www.fluentassertions.com/) - A very extensive set of extension methods that allow you to more naturally specify the expected outcome of unit tests and which make your assertions look beautiful, natural and most importantly, extremely readable. * [FluentAutomation](https://github.com/stirno/FluentAutomation) - Simple Fluent API for UI Automation * [FsCheck](https://github.com/fsharp/FsCheck) - A tool for testing .NET programs automatically. + * [Http.ClientHelpers](https://github.com/PureKrome/HttpClient.Helpers) - library to help mock & test `System.Net.Http.HttpClient`. * [moq](https://github.com/Moq/moq4) - The most popular and friendly mocking framework for .NET + * [NBuilder](https://github.com/nbuilder/nbuilder) - A rapid test object generator. * [NSubstitute](https://github.com/nsubstitute/NSubstitute) - A friendly substitute for .NET mocking frameworks. * [NUnit](https://github.com/nunit/nunit) - NUnit is a unit-testing framework for all .NET languages. * [Shouldly](https://github.com/shouldly/shouldly) - Should style test assertion library with great error messages. From 92193a78430be5754e176803f9294405d6c917a1 Mon Sep 17 00:00:00 2001 From: damienbod Date: Tue, 7 Mar 2017 08:16:48 +0100 Subject: [PATCH 315/872] adding link for ASP.NET Core SQL Localization (#357) --- dotnet-developer-projects.md | 1 + 1 file changed, 1 insertion(+) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index e0eb5cb6e..5b05add47 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -135,6 +135,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [LINQ Extensions](https://github.com/TommasoScalici/LINQExtensions) - LINQ extensions for .NET is a collection of useful extensions methods that extends LINQ's capability. There are methods for combinatorics and sequence analysis, generation and manipulation. * [leveldb-sharp](https://github.com/meebey/leveldb-sharp) - cross-platform C# binding for LevelDB * [LibGit2Sharp](https://github.com/libgit2/libgit2sharp) - C# language bindings for the [LibGit2](https://github.com/libgit2/libgit2) implementation of Git. + * [Localization.SqlLocalizer]( https://github.com/damienbod/AspNet5Localization) - SQL Localizer for ASP.NET Core, dotnet * [Lucene.Net](https://github.com/apache/lucene.net) * [Math.NET Numerics](https://github.com/mathnet/mathnet-numerics) - Provides methods and algorithms for numerical computations in science, engineering and every day use. * [Mathos Core Libary](http://mathos.codeplex.com/) - A library with algorithms for numerical calcultations in finance, statistics, pattern recognition, and more. From 6c1d3abdff36b8c69cee7b919830342471d4d5de Mon Sep 17 00:00:00 2001 From: Stephen Cleary Date: Tue, 7 Mar 2017 02:17:13 -0500 Subject: [PATCH 316/872] Add Comparers library (#358) --- dotnet-developer-projects.md | 1 + 1 file changed, 1 insertion(+) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 5b05add47..997bcb06b 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -111,6 +111,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [ColoredConsole](https://github.com/colored-console/colored-console) - Add some color to your console. * [ColorSharp](https://github.com/Litipk/ColorSharp) - Library to handle color spaces and light spectrums. * [ComparerExtensions](https://github.com/jehugaleahsa/comparerextensions) - Build IComparer and IEqualityComparer objects using natural language syntax. + * [Comparers](https://github.com/StephenCleary/Comparers) - Fluent syntax for building comparers (and equality comparers) and implementing object comparison. * [Cricket](https://github.com/fsprojects/Cricket) - Actor library * [DateTimeExtensions](https://github.com/kappy/DateTimeExtensions) - Common Date Time operations on the form of extensions to System.DateTime, including holidays and working days calculations on several culture locales. * [DiffSharp](https://github.com/gbaydin/DiffSharp) - Automatic Differentiation Library From e2617a85d16a4addcbde8e4b2a5bbcdab1f6820d Mon Sep 17 00:00:00 2001 From: Muhammad Rehan Saeed Date: Tue, 7 Mar 2017 07:17:40 +0000 Subject: [PATCH 317/872] Update dotnet-developer-projects.md (#359) --- dotnet-developer-projects.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 997bcb06b..ff447c298 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -100,6 +100,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [ArcGIS.PCL](https://github.com/davetimmins/ArcGIS.PCL) - Call ArcGIS Server REST API resources. You can also convert between ArcGIS features and GeoJSON. * [Argument](https://github.com/ashmind/Argument) - Argument validation microframework that does one thing in the simplest way possible. * [AshMind.Extensions](https://github.com/ashmind/ashmind-extensions) - A set of very conservative extension methods most of which closely follow naming and design patterns of .NET Base Class Library. + * [ASP.NET MVC Boilerplate Framework](https://github.com/ASP-NET-MVC-Boilerplate/Framework) - ASP.NET MVC Extensions and Helper NuGet packages. * [AsyncCollections](https://github.com/HellBrick/AsyncCollections) - A set of lock-free thread-safe collections designed to be used asynchronously. * [Automatonymous](https://github.com/MassTransit/Automatonymous) - An asynchronous state machine engine with messaging support. * [Bing.RestClient](https://github.com/AdvancedREI/Bing.RestClient) - Access the Bing REST APIs from a unified client. @@ -362,6 +363,9 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * Remote Desktop * [Myrtille](https://github.com/cedrozor/myrtille) - A native HTML4/5 Remote Desktop Protocol client, HTTP gateway written in C# for .NET +* Project Templates + * [ASP.NET MVC Boilerplate](https://github.com/ASP-NET-MVC-Boilerplate/Templates) - Professional ASP.NET MVC templates for building secure, fast, robust and adaptable web applications or sites. It provides the minimum amount of code required on top of the default MVC template provided by Microsoft. + This list is just a starting point - also take a look at all the projects on [CodePlex](http://www.codeplex.com/) and on [GitHub Trending C#](https://github.com/trending?l=csharp). [@quozd](http://twitter.com/quozd "@quozd on Twitter") hosts an [Awesome .NET!](https://github.com/quozd/awesome-dotnet) list. Also worth checking out. From 4039ff8a69cc18086aa24e15640ac9fabbdcf4de Mon Sep 17 00:00:00 2001 From: Henrique Date: Tue, 7 Mar 2017 07:18:07 +0000 Subject: [PATCH 318/872] Update C# Coding Guidelines in Readme (#360) Update C# Coding Guidelines to GitHub Uri --- dotnet-developer-projects.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index ff447c298..7fc286324 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -42,7 +42,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [Roslyn (.NET Compiler Platform)](https://roslyn.codeplex.com/) - Open-source C# and Visual Basic compilers with rich code analysis APIs. * Quality Assurance - * [C# Coding Guidelines](http://csharpcodingguidelines.com) - A set of coding guidelines for C# 3.0, 4.0 and 5.0 that extend StyleCop and can be forked and adapted for internal use. + * [C# Coding Guidelines](https://github.com/dennisdoomen/CSharpGuidelines) - A set of coding guidelines for C# 3.0, 4.0 and 5.0 that extend StyleCop and can be forked and adapted for internal use. * Security / Identity Management * [NWebsec](https://github.com/NWebsec/NWebsec) - Security headers for ASP.NET applications. From 5486efac116897111686ed2f9ef92e462f32345d Mon Sep 17 00:00:00 2001 From: Richard Lander Date: Wed, 8 Mar 2017 13:03:40 -0800 Subject: [PATCH 319/872] Update for Visual Studio 2017 --- data/platforms.json | 343 +++++--------------------------------------- 1 file changed, 32 insertions(+), 311 deletions(-) diff --git a/data/platforms.json b/data/platforms.json index 91770e38b..d6f02ff17 100644 --- a/data/platforms.json +++ b/data/platforms.json @@ -1,19 +1,17 @@ { "vsversions": [ -{"alias":"VS2010", -"name":"Visual Studio 2010", -"download":"http://www.visualstudio.com/en-us/downloads/download-visual-studio-vs#DownloadFamilies_4"}, -{"alias":"VS2012", -"name":"Visual Studio 2012", -"download":"http://www.microsoft.com/en-us/download/details.aspx?id=30682"}, {"alias":"VS2013", "name":"Visual Studio 2013", -"download":"http://www.visualstudio.com/en-us/downloads/download-visual-studio-vs.aspx" +"download":"http://www.visualstudio.com/downloads" }, {"alias":"VS2015", "name":"Visual Studio 2015", -"download":"http://www.visualstudio.com/downloads/visual-studio-2015-downloads-vs" +"download":"http://www.visualstudio.com/downloads" +}, +{"alias":"VS2017", +"name":"Visual Studio 2017", +"download":"http://www.visualstudio.com/downloads" } ] , @@ -45,9 +43,8 @@ "link": "" }, "popular": true, - "info": "https://blogs.msdn.microsoft.com/dotnet/2016/06/27/announcing-net-core-1-0/", - "includedIn": [ ], - "supportedBy": [ "VS2015" ], + "info": "https://blogs.msdn.microsoft.com/dotnet/2017/03/07/announcing-net-core-tools-1-0/", + "includedIn": [ "VS2017" ], "runtime": [ { "name": ".NET Core 1.0", @@ -56,35 +53,14 @@ ], "tools": [ { - "name": ".NET Core Tools for Visual Studio 2015 Update 3", - "link": "https://go.microsoft.com/fwlink/?LinkID=827546", - "description": "The .NET Core Tools for Visual Studio 2015 (requires Update 3)." - }, - { - "name": "Visual Studio 2015 Update 3", - "link": "https://go.microsoft.com/fwlink/?LinkId=691129", - "description": "Required to install .NET Core 1.0" - }, - - { - "name": ".NET Core SDK (for commandline on Windows)", - "link": "https://go.microsoft.com/fwlink/?LinkID=827524", - "description": "The .NET Core SDK for Windows, including the .NET Core commandline tools." - }, - { - "name": ".NET Core SDK (for commandline on macOS)", - "link": "https://www.microsoft.com/net/core#macos", - "description": "The .NET Core SDK for macOS, including the .NET Core commandline tools." - }, - { - "name": ".NET Core SDK (for commandline on Linux)", - "link": "https://dot.net/core", - "description": "The .NET Core SDK for Linux, including the .NET Core commandline tools." + "name": ".NET Core SDK", + "link": "https://www.microsoft.com/net/download/core", + "description": "The .NET Core SDK for Windows, macOS and Linux." }, { "name": ".NET Core SDK (for Docker)", - "link": "https://www.microsoft.com/net/core#docker", - "description": "Using the .NET Core docker container on Windows, macOS and Linux." + "link": "https://www.microsoft.com/net/core#dockercmd", + "description": "The .NET Core docker images, for Windows and Linux." } ] }, @@ -96,9 +72,9 @@ "link": "" }, "popular": true, - "info": "https://blogs.msdn.microsoft.com/webdev/2016/06/27/announcing-asp-net-core-1-0/", + "info": "https://blogs.msdn.microsoft.com/webdev/2017/03/07/announcing-visual-studio-2017/", "includedIn": [ ], - "supportedBy": [ "VS2015" ], + "supportedBy": [ "VS2017" ], "runtime": [ { "name": "ASP.NET Core 1.0", @@ -117,7 +93,7 @@ "popular": true, "info": "http://go.microsoft.com/fwlink/?LinkID=708776", "includedIn": [ ], - "supportedBy": [ "VS2015", "VS2013", "VS2012" ], + "supportedBy": [ "VS2017","VS2015","VS2013"], "runtime": [ { "name": ".NET Framework 4.6.2", @@ -143,8 +119,8 @@ }, "popular": true, "info":"http://blogs.msdn.com/b/dotnet/archive/2015/11/30/net-framework-4-6-1-is-now-available.aspx", -"includedIn":["VS2015"], -"supportedBy":["VS2013","VS2012"], +"includedIn":["VS2017","VS2015"], +"supportedBy":["VS2013"], "runtime":[ {"name":".NET Framework 4.6.1","link":"http://go.microsoft.com/fwlink/?LinkId=671729"}], "tools":[ @@ -163,8 +139,8 @@ }, "popular": true, "info":"http://blogs.msdn.com/b/dotnet/archive/2015/07/20/announcing-net-framework-4-6.aspx", -"includedIn":["VS2015"], -"supportedBy":["VS2013","VS2012"], +"includedIn":["VS2017","VS2015"], +"supportedBy":["VS2013"], "runtime":[ {"name":".NET Framework 4.6","link":"http://go.microsoft.com/fwlink/?LinkId=528259"}], "tools":[ @@ -182,94 +158,16 @@ }, "popular": true, "info":"http://go.microsoft.com/fwlink/?LinkID=309958", -"includedIn":["VS2015"], -"supportedBy":["VS2013","VS2012"], +"includedIn":["VS2017","VS2015"], +"supportedBy":["VS2013"], "runtime":[ {"name":".NET Framework 4.5.2","link":"http://go.microsoft.com/fwlink/?LinkId=397674"}], "tools":[ {"name":".NET Framework 4.5.2 Developer Pack","link":"http://go.microsoft.com/fwlink/?LinkId=328857","description":"The .NET 4.5.2 Developer pack includes the .NET framework 4.5.2 runtime and targeting pack."}, {"name":".NET Framework 4.5.2 Language Packs","link":"http://go.microsoft.com/fwlink/?LinkId=328858","description":"Resources to support languages other than English."} ] - }, - { -"platform":".NET Framework 4.5.1", -"alias": "net451", -"category":"netfx", -"supportInfo" : - { - "support": "Not Supported", - "link" : "http://blogs.msdn.com/b/dotnet/archive/2015/12/09/support-ending-for-the-net-framework-4-4-5-and-4-5-1.aspx" - }, -"popular": false, -"info":"http://go.microsoft.com/fwlink/?LinkID=309958", -"includedIn":["VS2015","VS2013"], -"supportedBy":["VS2012"], -"runtime":[ -{"name":".NET Framework 4.5.1","link":"http://go.microsoft.com/fwlink/?LinkId=306592"}], -"tools":[ -{"name":".NET Framework 4.5.1 Developer Pack","link":"http://www.microsoft.com/en-us/download/details.aspx?id=40772","description":"The .NET 4.5.1 Developer pack includes the .NET framework 4.5.1 runtime and targeting pack."}, -{"name":"Windows Software Development Kit for Windows 8.1","link":"http://go.microsoft.com/fwlink/?LinkID=310212"}] - }, -{ -"platform":".NET Framework 4.5", -"alias": "net45", -"category":"netfx", -"supportInfo" : - { - "support": "Not Supported", - "link" : "http://blogs.msdn.com/b/dotnet/archive/2015/12/09/support-ending-for-the-net-framework-4-4-5-and-4-5-1.aspx" - }, -"popular": false, -"info":"http://blogs.msdn.com/b/dotnet/archive/2012/08/15/announcing-the-release-of-net-framework-4-5-rtm-product-and-source-code.aspx", -"includedIn":["VS2015","VS2013","VS2012"], -"supportedBy":[], -"runtime":[ -{"name":".NET Framework 4.5","link":"http://go.microsoft.com/fwlink/?LinkId=306591"}], -"tools":[ -{"name":"Windows Software Development Kit (SDK) for Windows 8","link":"http://go.microsoft.com/fwlink/?LinkID=310216"}] - }, - -{ -"platform":".NET Framework 4.0.3", -"alias": "net403", -"category":"netfx", -"supportInfo" : - { - "support": "Not Supported", - "link" : "http://blogs.msdn.com/b/dotnet/archive/2015/12/09/support-ending-for-the-net-framework-4-4-5-and-4-5-1.aspx" - }, -"popular": false, -"info":"http://blogs.msdn.com/b/dotnet/archive/2012/03/05/update-4-0-3-for-the-microsoft-net-framework-4.aspx", -"includedIn":[], -"supportedBy":["VS2010"], -"runtime":[ -{"name":".NET Framework 4.0.3","link":"http://go.microsoft.com/fwlink/?LinkID=226775"} -], -"tools":[ -{"name":".NET Framework 4.0.3 Targeting Pack","link":"http://go.microsoft.com/fwlink/?LinkID=245232"}, -{"name":".NET Framework 4.0.3 -- Design-time Update","link":"http://go.microsoft.com/fwlink/?LinkID=226778"} -] -}, - -{ -"platform":".NET Framework 4", -"alias": "net4", -"category":"netfx", -"supportInfo" : - { - "support": "Not Supported", - "link" : "http://blogs.msdn.com/b/dotnet/archive/2015/12/09/support-ending-for-the-net-framework-4-4-5-and-4-5-1.aspx" - }, -"popular": true, -"info":"http://blogs.msdn.com/b/dotnet/archive/2012/08/15/announcing-the-release-of-net-framework-4-5-rtm-product-and-source-code.aspx", -"includedIn":["VS2015","VS2013","VS2012","VS2010"], -"supportedBy":[], -"runtime":[ -{"name":".NET Framework 4","link":"http://go.microsoft.com/fwlink/?LinkID=306589"}], -"tools":[ -{"name":"Windows SDK for Windows 7 and .NET Framework 4","link":"http://go.microsoft.com/fwlink/?LinkID=229188"} -] -}, + } +, { "platform":".NET Framework 2.0 + 3.5 SP1", @@ -283,7 +181,7 @@ "popular": true, "info":"http://msdn.microsoft.com/library/w0x726c2(VS.90).aspx", "includedIn":[], -"supportedBy":["VS2015","VS2013","VS2012","VS2010"], +"supportedBy":["VS2017","VS2015","VS2013"], "runtime":[ {"name":".NET Framework 3.5 SP1","link":"http://go.microsoft.com/fwlink/?LinkID=229190"}, {"name":".NET Framework 3.5 SP1 (Windows 8+)","link":"http://msdn.microsoft.com/library/hh506443.aspx"}], @@ -294,23 +192,12 @@ "platform":"Microsoft Azure", "category":"services", "info":"http://msdn.microsoft.com/library/azure", -"includedIn":[], -"supportedBy":["VS2015","VS2013","VS2012"], +"includedIn":["VS2017"], +"supportedBy":["VS2015","VS2013"], "tools":[ {"name":"Azure SDK for .NET","link":"http://go.microsoft.com/fwlink/?LinkID=254336"} ] }, - -{ -"platform":"Team Foundation Server", -"category":"services", -"info":"http://go.microsoft.com/fwlink/?LinkID=308920", -"includedIn":[], -"supportedBy":["VS2010"], -"tools":[ -{"name":"Visual Studio 2010 SP1 Team Foundation Server Compatibility GDR ","link":"http://go.microsoft.com/fwlink/?LinkID=308924"}] - }, - { "platform":"Team Foundation Server", "category":"services", @@ -323,7 +210,7 @@ "platform":"Office 365, Office and SharePoint", "category":"services", "info":"http://go.microsoft.com/fwlink/?LinkID=308921", -"includedIn":["VS2015","VS2013"], +"includedIn":["VS2017","VS2015","VS2013"], "supportedBy":[] } , @@ -332,7 +219,7 @@ "category":"services", "info":"http://go.microsoft.com/fwlink/?LinkID=306598", "includedIn":[], -"supportedBy":["VS2015","VS2013","VS2012"], +"supportedBy":["VS2017","VS2015","VS2013","VS2012"], "tools":[{"name":"Live SDK","link":"http://go.microsoft.com/fwlink/?LinkID=306598"}] }, @@ -341,45 +228,7 @@ "category":"services", "info":"http://www.bing.com/dev", "includedIn":[], -"supportedBy":["VS2013"], -"tools":[{"name":"Maps WPF Control","link":"http://go.microsoft.com/fwlink/?LinkID=306597"}, -{"name":"Bing Maps SDK for Windows 8.1","link":"http://go.microsoft.com/fwlink/?LinkID=309954"}, -{"name":"Bing Optical Character Recognition Control","link":"http://go.microsoft.com/fwlink/?LinkID=309953"}, -{"name":"Bing Translator Control","link":"http://go.microsoft.com/fwlink/?LinkID=309952"} -] -}, - -{ -"platform":"Bing", -"category":"services", -"info":"http://www.bing.com/dev", -"includedIn":[], -"supportedBy":["VS2012"], -"tools":[{"name":"Maps WPF Control","link":"http://go.microsoft.com/fwlink/?LinkID=306597"}, -{"name":"Bing Maps SDK for Windows 8","link":"http://go.microsoft.com/fwlink/?LinkID=309950"}, -{"name":"Bing Optical Character Recognition Control","link":"http://go.microsoft.com/fwlink/?LinkID=309953"}, -{"name":"Bing Translator Control","link":"http://go.microsoft.com/fwlink/?LinkID=309952"} -] -}, - -{ -"platform":"Bing", -"category":"services", -"info":"http://www.bing.com/dev", -"includedIn":[], -"supportedBy":["VS2010"], -"tools":[{"name":"Maps WPF Control","link":"http://go.microsoft.com/fwlink/?LinkID=306597"}] -}, - -{ -"platform":"Microsoft Advertising", -"category":"Services", -"info":"http://go.microsoft.com/fwlink/?LinkID=309951", -"includedIn":[], -"supportedBy":["VS2013","VS2012"], -"tools":[ -{"name":"Microsoft Ad SDK for Windows 8","link":"http://go.microsoft.com/fwlink/?LinkID=309951"} -] +"supportedBy":["VS2017","VS2015","VS2013"] }, { @@ -392,100 +241,11 @@ {"name":"Microsoft .NET Native","link":"http://msdn.microsoft.com/vstudio/dotnetnative"} ] }, - -{ -"platform":"Windows Store", -"category":"devices", -"info":"http://msdn.microsoft.com/windows/apps", -"includedIn":["VS2012"], -"supportedBy":[], -"tools":[{"name":"Visual Studio Express 2013 for Windows with Update 2 RC ","link":"http://www.microsoft.com/download/details.aspx?id=42305"}] -}, - -{ -"platform":"Windows Phone", -"category":"devices", -"info":"http://msdn.microsoft.com/library/windowsphone/develop/ff402535(v=vs.105).aspx", -"includedIn":["VS2013"], -"supportedBy":[], -"tools":[{"name":"Visual Studio Express 2013 for Windows with Update 2 RC ","link":"http://www.microsoft.com/download/details.aspx?id=42305"} -] -}, - -{ -"platform":"Windows Phone 7.5", -"category":"devices", -"info":"http://dev.windowsphone.com/develop", -"includedIn":[], -"supportedBy":["VS2012","VS2010"], -"tools":[ - {"name":"Windows Phone SDK 7.1","link":"http://go.microsoft.com/fwlink/?LinkID=229195"}, - {"name":"Visual Studio Express 2012 for Windows Phone","link":"http://www.visualstudio.com/downloads/download-visual-studio-vs#d-express-windows-phone"}, - {"name":"Visual Studio Express 2013 for Windows with Update 2 RC ","link":"http://www.microsoft.com/download/details.aspx?id=42305"} -] -}, - -{ -"platform":"XBOX 360", -"category":"devices", -"info":"http://xbox.create.msdn.com/", -"includedIn":[], -"supportedBy":["VS2010"], -"tools":[ - {"name":"XNA Game Studio 4.0","link":"http://go.microsoft.com/fwlink/?LinkID=229196"} -] -}, - -{ -"platform":"Kinect for Windows", -"category":"devices", -"info":"http://www.microsoft.com/en-us/kinectforwindows/develop", -"includedIn":[], -"supportedBy":["VS2013", "VS2012"], -"tools":[{"name":"Kinect for Windows SDK","link":"http://go.microsoft.com/fwlink/?LinkID=324285"} -] -}, -{ -"platform":"Portable Class Library", -"category":"libraries", -"info":"http://msdn.microsoft.com/library/gg597391(v=vs.110)", -"includedIn":["VS2015","VS2013", "VS2012"], -"supportedBy":[] -}, -{ -"platform":"Portable Class Library", -"category":"libraries", -"info":"http://msdn.microsoft.com/library/gg597391(v=vs.110)", -"includedIn":[], -"supportedBy":["VS2010"], -"tools":[{"name":"Portable Library Tools","link":"http://go.microsoft.com/fwlink/?LinkID=229189"}] -}, -{ -"platform":"Silverlight 5", -"category":"silverlight", -"info":"http://msdn.microsoft.com/library/cc838158.aspx)", -"includedIn":["VS2015","VS2013","VS2012"], -"supportedBy":[], -"runtime":[ -{"name":"Silverlight 5","link":"http://go.microsoft.com/fwlink/?LinkID=310211"}] -}, - -{ -"platform":"Silverlight 5", -"category":"silverlight", -"info":"http://msdn.microsoft.com/library/cc838158.aspx", -"includedIn":[], -"supportedBy":["VS2010"], -"runtime":[ -{"name":"Silverlight 5","link":"http://go.microsoft.com/fwlink/?LinkID=310211"}], -"tools":[ -{"name":"Silverlight 5 Tools for Visual Studio 2010 SP1","link":"http://go.microsoft.com/fwlink/?LinkID=229193"}] -}, { "platform":"Xamarin", "category":"devices", "info":"http://xamarin.com/", -"includedIn":[], +"includedIn":["VS2017"], "supportedBy":["VS2015","VS2013","VS2012","VS2010"], "runtime":[], "tools":[ @@ -495,50 +255,11 @@ "platform":"Unity", "category":"gaming", "info":"https://blogs.msdn.microsoft.com/visualstudio/2016/07/14/visual-studio-tools-for-unity-2-3/", -"includedIn":[], +"includedIn":["VS2017"], "supportedBy":["VS2015"], "runtime":[], "tools":[ {"name":"Visual Studio 2015 Tools for Unity","link":"https://visualstudiogallery.msdn.microsoft.com/8d26236e-4a64-4d64-8486-7df95156aba9"}] -}, -{ -"platform":"Unity", -"category":"gaming", -"info":"https://blogs.msdn.microsoft.com/visualstudio/2016/07/14/visual-studio-tools-for-unity-2-3/", -"includedIn":[], -"supportedBy":["VS2013"], -"runtime":[], -"tools":[ -{"name":"Visual Studio 2013 Tools for Unity","link":"http://visualstudiogallery.msdn.microsoft.com/20b80b8c-659b-45ef-96c1-437828fe7cf2"}] -}, -{ -"platform":"Unity", -"category":"gaming", -"info":"https://blogs.msdn.microsoft.com/visualstudio/2016/07/14/visual-studio-tools-for-unity-2-3/", -"includedIn":[], -"supportedBy":["VS2012"], -"runtime":[], -"tools":[ -{"name":"Visual Studio 2012 Tools for Unity","link":"http://visualstudiogallery.msdn.microsoft.com/7ab11d2a-f413-4ed6-b3de-ff1d05157714"}] -}, -{ -"platform":"Unity", -"category":"gaming", -"info":"https://blogs.msdn.microsoft.com/visualstudio/2016/07/14/visual-studio-tools-for-unity-2-3/", -"includedIn":[], -"supportedBy":["VS2010"], -"runtime":[], -"tools":[ -{"name":"Visual Studio 2010 Tools for Unity","link":"http://visualstudiogallery.msdn.microsoft.com/6e536faa-ce73-494a-a746-6a14753015f1"}] -}, -{ -"platform":".NET Micro Framework", -"category":"devices", -"info":"http://www.netmf.com/", -"includedIn":[], -"supportedBy":["VS2012"], -"runtime":[{"name":".NET MF 4.3 RTM QFE1","link":"http://netmf.codeplex.com/releases/view/118283"}], -"tools":[] } ] } From de2952d6ff7a270a014009263577389b5c0327de Mon Sep 17 00:00:00 2001 From: Richard Lander Date: Wed, 8 Mar 2017 15:10:57 -0800 Subject: [PATCH 320/872] Update 4.6.2 support --- data/platforms.json | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/data/platforms.json b/data/platforms.json index d6f02ff17..a4374d7ce 100644 --- a/data/platforms.json +++ b/data/platforms.json @@ -26,11 +26,7 @@ {"alias":"devices", "name":"Devices"}, {"alias":"gaming", -"name":"Gaming"}, -{"alias":"libraries", -"name":"Libraries"}, -{"alias":"silverlight", -"name":"Silverlight"} +"name":"Gaming"} ], "platforms": @@ -92,8 +88,8 @@ }, "popular": true, "info": "http://go.microsoft.com/fwlink/?LinkID=708776", - "includedIn": [ ], - "supportedBy": [ "VS2017","VS2015","VS2013"], + "includedIn": [ "VS2017" ], + "supportedBy": [ "VS2015","VS2013"], "runtime": [ { "name": ".NET Framework 4.6.2", @@ -246,7 +242,7 @@ "category":"devices", "info":"http://xamarin.com/", "includedIn":["VS2017"], -"supportedBy":["VS2015","VS2013","VS2012","VS2010"], +"supportedBy":["VS2015","VS2013"], "runtime":[], "tools":[ {"name":"Xamarin Tools for iOS and Android","link":"http://go.microsoft.com/fwlink/?LinkID=398052"}] From 3b69f800fecadb55ce9c5daa482c74f2e01440b8 Mon Sep 17 00:00:00 2001 From: BrainCrumbz Date: Thu, 9 Mar 2017 07:02:54 +0100 Subject: [PATCH 321/872] docs(development-projects): add NSpec project, fix typos (#362) * docs(developer-projects): delete odd [ at the top * docs(developer-projects): fix typo in SpecFlow * docs(development-projects): add NSpec project --- dotnet-developer-projects.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 7fc286324..adb2f450d 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -1,4 +1,3 @@ -[ # .NET Open Source Developer Projects This community maintained list showcases .NET open source developer projects. It is intended to include projects that are useful for any aspect of the development process. For consumer projects, see the [.NET open source consumer projects list](dotnet-consumer-projects.md). PR a change into either list and it will be accepted (modulo duplicates). @@ -260,10 +259,11 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [Http.ClientHelpers](https://github.com/PureKrome/HttpClient.Helpers) - library to help mock & test `System.Net.Http.HttpClient`. * [moq](https://github.com/Moq/moq4) - The most popular and friendly mocking framework for .NET * [NBuilder](https://github.com/nbuilder/nbuilder) - A rapid test object generator. + * [NSpec](https://github.com/nspec/NSpec) - .NET BDD testing framework of the xSpec (context/specification) flavor, heavily inspired by RSpec and Mocha. * [NSubstitute](https://github.com/nsubstitute/NSubstitute) - A friendly substitute for .NET mocking frameworks. * [NUnit](https://github.com/nunit/nunit) - NUnit is a unit-testing framework for all .NET languages. * [Shouldly](https://github.com/shouldly/shouldly) - Should style test assertion library with great error messages. - * [SpecFlow](https://github.com/techtalk/specflow) - Cucumber clone for .NET for writing acceptance tests in natural langauge. [Site](http://www.specflow.org/) + * [SpecFlow](https://github.com/techtalk/specflow) - Cucumber clone for .NET for writing acceptance tests in natural language. [Site](http://www.specflow.org/) * [tickspec](http://tickspec.codeplex.com/) - A lightweight Behaviour Driven Development (BDD) framework. * [TestStack.BDDfy](https://github.com/TestStack/TestStack.BDDfy) - BDDfy is the simplest BDD framework to use, customize and extend! * [TestStack.FluentMvcTesting](https://github.com/TestStack/TestStack.FluentMVCTesting) - Simple, terse, fluent unit testing for ASP.NET MVC Controllers. From 625539126cd6623352a7f962ac4c4aa49e9a54e5 Mon Sep 17 00:00:00 2001 From: Rich Lander Date: Wed, 8 Mar 2017 22:14:18 -0800 Subject: [PATCH 322/872] Update .NET Core links --- data/platforms.json | 30 ++++++++++-------------------- 1 file changed, 10 insertions(+), 20 deletions(-) diff --git a/data/platforms.json b/data/platforms.json index a4374d7ce..58b82f139 100644 --- a/data/platforms.json +++ b/data/platforms.json @@ -44,8 +44,16 @@ "runtime": [ { "name": ".NET Core 1.0", - "link": "https://dot.net/core" - } + "link": "https://github.com/dotnet/core/releases/tag/1.0.4" + }, + { + "name": ".NET Core 1.1", + "link": "https://github.com/dotnet/core/releases/tag/1.1.1" + }, + { + "name": "ASP.NET Core", + "link": "http://www.asp.net/get-started" + } ], "tools": [ { @@ -59,24 +67,6 @@ "description": "The .NET Core docker images, for Windows and Linux." } ] - }, - { - "platform": "ASP.NET Core 1.0", - "category": "netcore", - "supportInfo": { - "support": "Supported", - "link": "" - }, - "popular": true, - "info": "https://blogs.msdn.microsoft.com/webdev/2017/03/07/announcing-visual-studio-2017/", - "includedIn": [ ], - "supportedBy": [ "VS2017" ], - "runtime": [ - { - "name": "ASP.NET Core 1.0", - "link": "http://www.asp.net/get-started" - } - ] }, { "platform": ".NET Framework 4.6.2", From 9e62cbb760314594b6238bffef17842e1268092c Mon Sep 17 00:00:00 2001 From: Rich Lander Date: Wed, 8 Mar 2017 22:17:24 -0800 Subject: [PATCH 323/872] Remove Visual Studio 2015 Community link --- data/platforms.json | 1 - 1 file changed, 1 deletion(-) diff --git a/data/platforms.json b/data/platforms.json index 58b82f139..ca4fe4332 100644 --- a/data/platforms.json +++ b/data/platforms.json @@ -110,7 +110,6 @@ "runtime":[ {"name":".NET Framework 4.6.1","link":"http://go.microsoft.com/fwlink/?LinkId=671729"}], "tools":[ -{"name":"Visual Studio Community 2015 (free)","link":"https://www.visualstudio.com/products/visual-studio-community-vs"}, {"name":".NET Framework 4.6.1 Targeting Pack","link":"http://go.microsoft.com/fwlink/?LinkId=690706","description":"The .NET 4.6.1 Developer pack includes the 4.6.1 reference assemblies needed by Visual Studio and msbuild."} ] }, From 66fc1d6283562b315ad9263399aa7c87c789718f Mon Sep 17 00:00:00 2001 From: Rich Lander Date: Thu, 9 Mar 2017 00:15:09 -0800 Subject: [PATCH 324/872] Update .NET Core version number --- data/platforms.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data/platforms.json b/data/platforms.json index ca4fe4332..3059cf84d 100644 --- a/data/platforms.json +++ b/data/platforms.json @@ -32,7 +32,7 @@ "platforms": [ { - "platform": ".NET Core 1.0", + "platform": ".NET Core 1.0 and 1.1", "category": "netcore", "supportInfo": { "support": "Supported", From 8cabdbab62968531e8a83b109ead361de868061c Mon Sep 17 00:00:00 2001 From: Phillip Haydon Date: Wed, 22 Mar 2017 02:09:46 +0800 Subject: [PATCH 325/872] Added Marten to developer projects Added Marten https://github.com/JasperFx/marten to the list. --- dotnet-developer-projects.md | 1 + 1 file changed, 1 insertion(+) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index adb2f450d..347ad6ebd 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -314,6 +314,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [SQL LocalDB Wrapper](https://github.com/martincostello/sqllocaldb) - SQL LocalDB Wrapper is an assembly providing interop with the SQL LocalDB native API from managed code using .NET APIs. * [LINQ2DynamoDB](https://github.com/scale-tone/linq2dynamodb) - A type-safe data context for AWS DynamoDB with LINQ, in-memory caching and OData support. * [Elephant](https://github.com/takenet/elephant) - Persistence library that provides common data structures as composable elements to abstract any storage engine, including (No)SQL databases. + * [Marten](https://github.com/JasperFx/marten) - Document DB / Event Store built on top of PostgreSQL. * Games * [Duality](https://github.com/AdamsLair/duality) - An Open Source 2D Game Engine + Visual Editor written entirely in C#. From 606daf1a7e7dd1065778ba5991158eaf756007db Mon Sep 17 00:00:00 2001 From: Rich Lander Date: Sat, 1 Apr 2017 16:02:23 -0700 Subject: [PATCH 326/872] Add READMEs for release notes (#367) * Add READMEs for release notes * Update order of info * Link directly to README * Correct alpha order --- releases/README.md | 13 +++++++++++++ releases/net462/README.md | 21 +++++++++++++++++++++ 2 files changed, 34 insertions(+) create mode 100644 releases/README.md create mode 100644 releases/net462/README.md diff --git a/releases/README.md b/releases/README.md new file mode 100644 index 000000000..3a3b050ff --- /dev/null +++ b/releases/README.md @@ -0,0 +1,13 @@ +# .NET Framework Releases + +You can learn about .NET Framework releases + +- .NET Framework 4.6.2 + - [Announcement blog post](https://blogs.msdn.microsoft.com/dotnet/2016/08/02/announcing-net-framework-4-6-2/) + - [Release notes](net462/README.md) +- .NET Framework 4.6.1 + - [Announcement blog post](https://blogs.msdn.microsoft.com/dotnet/2015/11/30/net-framework-4-6-1-is-now-available/) + - [Release notes](net461) +- .NET Framework 4.6 + - [Announcement blog post](https://blogs.msdn.microsoft.com/dotnet/2015/07/20/announcing-net-framework-4-6/) + - [Release notes](net46) diff --git a/releases/net462/README.md b/releases/net462/README.md new file mode 100644 index 000000000..7c847e852 --- /dev/null +++ b/releases/net462/README.md @@ -0,0 +1,21 @@ +# .NET Framework 4.6.2 Release Notes + +The following information describes the changes made in the .NET Framework 4.6.2 release. + +- [Announcement blog post](https://blogs.msdn.microsoft.com/dotnet/2016/08/02/announcing-net-framework-4-6-2/) +- [Release notes](dotnet462-changes.md) +- [API changes](dotnet462-api-changes.md) + +# Product Areas + +- [Active Directory Services](dotnet462-changes.md#active-directory-services) +- [ASP.NET](dotnet462-changes.md#aspnet) +- [BCL](dotnet462-changes.md#bcl) +- [ClickOnce](dotnet462-changes.md#clickonce) +- [CLR](dotnet462-changes.md#clr) +- [Networking](dotnet462-changes.md#networking) +- [SQL](dotnet462-changes.md#sql) +- [WCF](dotnet462-changes.md#wcf) +- [Windows Forms](dotnet462-changes.md#windows-forms) +- [Workflow](dotnet462-changes.md#workflow) +- [WPF](dotnet462-changes.md#wpf) From 5833901357b24d926cad81cb9b247bc70dd229c9 Mon Sep 17 00:00:00 2001 From: Rich Lander Date: Sat, 1 Apr 2017 17:07:14 -0700 Subject: [PATCH 327/872] Update READMEs (#368) * Update READMEs * Fix grammar * Update comment about product issues * Update comment about product issues * Rearrange text --- README.md | 93 ++++++++++++++++++++------------------- releases/README.md | 6 ++- releases/net462/README.md | 1 + 3 files changed, 54 insertions(+), 46 deletions(-) diff --git a/README.md b/README.md index 60765170e..2de199c1f 100644 --- a/README.md +++ b/README.md @@ -1,66 +1,69 @@ # .NET Home -The dotnet repository is the starting point to engage in and learn about .NET -open source projects from [Microsoft](http://microsoft.github.io) and the -[.NET Foundation](http://www.dotnetfoundation.org/). You can read the more detailed post -[.NET Core is Open Source](http://blogs.msdn.com/b/dotnet/archive/2014/11/12/net-core-is-open-source.aspx) -on the .NET blog. +This repository is a starting point to learn about and engage in .NET and .NET open source projects. + +This repo is not an official .NET Framework support location, however, we will respond to issues filed here as best we can. Please file .NET Core product issues at [dotnet/core](https://github.com/dotnet/core/issues) and ASP.NET Core product issues at [aspnet/home](https://github.com/aspnet/home/issues). + +## In this repository + +- [.NET Framework Release Notes](releases/README.md) +- [.NET Open Source Developer Projects](dotnet-developer-projects.md) +- [.NET Open Source Consumer Projects](dotnet-consumer-projects.md) +- [Free Services & Tools for Open Source .NET Projects](dotnet-free-oss-services.md) + +Please contribute to this repository via [pull requests](https://github.com/Microsoft/dotnet/pulls) ## Finding .NET Open Source Projects -There are many [open source .NET projects](dotnet-developer-projects.md), a few of which are listed below. Additionally [@quozd](https://github.com/quozd) maintains a list of [awesome open source .NET libraries, tools, frameworks, and software](https://github.com/quozd/awesome-dotnet). [ASP.NET Core (and .NET Core) Library and Framework Support](https://github.com/jpsingleton/ANCLAFS) is listed at [ANCLAFS.com](https://ANCLAFS.com). +There are many projects that you can use and contribute to. Please do contribute to these projects! +### .NET Core +- [.NET Core (dotnet/core)](https://github.com/dotnet/core) +- [.NET Core docs (dotnet/docs)](https://github.com/dotnet/docs) +- [ASP.NET Core (aspnet/home)](https://github.com/aspnet/home) +- [ASP.NET Core docs (aspnet/Docs)](https://github.com/aspnet/Docs) +- [Roslyn Compiler Platform (dotnet/roslyn)](https://github.com/dotnet/roslyn) +- [EntityFramework (aspnet/entityframework)](https://github.com/aspnet/EntityFramework) -* [.NET Compiler Platform ("Roslyn")](https://github.com/dotnet/roslyn) -* [.NET Core](https://github.com/dotnet/core) -* [ASP.NET Core](https://github.com/aspnet/home) -* [EntityFramework](https://github.com/aspnet/EntityFramework) -* [Orleans](https://github.com/dotnet/orleans) -* [Exceptionless](https://github.com/exceptionless/Exceptionless) -* [Glimpse](http://getglimpse.com) -* [JSON.NET](http://json.net/) -* [Mobius: C# API for Apache Spark](https://github.com/Microsoft/Mobius) -* [MonoGame](http://monogame.net) -* [Mono Project](https://github.com/mono/) -* [MVVM Cross](https://github.com/MvvmCross/MvvmCross) -* [MVVM Light Toolkit](http://www.mvvmlight.net) -* [ReactiveUI](https://github.com/reactiveui/ReactiveUI) +### .NET Framework + +- [.NET Framework docs (dotnet/docs)](https://github.com/dotnet/docs) +- [.NET Framework source code - read-only subset (microsoft/referencesource)](https://github.com/microsoft/referencesource) -For a longer list, see: +### Xamarin -* [.NET developer projects](dotnet-developer-projects.md) -* [.NET consumer projects](dotnet-consumer-projects.md) +- [Xamarin iOS + macOS (xamarin-macios)](https://github.com/xamarin/xamarin-macios) +- [Xamarin Android (xamarin/xamarin-android)](https://github.com/xamarin/xamarin-android) +- [Xamarin Forms (xamarin/Xamarin.Forms)](https://github.com/xamarin/Xamarin.Forms) +- [Mono Project](https://github.com/mono/) -For a list of free services and tools for open source .NET projects, see: +### Community -* [Free Services & Tools for Open Source .NET Projects](dotnet-free-oss-services.md) +Here is a short list of projects to check out: -## How to Engage, Contribute and Provide Feedback +* [Orleans](https://github.com/dotnet/orleans) +* [Exceptionless](https://github.com/exceptionless/Exceptionless) +* [Glimpse](https://github.com/Glimpse/Glimpse) +* [JSON.NET](https://github.com/JamesNK/Newtonsoft.Json) +* [Mobius: C# API for Apache Spark](https://github.com/Microsoft/Mobius) +* [MonoGame](https://github.com/MonoGame/MonoGame) +* [MVVM Cross](https://github.com/MvvmCross/MvvmCross) +* [ReactiveUI](https://github.com/reactiveui/ReactiveUI) -.NET open source projects from Microsoft (gladly) accept PRs and other -contributions. To contribute to ASP.NET Core or Entity Framework Core, see -[the ASP.NET Contributing Guide](https://github.com/aspnet/Home/blob/master/CONTRIBUTING.md). -To contribute to .NET Core, see the -[.NET Core Contributing Guide](https://github.com/dotnet/corefx/wiki/Contributing). +Here are some excellent community-maintained lists of projects: -You are also encouraged to start a discussion by posting on the -[.NET Foundation Forums](http://forums.dotnetfoundation.org/) or filing an issue -in the corresponding GitHub project. See the contributing guides for more -details. +- [Awesome .NET!](https://github.com/quozd/awesome-dotnet) +- [ASP.NET Core Library and Framework Support](https://github.com/jpsingleton/ANCLAFS) ## .NET Foundation -Most .NET open source projects at Microsoft have been contributed to the -[.NET Foundation](http://www.dotnetfoundation.org/projects). There are two main -.NET Foundation projects for Microsoft open source projects: -[ASP.NET Core project](http://www.dotnetfoundation.org/aspnet-core) -and the [.NET Core project](http://www.dotnetfoundation.org/netcore). +Many .NET open source projects are part of the +[.NET Foundation](http://www.dotnetfoundation.org/projects). Microsoft has contributed many projects, including ASP.NET Core and +.NET Core. You may want to consider [joining the .NET Foundation](https://dotnetfoundation.org/get-involved). + +Check out the [.NET Foundation Forums](http://forums.dotnetfoundation.org/) to see what others are talking about or start a new discussion to ask a question or make a point. ## License -.NET open source projects typically use either the [MIT](LICENSE) or -[Apache 2](http://www.apache.org/licenses/LICENSE-2.0) licenses for code. Some -projects license documentation and other forms of content under -[Creative Commons Attribution 4.0](http://creativecommons.org/licenses/by/4.0/). -See specific projects to understand the license used. +This repository is licensed with the [MIT](LICENSE) license. diff --git a/releases/README.md b/releases/README.md index 3a3b050ff..7201a55f5 100644 --- a/releases/README.md +++ b/releases/README.md @@ -1,6 +1,6 @@ # .NET Framework Releases -You can learn about .NET Framework releases +You can learn about .NET Framework releases: - .NET Framework 4.6.2 - [Announcement blog post](https://blogs.msdn.microsoft.com/dotnet/2016/08/02/announcing-net-framework-4-6-2/) @@ -11,3 +11,7 @@ You can learn about .NET Framework releases - .NET Framework 4.6 - [Announcement blog post](https://blogs.msdn.microsoft.com/dotnet/2015/07/20/announcing-net-framework-4-6/) - [Release notes](net46) + +See [referencesource](https://referencesource.microsoft.com/) to look at the source code for much of the .NET Framework. + +See [docs.microsoft.com/dotnet](https://docs.microsoft.com/dotnet) for official .NET documentation. See [dotnet/docs](https://github.com/dotnet/docs) to contribute to the .NET docs. \ No newline at end of file diff --git a/releases/net462/README.md b/releases/net462/README.md index 7c847e852..aac0602e0 100644 --- a/releases/net462/README.md +++ b/releases/net462/README.md @@ -5,6 +5,7 @@ The following information describes the changes made in the .NET Framework 4.6.2 - [Announcement blog post](https://blogs.msdn.microsoft.com/dotnet/2016/08/02/announcing-net-framework-4-6-2/) - [Release notes](dotnet462-changes.md) - [API changes](dotnet462-api-changes.md) +- [referencesource](https://github.com/Microsoft/referencesource/commit/1acafe20a789a55daa17aac6bb47d1b0ec04519f) # Product Areas From 647c39ee1496bfaa3969bca794aa6bfd5b39b1c7 Mon Sep 17 00:00:00 2001 From: Rich Lander Date: Sat, 1 Apr 2017 17:10:36 -0700 Subject: [PATCH 328/872] Move community lists higher --- README.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 2de199c1f..36c2abd1c 100644 --- a/README.md +++ b/README.md @@ -15,7 +15,12 @@ Please contribute to this repository via [pull requests](https://github.com/Micr ## Finding .NET Open Source Projects -There are many projects that you can use and contribute to. Please do contribute to these projects! +There are many projects that you can use and contribute to, some of which are listed below. Please do contribute to these projects! + +Here are some excellent community-maintained lists of projects: + +- [Awesome .NET!](https://github.com/quozd/awesome-dotnet) +- [ASP.NET Core Library and Framework Support](https://github.com/jpsingleton/ANCLAFS) ### .NET Core @@ -51,11 +56,6 @@ Here is a short list of projects to check out: * [MVVM Cross](https://github.com/MvvmCross/MvvmCross) * [ReactiveUI](https://github.com/reactiveui/ReactiveUI) -Here are some excellent community-maintained lists of projects: - -- [Awesome .NET!](https://github.com/quozd/awesome-dotnet) -- [ASP.NET Core Library and Framework Support](https://github.com/jpsingleton/ANCLAFS) - ## .NET Foundation Many .NET open source projects are part of the From 2db783ce42e8a5b91324e6108f092e81d49ec78f Mon Sep 17 00:00:00 2001 From: Rich Lander Date: Sat, 1 Apr 2017 18:05:16 -0700 Subject: [PATCH 329/872] Add earlier .NET Framework releases --- releases/README.md | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/releases/README.md b/releases/README.md index 7201a55f5..3d550b53b 100644 --- a/releases/README.md +++ b/releases/README.md @@ -1,6 +1,6 @@ # .NET Framework Releases -You can learn about .NET Framework releases: +You can learn about .NET Framework releases, below. - .NET Framework 4.6.2 - [Announcement blog post](https://blogs.msdn.microsoft.com/dotnet/2016/08/02/announcing-net-framework-4-6-2/) @@ -11,7 +11,16 @@ You can learn about .NET Framework releases: - .NET Framework 4.6 - [Announcement blog post](https://blogs.msdn.microsoft.com/dotnet/2015/07/20/announcing-net-framework-4-6/) - [Release notes](net46) +- .NET Framework 4.5.2 + - [Announcement blog post](https://blogs.msdn.microsoft.com/dotnet/2014/05/05/announcing-the-net-framework-4-5-2/) +- .NET Framework 4.5.1 + - [Announcement blog post](https://blogs.msdn.microsoft.com/dotnet/2013/10/17/net-framework-4-5-1-rtm-start-coding/) +- .NET Framework 4.5 + - [Announcement blog post](https://blogs.msdn.microsoft.com/dotnet/2012/08/15/announcing-the-release-of-net-framework-4-5-rtm-product-and-source-code/) + See [referencesource](https://referencesource.microsoft.com/) to look at the source code for much of the .NET Framework. -See [docs.microsoft.com/dotnet](https://docs.microsoft.com/dotnet) for official .NET documentation. See [dotnet/docs](https://github.com/dotnet/docs) to contribute to the .NET docs. \ No newline at end of file +See [docs.microsoft.com/dotnet](https://docs.microsoft.com/dotnet) for official .NET documentation. See [dotnet/docs](https://github.com/dotnet/docs) to contribute to the .NET docs. + +See [dotnet/core](https://github.com/dotnet/core) to learn about [.NET Core releases](https://github.com/dotnet/core/blob/master/release-notes/README.md). See [aspnet/home](https://github.com/aspnet/Home) to learn about [ASP.NET Core releases](https://github.com/aspnet/Home/releases). \ No newline at end of file From d6f46b73bb6f40510047baed73baf44498967fd9 Mon Sep 17 00:00:00 2001 From: Rich Lander Date: Sat, 1 Apr 2017 21:32:51 -0700 Subject: [PATCH 330/872] Add links to .NET Framework and VS --- releases/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/releases/README.md b/releases/README.md index 3d550b53b..3ceb82afe 100644 --- a/releases/README.md +++ b/releases/README.md @@ -18,6 +18,7 @@ You can learn about .NET Framework releases, below. - .NET Framework 4.5 - [Announcement blog post](https://blogs.msdn.microsoft.com/dotnet/2012/08/15/announcing-the-release-of-net-framework-4-5-rtm-product-and-source-code/) +See [Install the .NET Framework](https://www.microsoft.com/net/framework/versions) to install the .NET Framework. See [Visual Studio IDE](https://www.visualstudio.com/vs/) to install [Visual Studio](https://www.visualstudio.com). See [referencesource](https://referencesource.microsoft.com/) to look at the source code for much of the .NET Framework. From d07c5cb430e0ed49c29d5e8c8f3b2365e872f723 Mon Sep 17 00:00:00 2001 From: Rich Lander Date: Sat, 1 Apr 2017 21:38:40 -0700 Subject: [PATCH 331/872] Move community list up --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 36c2abd1c..3b1c1b231 100644 --- a/README.md +++ b/README.md @@ -15,13 +15,13 @@ Please contribute to this repository via [pull requests](https://github.com/Micr ## Finding .NET Open Source Projects -There are many projects that you can use and contribute to, some of which are listed below. Please do contribute to these projects! - Here are some excellent community-maintained lists of projects: - [Awesome .NET!](https://github.com/quozd/awesome-dotnet) - [ASP.NET Core Library and Framework Support](https://github.com/jpsingleton/ANCLAFS) +There are many projects that you can use and contribute to, some of which are listed below. Please do contribute to these projects! + ### .NET Core - [.NET Core (dotnet/core)](https://github.com/dotnet/core) From 7efa9997b8277faf1b4701da2c0483892279cd48 Mon Sep 17 00:00:00 2001 From: Rich Lander Date: Sun, 2 Apr 2017 09:05:19 -0700 Subject: [PATCH 332/872] Add .NET Framework releases --- releases/README.md | 31 +++++++++++++++++++++---------- 1 file changed, 21 insertions(+), 10 deletions(-) diff --git a/releases/README.md b/releases/README.md index 3ceb82afe..cb2d93265 100644 --- a/releases/README.md +++ b/releases/README.md @@ -1,6 +1,12 @@ # .NET Framework Releases -You can learn about .NET Framework releases, below. +You can learn about .NET Framework [releases](#releases), below. See [resources](#resources) for additional information. + +To get up-to-date with the latest versions of .NET Framework and Visual Studio, see [Install the .NET Framework](https://www.microsoft.com/net/framework/versions) and [Install Visual Studio](https://www.visualstudio.com/vs/). See [Targeting .NET Platforms](https://www.microsoft.com/net/targeting) to find additional tools. + +## Releases + +You can see what was included in each .NET Framework release. Some releases are now unsupported, as called out. - .NET Framework 4.6.2 - [Announcement blog post](https://blogs.msdn.microsoft.com/dotnet/2016/08/02/announcing-net-framework-4-6-2/) @@ -13,15 +19,20 @@ You can learn about .NET Framework releases, below. - [Release notes](net46) - .NET Framework 4.5.2 - [Announcement blog post](https://blogs.msdn.microsoft.com/dotnet/2014/05/05/announcing-the-net-framework-4-5-2/) -- .NET Framework 4.5.1 +- .NET Framework 4.5.1 (unsupported) - [Announcement blog post](https://blogs.msdn.microsoft.com/dotnet/2013/10/17/net-framework-4-5-1-rtm-start-coding/) -- .NET Framework 4.5 - - [Announcement blog post](https://blogs.msdn.microsoft.com/dotnet/2012/08/15/announcing-the-release-of-net-framework-4-5-rtm-product-and-source-code/) - -See [Install the .NET Framework](https://www.microsoft.com/net/framework/versions) to install the .NET Framework. See [Visual Studio IDE](https://www.visualstudio.com/vs/) to install [Visual Studio](https://www.visualstudio.com). - -See [referencesource](https://referencesource.microsoft.com/) to look at the source code for much of the .NET Framework. +- .NET Framework 4.5 (unsupported) + - [Announcement blog post](https://blogs.msdn.microsoft.com/dotnet/2012/08/15/announcing-the-release-of-net-framework-4-5-rtm-product-and-source-code/) +- .NET Framework 4.0.3 (unsupported) + - [Announcement blog post](https://blogs.msdn.microsoft.com/dotnet/2012/03/05/update-4-0-3-for-the-microsoft-net-framework-4/) +- .NET Framework 4.0.2 (unsupported) + - [Announcement blog post](https://blogs.msdn.microsoft.com/dotnet/2011/10/27/update-4-0-2-for-the-microsoft-net-framework-4/) -See [docs.microsoft.com/dotnet](https://docs.microsoft.com/dotnet) for official .NET documentation. See [dotnet/docs](https://github.com/dotnet/docs) to contribute to the .NET docs. +## Resources -See [dotnet/core](https://github.com/dotnet/core) to learn about [.NET Core releases](https://github.com/dotnet/core/blob/master/release-notes/README.md). See [aspnet/home](https://github.com/aspnet/Home) to learn about [ASP.NET Core releases](https://github.com/aspnet/Home/releases). \ No newline at end of file +- [.NET Framework Docs](https://docs.microsoft.com/dotnet) +- [.NET Framework Docs Source (dotnet/docs)](https://github.com/dotnet/docs) +- [.NET Framework Reference Source](https://referencesource.microsoft.com/) +- [.NET Framework reference source on GitHub (microsoft/referencesource)](https://github.com/microsoft/referencesource) +- [.NET Core Releases (dotnet/core)](https://github.com/dotnet/core/blob/master/release-notes/README.md) +- [ASP.NET Core Releases (aspnet/home)](https://github.com/aspnet/Home/releases) \ No newline at end of file From 571c853298d2c88d13e1c4d022f86217757663d1 Mon Sep 17 00:00:00 2001 From: Ferenc Vizkeleti Date: Wed, 5 Apr 2017 15:34:18 +0200 Subject: [PATCH 333/872] Added tools: NsDepCop and QuickDiagram. Also fixed indentation of second-level bullets. (#369) --- dotnet-developer-projects.md | 580 ++++++++++++++++++----------------- 1 file changed, 291 insertions(+), 289 deletions(-) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 347ad6ebd..866e62698 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -5,69 +5,69 @@ This community maintained list showcases .NET open source developer projects. It Please sort projects alphabetically and provide a one-line description. GitHub/CodePlex (or other source) links are preferred, but feel free to also include marketing sites. Create new sections, as appropriate. * .NET Implementations - * [.NET Core](https://github.com/dotnet/core) - Core .NET Framework - * [C# Native](https://csnative.codeplex.com) - Compiles C# to native. - * [Cosmos](https://github.com/CosmosOS/Cosmos) - C# Open Source Managed Operating System, an operating system "construction kit". - * [Fling OS](https://github.com/FlingOS/FlingOS) - [C# Operating System](http://www.flingos.co.uk/) designed for people to learn low-level development from. - * [Mono](https://github.com/mono/mono) - Cross-platform implementation of .NET Framework. - * [MOSA Project](https://github.com/mosa/MOSA-Project/) - Managed Operating System Alliance Project - C# Operating System. - * [SharpLang](https://github.com/xen2/SharpLang) - Compiles C# & .NET to native machine code, using [LLVM](http://llvm.org) as a backend. + * [.NET Core](https://github.com/dotnet/core) - Core .NET Framework + * [C# Native](https://csnative.codeplex.com) - Compiles C# to native. + * [Cosmos](https://github.com/CosmosOS/Cosmos) - C# Open Source Managed Operating System, an operating system "construction kit". + * [Fling OS](https://github.com/FlingOS/FlingOS) - [C# Operating System](http://www.flingos.co.uk/) designed for people to learn low-level development from. + * [Mono](https://github.com/mono/mono) - Cross-platform implementation of .NET Framework. + * [MOSA Project](https://github.com/mosa/MOSA-Project/) - Managed Operating System Alliance Project - C# Operating System. + * [SharpLang](https://github.com/xen2/SharpLang) - Compiles C# & .NET to native machine code, using [LLVM](http://llvm.org) as a backend. * Platforms - * [Castle Project](https://github.com/castleproject) - Umbrella project for ActiveRecord, DynamicProxy, MonoRail, Windsor - * [Catel](https://github.com/catel/catel) - Application platform with IoC, logging, reflection and much more that serves as a base for applications that must be ready for future growth. - * [Enterprise Web Library (EWL)](https://github.com/enduracode/enterprise-web-library) - An extremely opinionated platform for web applications that trades off performance, scalability, and development flexibility for an ease of maintenance you won't find anywhere else. [Enterprise Web Library site](http://www.enterpriseweblibrary.org/). - * [KonfDB](https://github.com/punitganshani/konfdb) - Configuration Management as a Service for cross-platform, multi-tenant enterprise/hobby applications. - * [Akka.NET](http://github.com/akkadotnet) - Akka.NET is a toolkit and runtime for building highly concurrent, distributed, and fault tolerant event-driven applications on .NET & Mono. This community-driven port brings C# & F# developers the capabilities of the original Akka framework in Java/Scala. [[Project Site]](http://getakka.net/) - * [Orleans](http://dotnet.github.io/orleans/) - Orleans is a framework that provides a straightforward approach to building distributed high-scale computing applications, without the need to learn and apply complex concurrency or other scaling patterns. It was created by Microsoft Research and designed for use in the cloud. Orleans is a mature but fast evolving platform that has been battle tested since 2011 by several Microsoft product groups, such as Halo, Gears of War, Skype, Azure, Xbox, as well as by a growing number of other companies using it in Azure, AWS, GCP, and on premises. + * [Castle Project](https://github.com/castleproject) - Umbrella project for ActiveRecord, DynamicProxy, MonoRail, Windsor + * [Catel](https://github.com/catel/catel) - Application platform with IoC, logging, reflection and much more that serves as a base for applications that must be ready for future growth. + * [Enterprise Web Library (EWL)](https://github.com/enduracode/enterprise-web-library) - An extremely opinionated platform for web applications that trades off performance, scalability, and development flexibility for an ease of maintenance you won't find anywhere else. [Enterprise Web Library site](http://www.enterpriseweblibrary.org/). + * [KonfDB](https://github.com/punitganshani/konfdb) - Configuration Management as a Service for cross-platform, multi-tenant enterprise/hobby applications. + * [Akka.NET](http://github.com/akkadotnet) - Akka.NET is a toolkit and runtime for building highly concurrent, distributed, and fault tolerant event-driven applications on .NET & Mono. This community-driven port brings C# & F# developers the capabilities of the original Akka framework in Java/Scala. [[Project Site]](http://getakka.net/) + * [Orleans](http://dotnet.github.io/orleans/) - Orleans is a framework that provides a straightforward approach to building distributed high-scale computing applications, without the need to learn and apply complex concurrency or other scaling patterns. It was created by Microsoft Research and designed for use in the cloud. Orleans is a mature but fast evolving platform that has been battle tested since 2011 by several Microsoft product groups, such as Halo, Gears of War, Skype, Azure, Xbox, as well as by a growing number of other companies using it in Azure, AWS, GCP, and on premises. * Languages - * [Boo](https://github.com/bamboo/boo) - A .NET language similar to Python but with static typing, and many meta-programming capabilities. - * [ClojureCLR](https://github.com/clojure/clojure-clr) - A .NET implemention of the [Clojure](http://clojure.org) programming language, built on the DLR. - * [Cobra](http://cobra-language.com/source/) - Clean, high-level syntax (Boo/Python-like). Static and dynamic binding. First class support for unit tests and contracts. Compiled performance with scripting conveniences. Lambdas and closures. Extensions and mixins - * [Dynamic Language Runtime](http://www.github.com/IronLanguages/main) - A toolkit for building dynamic languages for .NET. - * [Eagle](https://eagle.to) - A .NET implementation of the [Tcl](https://www.tcl.tk) programming language, built on the CLR. - * [Essence#](https://essencesharp.codeplex.com/) - Essence# is a fully dynamic and highly polymorphic programming language which features pervasive message passing, pervasive dynamic and strong typing, pervasive and deep reflection and pervasive object orientation. - * [F#](https://github.com/fsharp/fsharp) - A mature, open source, cross-platform, functional-first programming language. - * [F*](https://github.com/FStarLang/FStar) - An ML-like language with a type system for program verification. - * [IronPython](https://github.com/IronLanguages/main/tree/master/Languages/IronPython) - A .NET implementation of the [Python](https://www.python.org) programming language, built on the DLR. [IronPython Site](http://ironpython.net). - * [IronRuby](https://github.com/IronLanguages/main/tree/master/Languages/Ruby) - A .NET implementation of the [Ruby](https://www.ruby-lang.org) programming language, built on the DLR. [IronRuby Site](http://ironruby.net). - * [IronScheme](http://ironscheme.codeplex.com) - A R6RS conforming Scheme-like implementation based on the Microsoft DLR. - * [Irony](https://irony.codeplex.com/) - a development kit for implementing languages on .NET platform - * [MoonSharp](https://github.com/xanathar/moonsharp/) - A Lua interpreter and remote debugger, written entirely in C#, easily embeddable in any application running on .NET 3.5+ and Mono. - * [Nemerle](https://github.com/rsdn/nemerle) - A high-level statically-typed programming language which offers functional, object-oriented and imperative features and has a simple C# like syntax and a powerful meta-programming system. - * [NiL.JS](https://github.com/nilproject/NiL.JS) - A .NET implementation of the ECMAScript language and runtime. - * [Phalanger](https://github.com/DEVSENSE/Phalanger) - full-featured PHP runtime & compiler for .NET/Mono frameworks. Phalanger is modern open-source implementation of PHP, compatible with the vast array of existing PHP code. - * [Roslyn (.NET Compiler Platform)](https://roslyn.codeplex.com/) - Open-source C# and Visual Basic compilers with rich code analysis APIs. + * [Boo](https://github.com/bamboo/boo) - A .NET language similar to Python but with static typing, and many meta-programming capabilities. + * [ClojureCLR](https://github.com/clojure/clojure-clr) - A .NET implemention of the [Clojure](http://clojure.org) programming language, built on the DLR. + * [Cobra](http://cobra-language.com/source/) - Clean, high-level syntax (Boo/Python-like). Static and dynamic binding. First class support for unit tests and contracts. Compiled performance with scripting conveniences. Lambdas and closures. Extensions and mixins + * [Dynamic Language Runtime](http://www.github.com/IronLanguages/main) - A toolkit for building dynamic languages for .NET. + * [Eagle](https://eagle.to) - A .NET implementation of the [Tcl](https://www.tcl.tk) programming language, built on the CLR. + * [Essence#](https://essencesharp.codeplex.com/) - Essence# is a fully dynamic and highly polymorphic programming language which features pervasive message passing, pervasive dynamic and strong typing, pervasive and deep reflection and pervasive object orientation. + * [F#](https://github.com/fsharp/fsharp) - A mature, open source, cross-platform, functional-first programming language. + * [F*](https://github.com/FStarLang/FStar) - An ML-like language with a type system for program verification. + * [IronPython](https://github.com/IronLanguages/main/tree/master/Languages/IronPython) - A .NET implementation of the [Python](https://www.python.org) programming language, built on the DLR. [IronPython Site](http://ironpython.net). + * [IronRuby](https://github.com/IronLanguages/main/tree/master/Languages/Ruby) - A .NET implementation of the [Ruby](https://www.ruby-lang.org) programming language, built on the DLR. [IronRuby Site](http://ironruby.net). + * [IronScheme](http://ironscheme.codeplex.com) - A R6RS conforming Scheme-like implementation based on the Microsoft DLR. + * [Irony](https://irony.codeplex.com/) - a development kit for implementing languages on .NET platform + * [MoonSharp](https://github.com/xanathar/moonsharp/) - A Lua interpreter and remote debugger, written entirely in C#, easily embeddable in any application running on .NET 3.5+ and Mono. + * [Nemerle](https://github.com/rsdn/nemerle) - A high-level statically-typed programming language which offers functional, object-oriented and imperative features and has a simple C# like syntax and a powerful meta-programming system. + * [NiL.JS](https://github.com/nilproject/NiL.JS) - A .NET implementation of the ECMAScript language and runtime. + * [Phalanger](https://github.com/DEVSENSE/Phalanger) - full-featured PHP runtime & compiler for .NET/Mono frameworks. Phalanger is modern open-source implementation of PHP, compatible with the vast array of existing PHP code. + * [Roslyn (.NET Compiler Platform)](https://roslyn.codeplex.com/) - Open-source C# and Visual Basic compilers with rich code analysis APIs. * Quality Assurance - * [C# Coding Guidelines](https://github.com/dennisdoomen/CSharpGuidelines) - A set of coding guidelines for C# 3.0, 4.0 and 5.0 that extend StyleCop and can be forked and adapted for internal use. + * [C# Coding Guidelines](https://github.com/dennisdoomen/CSharpGuidelines) - A set of coding guidelines for C# 3.0, 4.0 and 5.0 that extend StyleCop and can be forked and adapted for internal use. * Security / Identity Management - * [NWebsec](https://github.com/NWebsec/NWebsec) - Security headers for ASP.NET applications. - * [IdentityManager](https://github.com/IdentityManager/IdentityManager) - * [IdentityServer](https://github.com/IdentityServer/IdentityServer3) - * [SKGL - Serial Key Generating Library](https://skgl.codeplex.com/) + * [NWebsec](https://github.com/NWebsec/NWebsec) - Security headers for ASP.NET applications. + * [IdentityManager](https://github.com/IdentityManager/IdentityManager) + * [IdentityServer](https://github.com/IdentityServer/IdentityServer3) + * [SKGL - Serial Key Generating Library](https://skgl.codeplex.com/) * Web CMS - * [Composite C1](https://github.com/Orckestra/C1-CMS) - Web content management platform (CMS). - * [DNN (formerly DotNetNuke)](https://dotnetnuke.codeplex.com/) - Web content management platform (CMS). - * [Kaliko CMS](https://github.com/KalikoCMS/KalikoCMS.Core) - Flexible and extensible CMS framework supporting both ASP.NET MVC and WebForms. - * [N2CMS](https://github.com/n2cms/n2cms) - Open source, lightweight, code-first CMS able to seamlessly integrate into any MVC project. - * [Orchard](https://github.com/OrchardCMS/Orchard) - A community-focused Content Management System built on the ASP.NET MVC platform. - * [Piranha CMS](https://github.com/PiranhaCMS/Piranha) - Lightweight CMS library for new and existing ASP.NET MVC & WebPages applications. - * [Suave](https://github.com/SuaveIO/suave) A lightweight web server and a set of combinators to manipulate route flow and task composition. - * [Umbraco](https://github.com/umbraco/Umbraco-CMS/) - Web content management platform (CMS). - * [WebSharper](https://bitbucket.org/IntelliFactory/websharper) - Web programming platform including a compiler from F# code to JavaScript. - * [Platformus](https://github.com/Platformus/Platformus) - Free, open source and cross-platform CMS based on ASP.NET Core 1.1 and ExtCore framework. + * [Composite C1](https://github.com/Orckestra/C1-CMS) - Web content management platform (CMS). + * [DNN (formerly DotNetNuke)](https://dotnetnuke.codeplex.com/) - Web content management platform (CMS). + * [Kaliko CMS](https://github.com/KalikoCMS/KalikoCMS.Core) - Flexible and extensible CMS framework supporting both ASP.NET MVC and WebForms. + * [N2CMS](https://github.com/n2cms/n2cms) - Open source, lightweight, code-first CMS able to seamlessly integrate into any MVC project. + * [Orchard](https://github.com/OrchardCMS/Orchard) - A community-focused Content Management System built on the ASP.NET MVC platform. + * [Piranha CMS](https://github.com/PiranhaCMS/Piranha) - Lightweight CMS library for new and existing ASP.NET MVC & WebPages applications. + * [Suave](https://github.com/SuaveIO/suave) A lightweight web server and a set of combinators to manipulate route flow and task composition. + * [Umbraco](https://github.com/umbraco/Umbraco-CMS/) - Web content management platform (CMS). + * [WebSharper](https://bitbucket.org/IntelliFactory/websharper) - Web programming platform including a compiler from F# code to JavaScript. + * [Platformus](https://github.com/Platformus/Platformus) - Free, open source and cross-platform CMS based on ASP.NET Core 1.1 and ExtCore framework. * Web Marketplace - * [BeYourMarket](https://github.com/beyourmarket/beyourmarket) - BeYourMarket is a peer-to-peer marketplace framework http://beyourmarket.com + * [BeYourMarket](https://github.com/beyourmarket/beyourmarket) - BeYourMarket is a peer-to-peer marketplace framework http://beyourmarket.com * Web Frameworks - * [DotVVM](https://github.com/riganti/dotvvm) - MVVM framework for people who don't like to write JavaScript, with OWIN and ASP.NET Core support and a free extension for Visual Studio 2015 and 2017. - * [Nancy](https://github.com/NancyFx/Nancy) - A lightweight, low-ceremony, framework for building HTTP based services on .NET and Mono. - * [NemerleWeb](https://github.com/NemerleWeb/NemerleWeb) - Web MVVM library for .Net. It uses reactive data model which allows creating rich internet applications. + * [DotVVM](https://github.com/riganti/dotvvm) - MVVM framework for people who don't like to write JavaScript, with OWIN and ASP.NET Core support and a free extension for Visual Studio 2015 and 2017. + * [Nancy](https://github.com/NancyFx/Nancy) - A lightweight, low-ceremony, framework for building HTTP based services on .NET and Mono. + * [NemerleWeb](https://github.com/NemerleWeb/NemerleWeb) - Web MVVM library for .Net. It uses reactive data model which allows creating rich internet applications. * Static Site Generators * [FsBlog](https://github.com/fsprojects/FsBlog/) - Blog aware, static site generation using F#. @@ -76,274 +76,276 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [Wyam](http://wyam.io) - A simple to use, highly modular, and extremely configurable static content generator. * ADO.NET providers - * [Firebird .NET Data Provider](https://github.com/cincuranet/FirebirdSql.Data.FirebirdClient) - Firebird - * [Npgsql](https://github.com/npgsql/npgsql) - PostgreSQL - * [System.Data.SQLite](https://system.data.sqlite.org) - SQLite + * [Firebird .NET Data Provider](https://github.com/cincuranet/FirebirdSql.Data.FirebirdClient) - Firebird + * [Npgsql](https://github.com/npgsql/npgsql) - PostgreSQL + * [System.Data.SQLite](https://system.data.sqlite.org) - SQLite * Messaging - * [Azure Service Bus](https://github.com/azure/azure-service-bus-dotnet) - .NET Standard client library for [Azure Service Bus](https://docs.microsoft.com/en-us/azure/service-bus/). - * [Azure Event Hubs](https://github.com/azure/azure-event-hubs-dotnet) - .NET Standard client library for [Azure Event Hubs](https://docs.microsoft.com/en-us/azure/event-hubs/). + * [Azure Service Bus](https://github.com/azure/azure-service-bus-dotnet) - .NET Standard client library for [Azure Service Bus](https://docs.microsoft.com/en-us/azure/service-bus/). + * [Azure Event Hubs](https://github.com/azure/azure-event-hubs-dotnet) - .NET Standard client library for [Azure Event Hubs](https://docs.microsoft.com/en-us/azure/event-hubs/). * [Azure Relay](https://github.com/azure/azure-relay-dotnet) - .NET Standard client library for [Azure Relay](https://docs.microsoft.com/en-us/azure/service-bus-relay/relay-what-is-it). - * [NServiceBus](https://github.com/Particular/NServiceBus) - The most popular service bus for .NET - * [AzureNetQ](https://github.com/Roysvork/AzureNetQ) - An easy to use .NET API for Azure Service Bus. + * [NServiceBus](https://github.com/Particular/NServiceBus) - The most popular service bus for .NET + * [AzureNetQ](https://github.com/Roysvork/AzureNetQ) - An easy to use .NET API for Azure Service Bus. * [Brighter](https://github.com/iancooper/Paramore) - A Command Dispatcher and Command Processor library with support for Work or Task Queues over different MoM implementations such as RabbitMQ - * [EasyNetQ](https://github.com/mikehadlow/EasyNetQ) - An easy to use .NET API for RabbitMQ. - * [Lime](https://github.com/takenet/lime-csharp) - A lightweight messaging library. - * [MassTransit](https://github.com/MassTransit/MassTransit) - A distributed application framework for RabbitMQ and Azure Service Bus. - * [RestBus](https://github.com/tenor/RestBus) - Easy Asynchronous Messaging and Queueing for .NET + * [EasyNetQ](https://github.com/mikehadlow/EasyNetQ) - An easy to use .NET API for RabbitMQ. + * [Lime](https://github.com/takenet/lime-csharp) - A lightweight messaging library. + * [MassTransit](https://github.com/MassTransit/MassTransit) - A distributed application framework for RabbitMQ and Azure Service Bus. + * [RestBus](https://github.com/tenor/RestBus) - Easy Asynchronous Messaging and Queueing for .NET * Libraries - * [Albedo](https://github.com/ploeh/Albedo) - A .NET library targeted at making Reflection programming more consistent, using a common set of abstractions and utilities. - * [Algorithmia](https://github.com/SolutionsDesign/Algorithmia) - Algorithms and Data structures - * [AngleSharp](https://github.com/FlorianRappl/AngleSharp) - Ultimate angle brackets parser library. It parses HTML5, MathML, SVG and CSS to construct a DOM based on the official W3C specification. - * [ArcGIS.PCL](https://github.com/davetimmins/ArcGIS.PCL) - Call ArcGIS Server REST API resources. You can also convert between ArcGIS features and GeoJSON. - * [Argument](https://github.com/ashmind/Argument) - Argument validation microframework that does one thing in the simplest way possible. - * [AshMind.Extensions](https://github.com/ashmind/ashmind-extensions) - A set of very conservative extension methods most of which closely follow naming and design patterns of .NET Base Class Library. - * [ASP.NET MVC Boilerplate Framework](https://github.com/ASP-NET-MVC-Boilerplate/Framework) - ASP.NET MVC Extensions and Helper NuGet packages. - * [AsyncCollections](https://github.com/HellBrick/AsyncCollections) - A set of lock-free thread-safe collections designed to be used asynchronously. - * [Automatonymous](https://github.com/MassTransit/Automatonymous) - An asynchronous state machine engine with messaging support. - * [Bing.RestClient](https://github.com/AdvancedREI/Bing.RestClient) - Access the Bing REST APIs from a unified client. - * [BoxKite.Twitter](https://github.com/NickHodge/BoxKite.Twitter/) - Twitter .NET Client Library for the 1.1 Twitter API, incorporating REST API, User streaming and Search Streaming. Uses Reactive Extensions (Rx). - * [Cecil](https://github.com/jbevain/cecil) - A popular library to read, modify and write .NET binaries. - * [Cimbalino Toolkit](https://github.com/Cimbalino/Cimbalino-Toolkit) - A set of useful and powerful tools that will help you build your Windows Platform applications. - * [CodeJam](https://github.com/rsdn/CodeJam) - Set of handy reusable .NET components that can simplify your daily work and save your time when you copy and paste your favorite helper methods and classes from one project to another. - * [Coding4Fun Toolkit](https://github.com/Coding4FunProjects/Coding4FunToolkit) - * [ColoredConsole](https://github.com/colored-console/colored-console) - Add some color to your console. - * [ColorSharp](https://github.com/Litipk/ColorSharp) - Library to handle color spaces and light spectrums. - * [ComparerExtensions](https://github.com/jehugaleahsa/comparerextensions) - Build IComparer and IEqualityComparer objects using natural language syntax. - * [Comparers](https://github.com/StephenCleary/Comparers) - Fluent syntax for building comparers (and equality comparers) and implementing object comparison. - * [Cricket](https://github.com/fsprojects/Cricket) - Actor library - * [DateTimeExtensions](https://github.com/kappy/DateTimeExtensions) - Common Date Time operations on the form of extensions to System.DateTime, including holidays and working days calculations on several culture locales. - * [DiffSharp](https://github.com/gbaydin/DiffSharp) - Automatic Differentiation Library - * [DotNetOpenAuth](https://github.com/DotNetOpenAuth) - Library that adds support for your site visitors to login with their OpenIDs by just dropping an ASP.NET control onto your page. - * [DropboxRestAPI](https://github.com/saguiitay/DropboxRestAPI) - DropBox .Net Client Library - * [DynamicData](https://github.com/RolandPheasant/DynamicData) - Brings the power of Rx to collections - * [Excel-DNA](https://github.com/Excel-DNA/ExcelDna) - Create high-performance, easy to deploy Excel add-ins with .NET - [Home](http://excel-dna.net) - * [ExtraLINQ](https://github.com/mariusschulz/ExtraLINQ) - Various extension methods for working with .NET collections. - * [FeatureToggle](https://github.com/jason-roberts/FeatureToggle) - Simple, reliable feature toggles in .NET. - * [FlatMapper](https://github.com/kappy/FlatMapper) - A library to import and export data from and to plain text files in a Linq compatible way - * [FluentBootstrap](https://github.com/somedave/FluentBootstrap) - * [FluentConsole](https://github.com/ashmind/FluentConsole) - Alternative approach to colored console (`FluentConsole.Red.Text().Green.Text()`). - * [FluentValidation](https://github.com/JeremySkinner/FluentValidation) - A small validation library for .NET that uses a fluent interface and lambda expressions for building validation rules. - * [Flurl](https://github.com/tmenier/Flurl) - A fluent, portable, testable URL builder and HTTP client library. - * [Font-Awesome-WPF](https://github.com/charri/Font-Awesome-WPF) - WPF controls for the iconic font and CSS toolkit [Font Awesome](http://fortawesome.github.io/Font-Awesome/). - * [GongSolutions.Wpf.DragDrop](https://github.com/punker76/gong-wpf-dragdrop) - A drag'n'drop framework for WPF. - * [GeckoFX](https://bitbucket.org/geckofx) - Mozilla's Gecko layout engine wrapper in .NET. - * [HudlFfmpeg](https://github.com/hudl/HudlFfmpeg) - A/V transcoding framework that helps build complex FFmpeg commands. - * [JSON.NET](https://github.com/JamesNK/Newtonsoft.Json) - Popular high-performance JSON framework for .NET - * [Kentor.AuthServices](https://github.com/KentorIT/authservices) - A SAML2 Service Provider for .NET. - * [Language-ext](https://github.com/louthy/language-ext) - C# 6.0+ functional language extensions. Make C# more like F# and other functional languages - * [LINQ Extensions](https://github.com/TommasoScalici/LINQExtensions) - LINQ extensions for .NET is a collection of useful extensions methods that extends LINQ's capability. There are methods for combinatorics and sequence analysis, generation and manipulation. - * [leveldb-sharp](https://github.com/meebey/leveldb-sharp) - cross-platform C# binding for LevelDB - * [LibGit2Sharp](https://github.com/libgit2/libgit2sharp) - C# language bindings for the [LibGit2](https://github.com/libgit2/libgit2) implementation of Git. - * [Localization.SqlLocalizer]( https://github.com/damienbod/AspNet5Localization) - SQL Localizer for ASP.NET Core, dotnet - * [Lucene.Net](https://github.com/apache/lucene.net) - * [Math.NET Numerics](https://github.com/mathnet/mathnet-numerics) - Provides methods and algorithms for numerical computations in science, engineering and every day use. - * [Mathos Core Libary](http://mathos.codeplex.com/) - A library with algorithms for numerical calcultations in finance, statistics, pattern recognition, and more. - * [Mathos Parser](https://github.com/MathosProject/Mathos-Project) - A simple parser for mathematical expressions before and at runtime. - * [Mjolnir](https://github.com/hudl/Mjolnir) - [Hystrix](https://github.com/Netflix/Hystrix)-inspired fault tolerance with circuit breakers and thread pools. - * [MoreLINQ](https://code.google.com/p/morelinq/) - LINQ to Objects is missing a few desirable features. This project will enhance LINQ to Objects with extra methods, in a manner which keeps to the spirit of LINQ. - * [NAudio](https://github.com/naudio/NAudio) - An open source .NET audio and MIDI library. - * [NetTopologySuite](https://github.com/NetTopologySuite) - A .NET port of the JTS Topology Suite. - * [NEST](https://github.com/elastic/elasticsearch-net) - The official .NET client library for Elasticsearch. - * [NHunspell](http://sourceforge.net/projects/nhunspell/) - Spell Checker, Hyphenation an Theasaurus - * [NModbus4](https://github.com/NModbus4/NModbus4) - Implementation of the Modbus protocol - * [NodaTime](https://code.google.com/p/noda-time/) - A better date and time API for .NET - * [NPOI](https://npoi.codeplex.com) - An Office file formats (xls, xlsx, docx) read/write library for .NET - * [OneDriveRestAPI](https://github.com/saguiitay/OneDriveRestAPI) - OneDrive .Net Client Library using the REST API. - * [OsmSharp](https://github.com/OsmSharp) - Mapping & Routing library. - * [PocketSharp](https://github.com/ceee/PocketSharp) - * [PortableRest](https://github.com/AdvancedREI/PortableRest) - Portable library for building cross-platform REST API Clients for .NET and Xamarin. - * [RestSharp](https://github.com/restsharp/RestSharp) - Simple REST and HTTP API Client for .NET - * [SharpCompress](https://github.com/adamhathcock/sharpcompress) - SharpCompress is a fully managed cross-platform C# library to deal with many compression types and formats: Zip, GZip, RAR, TAR, 7Zip, etc. - * [SharpMap](https://sharpmap.codeplex.com/) - An easy-to-use mapping library for use in web and desktop applications - * [SharpSnmpLib](https://sharpsnmplib.codeplex.com) - An easy-to-use SNMP library for use on all platforms (.NET/Mono/Xamarin) - * [Shielded](https://github.com/jbakic/Shielded) - Software Transactional Memory for .NET - * [SmartIrc4net](https://github.com/meebey/SmartIrc4net) - IRC C# Library - * [Spartacus](https://github.com/wind39/spartacus) - Multi-purpose C# library, containing: 1) classes to access many types of databases in a fast, generic way; 2) classes to work with XLSX, CSV and DBF files; 3) PDF report engine. - * [Splat](https://github.com/paulcbetts/splat) - A library to make things cross-platform that should be. - * [SSH.NET](https://sshnet.codeplex.com/) - A client-side library for SSH, SCP and SFTP. - * [Strongly Typed Client API Generators for ASP.NET Web API](https://webapiclientgen.codeplex.com/) - Strongly Typed Client API Generators generate strongly typed client API in TypeScript and C# codes supporting desktop, Universal Windows, Android and iOS. - * [Stuntman](https://github.com/ritterim/stuntman) - OWIN middleware for quickly mocking authentication/authorization use case scenarios locally. Supports Cookie Authentication and Bearer Token Authentication. - * [SuperSocket](https://github.com/kerryjiang/SuperSocket) - An extensible socket server engine which supports .NET and Mono - * [Sweet.Jayson](https://github.com/ocdogan/Sweet.Jayson) - Fast, reliable, easy to use, fully json.org compliant, thread safe C# JSON library for server side and desktop operations. - * [VkSharp](https://github.com/kasthack/vksharp) - VK client library - * [TomP2P.NET](https://github.com/tomp2p/TomP2P.NET) - A P2P-based high performance key-value pair storage library for .NET - * [WampSharp](https://github.com/Code-Sharp/WampSharp) - A C# implementation of [The Web Application Messaging Protocol](http://wamp.ws) - a protocol that provides messaging patterns of Remote Procedure Calls and Publish/Subscribe over WebSockets. - * [WebApiProxy](https://github.com/faniereynders/WebApiProxy) - An automatic proxy provider for RESTful services built on ASP.NET Web API. Includes JavaScript & C# client generation. - * [WebSocket4Net](https://websocket4net.codeplex.com/) - A C# websocket client for .NET, Mono and Xamarin - * [WpfToolkit](https://github.com/dotnetprojects/wpftoolkit) - Fork of the MS WPF Toolkit - * [XamlEssentials](https://github.com/AdvancedREI/XamlEssentials) - Collection of helpers for Microsoft's XAML platforms. - * [Zlib.Portable](https://github.com/AdvancedREI/Zlib.Portable) - A Portable Class Library port of the Zlib library from http://dotnetzip.codeplex.com. - * [ExtCore](https://github.com/ExtCore/ExtCore) - Free, open source and cross-platform framework for creating modular and extendable web applications based on ASP.NET Core 1.1. + * [Albedo](https://github.com/ploeh/Albedo) - A .NET library targeted at making Reflection programming more consistent, using a common set of abstractions and utilities. + * [Algorithmia](https://github.com/SolutionsDesign/Algorithmia) - Algorithms and Data structures + * [AngleSharp](https://github.com/FlorianRappl/AngleSharp) - Ultimate angle brackets parser library. It parses HTML5, MathML, SVG and CSS to construct a DOM based on the official W3C specification. + * [ArcGIS.PCL](https://github.com/davetimmins/ArcGIS.PCL) - Call ArcGIS Server REST API resources. You can also convert between ArcGIS features and GeoJSON. + * [Argument](https://github.com/ashmind/Argument) - Argument validation microframework that does one thing in the simplest way possible. + * [AshMind.Extensions](https://github.com/ashmind/ashmind-extensions) - A set of very conservative extension methods most of which closely follow naming and design patterns of .NET Base Class Library. + * [ASP.NET MVC Boilerplate Framework](https://github.com/ASP-NET-MVC-Boilerplate/Framework) - ASP.NET MVC Extensions and Helper NuGet packages. + * [AsyncCollections](https://github.com/HellBrick/AsyncCollections) - A set of lock-free thread-safe collections designed to be used asynchronously. + * [Automatonymous](https://github.com/MassTransit/Automatonymous) - An asynchronous state machine engine with messaging support. + * [Bing.RestClient](https://github.com/AdvancedREI/Bing.RestClient) - Access the Bing REST APIs from a unified client. + * [BoxKite.Twitter](https://github.com/NickHodge/BoxKite.Twitter/) - Twitter .NET Client Library for the 1.1 Twitter API, incorporating REST API, User streaming and Search Streaming. Uses Reactive Extensions (Rx). + * [Cecil](https://github.com/jbevain/cecil) - A popular library to read, modify and write .NET binaries. + * [Cimbalino Toolkit](https://github.com/Cimbalino/Cimbalino-Toolkit) - A set of useful and powerful tools that will help you build your Windows Platform applications. + * [CodeJam](https://github.com/rsdn/CodeJam) - Set of handy reusable .NET components that can simplify your daily work and save your time when you copy and paste your favorite helper methods and classes from one project to another. + * [Coding4Fun Toolkit](https://github.com/Coding4FunProjects/Coding4FunToolkit) + * [ColoredConsole](https://github.com/colored-console/colored-console) - Add some color to your console. + * [ColorSharp](https://github.com/Litipk/ColorSharp) - Library to handle color spaces and light spectrums. + * [ComparerExtensions](https://github.com/jehugaleahsa/comparerextensions) - Build IComparer and IEqualityComparer objects using natural language syntax. + * [Comparers](https://github.com/StephenCleary/Comparers) - Fluent syntax for building comparers (and equality comparers) and implementing object comparison. + * [Cricket](https://github.com/fsprojects/Cricket) - Actor library + * [DateTimeExtensions](https://github.com/kappy/DateTimeExtensions) - Common Date Time operations on the form of extensions to System.DateTime, including holidays and working days calculations on several culture locales. + * [DiffSharp](https://github.com/gbaydin/DiffSharp) - Automatic Differentiation Library + * [DotNetOpenAuth](https://github.com/DotNetOpenAuth) - Library that adds support for your site visitors to login with their OpenIDs by just dropping an ASP.NET control onto your page. + * [DropboxRestAPI](https://github.com/saguiitay/DropboxRestAPI) - DropBox .Net Client Library + * [DynamicData](https://github.com/RolandPheasant/DynamicData) - Brings the power of Rx to collections + * [Excel-DNA](https://github.com/Excel-DNA/ExcelDna) - Create high-performance, easy to deploy Excel add-ins with .NET - [Home](http://excel-dna.net) + * [ExtraLINQ](https://github.com/mariusschulz/ExtraLINQ) - Various extension methods for working with .NET collections. + * [FeatureToggle](https://github.com/jason-roberts/FeatureToggle) - Simple, reliable feature toggles in .NET. + * [FlatMapper](https://github.com/kappy/FlatMapper) - A library to import and export data from and to plain text files in a Linq compatible way + * [FluentBootstrap](https://github.com/somedave/FluentBootstrap) + * [FluentConsole](https://github.com/ashmind/FluentConsole) - Alternative approach to colored console (`FluentConsole.Red.Text().Green.Text()`). + * [FluentValidation](https://github.com/JeremySkinner/FluentValidation) - A small validation library for .NET that uses a fluent interface and lambda expressions for building validation rules. + * [Flurl](https://github.com/tmenier/Flurl) - A fluent, portable, testable URL builder and HTTP client library. + * [Font-Awesome-WPF](https://github.com/charri/Font-Awesome-WPF) - WPF controls for the iconic font and CSS toolkit [Font Awesome](http://fortawesome.github.io/Font-Awesome/). + * [GongSolutions.Wpf.DragDrop](https://github.com/punker76/gong-wpf-dragdrop) - A drag'n'drop framework for WPF. + * [GeckoFX](https://bitbucket.org/geckofx) - Mozilla's Gecko layout engine wrapper in .NET. + * [HudlFfmpeg](https://github.com/hudl/HudlFfmpeg) - A/V transcoding framework that helps build complex FFmpeg commands. + * [JSON.NET](https://github.com/JamesNK/Newtonsoft.Json) - Popular high-performance JSON framework for .NET + * [Kentor.AuthServices](https://github.com/KentorIT/authservices) - A SAML2 Service Provider for .NET. + * [Language-ext](https://github.com/louthy/language-ext) - C# 6.0+ functional language extensions. Make C# more like F# and other functional languages + * [LINQ Extensions](https://github.com/TommasoScalici/LINQExtensions) - LINQ extensions for .NET is a collection of useful extensions methods that extends LINQ's capability. There are methods for combinatorics and sequence analysis, generation and manipulation. + * [leveldb-sharp](https://github.com/meebey/leveldb-sharp) - cross-platform C# binding for LevelDB + * [LibGit2Sharp](https://github.com/libgit2/libgit2sharp) - C# language bindings for the [LibGit2](https://github.com/libgit2/libgit2) implementation of Git. + * [Localization.SqlLocalizer]( https://github.com/damienbod/AspNet5Localization) - SQL Localizer for ASP.NET Core, dotnet + * [Lucene.Net](https://github.com/apache/lucene.net) + * [Math.NET Numerics](https://github.com/mathnet/mathnet-numerics) - Provides methods and algorithms for numerical computations in science, engineering and every day use. + * [Mathos Core Libary](http://mathos.codeplex.com/) - A library with algorithms for numerical calcultations in finance, statistics, pattern recognition, and more. + * [Mathos Parser](https://github.com/MathosProject/Mathos-Project) - A simple parser for mathematical expressions before and at runtime. + * [Mjolnir](https://github.com/hudl/Mjolnir) - [Hystrix](https://github.com/Netflix/Hystrix)-inspired fault tolerance with circuit breakers and thread pools. + * [MoreLINQ](https://code.google.com/p/morelinq/) - LINQ to Objects is missing a few desirable features. This project will enhance LINQ to Objects with extra methods, in a manner which keeps to the spirit of LINQ. + * [NAudio](https://github.com/naudio/NAudio) - An open source .NET audio and MIDI library. + * [NetTopologySuite](https://github.com/NetTopologySuite) - A .NET port of the JTS Topology Suite. + * [NEST](https://github.com/elastic/elasticsearch-net) - The official .NET client library for Elasticsearch. + * [NHunspell](http://sourceforge.net/projects/nhunspell/) - Spell Checker, Hyphenation an Theasaurus + * [NModbus4](https://github.com/NModbus4/NModbus4) - Implementation of the Modbus protocol + * [NodaTime](https://code.google.com/p/noda-time/) - A better date and time API for .NET + * [NPOI](https://npoi.codeplex.com) - An Office file formats (xls, xlsx, docx) read/write library for .NET + * [OneDriveRestAPI](https://github.com/saguiitay/OneDriveRestAPI) - OneDrive .Net Client Library using the REST API. + * [OsmSharp](https://github.com/OsmSharp) - Mapping & Routing library. + * [PocketSharp](https://github.com/ceee/PocketSharp) + * [PortableRest](https://github.com/AdvancedREI/PortableRest) - Portable library for building cross-platform REST API Clients for .NET and Xamarin. + * [RestSharp](https://github.com/restsharp/RestSharp) - Simple REST and HTTP API Client for .NET + * [SharpCompress](https://github.com/adamhathcock/sharpcompress) - SharpCompress is a fully managed cross-platform C# library to deal with many compression types and formats: Zip, GZip, RAR, TAR, 7Zip, etc. + * [SharpMap](https://sharpmap.codeplex.com/) - An easy-to-use mapping library for use in web and desktop applications + * [SharpSnmpLib](https://sharpsnmplib.codeplex.com) - An easy-to-use SNMP library for use on all platforms (.NET/Mono/Xamarin) + * [Shielded](https://github.com/jbakic/Shielded) - Software Transactional Memory for .NET + * [SmartIrc4net](https://github.com/meebey/SmartIrc4net) - IRC C# Library + * [Spartacus](https://github.com/wind39/spartacus) - Multi-purpose C# library, containing: 1) classes to access many types of databases in a fast, generic way; 2) classes to work with XLSX, CSV and DBF files; 3) PDF report engine. + * [Splat](https://github.com/paulcbetts/splat) - A library to make things cross-platform that should be. + * [SSH.NET](https://sshnet.codeplex.com/) - A client-side library for SSH, SCP and SFTP. + * [Strongly Typed Client API Generators for ASP.NET Web API](https://webapiclientgen.codeplex.com/) - Strongly Typed Client API Generators generate strongly typed client API in TypeScript and C# codes supporting desktop, Universal Windows, Android and iOS. + * [Stuntman](https://github.com/ritterim/stuntman) - OWIN middleware for quickly mocking authentication/authorization use case scenarios locally. Supports Cookie Authentication and Bearer Token Authentication. + * [SuperSocket](https://github.com/kerryjiang/SuperSocket) - An extensible socket server engine which supports .NET and Mono + * [Sweet.Jayson](https://github.com/ocdogan/Sweet.Jayson) - Fast, reliable, easy to use, fully json.org compliant, thread safe C# JSON library for server side and desktop operations. + * [VkSharp](https://github.com/kasthack/vksharp) - VK client library + * [TomP2P.NET](https://github.com/tomp2p/TomP2P.NET) - A P2P-based high performance key-value pair storage library for .NET + * [WampSharp](https://github.com/Code-Sharp/WampSharp) - A C# implementation of [The Web Application Messaging Protocol](http://wamp.ws) - a protocol that provides messaging patterns of Remote Procedure Calls and Publish/Subscribe over WebSockets. + * [WebApiProxy](https://github.com/faniereynders/WebApiProxy) - An automatic proxy provider for RESTful services built on ASP.NET Web API. Includes JavaScript & C# client generation. + * [WebSocket4Net](https://websocket4net.codeplex.com/) - A C# websocket client for .NET, Mono and Xamarin + * [WpfToolkit](https://github.com/dotnetprojects/wpftoolkit) - Fork of the MS WPF Toolkit + * [XamlEssentials](https://github.com/AdvancedREI/XamlEssentials) - Collection of helpers for Microsoft's XAML platforms. + * [Zlib.Portable](https://github.com/AdvancedREI/Zlib.Portable) - A Portable Class Library port of the Zlib library from http://dotnetzip.codeplex.com. + * [ExtCore](https://github.com/ExtCore/ExtCore) - Free, open source and cross-platform framework for creating modular and extendable web applications based on ASP.NET Core 1.1. * Data Mine/Data Extraction/Machine Learning/AI - * [AForge.NET](http://www.aforgenet.com/) - a C# framework designed for developers and researchers in the fields of Computer Vision and Artificial Intelligence - image processing, neural networks, genetic algorithms, machine learning, robotics - * [Accord.NET Framework](https://github.com/accord-net/framework) - The Accord.NET Framework is a .NET machine learning framework combined with audio and image processing libraries completely written in C#. - * [Nepy](http://nepy.codeplex.com) - A collection of NLP parsers for .NET - * [SharpNLP](http://sharpnlp.codeplex.com) - SharpNLP is a collection of natural language processing tools written in C# - * [Toxy](http://toxy.codeplex.com) - An data/text extraction framework for .NET, similar to Tika in Java. + * [AForge.NET](http://www.aforgenet.com/) - a C# framework designed for developers and researchers in the fields of Computer Vision and Artificial Intelligence - image processing, neural networks, genetic algorithms, machine learning, robotics + * [Accord.NET Framework](https://github.com/accord-net/framework) - The Accord.NET Framework is a .NET machine learning framework combined with audio and image processing libraries completely written in C#. + * [Nepy](http://nepy.codeplex.com) - A collection of NLP parsers for .NET + * [SharpNLP](http://sharpnlp.codeplex.com) - SharpNLP is a collection of natural language processing tools written in C# + * [Toxy](http://toxy.codeplex.com) - An data/text extraction framework for .NET, similar to Tika in Java. * Graphics & Server-side Image Processing - * [DynamicImage](https://github.com/tgjones/dynamic-image) - WPF-based server-side image rendering system - lots of visual effects implemented as high-performance shaders. Has URL api, several plugins available. - * [ImageSharp](https://github.com/jimbobsquarepants/imagesharp/) - A cross-platform library for processing of image files written in C#. (NetStandard 1.1 X-Plat). - * [ImageProcessor](https://github.com/jimbobsquarepants/imageprocessor/) - A fluent wrapper around System.Drawing for the processing of image files (NET 4.5+ GDI+ based). - * [ImageResizer](https://github.com/imazen/resizer) - Add commands to image URLs to get altered versions in milliseconds. Edit, filter, touch-up images in real-time. (multiple backends - FreeImage, C++/CLI, GDI+, WIC). 45+ plugins available. - * [King.Azure.Imaging](https://github.com/jefking/King.Azure.Imaging) - Scalable image uploading and processing for Azure. - * [Magick.NET](https://magick.codeplex.com) - The .NET (Core/Framework) wrapper for the [ImageMagick](https://www.imagemagick.org) library that supports over [100 major file formats](https://www.imagemagick.org/script/formats.php). - * [MonoGame](http://www.monogame.net/) - MonoGame is a cross-platform, open-source implementation of the XNA Game Framework. - * [.NET Image Processor](http://dotnetimageprocessor.codeplex.com/) - Extensible, chainable image processing library (GDI+ based). - * [OpenTK](https://github.com/opentk/opentk) - OpenTK is a low-level, cross-platform binding to OpenGL, OpenGL ES, OpenCL and OpenAL, available for Windows, Linux, Mac OS X, BSD, Android and iOS. - * [SharpDX](https://github.com/sharpdx/SharpDX) - SharpDX is a project delivering the full DirectX API for .NET on all Windows platforms. - * [numl](http://numl.net) - numl is a general purpose machine learning framework meant to simplify the data analysis process + * [DynamicImage](https://github.com/tgjones/dynamic-image) - WPF-based server-side image rendering system - lots of visual effects implemented as high-performance shaders. Has URL api, several plugins available. + * [ImageSharp](https://github.com/jimbobsquarepants/imagesharp/) - A cross-platform library for processing of image files written in C#. (NetStandard 1.1 X-Plat). + * [ImageProcessor](https://github.com/jimbobsquarepants/imageprocessor/) - A fluent wrapper around System.Drawing for the processing of image files (NET 4.5+ GDI+ based). + * [ImageResizer](https://github.com/imazen/resizer) - Add commands to image URLs to get altered versions in milliseconds. Edit, filter, touch-up images in real-time. (multiple backends - FreeImage, C++/CLI, GDI+, WIC). 45+ plugins available. + * [King.Azure.Imaging](https://github.com/jefking/King.Azure.Imaging) - Scalable image uploading and processing for Azure. + * [Magick.NET](https://magick.codeplex.com) - The .NET (Core/Framework) wrapper for the [ImageMagick](https://www.imagemagick.org) library that supports over [100 major file formats](https://www.imagemagick.org/script/formats.php). + * [MonoGame](http://www.monogame.net/) - MonoGame is a cross-platform, open-source implementation of the XNA Game Framework. + * [.NET Image Processor](http://dotnetimageprocessor.codeplex.com/) - Extensible, chainable image processing library (GDI+ based). + * [OpenTK](https://github.com/opentk/opentk) - OpenTK is a low-level, cross-platform binding to OpenGL, OpenGL ES, OpenCL and OpenAL, available for Windows, Linux, Mac OS X, BSD, Android and iOS. + * [SharpDX](https://github.com/sharpdx/SharpDX) - SharpDX is a project delivering the full DirectX API for .NET on all Windows platforms. + * [numl](http://numl.net) - numl is a general purpose machine learning framework meant to simplify the data analysis process * Logging - * [Exceptionless](https://github.com/exceptionless/Exceptionless) - Provides real-time .NET error reporting for your ASP.NET, Web API, WebForms, WPF, Console, and MVC apps. It organizes the gathered information into simple actionable data that will help your app become exceptionless! - * [ELMAH](https://github.com/elmah/Elmah) - [ELMAH (Error Logging Modules and Handlers)](https://elmah.github.io/) is an application-wide error logging facility that is completely pluggable. It can be dynamically added to a running ASP.NET web application, or even all ASP.NET web applications on a machine, without any need for re-compilation or re-deployment. - * [log4net](http://logging.apache.org/log4net/) - A tool to help the programmer output log statements to a variety of output targets. - * [LogMaster4Net](https://github.com/kerryjiang/LogMaster4Net) - It is a central log server which can organize your logs in different applications in a same place but have same log behaviors (loggers, appenders, levels and rules) like in the indepedent applications before. - * [NLog](https://github.com/NLog/NLog) - NLog is a free logging platform for .NET with rich log routing and management capabilities. + * [Exceptionless](https://github.com/exceptionless/Exceptionless) - Provides real-time .NET error reporting for your ASP.NET, Web API, WebForms, WPF, Console, and MVC apps. It organizes the gathered information into simple actionable data that will help your app become exceptionless! + * [ELMAH](https://github.com/elmah/Elmah) - [ELMAH (Error Logging Modules and Handlers)](https://elmah.github.io/) is an application-wide error logging facility that is completely pluggable. It can be dynamically added to a running ASP.NET web application, or even all ASP.NET web applications on a machine, without any need for re-compilation or re-deployment. + * [log4net](http://logging.apache.org/log4net/) - A tool to help the programmer output log statements to a variety of output targets. + * [LogMaster4Net](https://github.com/kerryjiang/LogMaster4Net) - It is a central log server which can organize your logs in different applications in a same place but have same log behaviors (loggers, appenders, levels and rules) like in the indepedent applications before. + * [NLog](https://github.com/NLog/NLog) - NLog is a free logging platform for .NET with rich log routing and management capabilities. * Model-View-ViewModel (MVVM) Frameworks - * [Caliburn Micro](https://github.com/Caliburn-Micro/Caliburn.Micro) - A small, yet powerful framework, designed for building applications across all XAML platforms. - * [Catel.MVVM](https://github.com/catel/catel) - Catel is an application development platform with the focus on MVVM. - * [MVVM Cross](https://github.com/MvvmCross/MvvmCross) - A cross-platform mobile MVVM development framework. - * [MVVM Extensions](https://github.com/TommasoScalici/MVVMExtensions) - MVVM cross platform (.NET FW 4.5, WPF, Windows Runtime/Phone) extensions for .NET with support for async commands, MVVM-friendly Object and Task with support for UI notification. - * [MVVM Light Toolkit](http://www.mvvmlight.net) - A cross-platform desktop and mobile MVVM development framework. - * [Okra App Framework](https://github.com/OkraFramework/Okra.Core) - An MVVM framework for Windows Store applications including MVVM templates for Visual Studio. - * [Prism](https://github.com/PrismLibrary/Prism) - A cross-platform desktop and mobile MVVM development framework. - * [Radical](https://github.com/RadicalFx/radical) - An infrastructure framework whose primary role is to help in the development of composite WPF/Silverlight/WP/WinRT applications based on the Model View ViewModel pattern. - * [ReactiveUI](https://github.com/reactiveui/ReactiveUI) - An MVVM framework that integrates with the Reactive Extensions for .NET to create elegant, testable User Interfaces that run on any mobile or desktop platform. - * [Simple Mvvm Toolkit](http://simplemvvmtoolkit.codeplex.com/) - Provides a simple framework and set of tools for getting up to speed quickly with applications based on the MVVM design pattern. - * [WPF Application Framework (WAF)](http://waf.codeplex.com) - A lightweight Framework that helps you to create well structured WPF Applications. It supports you in applying a Layered Architecture and the Model-View-ViewModel pattern. + * [Caliburn Micro](https://github.com/Caliburn-Micro/Caliburn.Micro) - A small, yet powerful framework, designed for building applications across all XAML platforms. + * [Catel.MVVM](https://github.com/catel/catel) - Catel is an application development platform with the focus on MVVM. + * [MVVM Cross](https://github.com/MvvmCross/MvvmCross) - A cross-platform mobile MVVM development framework. + * [MVVM Extensions](https://github.com/TommasoScalici/MVVMExtensions) - MVVM cross platform (.NET FW 4.5, WPF, Windows Runtime/Phone) extensions for .NET with support for async commands, MVVM-friendly Object and Task with support for UI notification. + * [MVVM Light Toolkit](http://www.mvvmlight.net) - A cross-platform desktop and mobile MVVM development framework. + * [Okra App Framework](https://github.com/OkraFramework/Okra.Core) - An MVVM framework for Windows Store applications including MVVM templates for Visual Studio. + * [Prism](https://github.com/PrismLibrary/Prism) - A cross-platform desktop and mobile MVVM development framework. + * [Radical](https://github.com/RadicalFx/radical) - An infrastructure framework whose primary role is to help in the development of composite WPF/Silverlight/WP/WinRT applications based on the Model View ViewModel pattern. + * [ReactiveUI](https://github.com/reactiveui/ReactiveUI) - An MVVM framework that integrates with the Reactive Extensions for .NET to create elegant, testable User Interfaces that run on any mobile or desktop platform. + * [Simple Mvvm Toolkit](http://simplemvvmtoolkit.codeplex.com/) - Provides a simple framework and set of tools for getting up to speed quickly with applications based on the MVVM design pattern. + * [WPF Application Framework (WAF)](http://waf.codeplex.com) - A lightweight Framework that helps you to create well structured WPF Applications. It supports you in applying a Layered Architecture and the Model-View-ViewModel pattern. * Tools - * [API Port](https://github.com/microsoft/dotnet-apiport) - A tool that will analyze code for compatability issues when migrating between .NET Framework releases. - * [Cake](https://github.com/cake-build/cake) (C# Make) - A build automation system with C#/Roslyn driven build scripts. - * [CppSharp](https://github.com/mono/CppSharp) - C/C++ bindings generation for .NET. - * [CInject](https://github.com/punitganshani/CodeInject) - A tool to inject your C#/VB.NET code into existing .NET assemblies and executables - * [FAKE](http://fsharp.github.io/FAKE/) - Build automation system with capabilities which are similar to make and rake. - * [Fody](https://github.com/Fody/Fody) - Extensible tool for weaving .NET assemblies. - * [Crawler-Lib Build Tools](http://download.crawler-lib.net/BuildTools/) - [A PowerShell based toolbox](http://www.crawler-lib.net/build-tools) for automating the software build process, autmated testing and integration. - * [FsEye](https://code.google.com/p/fseye/) - A visual object tree inspector for the F# Interactive. - * [FsharpLint](https://github.com/fsprojects/FSharpLint) - Lint tool for F#. - * [FsPickler](https://github.com/nessos/FsPickler) - Serialization library that facilitates the distribution of .NET objects. - * [GitLink](https://github.com/GitTools/GitLink) - Command-line tool to make .NET open source accessible without the need for a symbols server - * [GitVersion](https://github.com/GitTools/GitVersion) - Use convention to derive a SemVer product version from a GitFlow based repository. - * [Glimpse](https://github.com/Glimpse/Glimpse) - Providing real time diagnostics & insights to the fingertips of hundreds of thousands of developers daily. - * [ILSpy](https://github.com/icsharpcode/ILSpy) - ILSpy is the open-source .NET assembly browser and decompiler. - * [Mini Profiler](https://github.com/MiniProfiler/dotnet) - A simple but effective mini-profiler for .NET. - * [Node.js Tools For Visual Studio](https://github.com/Microsoft/nodejstools) - Plugin that turns Visual Studio into a Node.js IDE - * [Obfuscar](https://obfuscar.codeplex.com) - MSIL obfuscation utility for .NET assemblies. - * [OmniDB](https://github.com/OmniDB/OmniDB) - Web tool for database management and conversion. [Site](http://omnidb.com.br) - * [Outcomes.Net](https://github.com/kinetiq/Ether.Outcomes/) - Fluent wrapper that eliminates plumbing code around failure-prone functions. - * [Paket](https://github.com/fsprojects/Paket) - Dependency manager for .NET and Mono projects, which is designed to work well with NuGet packages and also enables referencing files directly from GitHub repositories. - * [Protobuf-net](https://code.google.com/p/protobuf-net/) - A .NET implementation of protobuf, allowing you to serialize your .NET objects efficiently and easily. - * [scriptcs](https://github.com/scriptcs/scriptcs) - scriptcs makes it easy to write and execute C# with a simple text editor. - * [Snoop WPF](https://github.com/cplotts/snoopwpf) - Snoop - The WPF Spy Utility - * [Sql Bulk Copy Sync](https://github.com/WCOMAB/SqlBulkSync) - * [Vagabond](https://github.com/nessos/Vagabond) - Automated dependency resolution and dynamic assembly compilation framework. - * [Waf DotNetPad](http://dotnetpad.codeplex.com) - The Waf DotNetPad is a simple and fast code editor that makes fun program with C# or Visual Basic. - * [Weighted Selector](https://github.com/kinetiq/Ether.WeightedSelector/) - Easy to use (but high performance!) weighted selection implementation. - * [XDav](https://github.com/rezabazargan/xDav) - A .net server mudole for webdav standard. - * [ZeroToNine](https://github.com/ploeh/ZeroToNine) - A tool for maintaining .NET Assembly versions across multiple files. + * [API Port](https://github.com/microsoft/dotnet-apiport) - A tool that will analyze code for compatability issues when migrating between .NET Framework releases. + * [Cake](https://github.com/cake-build/cake) (C# Make) - A build automation system with C#/Roslyn driven build scripts. + * [CppSharp](https://github.com/mono/CppSharp) - C/C++ bindings generation for .NET. + * [CInject](https://github.com/punitganshani/CodeInject) - A tool to inject your C#/VB.NET code into existing .NET assemblies and executables + * [FAKE](http://fsharp.github.io/FAKE/) - Build automation system with capabilities which are similar to make and rake. + * [Fody](https://github.com/Fody/Fody) - Extensible tool for weaving .NET assemblies. + * [Crawler-Lib Build Tools](http://download.crawler-lib.net/BuildTools/) - [A PowerShell based toolbox](http://www.crawler-lib.net/build-tools) for automating the software build process, autmated testing and integration. + * [FsEye](https://code.google.com/p/fseye/) - A visual object tree inspector for the F# Interactive. + * [FsharpLint](https://github.com/fsprojects/FSharpLint) - Lint tool for F#. + * [FsPickler](https://github.com/nessos/FsPickler) - Serialization library that facilitates the distribution of .NET objects. + * [GitLink](https://github.com/GitTools/GitLink) - Command-line tool to make .NET open source accessible without the need for a symbols server + * [GitVersion](https://github.com/GitTools/GitVersion) - Use convention to derive a SemVer product version from a GitFlow based repository. + * [Glimpse](https://github.com/Glimpse/Glimpse) - Providing real time diagnostics & insights to the fingertips of hundreds of thousands of developers daily. + * [ILSpy](https://github.com/icsharpcode/ILSpy) - ILSpy is the open-source .NET assembly browser and decompiler. + * [Mini Profiler](https://github.com/MiniProfiler/dotnet) - A simple but effective mini-profiler for .NET. + * [Node.js Tools For Visual Studio](https://github.com/Microsoft/nodejstools) - Plugin that turns Visual Studio into a Node.js IDE + * [NsDepCop](https://github.com/realvizu/NsDepCop) - Static code analysis tool to enforce namespace dependency rules in C# projects. + * [Obfuscar](https://obfuscar.codeplex.com) - MSIL obfuscation utility for .NET assemblies. + * [OmniDB](https://github.com/OmniDB/OmniDB) - Web tool for database management and conversion. [Site](http://omnidb.com.br) + * [Outcomes.Net](https://github.com/kinetiq/Ether.Outcomes/) - Fluent wrapper that eliminates plumbing code around failure-prone functions. + * [Paket](https://github.com/fsprojects/Paket) - Dependency manager for .NET and Mono projects, which is designed to work well with NuGet packages and also enables referencing files directly from GitHub repositories. + * [Protobuf-net](https://code.google.com/p/protobuf-net/) - A .NET implementation of protobuf, allowing you to serialize your .NET objects efficiently and easily. + * [Quick Diagram Tool for C#](https://github.com/realvizu/QuickDiagram) - Code visualization tool for C#. + * [scriptcs](https://github.com/scriptcs/scriptcs) - scriptcs makes it easy to write and execute C# with a simple text editor. + * [Snoop WPF](https://github.com/cplotts/snoopwpf) - Snoop - The WPF Spy Utility + * [Sql Bulk Copy Sync](https://github.com/WCOMAB/SqlBulkSync) + * [Vagabond](https://github.com/nessos/Vagabond) - Automated dependency resolution and dynamic assembly compilation framework. + * [Waf DotNetPad](http://dotnetpad.codeplex.com) - The Waf DotNetPad is a simple and fast code editor that makes fun program with C# or Visual Basic. + * [Weighted Selector](https://github.com/kinetiq/Ether.WeightedSelector/) - Easy to use (but high performance!) weighted selection implementation. + * [XDav](https://github.com/rezabazargan/xDav) - A .net server mudole for webdav standard. + * [ZeroToNine](https://github.com/ploeh/ZeroToNine) - A tool for maintaining .NET Assembly versions across multiple files. * Testing - * [AutoFixture](https://github.com/AutoFixture/AutoFixture) - An open source framework for .NET designed to minimize the 'Arrange' phase of your unit tests. Its primary goal is to allow developers to focus on what is being tested rather than how to setup the test scenario, by making it easier to create object graphs containing test data. - * [canopy](https://github.com/lefthandedgoat/canopy) - A web testing framework. - * [FakeItEasy](https://github.com/FakeItEasy/FakeItEasy) - The easy mocking library for .NET. - * [Fixie](https://github.com/fixie/fixie) - A low-ceremony, convention-based testing framework with flexible customization. - * [FluentAssertions](http://www.fluentassertions.com/) - A very extensive set of extension methods that allow you to more naturally specify the expected outcome of unit tests and which make your assertions look beautiful, natural and most importantly, extremely readable. - * [FluentAutomation](https://github.com/stirno/FluentAutomation) - Simple Fluent API for UI Automation - * [FsCheck](https://github.com/fsharp/FsCheck) - A tool for testing .NET programs automatically. - * [Http.ClientHelpers](https://github.com/PureKrome/HttpClient.Helpers) - library to help mock & test `System.Net.Http.HttpClient`. - * [moq](https://github.com/Moq/moq4) - The most popular and friendly mocking framework for .NET - * [NBuilder](https://github.com/nbuilder/nbuilder) - A rapid test object generator. - * [NSpec](https://github.com/nspec/NSpec) - .NET BDD testing framework of the xSpec (context/specification) flavor, heavily inspired by RSpec and Mocha. - * [NSubstitute](https://github.com/nsubstitute/NSubstitute) - A friendly substitute for .NET mocking frameworks. - * [NUnit](https://github.com/nunit/nunit) - NUnit is a unit-testing framework for all .NET languages. - * [Shouldly](https://github.com/shouldly/shouldly) - Should style test assertion library with great error messages. - * [SpecFlow](https://github.com/techtalk/specflow) - Cucumber clone for .NET for writing acceptance tests in natural language. [Site](http://www.specflow.org/) - * [tickspec](http://tickspec.codeplex.com/) - A lightweight Behaviour Driven Development (BDD) framework. - * [TestStack.BDDfy](https://github.com/TestStack/TestStack.BDDfy) - BDDfy is the simplest BDD framework to use, customize and extend! - * [TestStack.FluentMvcTesting](https://github.com/TestStack/TestStack.FluentMVCTesting) - Simple, terse, fluent unit testing for ASP.NET MVC Controllers. - * [TestStack.Seleno](https://github.com/TestStack/TestStack.Seleno) - Seleno helps you write automated UI tests in the right way by implementing Page Objects and Page Components and by reading from and writing to web pages using strongly typed view models. - * [TestStack.White](https://github.com/TestStack/White) - White is a framework for automating rich client applications based on Win32, WinForms, WPF, Silverlight and SWT (Java) platforms. - * [xBehave.net](https://github.com/xbehave/xbehave.net/) - A BDD/TDD framework based on xUnit.net and inspired by Gherkin. - * [xUnit](https://github.com/xunit/xunit) - xUnit.net is a community-focused unit testing tool for the .NET Framework. + * [AutoFixture](https://github.com/AutoFixture/AutoFixture) - An open source framework for .NET designed to minimize the 'Arrange' phase of your unit tests. Its primary goal is to allow developers to focus on what is being tested rather than how to setup the test scenario, by making it easier to create object graphs containing test data. + * [canopy](https://github.com/lefthandedgoat/canopy) - A web testing framework. + * [FakeItEasy](https://github.com/FakeItEasy/FakeItEasy) - The easy mocking library for .NET. + * [Fixie](https://github.com/fixie/fixie) - A low-ceremony, convention-based testing framework with flexible customization. + * [FluentAssertions](http://www.fluentassertions.com/) - A very extensive set of extension methods that allow you to more naturally specify the expected outcome of unit tests and which make your assertions look beautiful, natural and most importantly, extremely readable. + * [FluentAutomation](https://github.com/stirno/FluentAutomation) - Simple Fluent API for UI Automation + * [FsCheck](https://github.com/fsharp/FsCheck) - A tool for testing .NET programs automatically. + * [Http.ClientHelpers](https://github.com/PureKrome/HttpClient.Helpers) - library to help mock & test `System.Net.Http.HttpClient`. + * [moq](https://github.com/Moq/moq4) - The most popular and friendly mocking framework for .NET + * [NBuilder](https://github.com/nbuilder/nbuilder) - A rapid test object generator. + * [NSpec](https://github.com/nspec/NSpec) - .NET BDD testing framework of the xSpec (context/specification) flavor, heavily inspired by RSpec and Mocha. + * [NSubstitute](https://github.com/nsubstitute/NSubstitute) - A friendly substitute for .NET mocking frameworks. + * [NUnit](https://github.com/nunit/nunit) - NUnit is a unit-testing framework for all .NET languages. + * [Shouldly](https://github.com/shouldly/shouldly) - Should style test assertion library with great error messages. + * [SpecFlow](https://github.com/techtalk/specflow) - Cucumber clone for .NET for writing acceptance tests in natural language. [Site](http://www.specflow.org/) + * [tickspec](http://tickspec.codeplex.com/) - A lightweight Behaviour Driven Development (BDD) framework. + * [TestStack.BDDfy](https://github.com/TestStack/TestStack.BDDfy) - BDDfy is the simplest BDD framework to use, customize and extend! + * [TestStack.FluentMvcTesting](https://github.com/TestStack/TestStack.FluentMVCTesting) - Simple, terse, fluent unit testing for ASP.NET MVC Controllers. + * [TestStack.Seleno](https://github.com/TestStack/TestStack.Seleno) - Seleno helps you write automated UI tests in the right way by implementing Page Objects and Page Components and by reading from and writing to web pages using strongly typed view models. + * [TestStack.White](https://github.com/TestStack/White) - White is a framework for automating rich client applications based on Win32, WinForms, WPF, Silverlight and SWT (Java) platforms. + * [xBehave.net](https://github.com/xbehave/xbehave.net/) - A BDD/TDD framework based on xUnit.net and inspired by Gherkin. + * [xUnit](https://github.com/xunit/xunit) - xUnit.net is a community-focused unit testing tool for the .NET Framework. * Dependency Injection - * [Autofac](https://github.com/autofac/Autofac) - Autofac is an addictive Inversion of Control container for .NET 4.5, Silverlight 5, Windows Store apps, and Windows Phone 8 apps. - * [Castle Windsor](https://github.com/castleproject/Windsor) - A mature Inversion of Control container available for .NET and Silverlight - * [DI Feature Tests](https://github.com/ashmind/net-feature-tests) - Tests that track commmon DI features among multiple containers - * [dI.Hook](https://github.com/punitganshani/dI.Hook) - DI container that allows invocation using AOP - * [DryIoc](https://bitbucket.org/dadhi/dryioc) - DryIoc is small, fast, capable IoC Container for .NET - * [fFastInjector](https://ffastinjector.codeplex.com/) - fFastInjector is a high-performing dependency injector, service locator, and/or IOC (inversion of control) container. - * [Funq](https://funq.codeplex.com/) - A fast DI container you can understand. - * [Grace](https://github.com/ipjohnson/Grace) - Grace is a feature rich Dependency Injection container in a portable class library - * [Griffin](https://github.com/jgauffin/griffin.container) - Inversion of control container with (almost) zero configuration - * [HaveBox](https://bitbucket.org/Have/havebox/wiki/Home) - HaveBox is a very fast and lightweight IoC containter. The goal is to keep it fast and light, and at the same time easy to use. - * [Hiro](https://github.com/philiplaureano/Hiro) - An ultra-lightweight, inversion of control container compiler framework - * [IfInjector](https://github.com/iamahern/IfInjector) - High performance mobile micro-IoC container. - * [LightCore](https://peterbucher.kilnhg.com/Code/LightCore/Group/Default?nr=) - [A lightweight dependency injection container](http://lightcore.ch/en/default.aspx) that can be used as a service locator and despite its simplicity and ease boasts numerous features. - * [LightInject](https://github.com/seesharper/LightInject) - A ultra lightweight IoC container - * [MicroSliver](https://microsliver.codeplex.com/) - MicroSliver is a micro, non-bloat, non-intimidating and speedy .NET (ASP.NET, Silverlight, RIA Services, WPF, Forms and Metro!) - * [Mugen Injection](http://mugeninjection.codeplex.com/) - The MugeniInjection is a lightweight and fast managed IoC (Inversion of Control) and DI (Dependency Injection) with support for constructor, property and method call injection - * [Ninject for Desktop](https://github.com/ninject/ninject) - Dependency injector for .NET - * [Ninject for Portable Class Libraries, Universal apps and Xamarin](https://github.com/onovotny/ninject) - * [QuickInject](https://github.com/isabgol/QuickInject) - QuickInject is a Unity 3.5 based IoC container that aims to give the Unity container a performance advantage in basic scenarios. - * [Simple Injector](https://github.com/simpleinjector/SimpleInjector/) - Simple Injector is an easy-to-use Dependency Injection library for .NET 4+ that supports Silverlight 4+, Windows Phone 8, Windows 8 including Universal apps and Mono. - * [Spring.NET](https://github.com/spring-projects/spring-net) - Spring.NET is an open source application framework that makes building enterprise .NET applications easier. - * [StructureMap](https://github.com/structuremap/structuremap) - StructureMap is a Dependency Injection / Inversion of Control tool for .Net that can be used to improve the architectural qualities of an object oriented system by reducing the mechanical costs of good design techniques. - * [StyleMVVM](https://stylemvvm.codeplex.com/) - Style MVVM is a toolkit designed for the Windows Store platform around the idea of being light weight and fast. - * [TinyIoC](https://github.com/grumpydev/TinyIoC) - An easy to use, hassle free, Inversion of Control Container for small projects, libraries and beginners alike. - * [Unity Container](http://unity.codeplex.com/) - The Unity Container (Unity) is a lightweight, extensible dependency injection container with optional support for instance and type interception. + * [Autofac](https://github.com/autofac/Autofac) - Autofac is an addictive Inversion of Control container for .NET 4.5, Silverlight 5, Windows Store apps, and Windows Phone 8 apps. + * [Castle Windsor](https://github.com/castleproject/Windsor) - A mature Inversion of Control container available for .NET and Silverlight + * [DI Feature Tests](https://github.com/ashmind/net-feature-tests) - Tests that track commmon DI features among multiple containers + * [dI.Hook](https://github.com/punitganshani/dI.Hook) - DI container that allows invocation using AOP + * [DryIoc](https://bitbucket.org/dadhi/dryioc) - DryIoc is small, fast, capable IoC Container for .NET + * [fFastInjector](https://ffastinjector.codeplex.com/) - fFastInjector is a high-performing dependency injector, service locator, and/or IOC (inversion of control) container. + * [Funq](https://funq.codeplex.com/) - A fast DI container you can understand. + * [Grace](https://github.com/ipjohnson/Grace) - Grace is a feature rich Dependency Injection container in a portable class library + * [Griffin](https://github.com/jgauffin/griffin.container) - Inversion of control container with (almost) zero configuration + * [HaveBox](https://bitbucket.org/Have/havebox/wiki/Home) - HaveBox is a very fast and lightweight IoC containter. The goal is to keep it fast and light, and at the same time easy to use. + * [Hiro](https://github.com/philiplaureano/Hiro) - An ultra-lightweight, inversion of control container compiler framework + * [IfInjector](https://github.com/iamahern/IfInjector) - High performance mobile micro-IoC container. + * [LightCore](https://peterbucher.kilnhg.com/Code/LightCore/Group/Default?nr=) - [A lightweight dependency injection container](http://lightcore.ch/en/default.aspx) that can be used as a service locator and despite its simplicity and ease boasts numerous features. + * [LightInject](https://github.com/seesharper/LightInject) - A ultra lightweight IoC container + * [MicroSliver](https://microsliver.codeplex.com/) - MicroSliver is a micro, non-bloat, non-intimidating and speedy .NET (ASP.NET, Silverlight, RIA Services, WPF, Forms and Metro!) + * [Mugen Injection](http://mugeninjection.codeplex.com/) - The MugeniInjection is a lightweight and fast managed IoC (Inversion of Control) and DI (Dependency Injection) with support for constructor, property and method call injection + * [Ninject for Desktop](https://github.com/ninject/ninject) - Dependency injector for .NET + * [Ninject for Portable Class Libraries, Universal apps and Xamarin](https://github.com/onovotny/ninject) + * [QuickInject](https://github.com/isabgol/QuickInject) - QuickInject is a Unity 3.5 based IoC container that aims to give the Unity container a performance advantage in basic scenarios. + * [Simple Injector](https://github.com/simpleinjector/SimpleInjector/) - Simple Injector is an easy-to-use Dependency Injection library for .NET 4+ that supports Silverlight 4+, Windows Phone 8, Windows 8 including Universal apps and Mono. + * [Spring.NET](https://github.com/spring-projects/spring-net) - Spring.NET is an open source application framework that makes building enterprise .NET applications easier. + * [StructureMap](https://github.com/structuremap/structuremap) - StructureMap is a Dependency Injection / Inversion of Control tool for .Net that can be used to improve the architectural qualities of an object oriented system by reducing the mechanical costs of good design techniques. + * [StyleMVVM](https://stylemvvm.codeplex.com/) - Style MVVM is a toolkit designed for the Windows Store platform around the idea of being light weight and fast. + * [TinyIoC](https://github.com/grumpydev/TinyIoC) - An easy to use, hassle free, Inversion of Control Container for small projects, libraries and beginners alike. + * [Unity Container](http://unity.codeplex.com/) - The Unity Container (Unity) is a lightweight, extensible dependency injection container with optional support for instance and type interception. * Data Access - * [Dapper](https://github.com/StackExchange/dapper-dot-net) - Dapper is a single file you can drop in to your project that will extend your IDbConnection interface. - * [Eggado](https://bitbucket.org/raboof/eggado) - Eggado takes generics, lambdas, expression trees, dynamic methods and DLR and uses them to breathe new life into data access using good old ADO.NET. It's for folks who can live with a SQL dialect. - * [King.Mapper](https://github.com/jefking/King.Mapper) - High performance model mapping. - * [linq2db](https://github.com/linq2db/linq2db/) - Lightweight ORM and LINQ provider with support for various databases including MS SQL, PostgreSQL, Oracle and MySQL - * [NHibernate](https://github.com/nhibernate) - Object Relational Mapper - * [Simple Data](https://github.com/markrendle/Simple.Data) - A light-weight, dynamic data access component for C# 4.0. - * [Sqlite-net](https://github.com/praeclarum/sqlite-net) - Simple, powerful, cross-platform SQLite client and ORM. - * [DeveelDB](https://github.com/deveel/deveeldb) - A complete SQL-99 embeddable database management system for .NET and Mono - * [NMEA Parser](https://github.com/dotMorten/NmeaParser) - Library for handling NMEA message in Windows Desktop, Store, Phone and Xamarin (Android + iOS), coming from files, Bluetooth, serial port or any stream. - * [Neyro.Data](https://github.com/neyromant/Neyro.Data) - Tiny, simple and fast ORM. - * [StackExchange.Redis](https://github.com/StackExchange/StackExchange.Redis) - * [SQL LocalDB Wrapper](https://github.com/martincostello/sqllocaldb) - SQL LocalDB Wrapper is an assembly providing interop with the SQL LocalDB native API from managed code using .NET APIs. - * [LINQ2DynamoDB](https://github.com/scale-tone/linq2dynamodb) - A type-safe data context for AWS DynamoDB with LINQ, in-memory caching and OData support. - * [Elephant](https://github.com/takenet/elephant) - Persistence library that provides common data structures as composable elements to abstract any storage engine, including (No)SQL databases. - * [Marten](https://github.com/JasperFx/marten) - Document DB / Event Store built on top of PostgreSQL. + * [Dapper](https://github.com/StackExchange/dapper-dot-net) - Dapper is a single file you can drop in to your project that will extend your IDbConnection interface. + * [Eggado](https://bitbucket.org/raboof/eggado) - Eggado takes generics, lambdas, expression trees, dynamic methods and DLR and uses them to breathe new life into data access using good old ADO.NET. It's for folks who can live with a SQL dialect. + * [King.Mapper](https://github.com/jefking/King.Mapper) - High performance model mapping. + * [linq2db](https://github.com/linq2db/linq2db/) - Lightweight ORM and LINQ provider with support for various databases including MS SQL, PostgreSQL, Oracle and MySQL + * [NHibernate](https://github.com/nhibernate) - Object Relational Mapper + * [Simple Data](https://github.com/markrendle/Simple.Data) - A light-weight, dynamic data access component for C# 4.0. + * [Sqlite-net](https://github.com/praeclarum/sqlite-net) - Simple, powerful, cross-platform SQLite client and ORM. + * [DeveelDB](https://github.com/deveel/deveeldb) - A complete SQL-99 embeddable database management system for .NET and Mono + * [NMEA Parser](https://github.com/dotMorten/NmeaParser) - Library for handling NMEA message in Windows Desktop, Store, Phone and Xamarin (Android + iOS), coming from files, Bluetooth, serial port or any stream. + * [Neyro.Data](https://github.com/neyromant/Neyro.Data) - Tiny, simple and fast ORM. + * [StackExchange.Redis](https://github.com/StackExchange/StackExchange.Redis) + * [SQL LocalDB Wrapper](https://github.com/martincostello/sqllocaldb) - SQL LocalDB Wrapper is an assembly providing interop with the SQL LocalDB native API from managed code using .NET APIs. + * [LINQ2DynamoDB](https://github.com/scale-tone/linq2dynamodb) - A type-safe data context for AWS DynamoDB with LINQ, in-memory caching and OData support. + * [Elephant](https://github.com/takenet/elephant) - Persistence library that provides common data structures as composable elements to abstract any storage engine, including (No)SQL databases. + * [Marten](https://github.com/JasperFx/marten) - Document DB / Event Store built on top of PostgreSQL. * Games - * [Duality](https://github.com/AdamsLair/duality) - An Open Source 2D Game Engine + Visual Editor written entirely in C#. - * [MonoGame](https://github.com/mono/MonoGame) - One framework for creating powerful cross-platform games. - * [OpenRA](https://github.com/OpenRA/OpenRA) - An open-source implementation of the Command & Conquer: Red Alert engine using .NET/Mono and OpenGL. - * [Paradox](https://github.com/SiliconStudio/paradox) - Paradox is a versatile and engaging game engine. - * [WaveEngine](https://github.com/waveengine) - A powerful component based game engine for desktop and mobile platforms using C#. + * [Duality](https://github.com/AdamsLair/duality) - An Open Source 2D Game Engine + Visual Editor written entirely in C#. + * [MonoGame](https://github.com/mono/MonoGame) - One framework for creating powerful cross-platform games. + * [OpenRA](https://github.com/OpenRA/OpenRA) - An open-source implementation of the Command & Conquer: Red Alert engine using .NET/Mono and OpenGL. + * [Paradox](https://github.com/SiliconStudio/paradox) - Paradox is a versatile and engaging game engine. + * [WaveEngine](https://github.com/waveengine) - A powerful component based game engine for desktop and mobile platforms using C#. * UI and Control libraries - * [Callisto](https://github.com/timheuer/callisto) - UI Control Toolkit for WinRT apps - * [Dragablz](http://github.com/ButchersBoy/Dragablz) - A tearable TabControl for WPF which also provides easy-to-use and implement docking features. - * [Eto](https://github.com/picoe/Eto) - Cross platform GUI Toolkit for desktop and mobile apps - * [MahApps.Metro](https://github.com/MahApps/MahApps.Metro) - A toolkit for creating Metro / Modern UI styled WPF apps. [mahapps.com](http://mahapps.com) - * [Material Design in XAML Toolkit](https://github.com/ButchersBoy/MaterialDesignInXamlToolkit) - WPF/XAML resources, styles & templates for creating applications using Material Design - * [Mono XWT](https://github.com/mono/xwt) - A cross-platform UI toolkit for creating desktop apps - * [UWP Community Toolkit](https://github.com/Microsoft/UWPCommunityToolkit) - The UWP Community Toolkit is a collection of helper functions, custom controls, and app services. It simplifies and demonstrates common developer tasks building UWP apps for Windows 10. + * [Callisto](https://github.com/timheuer/callisto) - UI Control Toolkit for WinRT apps + * [Dragablz](http://github.com/ButchersBoy/Dragablz) - A tearable TabControl for WPF which also provides easy-to-use and implement docking features. + * [Eto](https://github.com/picoe/Eto) - Cross platform GUI Toolkit for desktop and mobile apps + * [MahApps.Metro](https://github.com/MahApps/MahApps.Metro) - A toolkit for creating Metro / Modern UI styled WPF apps. [mahapps.com](http://mahapps.com) + * [Material Design in XAML Toolkit](https://github.com/ButchersBoy/MaterialDesignInXamlToolkit) - WPF/XAML resources, styles & templates for creating applications using Material Design + * [Mono XWT](https://github.com/mono/xwt) - A cross-platform UI toolkit for creating desktop apps + * [UWP Community Toolkit](https://github.com/Microsoft/UWPCommunityToolkit) - The UWP Community Toolkit is a collection of helper functions, custom controls, and app services. It simplifies and demonstrates common developer tasks building UWP apps for Windows 10. * Windows Services - * [King.Service](https://github.com/jefking/King.Service) - Task scheduling for Azure and Windows - * [TopShelf](https://github.com/Topshelf/Topshelf) - An easy service hosting framework for building Windows services using .NET. + * [King.Service](https://github.com/jefking/King.Service) - Task scheduling for Azure and Windows + * [TopShelf](https://github.com/Topshelf/Topshelf) - An easy service hosting framework for building Windows services using .NET. * Scheduling - * [Hangfire](https://github.com/HangfireIO/Hangfire) - An easy way to perform fire-and-forget, delayed and recurring tasks inside ASP.NET applications. - * [Quartz.Net](https://github.com/quartznet/quartznet) - A full-featured, open source job scheduling system that can be used from smallest apps to large scale enterprise systems. - * [FluentScheduler](https://github.com/fluentscheduler/FluentScheduler) - Task scheduler with fluent interface that runs automated tasks (cron jobs) from your application. + * [Hangfire](https://github.com/HangfireIO/Hangfire) - An easy way to perform fire-and-forget, delayed and recurring tasks inside ASP.NET applications. + * [Quartz.Net](https://github.com/quartznet/quartznet) - A full-featured, open source job scheduling system that can be used from smallest apps to large scale enterprise systems. + * [FluentScheduler](https://github.com/fluentscheduler/FluentScheduler) - Task scheduler with fluent interface that runs automated tasks (cron jobs) from your application. * Deployment - * [DropkicK](https://github.com/chucknorris/dropkick/) - A fluent deployment library for Windows applications - * [RoundHouse](https://github.com/chucknorris/roundhouse) - RoundhousE is a Database Migration Utility for .NET using sql files and versioning based on source control + * [DropkicK](https://github.com/chucknorris/dropkick/) - A fluent deployment library for Windows applications + * [RoundHouse](https://github.com/chucknorris/roundhouse) - RoundhousE is a Database Migration Utility for .NET using sql files and versioning based on source control * Service Bus * [King.Service.ServiceBus](https://github.com/jefking/King.Service.ServiceBus) - Task scheduling for Azure and Windows Servers: Service Bus. @@ -356,16 +358,16 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [Orleans](https://github.com/dotnet/orleans) - Framework that provides a straight-forward approach to building distributed high-scale computing applications using virtual actor model. * Windows Workflow - * [Workflow Extractor](https://github.com/punitganshani/WorkflowExtractor) - Document Windows Workflow logic into a Word document or Excel sheet. + * [Workflow Extractor](https://github.com/punitganshani/WorkflowExtractor) - Document Windows Workflow logic into a Word document or Excel sheet. * Amazon Echo/Alexa Integration - * [AlexaSkillsKit.NET](https://github.com/AreYouFreeBusy/AlexaSkillsKit.NET) - .NET library to write Alexa Skills that's interface-compatible with Amazon's AlexaSkillsKit for Java and matches that functionality. + * [AlexaSkillsKit.NET](https://github.com/AreYouFreeBusy/AlexaSkillsKit.NET) - .NET library to write Alexa Skills that's interface-compatible with Amazon's AlexaSkillsKit for Java and matches that functionality. * Remote Desktop - * [Myrtille](https://github.com/cedrozor/myrtille) - A native HTML4/5 Remote Desktop Protocol client, HTTP gateway written in C# for .NET + * [Myrtille](https://github.com/cedrozor/myrtille) - A native HTML4/5 Remote Desktop Protocol client, HTTP gateway written in C# for .NET * Project Templates - * [ASP.NET MVC Boilerplate](https://github.com/ASP-NET-MVC-Boilerplate/Templates) - Professional ASP.NET MVC templates for building secure, fast, robust and adaptable web applications or sites. It provides the minimum amount of code required on top of the default MVC template provided by Microsoft. + * [ASP.NET MVC Boilerplate](https://github.com/ASP-NET-MVC-Boilerplate/Templates) - Professional ASP.NET MVC templates for building secure, fast, robust and adaptable web applications or sites. It provides the minimum amount of code required on top of the default MVC template provided by Microsoft. This list is just a starting point - also take a look at all the projects on [CodePlex](http://www.codeplex.com/) and on [GitHub Trending C#](https://github.com/trending?l=csharp). From 457068a30bea2dc9e2b071f1faaff5664e6619a2 Mon Sep 17 00:00:00 2001 From: Rich Lander Date: Wed, 5 Apr 2017 06:40:15 -0700 Subject: [PATCH 334/872] Remove RyuJIT docs - no longer relevant --- docs/enabling-the-latest-ryujit.md | 27 ---- docs/testing-with-ryujit.md | 236 ----------------------------- 2 files changed, 263 deletions(-) delete mode 100644 docs/enabling-the-latest-ryujit.md delete mode 100644 docs/testing-with-ryujit.md diff --git a/docs/enabling-the-latest-ryujit.md b/docs/enabling-the-latest-ryujit.md deleted file mode 100644 index d0d63f8b3..000000000 --- a/docs/enabling-the-latest-ryujit.md +++ /dev/null @@ -1,27 +0,0 @@ -# How to enable a RyuJIT CTP - -**Updated (July 2015)**: [RyuJIT](http://blogs.msdn.com/b/dotnet/archive/2015/07/20/announcing-net-framework-4-6.aspx#ryujit) has shipped! You can download it with the [.NET Framework 4.6](http://blogs.msdn.com/b/dotnet/archive/2015/07/20/announcing-net-framework-4-6.aspx#net-framework-46). There is no longer any need to install the RyuJIT CTP. - -Download and install the latest [RyuJIT](http://aka.ms/RyuJIT) now. - -RyuJIT only works on 64-bit editions of Windows Vista and Windows Server 2008 and later. - -After installation, there are two ways to turn on RyuJIT. If you just want to enable RyuJIT for one application, set an environment variable: - - set COMPLUS_AltJit=* - -If you want to enable RyuJIT for your entire machine, set the registry key: - - HKLM\SOFTWARE\Microsoft\.NETFramework\AltJit - Default (string) = "*" - -Both registration methods cause the 64-bit CLR to use the latest RyuJIT instead of the built-in JIT, either JIT64 in the case of .NET Framework 4.5.1 and 4.5.2 or an earlier version of RyuJIT in the case of the .NET Framework 4.6. You can remove these settings at any time and you'll return to using the built-in JIT. - -## Known Gotchas - -1. **No NGen Support**. RyuJIT doesn't change NGen on your system. we wanted to keep the CTP install clean -2. **No Edit & Continue**. If you enable RyuJIT while writing code, you'll find that Edit & Continue doesn't work on 64-bit. One work around is disable RyuJIT while debugging. - -## Contact a Human - -If you have questions or problems contact us at . \ No newline at end of file diff --git a/docs/testing-with-ryujit.md b/docs/testing-with-ryujit.md deleted file mode 100644 index f1ef6a808..000000000 --- a/docs/testing-with-ryujit.md +++ /dev/null @@ -1,236 +0,0 @@ -.NET Framework 4.6 - Troubleshooting RyuJIT -========================================== - -The [.NET Framework 4.6](http://blogs.msdn.com/b/dotnet/archive/2015/07/20/announcing-net-framework-4-6.aspx#net-framework-46) includes a new Just-In-Time (JIT) compiler for 64-bit processes, called RyuJIT. It is enabled by default. Note that the 32-bit JIT in .NET Framework 4.6 is not significantly changed from previous releases. This document does not describe troubleshooting problems with the 32-bit JIT. - -This document provides instructions to disable RyuJIT or one of its optimizations. This is useful if you experience unexpected product behavior after installing .NET Framework 4.6 and want to determine if RyuJIT is the cause of that behavioral change. - -If you find a problem that appears to be a bug with the .NET JIT compiler, we want to know about it! Please report the bug here: https://connect.microsoft.com/VisualStudio. - -**Important** Follow the steps in this document carefully. Serious problems might -occur if you modify the registry incorrectly. Before you modify it, -[back up the registry](http://support.microsoft.com/kb/322756) for restoration -in case problems occur. - -**Note** The registry methods below use either `HKEY_LOCAL_MACHINE` or `HKEY_CURRENT_USER`. Using `HKEY_LOCAL_MACHINE` makes the setting applicable to the entire machine and all users. Using `HKEY_CURRENT_USER` makes the setting applicable to just the current user. If using the registry methods, the latter is generally preferable. - -In general, you should choose the least impactful option. Choose a per-application setting if possible, and only move to a per-user or per-machine setting if necessary. Note that per-application settings are not available for ASP.NET applications. - -Disable RyuJIT -============== - -**Note** For all these methods, all dynamic compilation is performed by the older -"legacy" JIT (sometimes known as JIT64). All NGEN compilation continues to use the new JIT, and all -existing NGEN images that have been compiled by the new JIT continue to be used. - -* **Method 1: per-application config file**. Add the following text to the `.exe.config` file. Create - the indicated sections if they do not already exist. - - **Note** In this file name, `` represents the actual name of the - application. So, for example, for `MyApp.exe`, you will have `MyApp.exe.config`. - - - - - - - - Note that Method 1 does not apply to ASP.NET websites; you cannot use this method in web.config files. - - This method is preferable as it is scoped to just one application. - -* **Method 2: environment variable**. Set the following environment variable: - - COMPLUS_useLegacyJit=1 - - This method affects any environment that inherits this environment variable. This might be just a single - console session, or it might affect the entire machine, if you set the environment variable globally. - -* **Method 3: registry**. Using Registry Editor (regedit.exe), find either of the following subkeys: - - HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework - HKEY_CURRENT_USER\SOFTWARE\Microsoft\.NETFramework - - Then, add the following: - - Value name: useLegacyJit - Type: DWORD (32-bit) Value (also called REG_WORD) - Value: 1 - - You can use the Windows REG.EXE tool to add this value from a command-line or scripting environment. For example: - - reg add HKLM\SOFTWARE\Microsoft\.NETFramework /v useLegacyJit /t REG_DWORD /d 1 - - In this case, `HKLM` is used instead of `HKEY_LOCAL_MACHINE`. Use `reg add /?` to see help on this syntax. - -Disable loading NGEN Images -=========================== - -If you encounter a bug when you use the new JIT, and if the bug manifests itself in a function in an NGEN native image (see [here](https://msdn.microsoft.com/en-us/library/6t9t5wcf(v=vs.110).aspx) for details), use any of the following methods to force certain named assemblies to be recompiled by the JIT and not use the existing native images. You will generally pair one of these methods with the same numbered method above to get an NGEN image to fall back to JIT compilation, and, in addition, do that JIT compilation with the legacy JIT. - -In the examples below, we wish to prevent using the NGEN images of three assemblies, named `assembly_one.dll`, `assembly_two.dll`, and `assembly_three.dll`. We specify the assemblies using simple assembly names (no public key token, no architecture, and so on). The assembly names are specified without using the `.dll` file name extension. - -* **Method 1: : per-application config file**. Add the following text to the `.exe.config` file. Create - the indicated sections if they do not already exist. - - **Note** In this file name, `` represents the actual name of the application. - - - - - - - - - - - -* **Method 2: environment variable**. Set the following environment variable: - - COMPLUS_DisableNativeImageLoadList=assembly_one;assembly_two;assembly_three - - **Note** This is a semicolon-delimited list of simple assembly names. - -* **Method 3: registry**. Using Registry Editor (regedit.exe), find either of the following subkeys: - - HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework - HKEY_CURRENT_USER\SOFTWARE\Microsoft\.NETFramework - - Then, add the following value: - - Value name: DisableNativeImageLoadList - Type: String Value (also known as REG_SZ) - Value: assembly_one;assembly_two;assembly_three - - **Note** This is a semicolon-delimited list of simple assembly names. - -Disabling the use of all NGEN images -==================================== - -To prevent any NGEN native image from being used, and force all code to be compiled with the JIT compiler, you can use the ZapDisable configuration variable, as follows. You might choose to do this as an experiment, to see if any NGEN native image contains generated code that is inducing a bug in your application. Generally, if an NGEN native image does have a problem, and the identity of that native image can be determined, using one of the `DisableNativeImageLoadList` mechanisms described above is preferable. - -**Note** This setting applies to both the 32-bit and 64-bit JIT. Thus, setting this globally will affect all 32-bit .NET applications as well. This is particularly true for **Method 2: environment variable**. - -**Note 2** NGEN provides significant performance improvements to .NET applications. Disabling the use of NGEN may result in significantly slower application startup times. - -* **Method 1: per-application config file**. Add the following text to the `.exe.config` file. Create - the indicated sections if they do not already exist. - - **Note** In this file name, `` represents the actual name of the - application. So, for example, for `MyApp.exe`, you will have `MyApp.exe.config`. - - - - - - - - Note that Method 1 does not apply to ASP.NET websites; you cannot use this method in web.config files. - - This method is preferable as it is scoped to just one application. - -* **Method 2: environment variable**. Set the following environment variable: - - COMPLUS_ZapDisable=1 - - This method affects any environment that inherits this environment variable. This might be just a single - console session, or it might affect the entire machine, if you set the environment variable globally. - -* **Method 3: registry**. Using Registry Editor (regedit.exe), find either of the following subkeys: - - HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework - HKEY_CURRENT_USER\SOFTWARE\Microsoft\.NETFramework - - Then, add the following: - - Value name: ZapDisable - Type: DWORD (32-bit) Value (also called REG_WORD) - Value: 1 - - **Note** Windows has both 32-bit and 64-bit registry sections. The addresses shown above use the 64-bit registry path, so are appropriate for troubleshooting RyuJIT and not affecting 32-bit .NET applications. On a 64-bit machine, the 32-bit registry path for the `HKEY_LOCAL_MACHINE` case is `HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\.NETFramework`. - -Disable Tail Call Optimization -============================== - -"Tail call" is a code pattern that the JIT compiler can sometimes optimize to improve code performance. You can see some discussion about JIT and tail call [here](http://blogs.msdn.com/b/clrcodegeneration/archive/2010/05/07/jit-etw-tail-call-event-fail-reasons.aspx). You can disable tail call optimization in RyuJIT with the following instructions. - -* Using Registry Editor (regedit.exe), find either of the following subkeys: - - HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework - HKEY_CURRENT_USER\SOFTWARE\Microsoft\.NETFramework - - Then, add the following value: - - Value name: TailCallOpt - Type: String Value (also known as REG_SZ) - Value: "0" (Double quotes are not required while entering the string value in Registry Editor) - -**Note** This will disable tail call optimization of a function when the JIT is invoked to compile it. Note that if your application is NGEN compiled, the JIT is not invoked after the NGEN compilation has completed. To affect the code compiled for NGEN, you must first remove your application from the NGEN native image cache using `ngen uninstall MyApp`. Then, set the registry key shown here. Finally, optionally, you can re-NGEN your app using `ngen install MyApp.exe`. - -Disabling all optimization of a function -======================================== - -If you determine that the JIT is incorrectly optimizing a particular function, you can selectively disable JIT optimization for that function by annotating that function with `MethodImplOptions.NoOptimization`. For example, in C#: - - using System.Runtime.CompilerServices; - ... - [MethodImplAttribute(MethodImplOptions.NoOptimization)] - static int add(int a, int b) - { - return a + b; - } - -In this case, the annotated `add` function will not be optimized. You can see more detail about `MethodImplAttribute` -[here](https://msdn.microsoft.com/en-us/library/system.runtime.compilerservices.methodimplattribute(v=vs.110).aspx). - -This is only effective in solving a code generation problem if the incorrect code being generated by the JIT is due to optimization, as opposed to being due to unoptimized code generation. - -**Note** This method applies to all .NET JIT compilers. - -Disabling optimization of all functions -======================================= - -While troubleshooting, it might be useful to determine if *any* JIT optimization is causing problems. Instead of using the above `MethodImplAttribute` method above, you can set a single environment variable to disable all JIT optimization. Set this variable: - - COMPLUS_JitMinOpts=1 - -and run your application. - -Note that when you run your application under the Visual Studio debugger, it might disable JIT optimization to improve the debugging experience. In Visual Studio 2013 and before, JIT optimization is disabled by default. In Visual Studio 2015, it is not disabled by default. The option in Visual Studio is called "Suppress JIT optimization on module load". You can read about that [here](https://msdn.microsoft.com/en-us/library/ms241594.aspx). Note that the MSDN documentation is incorrect about the Visual Studio 2015 default. - -**Note** This method applies to all .NET JIT compilers. - -.NET Framework 4.6 and RyuJIT CTP releases -========================================== - -Before .NET Framework 4.6 was released with RyuJIT as the default .NET JIT for the x64 architecture, RyuJIT was shipped several times as a CTP ("Community Technology Preview") release. For example, see the RyuJIT CTP5 release announcement [here](http://blogs.msdn.com/b/clrcodegeneration/archive/2014/10/31/ryujit-ctp5-getting-closer-to-shipping-and-with-better-simd-support.aspx). - -If you previously installed a RyuJIT CTP, you must remove any manually created configuration related to using the RyuJIT CTP, before upgrading to .NET Framework 4.6. If you don't, all managed applications will immediately crash on startup. - -To fix this issue, delete the following registry value (if it exists): - - key: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework - value name: AltJit - -You can do this with Registry Editor (regedit.exe) or the command-line REG.EXE tool, as follows: - - reg delete HKLM\SOFTWARE\Microsoft\.NETFramework /v AltJit - -Secondly, ensure that the following environment variable is not set: - - COMPLUS_AltJit - -## More information - -In order to enable the JIT shipped with a RyuJIT CTP, you had to manually create the registry value or set the environment variable that is indicated above. If this registry value or environment variable exists after you install .NET Framework 4.6, the system looks for a CTP version of the JIT compiler instead of the newly installed version. Because the RyuJIT CTP releases are incompatible with .NET Framework 4.6, this causes managed applications to crash. - -Note that the .NET Framework 4.6 installer does not change or delete these manually created configuration settings. Similarly, uninstalling the RyuJIT CTP also does not change these configuration settings. - -Additional Notes -================ - -If you are examining the registry, you might find the following registry value: - - HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\UseRyuJIT - -We urge you not to change this value. Instead, use the RyuJIT fallback mechanisms detailed above in this document. From 68c571217f6b1ac283dec0079bc5cab4d6fe47ea Mon Sep 17 00:00:00 2001 From: MichaC Date: Wed, 5 Apr 2017 18:33:29 +0200 Subject: [PATCH 335/872] Adding DnsClient.NET (#370) Adding DnsClient.NET library with repository and homepage link --- dotnet-developer-projects.md | 1 + 1 file changed, 1 insertion(+) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 866e62698..27a274934 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -115,6 +115,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [Cricket](https://github.com/fsprojects/Cricket) - Actor library * [DateTimeExtensions](https://github.com/kappy/DateTimeExtensions) - Common Date Time operations on the form of extensions to System.DateTime, including holidays and working days calculations on several culture locales. * [DiffSharp](https://github.com/gbaydin/DiffSharp) - Automatic Differentiation Library + * [DnsClient](https://github.com/MichaCo/DnsClient.NET) - A high performant DNS query/lookup library - [Home](http://dnsclient.michaco.net) * [DotNetOpenAuth](https://github.com/DotNetOpenAuth) - Library that adds support for your site visitors to login with their OpenIDs by just dropping an ASP.NET control onto your page. * [DropboxRestAPI](https://github.com/saguiitay/DropboxRestAPI) - DropBox .Net Client Library * [DynamicData](https://github.com/RolandPheasant/DynamicData) - Brings the power of Rx to collections From 8b412d77b31cc64e00ea50bcdf6147be5e7a96a0 Mon Sep 17 00:00:00 2001 From: Rich Lander Date: Wed, 5 Apr 2017 13:52:19 -0700 Subject: [PATCH 336/872] Add breaking change docs (#371) * Add breaking change docs * Update README --- Documentation/breaking-changes/! Template.md | 64 +++++++ Documentation/breaking-changes/README.md | 173 ++++++++++++++++++ ...-be-deserialized-by-_net-4_5_1-or-4_5_2.md | 45 +++++ ...vent-can-cause-a-nullreferenceexception.md | 29 +++ ...ically-reconnect-broken-sql-connections.md | 45 +++++ ...decryptor-provides-a-reusable-transform.md | 49 +++++ ...zed-by-userandomizedstringhashalgorithm.md | 31 ++++ ...ions-of-imessagefilter_prefiltermessage.md | 40 ++++ ...ng-certificate-may-fail-on-windows-2003.md | 42 +++++ ...-strings-passed-in-via-route-parameters.md | 33 ++++ ...letoassembly-breaks-between-4_0-and-4_5.md | 32 ++++ ...fail-to-find-type-from-loadfrom-context.md | 47 +++++ ...em')-to-a-static-property-does-not-work.md | 37 ++++ ...n_trytakefromany-does-not-throw-anymore.md | 32 ++++ ...-entitydeploysplit-or-entityclean-tasks.md | 31 ++++ ...o-longer-throws-ambiguousmatchexception.md | 40 ++++ ...ontext-with-a-null-argument-has-changed.md | 30 +++ ...om-a-celleditending-handler-drops-focus.md | 29 +++ ...uplicate-items-to-appear-in-the-element.md | 31 ++++ .../calls-to-claimsidentity-constructors.md | 42 +++++ ...waitall-methods-with-time-out-arguments.md | 31 ++++ ...-in-data-definition-language-(ddl)-apis.md | 33 ++++ .../changes-in-path-normalization.md | 64 +++++++ ...lock-control-affects-any-child-controls.md | 34 ++++ ...e-supports-sha-256-on-4_0-targeted-apps.md | 33 ++++ .../coerceisselectionboxhighlighted.md | 35 ++++ ...orwarding-when-multi-targeting-mscorlib.md | 27 +++ ...an-erroneous-null-via-its-out-parameter.md | 30 +++ ...riod-for-azure-sql-databases-is-removed.md | 42 +++++ ...times-returns-slightly-different-string.md | 28 +++ ...s-are-not-being-enumerated-by-profilers.md | 34 ++++ ...rentwindowhandle-now-expects-hwnd-value.md | 55 ++++++ .../currentculture-flows-across-tasks.md | 41 +++++ ...served-across-wpf-dispatcher-operations.md | 47 +++++ ...view-throws-argumentoutofrangeexception.md | 37 ++++ ...ect_getdata-now-retrieves-data-as-utf-8.md | 38 ++++ ...er_scale-are-now-public-virtual-members.md | 29 +++ ...n-of-objects-across-appdomains-can-fail.md | 27 +++ ...providerservices_createdatabase-methods.md | 28 +++ ...ueryviews-with-specific-characteristics.md | 31 ++++ .../ef-version-must-match-netfx-version.md | 27 +++ .../encoderparameter-ctor-is-obsolete.md | 27 +++ ...wly-in-apps-launched-from-visual-studio.md | 27 +++ ...le_empty-always-returns-cached-instance.md | 29 +++ ...or-maxreceivedmessagesize-are-different.md | 31 ++++ ...s-from-providers-with-explicit-keywords.md | 32 ++++ ...r-truncates-strings-with-embedded-nulls.md | 30 +++ ...e-parameters-that-it-received-(plus-id).md | 27 +++ ...erialization-in-case-of-an-unknown-type.md | 50 +++++ ...no-longer-propagate-on-finalizer-thread.md | 36 ++++ ...document-may-show-an-extra-line-of-text.md | 35 ++++ ...able-is-now-scoped-within-the-iteration.md | 28 +++ ...-different-values-beginning-in-_net-4_5.md | 35 ++++ ...when-leaving-the-final-page-of-the-view.md | 36 ++++ ...horizontal-scrolling-and-virtualization.md | 62 +++++++ ...er-does-not-render-br-element-correctly.md | 28 +++ ...contentencoding-property-prohibits-utf7.md | 27 +++ ...avascriptstringencode-escapes-ampersand.md | 28 +++ ...rect-for-the-resulting-task-to-complete.md | 48 +++++ ...ged-event-behaviour-changed-in-_net-4_5.md | 30 +++ .../il-ret-not-allowed-in-a-try-region.md | 34 ++++ ...plementation-of-memberdescriptor_equals.md | 51 ++++++ ...trols-when-using-customer-datatemplates.md | 35 ++++ ...-because-it-is-now-a-browser-capability.md | 31 ++++ ...st-with-items-of-different-pixel-height.md | 50 +++++ ...ot-remove-duplicates-from-selecteditems.md | 40 ++++ ...join-throws-argumentoutofrangeexception.md | 37 ++++ ...hrow-exception-when-modifying-list-item.md | 27 +++ .../list_sort-algorithm-changed.md | 30 +++ ...ng-issue-with-observablecollection_move.md | 32 ++++ ...nged-to-match-sql-server-specifications.md | 27 +++ .../breaking-changes/long-path-support.md | 51 ++++++ ...hinekey_decode-methods-are-now-obsolete.md | 28 +++ ...-_net-framework-1_1-and-2_0-are-blocked.md | 27 +++ ...ostructure-overloads-break-dynamic-code.md | 39 ++++ ...o-longer-be-used-to-create-a-serializer.md | 28 +++ ...centagetoactiveservice-is-now-respected.md | 27 +++ ...amework-moniker-results-in-4_0-behavior.md | 25 +++ ...acing-changed-when-using-antixssencoder.md | 32 ++++ ...tablelayoutpanel-cell-may-be-rearranged.md | 34 ++++ ...erialized-with-a-different-_net-version.md | 34 ++++ ...oads-could-result-in-different-behavior.md | 33 ++++ ...enum-values-in-wpf's-pagerangeselection.md | 32 ++++ ...able-to-set-enableviewstatemac-to-false.md | 27 +++ ...-leak-memory-if-not-explicitly-disposed.md | 31 ++++ ...isible-in-debugger-until-one-step-later.md | 30 +++ ...executestorequery-now-support-enum-type.md | 30 +++ ...sedexception-thrown-by-wpf-spellchecker.md | 33 ++++ ...-deprecatedattribute-in-winmd-scenarios.md | 29 +++ ...nager-and-system_net_security_sslstream.md | 33 ++++ ...eneration-to-simpler-4_0-sql-generation.md | 34 ++++ ...tasource-control-to-invoke-data-binding.md | 36 ++++ .../path-colon-checks-are-stricter.md | 36 ++++ ...ndar-now-uses-the-hijri-solar-algorithm.md | 29 +++ ...edly-if-its-handler-shows-a-message-box.md | 42 +++++ ...an-lead-to-fatal-execution-engine-error.md | 30 +++ ...ged-code-to-out-of-process-dcom-clients.md | 35 ++++ ...ove-ssl3-from-the-wcf-transportdefaults.md | 33 ++++ ...ependencies-with-the-wrong-architecture.md | 30 +++ ...-set-to-transparent-in-localized-builds.md | 33 ++++ ...w-header-changes-the-datagrid-selection.md | 31 ++++ ...-loads-rsa-keys-of-non-standard-keysize.md | 38 ++++ ...urns-false-for-any-verification-failure.md | 35 ++++ ...virtualizingstackpanel-can-cause-a-hang.md | 30 +++ ...ow-compatible-with-ecmascript-v6-and-v8.md | 35 ++++ ...-to-use-the-same-_net-framework-version.md | 33 ++++ ...-and-similar-ordered-collection-objects.md | 31 ++++ ...-(handled)-entrypointnotfoundexceptions.md | 35 ++++ ...orkflow-drag-and-drop-apis-are-obsolete.md | 30 +++ ...ollation-rather-than-database-collation.md | 27 +++ ...destination-column-encoding-for-strings.md | 28 +++ ...1997-or-databases-using-the-via-adapter.md | 32 ++++ ...with-non-ifs-winsock-bsp-or-lsp-present.md | 33 ++++ .../sslstream-support-for-tls-alerts.md | 71 +++++++ .../system_activities-is-now-aptca.md | 27 +++ ..._collaboration-unavailable-on-windows-8.md | 27 +++ ...bject-no-longer-adds-a-default-endpoint.md | 43 +++++ ...posedexception-after-object-is-disposed.md | 27 +++ ...stem_uri-escaping-now-supports-rfc-3986.md | 35 ++++ .../system_uri-parsing-adheres-to-rfc-3987.md | 42 +++++ ...uris-with-a-colon-char-in-first-segment.md | 28 +++ ...n-no-longer-defaults-to-null-if-not-set.md | 27 +++ ...when-registering-itself-in-the-registry.md | 27 +++ ...od-in-odata-urls-is-disabled-by-default.md | 27 +++ ...hrottle-concurrent-requests-per-session.md | 31 ++++ ...th-a-non-public-setter-is-not-supported.md | 34 ++++ ...-for-generic-variables-with-constraints.md | 35 ++++ ...ption-from-invokemethod-activity-in-wf4.md | 37 ++++ ...ta-now-support-standard-v8_0-categories.md | 35 ++++ ...e-qualification-for-system_windows-apis.md | 27 +++ ...portwithmessagecredential-security-mode.md | 40 ++++ ...ecurity-unable-to-use-tls1_1-and-tls1_2.md | 28 +++ ...-supports-certificates-stored-using-cng.md | 50 +++++ ...-longer-decodes-invalid-input-sequences.md | 34 ++++ ...ity_htmldecode-round-trip-bmp-correctly.md | 33 ++++ ...pressions_literal-datetimes-differently.md | 32 ++++ ...property-is-now-true-for-system_drawing.md | 27 +++ ...-call-flushasync-automatically-on-close.md | 35 ++++ .../workflow-3_0-types-are-obsolete.md | 27 +++ ...flow-checksums-changed-from-md5-to-sha1.md | 46 +++++ ...of-nullreferenceexception-in-some-cases.md | 34 ++++ ...d-disallows-null-values-in-some-columns.md | 30 +++ ...ner_load-doesn't-remove-symbol-property.md | 32 ++++ ...es-toggle-button-doesn't-show-any-state.md | 38 ++++ ...emplate-elements-are-now-visible-to-uia.md | 28 +++ ...ew-copy-instead-of-the-current-instance.md | 27 +++ ...rid-allocation-of-space-to-star-columns.md | 84 +++++++++ ...-layout-rounding-of-margins-has-changed.md | 35 ++++ ...e-from-imagesourceconverter_convertfrom.md | 40 ++++ .../wpf-pointer-based-touch-stack.md | 54 ++++++ .../wpf-printing-stack-update.md | 32 ++++ ..._exe-process-which-can-freeze-the-mouse.md | 30 +++ ...-spell-checking-fail-in-unexpected-ways.md | 45 +++++ ...anguages-not-in-the-input-language-list.md | 29 +++ ...f-textbox-defaults-to-undo-limit-of-100.md | 27 +++ ...ent-color-when-the-text-box-is-inactive.md | 27 +++ ...ext-can-be-out-of-sync-with-databinding.md | 27 +++ ...viewitem-must-be-used-within-a-treeview.md | 35 ++++ ...when-extending-outside-a-single-monitor.md | 27 +++ ...when-_net-cannot-handle-the-certificate.md | 27 +++ ...set_findclaims-considers-all-claimtypes.md | 29 +++ ...t-are-not-allowed-on-digital-signatures.md | 47 +++++ .../xml-schema-validation-is-stricter.md | 27 +++ ...eption-now-sets-line-positions-properly.md | 27 +++ ...essible-member-with-an-inaccessible-one.md | 43 +++++ ...er-serializes-fields-differently-in-4_5.md | 45 +++++ ...nsion-is-limited-to-10000000-characters.md | 41 +++++ ...riter-throws-on-invalid-surrogate-pairs.md | 57 ++++++ ...ound-keys-are-used-and-one-key-is-empty.md | 25 +++ .../xslt-forward-compat-now-works.md | 32 ++++ ...t-style-sheet-exception-message-changed.md | 34 ++++ 171 files changed, 6099 insertions(+) create mode 100644 Documentation/breaking-changes/! Template.md create mode 100644 Documentation/breaking-changes/README.md create mode 100644 Documentation/breaking-changes/a-concurrentdictionary-serialized-in-_net-4_5-with-netdatacontractserializer-cannot-be-deserialized-by-_net-4_5_1-or-4_5_2.md create mode 100644 Documentation/breaking-changes/accessing-a-wpf-datagrid's-selected-items-from-a-handler-of-the-datagrid's-unloadingrow-event-can-cause-a-nullreferenceexception.md create mode 100644 Documentation/breaking-changes/ado_net-now-attempts-to-automatically-reconnect-broken-sql-connections.md create mode 100644 Documentation/breaking-changes/aescryptoserviceprovider-decryptor-provides-a-reusable-transform.md create mode 100644 Documentation/breaking-changes/appdomainsetup_dynamicbase-is-no-longer-randomized-by-userandomizedstringhashalgorithm.md create mode 100644 Documentation/breaking-changes/application_filtermessage-no-longer-throws-for-re-entrant-implementations-of-imessagefilter_prefiltermessage.md create mode 100644 Documentation/breaking-changes/apps-published-with-clickonce-that-use-a-sha-256-code-signing-certificate-may-fail-on-windows-2003.md create mode 100644 Documentation/breaking-changes/asp_net-mvc-now-escapes-spaces-in-strings-passed-in-via-route-parameters.md create mode 100644 Documentation/breaking-changes/assemblies-compiled-with-regex_compiletoassembly-breaks-between-4_0-and-4_5.md create mode 100644 Documentation/breaking-changes/binaryformatter-can-fail-to-find-type-from-loadfrom-context.md create mode 100644 Documentation/breaking-changes/binding-a-wpf-selector-property-(such-as-'selecteditem')-to-a-static-property-does-not-work.md create mode 100644 Documentation/breaking-changes/blockingcollection_trytakefromany-does-not-throw-anymore.md create mode 100644 Documentation/breaking-changes/building-an-entity-framework-edmx-with-visual-studio-2013-can-fail-with-error-msb4062-if-using-the-entitydeploysplit-or-entityclean-tasks.md create mode 100644 Documentation/breaking-changes/calling-attribute_getcustomattributes-on-an-indexer-property-no-longer-throws-ambiguousmatchexception.md create mode 100644 Documentation/breaking-changes/calling-createdefaultauthorizationcontext-with-a-null-argument-has-changed.md create mode 100644 Documentation/breaking-changes/calling-datagrid_commitedit-from-a-celleditending-handler-drops-focus.md create mode 100644 Documentation/breaking-changes/calling-items_refresh-on-a-wpf-listbox-or-listview-or-datagrid-with-items-selected-can-cause-duplicate-items-to-appear-in-the-element.md create mode 100644 Documentation/breaking-changes/calls-to-claimsidentity-constructors.md create mode 100644 Documentation/breaking-changes/change-in-behavior-for-task_waitall-methods-with-time-out-arguments.md create mode 100644 Documentation/breaking-changes/change-in-behavior-in-data-definition-language-(ddl)-apis.md create mode 100644 Documentation/breaking-changes/changes-in-path-normalization.md create mode 100644 Documentation/breaking-changes/changing-the-isenabled-property-of-the-parent-of-a-textblock-control-affects-any-child-controls.md create mode 100644 Documentation/breaking-changes/clickonce-supports-sha-256-on-4_0-targeted-apps.md create mode 100644 Documentation/breaking-changes/coerceisselectionboxhighlighted.md create mode 100644 Documentation/breaking-changes/compiler-support-for-type-forwarding-when-multi-targeting-mscorlib.md create mode 100644 Documentation/breaking-changes/concurrentqueue_trypeek-can-return-an-erroneous-null-via-its-out-parameter.md create mode 100644 Documentation/breaking-changes/connection-pool-blocking-period-for-azure-sql-databases-is-removed.md create mode 100644 Documentation/breaking-changes/contentdisposition-datetimes-returns-slightly-different-string.md create mode 100644 Documentation/breaking-changes/cor_prf_gc_root_handles-are-not-being-enumerated-by-profilers.md create mode 100644 Documentation/breaking-changes/cspparameters_parentwindowhandle-now-expects-hwnd-value.md create mode 100644 Documentation/breaking-changes/currentculture-flows-across-tasks.md create mode 100644 Documentation/breaking-changes/currentculture-not-preserved-across-wpf-dispatcher-operations.md create mode 100644 Documentation/breaking-changes/datagridcellspanel_bringintoview-throws-argumentoutofrangeexception.md create mode 100644 Documentation/breaking-changes/dataobject_getdata-now-retrieves-data-as-utf-8.md create mode 100644 Documentation/breaking-changes/dbparameter_precision-and-dbparameter_scale-are-now-public-virtual-members.md create mode 100644 Documentation/breaking-changes/deserialization-of-objects-across-appdomains-can-fail.md create mode 100644 Documentation/breaking-changes/different-exception-handling-for-objectcontext_createdatabase-and-dbproviderservices_createdatabase-methods.md create mode 100644 Documentation/breaking-changes/ef-no-longer-throws-for-queryviews-with-specific-characteristics.md create mode 100644 Documentation/breaking-changes/ef-version-must-match-netfx-version.md create mode 100644 Documentation/breaking-changes/encoderparameter-ctor-is-obsolete.md create mode 100644 Documentation/breaking-changes/entityframework-6_0-loads-very-slowly-in-apps-launched-from-visual-studio.md create mode 100644 Documentation/breaking-changes/enumerable_empty-always-returns-cached-instance.md create mode 100644 Documentation/breaking-changes/error-codes-for-maxrequestlength-or-maxreceivedmessagesize-are-different.md create mode 100644 Documentation/breaking-changes/etw-eventlisteners-do-not-capture-events-from-providers-with-explicit-keywords.md create mode 100644 Documentation/breaking-changes/eventlistener-truncates-strings-with-embedded-nulls.md create mode 100644 Documentation/breaking-changes/eventsource_writeevent-impls-must-pass-writeevent-the-same-parameters-that-it-received-(plus-id).md create mode 100644 Documentation/breaking-changes/exception-message-has-changed-for-failed-datacontract-serialization-in-case-of-an-unknown-type.md create mode 100644 Documentation/breaking-changes/exceptions-during-unobserved-processing-in-system_threading_tasks_task-no-longer-propagate-on-finalizer-thread.md create mode 100644 Documentation/breaking-changes/flowdocument-may-show-an-extra-line-of-text.md create mode 100644 Documentation/breaking-changes/foreach-iterator-variable-is-now-scoped-within-the-iteration.md create mode 100644 Documentation/breaking-changes/glyphrun_computeinkboundingbox()-and-formattedtext_extent-return-different-values-beginning-in-_net-4_5.md create mode 100644 Documentation/breaking-changes/gridviews-with-allowcustompaging-set-to-true-may-fire-the-pageindexchanging-event-when-leaving-the-final-page-of-the-view.md create mode 100644 Documentation/breaking-changes/horizontal-scrolling-and-virtualization.md create mode 100644 Documentation/breaking-changes/htmltextwriter-does-not-render-br-element-correctly.md create mode 100644 Documentation/breaking-changes/httprequest_contentencoding-property-prohibits-utf7.md create mode 100644 Documentation/breaking-changes/httputility_javascriptstringencode-escapes-ampersand.md create mode 100644 Documentation/breaking-changes/iasyncresult_completedsynchronously-property-must-be-correct-for-the-resulting-task-to-complete.md create mode 100644 Documentation/breaking-changes/icommand_canexecutechanged-event-behaviour-changed-in-_net-4_5.md create mode 100644 Documentation/breaking-changes/il-ret-not-allowed-in-a-try-region.md create mode 100644 Documentation/breaking-changes/incorrect-implementation-of-memberdescriptor_equals.md create mode 100644 Documentation/breaking-changes/intermittently-unable-to-scroll-to-bottom-item-in-itemscontrols-when-using-customer-datatemplates.md create mode 100644 Documentation/breaking-changes/ipad-should-not-be-used-in-custom-capabilities-file-because-it-is-now-a-browser-capability.md create mode 100644 Documentation/breaking-changes/item-scrolling-a-flat-list-with-items-of-different-pixel-height.md create mode 100644 Documentation/breaking-changes/items_clear-does-not-remove-duplicates-from-selecteditems.md create mode 100644 Documentation/breaking-changes/linq-to-ef-join-throws-argumentoutofrangeexception.md create mode 100644 Documentation/breaking-changes/list_foreach-can-throw-exception-when-modifying-list-item.md create mode 100644 Documentation/breaking-changes/list_sort-algorithm-changed.md create mode 100644 Documentation/breaking-changes/listboxitem-isselected-binding-issue-with-observablecollection_move.md create mode 100644 Documentation/breaking-changes/log-file-name-created-by-the-objectcontext_createdatabase-method-has-changed-to-match-sql-server-specifications.md create mode 100644 Documentation/breaking-changes/long-path-support.md create mode 100644 Documentation/breaking-changes/machinekey_encode-and-machinekey_decode-methods-are-now-obsolete.md create mode 100644 Documentation/breaking-changes/managed-browser-hosting-controls-from-the-_net-framework-1_1-and-2_0-are-blocked.md create mode 100644 Documentation/breaking-changes/marshal_sizeof-and-marshal_ptrtostructure-overloads-break-dynamic-code.md create mode 100644 Documentation/breaking-changes/mef-catalogs-implement-ienumerable-and-therefore-can-no-longer-be-used-to-create-a-serializer.md create mode 100644 Documentation/breaking-changes/minfreememorypercentagetoactiveservice-is-now-respected.md create mode 100644 Documentation/breaking-changes/missing-target-framework-moniker-results-in-4_0-behavior.md create mode 100644 Documentation/breaking-changes/multi-line-asp_net-textbox-spacing-changed-when-using-antixssencoder.md create mode 100644 Documentation/breaking-changes/multiple-items-in-a-single-tablelayoutpanel-cell-may-be-rearranged.md create mode 100644 Documentation/breaking-changes/netdatacontractserializer-fails-to-deserialize-a-concurrentdictionary-serialized-with-a-different-_net-version.md create mode 100644 Documentation/breaking-changes/new-(ambiguous)-dispatcher_invoke-overloads-could-result-in-different-behavior.md create mode 100644 Documentation/breaking-changes/new-enum-values-in-wpf's-pagerangeselection.md create mode 100644 Documentation/breaking-changes/no-longer-able-to-set-enableviewstatemac-to-false.md create mode 100644 Documentation/breaking-changes/non-pooled-sql-connections-will-leak-memory-if-not-explicitly-disposed.md create mode 100644 Documentation/breaking-changes/null-coalescer-values-are-not-visible-in-debugger-until-one-step-later.md create mode 100644 Documentation/breaking-changes/objectcontext_translate-and-objectcontext_executestorequery-now-support-enum-type.md create mode 100644 Documentation/breaking-changes/objectdisposedexception-thrown-by-wpf-spellchecker.md create mode 100644 Documentation/breaking-changes/obsoleteattribute-exports-as-both-obsoleteattribute-and-deprecatedattribute-in-winmd-scenarios.md create mode 100644 Documentation/breaking-changes/only-tls-1_0-1_1-and-1_2-protocols-supported-in-system_net_servicepointmanager-and-system_net_security_sslstream.md create mode 100644 Documentation/breaking-changes/opt-in-break-to-revert-from-different-4_5-sql-generation-to-simpler-4_0-sql-generation.md create mode 100644 Documentation/breaking-changes/page_loadcomplete-event-no-longer-causes-system_web_ui_webcontrols_entitydatasource-control-to-invoke-data-binding.md create mode 100644 Documentation/breaking-changes/path-colon-checks-are-stricter.md create mode 100644 Documentation/breaking-changes/persian-calendar-now-uses-the-hijri-solar-algorithm.md create mode 100644 Documentation/breaking-changes/previewlostkeyboardfocus-is-called-repeatedly-if-its-handler-shows-a-message-box.md create mode 100644 Documentation/breaking-changes/profiling-asp_net-mvc4-apps-can-lead-to-fatal-execution-engine-error.md create mode 100644 Documentation/breaking-changes/reflection-objects-can-no-longer-be-passed-from-managed-code-to-out-of-process-dcom-clients.md create mode 100644 Documentation/breaking-changes/remove-ssl3-from-the-wcf-transportdefaults.md create mode 100644 Documentation/breaking-changes/resolveassemblyreference-task-now-warns-on-dependencies-with-the-wrong-architecture.md create mode 100644 Documentation/breaking-changes/ribbongroup-background-is-set-to-transparent-in-localized-builds.md create mode 100644 Documentation/breaking-changes/right-clicking-on-a-wpf-datagrid-row-header-changes-the-datagrid-selection.md create mode 100644 Documentation/breaking-changes/rsacng-now-correctly-loads-rsa-keys-of-non-standard-keysize.md create mode 100644 Documentation/breaking-changes/rsacng_verifyhash-now-returns-false-for-any-verification-failure.md create mode 100644 Documentation/breaking-changes/scrolling-a-wpf-treeview-or-grouped-listbox-in-a-virtualizingstackpanel-can-cause-a-hang.md create mode 100644 Documentation/breaking-changes/serialization-of-control-characters-with-datacontractjsonserializer-is-now-compatible-with-ecmascript-v6-and-v8.md create mode 100644 Documentation/breaking-changes/sharing-session-state-with-asp_net-stateserver-requires-all-servers-in-the-web-farm-to-use-the-same-_net-framework-version.md create mode 100644 Documentation/breaking-changes/soapformatter-cannot-deserialize-hashtable-and-similar-ordered-collection-objects.md create mode 100644 Documentation/breaking-changes/some-_net-apis-cause-first-chance-(handled)-entrypointnotfoundexceptions.md create mode 100644 Documentation/breaking-changes/some-workflow-drag-and-drop-apis-are-obsolete.md create mode 100644 Documentation/breaking-changes/sql_variant-data-uses-sql_variant-collation-rather-than-database-collation.md create mode 100644 Documentation/breaking-changes/sqlbulkcopy-uses-destination-column-encoding-for-strings.md create mode 100644 Documentation/breaking-changes/sqlconnection-can-no-longer-connect-to-sql-server-1997-or-databases-using-the-via-adapter.md create mode 100644 Documentation/breaking-changes/sqlconnection_open-fails-on-windows-7-with-non-ifs-winsock-bsp-or-lsp-present.md create mode 100644 Documentation/breaking-changes/sslstream-support-for-tls-alerts.md create mode 100644 Documentation/breaking-changes/system_activities-is-now-aptca.md create mode 100644 Documentation/breaking-changes/system_net_peertopeer_collaboration-unavailable-on-windows-8.md create mode 100644 Documentation/breaking-changes/system_servicemodel_web_webservicehost-object-no-longer-adds-a-default-endpoint.md create mode 100644 Documentation/breaking-changes/system_threading_tasks_task-no-longer-throw-objectdisposedexception-after-object-is-disposed.md create mode 100644 Documentation/breaking-changes/system_uri-escaping-now-supports-rfc-3986.md create mode 100644 Documentation/breaking-changes/system_uri-parsing-adheres-to-rfc-3987.md create mode 100644 Documentation/breaking-changes/system_uri_iswellformeduristring-method-returns-false-for-relative-uris-with-a-colon-char-in-first-segment.md create mode 100644 Documentation/breaking-changes/targetframeworkname-for-default-app-domain-no-longer-defaults-to-null-if-not-set.md create mode 100644 Documentation/breaking-changes/the-_net-framework-4_6-does-not-use-a-4_5_x_x-version-when-registering-itself-in-the-registry.md create mode 100644 Documentation/breaking-changes/the-replace-method-in-odata-urls-is-disabled-by-default.md create mode 100644 Documentation/breaking-changes/throttle-concurrent-requests-per-session.md create mode 100644 Documentation/breaking-changes/two-way-data-binding-to-a-property-with-a-non-public-setter-is-not-supported.md create mode 100644 Documentation/breaking-changes/type_isassignablefrom-returns-wrong-result-for-generic-variables-with-constraints.md create mode 100644 Documentation/breaking-changes/unexpected-invalidcastexception-from-invokemethod-activity-in-wf4.md create mode 100644 Documentation/breaking-changes/unicode-data-now-support-standard-v8_0-categories.md create mode 100644 Documentation/breaking-changes/vb_net-no-longer-supports-partial-namespace-qualification-for-system_windows-apis.md create mode 100644 Documentation/breaking-changes/wcf-binding-with-the-transportwithmessagecredential-security-mode.md create mode 100644 Documentation/breaking-changes/wcf-message-security-unable-to-use-tls1_1-and-tls1_2.md create mode 100644 Documentation/breaking-changes/wcf-transport-security-supports-certificates-stored-using-cng.md create mode 100644 Documentation/breaking-changes/webutility_htmldecode-no-longer-decodes-invalid-input-sequences.md create mode 100644 Documentation/breaking-changes/webutility_htmlencode-and-webutility_htmldecode-round-trip-bmp-correctly.md create mode 100644 Documentation/breaking-changes/wf-serializes-expressions_literal-datetimes-differently.md create mode 100644 Documentation/breaking-changes/winform's-checkforoverflowunderflow-property-is-now-true-for-system_drawing.md create mode 100644 Documentation/breaking-changes/winrt-stream-adapters-no-long-call-flushasync-automatically-on-close.md create mode 100644 Documentation/breaking-changes/workflow-3_0-types-are-obsolete.md create mode 100644 Documentation/breaking-changes/workflow-checksums-changed-from-md5-to-sha1.md create mode 100644 Documentation/breaking-changes/workflow-now-throws-original-exception-instead-of-nullreferenceexception-in-some-cases.md create mode 100644 Documentation/breaking-changes/workflow-sql-persistence-adds-primary-key-clusters-and-disallows-null-values-in-some-columns.md create mode 100644 Documentation/breaking-changes/workflowdesigner_load-doesn't-remove-symbol-property.md create mode 100644 Documentation/breaking-changes/wpf-aero2-and-aerolite-themes-toggle-button-doesn't-show-any-state.md create mode 100644 Documentation/breaking-changes/wpf-datatemplate-elements-are-now-visible-to-uia.md create mode 100644 Documentation/breaking-changes/wpf-dispatchersynchronizationcontext_createcopy-now-returns-a-new-copy-instead-of-the-current-instance.md create mode 100644 Documentation/breaking-changes/wpf-grid-allocation-of-space-to-star-columns.md create mode 100644 Documentation/breaking-changes/wpf-layout-rounding-of-margins-has-changed.md create mode 100644 Documentation/breaking-changes/wpf-nullreferenceexception-in-exception-handling-code-from-imagesourceconverter_convertfrom.md create mode 100644 Documentation/breaking-changes/wpf-pointer-based-touch-stack.md create mode 100644 Documentation/breaking-changes/wpf-printing-stack-update.md create mode 100644 Documentation/breaking-changes/wpf-spawns-a-wisptis_exe-process-which-can-freeze-the-mouse.md create mode 100644 Documentation/breaking-changes/wpf-spell-checking-fail-in-unexpected-ways.md create mode 100644 Documentation/breaking-changes/wpf-spell-checking-in-text-enabled-controls-will-not-work-in-windows-10-for-languages-not-in-the-input-language-list.md create mode 100644 Documentation/breaking-changes/wpf-textbox-defaults-to-undo-limit-of-100.md create mode 100644 Documentation/breaking-changes/wpf-textbox-selected-text-appears-a-different-color-when-the-text-box-is-inactive.md create mode 100644 Documentation/breaking-changes/wpf-textbox_text-can-be-out-of-sync-with-databinding.md create mode 100644 Documentation/breaking-changes/wpf-treeviewitem-must-be-used-within-a-treeview.md create mode 100644 Documentation/breaking-changes/wpf-windows-are-rendered-without-clipping-when-extending-outside-a-single-monitor.md create mode 100644 Documentation/breaking-changes/x509certificate2_tostring(bool)-does-not-throw-now-when-_net-cannot-handle-the-certificate.md create mode 100644 Documentation/breaking-changes/x509certificateclaimset_findclaims-considers-all-claimtypes.md create mode 100644 Documentation/breaking-changes/xml-documents-are-now-consider-invalid-if-they-contains-transforms-that-are-not-allowed-on-digital-signatures.md create mode 100644 Documentation/breaking-changes/xml-schema-validation-is-stricter.md create mode 100644 Documentation/breaking-changes/xmlschemaexception-now-sets-line-positions-properly.md create mode 100644 Documentation/breaking-changes/xmlserializer-fails-while-serializing-a-type-that-hides-an-accessible-member-with-an-inaccessible-one.md create mode 100644 Documentation/breaking-changes/xmlserializer-serializes-fields-differently-in-4_5.md create mode 100644 Documentation/breaking-changes/xmltextreader-dtd-entity-expansion-is-limited-to-10000000-characters.md create mode 100644 Documentation/breaking-changes/xmlwriter-throws-on-invalid-surrogate-pairs.md create mode 100644 Documentation/breaking-changes/xsd-schema-validation-now-correctly-detects-violations-of-unique-constraints-if-compound-keys-are-used-and-one-key-is-empty.md create mode 100644 Documentation/breaking-changes/xslt-forward-compat-now-works.md create mode 100644 Documentation/breaking-changes/xslt-style-sheet-exception-message-changed.md diff --git a/Documentation/breaking-changes/! Template.md b/Documentation/breaking-changes/! Template.md new file mode 100644 index 000000000..ec4668bbf --- /dev/null +++ b/Documentation/breaking-changes/! Template.md @@ -0,0 +1,64 @@ +## [|ID - Chose next available number|]: [|Breaking Change Title|] + +// There is no built in way to do comments in Markdown, so this C# style comment used to mark comments. Please remove all of these before submission +// Please use proper markdown syntax for code snippets. See http://daringfireball.net/projects/markdown/syntax for examples +// Entries with [| ... |] are fields that must be updated. + +### Scope +[|Major|Minor|Edge|Transparent|] +//A description of the Scopes can be found at https://msdn.microsoft.com/en-us/library/mt661864(v=vs.110).aspx + +### Version Introduced +[|Version in which the breaking change first occured|] + +### Version Reverted +[|Version in which the breaking change was reverted. If not applicable, please remove|] + +### Source Analyzer Status +// Flag that specifies whether an analyzer for Microsoft.DotNet.FrameworkCompatibilityDiagnostics has been or will be written +// For more information on the diagnostics, see this blog: https://blogs.msdn.microsoft.com/dotnet/2016/03/03/net-framework-compatibility-diagnostics/ +[|Investigating|Planned|Available|NotPlanned|] + +### Change Description +[|Description of what a change does and how it may affect someone|] + +// Replace the space with an 'x' if applicable +- [ ] Quirked // Uses some mechanism to turn the feature on or off, usually using runtime targeting, AppContext or config files. Needs to be turned on automatically for some situations. +- [ ] Build-time break // Causes a break if attempted to recompile + +### Recommended Action +[| + Suggested steps if user is affected go here: + + - Example of code changes to handle change + - How to opt out of change + - For earlier versions, how to opt in to change +|] + +### Affected APIs +[| List of APIs affected by change referred to using docids|] + +// For details on how to generate docids, please look at other change files or +// see https://msdn.microsoft.com/en-us/library/fsbx0t7x.aspx for the spec. +// +// For example, if all members of System.Xml.XmlTextReader is affected, we would have the following item: +// * `T:System.Xml.XmlTextReader` +// +// Notice that only the type is included, as everything contained with it will be included as well. This works for any level of the type +// hierarchy and allows for whole namespaces to be included if needed. +// +// If no specific API is affected, use the following entry: +// * Not detectable via API analysis + +### Category +[|Pick a category from BreakingChangesCategories.json|] + +// If no link is available, please remove this line +[More information]([|LinkForMoreInformation|]) + + + + diff --git a/Documentation/breaking-changes/README.md b/Documentation/breaking-changes/README.md new file mode 100644 index 000000000..23d8a0fc0 --- /dev/null +++ b/Documentation/breaking-changes/README.md @@ -0,0 +1,173 @@ +# .NET Framework Breaking Changes + +The following documents provide information on .NET Framework breaking changes and changes in behavior, starting with .NET Framework 4.5. + +- [SoapFormatter cannot deserialize Hashtable and similar ordered collection objects](soapformatter-cannot-deserialize-hashtable-and-similar-ordered-collection-objects.md) +- [XML schema validation is stricter](xml-schema-validation-is-stricter.md) +- [WPF DataTemplate elements are now visible to UIA](wpf-datatemplate-elements-are-now-visible-to-uia.md) +- [WPF TextBox selected text appears a different color when the text box is inactive](wpf-textbox-selected-text-appears-a-different-color-when-the-text-box-is-inactive.md) +- [List<T>.ForEach can throw exception when modifying list item](list_foreach-can-throw-exception-when-modifying-list-item.md) +- [System.Uri parsing adheres to RFC 3987](system_uri-parsing-adheres-to-rfc-3987.md) +- [System.Uri escaping now supports RFC 3986 (http://tools.ietf.org/html/rfc3986)](system_uri-escaping-now-supports-rfc-3986.md) +- [System.Net.PeerToPeer.Collaboration unavailable on Windows 8](system_net_peertopeer_collaboration-unavailable-on-windows-8.md) +- [MEF catalogs implement IEnumerable and therefore can no longer be used to create a serializer](mef-catalogs-implement-ienumerable-and-therefore-can-no-longer-be-used-to-create-a-serializer.md) +- [Missing Target Framework Moniker results in 4.0 behavior](missing-target-framework-moniker-results-in-4_0-behavior.md) +- [No longer able to set EnableViewStateMac to false](no-longer-able-to-set-enableviewstatemac-to-false.md) +- [BlockingCollection<T>.TryTakeFromAny does not throw anymore](blockingcollection_trytakefromany-does-not-throw-anymore.md) +- [XmlSchemaException now sets line positions properly](xmlschemaexception-now-sets-line-positions-properly.md) +- [System.Activities is now APTCA](system_activities-is-now-aptca.md) +- [WorkFlow 3.0 types are obsolete](workflow-3_0-types-are-obsolete.md) +- [Some WorkFlow drag and drop APIs are obsolete](some-workflow-drag-and-drop-apis-are-obsolete.md) +- [New (ambiguous) Dispatcher.Invoke overloads could result in different behavior](new-(ambiguous)-dispatcher_invoke-overloads-could-result-in-different-behavior.md) +- [EncoderParameter ctor is obsolete](encoderparameter-ctor-is-obsolete.md) +- [EF version must match NetFX version](ef-version-must-match-netfx-version.md) +- [Change in behavior for Task.WaitAll methods with time-out arguments](change-in-behavior-for-task_waitall-methods-with-time-out-arguments.md) +- [Change in behavior in Data Definition Language (DDL) APIs](change-in-behavior-in-data-definition-language-(ddl)-apis.md) +- [MachineKey.Encode and MachineKey.Decode methods are now obsolete](machinekey_encode-and-machinekey_decode-methods-are-now-obsolete.md) +- [The Replace method in OData URLs is disabled by default](the-replace-method-in-odata-urls-is-disabled-by-default.md) +- [System.ServiceModel.Web.WebServiceHost object no longer adds a default endpoint](system_servicemodel_web_webservicehost-object-no-longer-adds-a-default-endpoint.md) +- [EventSource.WriteEvent impls must pass WriteEvent the same parameters that it received (plus ID)](eventsource_writeevent-impls-must-pass-writeevent-the-same-parameters-that-it-received-(plus-id).md) +- [MinFreeMemoryPercentageToActiveService is now respected](minfreememorypercentagetoactiveservice-is-now-respected.md) +- [XmlTextReader DTD entity expansion is limited to 10,000,000 characters](xmltextreader-dtd-entity-expansion-is-limited-to-10000000-characters.md) +- [XSLT forward compat now works](xslt-forward-compat-now-works.md) +- [XSLT style sheet exception message changed](xslt-style-sheet-exception-message-changed.md) +- [WF serializes Expressions.Literal<T> DateTimes differently now (breaks custom XAML parsers)](wf-serializes-expressions_literal-datetimes-differently.md) +- [New enum values in WPF's PageRangeSelection](new-enum-values-in-wpf's-pagerangeselection.md) +- [WPF DispatcherSynchronizationContext.CreateCopy now returns a new copy instead of the current instance](wpf-dispatchersynchronizationcontext_createcopy-now-returns-a-new-copy-instead-of-the-current-instance.md) +- [System.Threading.Tasks.Task no longer throw ObjectDisposedException after object is disposed](system_threading_tasks_task-no-longer-throw-objectdisposedexception-after-object-is-disposed.md) +- [Different exception handling for ObjectContext.CreateDatabase and DbProviderServices.CreateDatabase methods](different-exception-handling-for-objectcontext_createdatabase-and-dbproviderservices_createdatabase-methods.md) +- [ObjectContext.Translate and ObjectContext.ExecuteStoreQuery now support enum type](objectcontext_translate-and-objectcontext_executestorequery-now-support-enum-type.md) +- [Enumerable.Empty<TResult> always returns cached instance](enumerable_empty-always-returns-cached-instance.md) +- [HttpRequest.ContentEncoding property prohibits UTF7](httprequest_contentencoding-property-prohibits-utf7.md) +- [HttpUtility.JavaScriptStringEncode escapes ampersand](httputility_javascriptstringencode-escapes-ampersand.md) +- [Error codes for maxRequestLength or maxReceivedMessageSize are different](error-codes-for-maxrequestlength-or-maxreceivedmessagesize-are-different.md) +- [EventListener truncates strings with embedded nulls](eventlistener-truncates-strings-with-embedded-nulls.md) +- [WinRT stream adapters no long call FlushAsync automatically on close](winrt-stream-adapters-no-long-call-flushasync-automatically-on-close.md) +- [ObsoleteAttribute exports as both ObsoleteAttribute and DeprecatedAttribute in WinMD scenarios](obsoleteattribute-exports-as-both-obsoleteattribute-and-deprecatedattribute-in-winmd-scenarios.md) +- [ResolveAssemblyReference task now warns on dependencies with the wrong architecture](resolveassemblyreference-task-now-warns-on-dependencies-with-the-wrong-architecture.md) +- [Opt-in break to revert from different 4.5 SQL generation to simpler 4.0 SQL generation](opt-in-break-to-revert-from-different-4_5-sql-generation-to-simpler-4_0-sql-generation.md) +- [WPF TextBox defaults to undo limit of 100](wpf-textbox-defaults-to-undo-limit-of-100.md) +- [WPF TextBox.Text can be out-of-sync with databinding](wpf-textbox_text-can-be-out-of-sync-with-databinding.md) +- [WinForm's CheckForOverflowUnderflow property is now true for System.Drawing](winform's-checkforoverflowunderflow-property-is-now-true-for-system_drawing.md) +- [List.Sort algorithm changed](list_sort-algorithm-changed.md) +- [Exceptions during unobserved processing in System.Threading.Tasks.Task no longer propagate on finalizer thread](exceptions-during-unobserved-processing-in-system_threading_tasks_task-no-longer-propagate-on-finalizer-thread.md) +- [Compiler support for type forwarding when multi-targeting mscorlib](compiler-support-for-type-forwarding-when-multi-targeting-mscorlib.md) +- [IAsyncResult.CompletedSynchronously property must be correct for the resulting task to complete](iasyncresult_completedsynchronously-property-must-be-correct-for-the-resulting-task-to-complete.md) +- [Log file name created by the ObjectContext.CreateDatabase method has changed to match SQL Server specifications](log-file-name-created-by-the-objectcontext_createdatabase-method-has-changed-to-match-sql-server-specifications.md) +- [Page.LoadComplete event no longer causes System.Web.UI.WebControls.EntityDataSource control to invoke data binding](page_loadcomplete-event-no-longer-causes-system_web_ui_webcontrols_entitydatasource-control-to-invoke-data-binding.md) +- [WebUtility.HtmlDecode no longer decodes invalid input sequences](webutility_htmldecode-no-longer-decodes-invalid-input-sequences.md) +- [WebUtility.HtmlEncode and WebUtility.HtmlDecode round-trip BMP correctly](webutility_htmlencode-and-webutility_htmldecode-round-trip-bmp-correctly.md) +- [Apps published with ClickOnce that use a SHA-256 code-signing certificate may fail on Windows 2003](apps-published-with-clickonce-that-use-a-sha-256-code-signing-certificate-may-fail-on-windows-2003.md) +- [Managed browser hosting controls from the .NET Framework 1.1 and 2.0 are blocked](managed-browser-hosting-controls-from-the-_net-framework-1_1-and-2_0-are-blocked.md) +- [Deserialization of objects across appdomains can fail](deserialization-of-objects-across-appdomains-can-fail.md) +- [DbParameter.Precision and DbParameter.Scale are now public virtual members](dbparameter_precision-and-dbparameter_scale-are-now-public-virtual-members.md) +- [EF no longer throws for QueryViews with specific characteristics](ef-no-longer-throws-for-queryviews-with-specific-characteristics.md) +- [SqlConnection can no longer connect to SQL Server 1997 or databases using the VIA adapter](sqlconnection-can-no-longer-connect-to-sql-server-1997-or-databases-using-the-via-adapter.md) +- [SqlBulkCopy uses destination column encoding for strings](sqlbulkcopy-uses-destination-column-encoding-for-strings.md) +- [Sql_variant data uses sql_variant collation rather than database collation](sql_variant-data-uses-sql_variant-collation-rather-than-database-collation.md) +- [DataObject.GetData now retrieves data as UTF-8](dataobject_getdata-now-retrieves-data-as-utf-8.md) +- [Assemblies compiled with Regex.CompileToAssembly breaks between 4.0 and 4.5](assemblies-compiled-with-regex_compiletoassembly-breaks-between-4_0-and-4_5.md) +- [TargetFrameworkName for default app domain no longer defaults to null if not set](targetframeworkname-for-default-app-domain-no-longer-defaults-to-null-if-not-set.md) +- [X509Certificate2.ToString(bool) does not throw now when .NET cannot handle the certificate](x509certificate2_tostring(bool)-does-not-throw-now-when-_net-cannot-handle-the-certificate.md) +- [Reflection objects can no longer be passed from managed code to out-of-process DCOM clients](reflection-objects-can-no-longer-be-passed-from-managed-code-to-out-of-process-dcom-clients.md) +- [ContentDisposition DateTimes returns slightly different string](contentdisposition-datetimes-returns-slightly-different-string.md) +- [ClickOnce supports SHA-256 on 4.0-targeted apps](clickonce-supports-sha-256-on-4_0-targeted-apps.md) +- [IL ret not allowed in a try region](il-ret-not-allowed-in-a-try-region.md) +- [XmlWriter throws on invalid surrogate pairs](xmlwriter-throws-on-invalid-surrogate-pairs.md) +- [WorkflowDesigner.Load doesn't remove symbol property](workflowdesigner_load-doesn't-remove-symbol-property.md) +- [SqlConnection.Open fails on Windows 7 with non-IFS Winsock BSP or LSP present](sqlconnection_open-fails-on-windows-7-with-non-ifs-winsock-bsp-or-lsp-present.md) +- [ICommand.CanExecuteChanged event behaviour changed in .NET 4.5](icommand_canexecutechanged-event-behaviour-changed-in-_net-4_5.md) +- [Some .NET APIs cause first chance (handled) EntryPointNotFoundExceptions](some-_net-apis-cause-first-chance-(handled)-entrypointnotfoundexceptions.md) +- [Scrolling a WPF TreeView or grouped ListBox in a VirtualizingStackPanel can cause a hang](scrolling-a-wpf-treeview-or-grouped-listbox-in-a-virtualizingstackpanel-can-cause-a-hang.md) +- [WPF spawns a wisptis.exe process which can freeze the mouse](wpf-spawns-a-wisptis_exe-process-which-can-freeze-the-mouse.md) +- [Unexpected InvalidCastException from InvokeMethod activity in WF4](unexpected-invalidcastexception-from-invokemethod-activity-in-wf4.md) +- [Type.IsAssignableFrom returns wrong result for generic variables with constraints](type_isassignablefrom-returns-wrong-result-for-generic-variables-with-constraints.md) +- [WPF Aero2 and AeroLite themes toggle button doesn't show any state](wpf-aero2-and-aerolite-themes-toggle-button-doesn't-show-any-state.md) +- [EntityFramework 6.0 loads very slowly in apps launched from Visual Studio](entityframework-6_0-loads-very-slowly-in-apps-launched-from-visual-studio.md) +- [Multi-line ASP.Net TextBox spacing changed when using AntiXSSEncoder](multi-line-asp_net-textbox-spacing-changed-when-using-antixssencoder.md) +- [Linq to EF Join throws ArgumentOutOfRangeException](linq-to-ef-join-throws-argumentoutofrangeexception.md) +- [XmlSerializer serializes fields differently in 4.5](xmlserializer-serializes-fields-differently-in-4_5.md) +- [ConcurrentQueue<T>.TryPeek can return an erroneous null via its out parameter](concurrentqueue_trypeek-can-return-an-erroneous-null-via-its-out-parameter.md) +- [Profiling ASP.Net MVC4 apps can lead to Fatal Execution Engine Error](profiling-asp_net-mvc4-apps-can-lead-to-fatal-execution-engine-error.md) +- [Non-pooled SQL connections will leak memory if not explicitly disposed](non-pooled-sql-connections-will-leak-memory-if-not-explicitly-disposed.md) +- [Multiple items in a single TableLayoutPanel cell may be rearranged](multiple-items-in-a-single-tablelayoutpanel-cell-may-be-rearranged.md) +- [Binding a WPF selector property (such as 'SelectedItem') to a static property does not work](binding-a-wpf-selector-property-(such-as-'selecteditem')-to-a-static-property-does-not-work.md) +- [Foreach iterator variable is now scoped within the iteration, so closure capturing semantics are different (in C#5)](foreach-iterator-variable-is-now-scoped-within-the-iteration.md) +- [HtmlTextWriter does not render `
` element correctly](htmltextwriter-does-not-render-br-element-correctly.md) +- [ListBoxItem IsSelected binding issue with ObservableCollection<T>.Move](listboxitem-isselected-binding-issue-with-observablecollection_move.md) +- [Right clicking on a WPF DataGrid row header changes the DataGrid selection](right-clicking-on-a-wpf-datagrid-row-header-changes-the-datagrid-selection.md) +- [Calling Items.Refresh on a WPF ListBox, ListView, or DataGrid with items selected can cause duplicate items to appear in the element](calling-items_refresh-on-a-wpf-listbox-or-listview-or-datagrid-with-items-selected-can-cause-duplicate-items-to-appear-in-the-element.md) +- [ETW EventListeners do not capture events from providers with explicit keywords (like the TPL provider)](etw-eventlisteners-do-not-capture-events-from-providers-with-explicit-keywords.md) +- [Exception message has changed for failed DataContract serialization in case of an unknown type](exception-message-has-changed-for-failed-datacontract-serialization-in-case-of-an-unknown-type.md) +- [Accessing a WPF DataGrid's selected items from a handler of the DataGrid's UnloadingRow event can cause a NullReferenceException](accessing-a-wpf-datagrid's-selected-items-from-a-handler-of-the-datagrid's-unloadingrow-event-can-cause-a-nullreferenceexception.md) +- [Building an Entity Framework edmx with Visual Studio 2013 can fail with error MSB4062 if using the EntityDeploySplit or EntityClean tasks](building-an-entity-framework-edmx-with-visual-studio-2013-can-fail-with-error-msb4062-if-using-the-entitydeploysplit-or-entityclean-tasks.md) +- [NetDataContractSerializer fails to deserialize a ConcurrentDictionary serialized with a different .NET version](netdatacontractserializer-fails-to-deserialize-a-concurrentdictionary-serialized-with-a-different-_net-version.md) +- [XSD Schema validation now correctly detects violations of unique constraints if compound keys are used and one key is empty](xsd-schema-validation-now-correctly-detects-violations-of-unique-constraints-if-compound-keys-are-used-and-one-key-is-empty.md) +- [Calling Attribute.GetCustomAttributes on an indexer property no longer throws AmbiguousMatchException if the ambiguity can be resolved by index's type](calling-attribute_getcustomattributes-on-an-indexer-property-no-longer-throws-ambiguousmatchexception.md) +- [Intermittently unable to scroll to bottom item in ItemsControls (like ListBox and DataGrid) when using custom DataTemplates](intermittently-unable-to-scroll-to-bottom-item-in-itemscontrols-when-using-customer-datatemplates.md) +- [GlyphRun.ComputeInkBoundingBox() and FormattedText.Extent return different values beginning in .NET 4.5](glyphrun_computeinkboundingbox()-and-formattedtext_extent-return-different-values-beginning-in-_net-4_5.md) +- [AppDomainSetup.DynamicBase is no longer randomized by UseRandomizedStringHashAlgorithm](appdomainsetup_dynamicbase-is-no-longer-randomized-by-userandomizedstringhashalgorithm.md) +- [GridViews with AllowCustomPaging set to true may fire the PageIndexChanging event when leaving the final page of the view](gridviews-with-allowcustompaging-set-to-true-may-fire-the-pageindexchanging-event-when-leaving-the-final-page-of-the-view.md) +- [COR_PRF_GC_ROOT_HANDLEs are not being enumerated by profilers](cor_prf_gc_root_handles-are-not-being-enumerated-by-profilers.md) +- [IPad should not be used in custom capabilities file because it is now a browser capability](ipad-should-not-be-used-in-custom-capabilities-file-because-it-is-now-a-browser-capability.md) +- [ADO.NET now attempts to automatically reconnect broken SQL connections](ado_net-now-attempts-to-automatically-reconnect-broken-sql-connections.md) +- [FlowDocument may show an extra line of text](flowdocument-may-show-an-extra-line-of-text.md) +- [System.Uri.IsWellFormedUriString method returns false for relative URIs with a colon char in first segment](system_uri_iswellformeduristring-method-returns-false-for-relative-uris-with-a-colon-char-in-first-segment.md) +- [The .NET Framework 4.6 does not use a 4.5.x.x version when registering itself in the registry](the-_net-framework-4_6-does-not-use-a-4_5_x_x-version-when-registering-itself-in-the-registry.md) +- [Null coalescer values are not visible in debugger until one step later](null-coalescer-values-are-not-visible-in-debugger-until-one-step-later.md) +- [Calling DataGrid.CommitEdit from a CellEditEnding handler drops focus](calling-datagrid_commitedit-from-a-celleditending-handler-drops-focus.md) +- [ASP.NET MVC now escapes spaces in strings passed in via route parameters](asp_net-mvc-now-escapes-spaces-in-strings-passed-in-via-route-parameters.md) +- [VB.NET no longer supports partial namespace qualification for System.Windows APIs](vb_net-no-longer-supports-partial-namespace-qualification-for-system_windows-apis.md) +- [Sharing session state with Asp.Net StateServer requires all servers in the web farm to use the same .NET Framework version](sharing-session-state-with-asp_net-stateserver-requires-all-servers-in-the-web-farm-to-use-the-same-_net-framework-version.md) +- [Two-way data-binding to a property with a non-public setter is not supported](two-way-data-binding-to-a-property-with-a-non-public-setter-is-not-supported.md) +- [Marshal.SizeOf and Marshal.PtrToStructure overloads break dynamic code](marshal_sizeof-and-marshal_ptrtostructure-overloads-break-dynamic-code.md) +- [PreviewLostKeyboardFocus is called repeatedly if its handler shows a Windows Forms message box](previewlostkeyboardfocus-is-called-repeatedly-if-its-handler-shows-a-message-box.md) +- [A ConcurrentDictionary serialized in .NET 4.5 with NetDataContractSerializer cannot be deserialized by .NET 4.5.1 or 4.5.2](a-concurrentdictionary-serialized-in-_net-4_5-with-netdatacontractserializer-cannot-be-deserialized-by-_net-4_5_1-or-4_5_2.md) +- [Persian calendar now uses the Hijri solar algorithm](persian-calendar-now-uses-the-hijri-solar-algorithm.md) +- [WPF windows are rendered without clipping when extending outside a single monitor](wpf-windows-are-rendered-without-clipping-when-extending-outside-a-single-monitor.md) +- [WPF spell checking in text-enabled controls will not work in Windows 10 for languages not in the OS's input language list](wpf-spell-checking-in-text-enabled-controls-will-not-work-in-windows-10-for-languages-not-in-the-input-language-list.md) +- [Only Tls 1.0, 1.1 and 1.2 protocols supported in System.Net.ServicePointManager and System.Net.Security.SslStream ](only-tls-1_0-1_1-and-1_2-protocols-supported-in-system_net_servicepointmanager-and-system_net_security_sslstream.md) +- [Calling CreateDefaultAuthorizationContext with a null argument has changed](calling-createdefaultauthorizationcontext-with-a-null-argument-has-changed.md) +- [WPF layout rounding of margins has changed ](wpf-layout-rounding-of-margins-has-changed.md) +- [XmlSerializer fails while serializing a type that hides an accessible member with an inaccessible one](xmlserializer-fails-while-serializing-a-type-that-hides-an-accessible-member-with-an-inaccessible-one.md) +- [WPF TreeViewItem must be used within a TreeView](wpf-treeviewitem-must-be-used-within-a-treeview.md) +- [WCF binding with the TransportWithMessageCredential security mode](wcf-binding-with-the-transportwithmessagecredential-security-mode.md) +- [X509CertificateClaimSet.FindClaims Considers All claimTypes](x509certificateclaimset_findclaims-considers-all-claimtypes.md) +- [Application.FilterMessage no longer throws for re-entrant implementations of IMessageFilter.PreFilterMessage](application_filtermessage-no-longer-throws-for-re-entrant-implementations-of-imessagefilter_prefiltermessage.md) +- [CurrentCulture is not preserved across WPF Dispatcher operations](currentculture-not-preserved-across-wpf-dispatcher-operations.md) +- [CurrentCulture and CurrentUICulture flow across tasks](currentculture-flows-across-tasks.md) +- [BinaryFormatter can fail to find type from LoadFrom context](binaryformatter-can-fail-to-find-type-from-loadfrom-context.md) +- [RSACng now correctly loads RSA keys of non-standard key size](rsacng-now-correctly-loads-rsa-keys-of-non-standard-keysize.md) +- [Remove Ssl3 from the WCF TransportDefaults](remove-ssl3-from-the-wcf-transportdefaults.md) +- [Incorrect implementation of MemberDescriptor.Equals](incorrect-implementation-of-memberdescriptor_equals.md) +- [DataGridCellsPanel.BringIndexIntoView throws ArgumentOutOfRangeException](datagridcellspanel_bringintoview-throws-argumentoutofrangeexception.md) +- [Item-scrolling a flat list with items of different pixel-height](item-scrolling-a-flat-list-with-items-of-different-pixel-height.md) +- [Horizontal scrolling and virtualization](horizontal-scrolling-and-virtualization.md) +- [Items.Clear does not remove duplicates from SelectedItems](items_clear-does-not-remove-duplicates-from-selecteditems.md) +- [WPF Spell Checking fails in unexpected ways](wpf-spell-checking-fail-in-unexpected-ways.md) +- [SignedXml and EncryptedXml Breaking Changes](xml-documents-are-now-consider-invalid-if-they-contains-transforms-that-are-not-allowed-on-digital-signatures.md) +- [.Net Framework now supports Unicode standard version 8.0 categories](unicode-data-now-support-standard-v8_0-categories.md) +- [Path colon checks are stricter](path-colon-checks-are-stricter.md) +- [RSACng.VerifyHash now returns False for any verification failure](rsacng_verifyhash-now-returns-false-for-any-verification-failure.md) +- [Connection pool blocking period for Azure SQL databases is removed](connection-pool-blocking-period-for-azure-sql-databases-is-removed.md) +- [Changing the IsEnabled property of the parent of a TextBlock control affects any child controls](changing-the-isenabled-property-of-the-parent-of-a-textblock-control-affects-any-child-controls.md) +- [Long path support](long-path-support.md) +- [Changes in path normalization](changes-in-path-normalization.md) +- [Calls to ClaimsIdentity constructors](calls-to-claimsidentity-constructors.md) +- [AesCrytpServiceProvider decryptor provides a reusable transform](aescryptoserviceprovider-decryptor-provides-a-reusable-transform.md) +- [WCF transport security supports certificates stored using CNG](wcf-transport-security-supports-certificates-stored-using-cng.md) +- [WCF message security now is able to use TLS1.1 and TLS1.2](wcf-message-security-unable-to-use-tls1_1-and-tls1_2.md) +- [Serialization of control characters with DataContractJsonSerializer is now compatible with ECMAScript V6 and V8](serialization-of-control-characters-with-datacontractjsonserializer-is-now-compatible-with-ecmascript-v6-and-v8.md) +- [Throttle concurrent requests per session](throttle-concurrent-requests-per-session.md) +- [Workflow now throws original exception instead of NullReferenceException in some cases](workflow-now-throws-original-exception-instead-of-nullreferenceexception-in-some-cases.md) +- [WPF Grid allocation of space to star-columns](wpf-grid-allocation-of-space-to-star-columns.md) +- [WPF Pointer-Based Touch Stack](wpf-pointer-based-touch-stack.md) +- [WPF Printing Stack Update](wpf-printing-stack-update.md) +- [ObjectDisposedException thrown by WPF spellchecker](objectdisposedexception-thrown-by-wpf-spellchecker.md) +- [RibbonGroup background is set to transparent in localized builds](ribbongroup-background-is-set-to-transparent-in-localized-builds.md) +- [Workflow checksums changed from MD5 to SHA1](workflow-checksums-changed-from-md5-to-sha1.md) +- [NullReferenceException in exception handling code from ImageSourceConverter.ConvertFrom](wpf-nullreferenceexception-in-exception-handling-code-from-imagesourceconverter_convertfrom.md) +- [CspParameters.ParentWindowHandle now expects HWND value](cspparameters_parentwindowhandle-now-expects-hwnd-value.md) +- [CoerceIsSelectionBoxHighlighted](coerceisselectionboxhighlighted.md) +- [Workflow SQL persistence adds primary key clusters and disallows null values in some columns](workflow-sql-persistence-adds-primary-key-clusters-and-disallows-null-values-in-some-columns.md) +- [SslStream supports TLS Alerts](sslstream-support-for-tls-alerts.md) diff --git a/Documentation/breaking-changes/a-concurrentdictionary-serialized-in-_net-4_5-with-netdatacontractserializer-cannot-be-deserialized-by-_net-4_5_1-or-4_5_2.md b/Documentation/breaking-changes/a-concurrentdictionary-serialized-in-_net-4_5-with-netdatacontractserializer-cannot-be-deserialized-by-_net-4_5_1-or-4_5_2.md new file mode 100644 index 000000000..de8513a0f --- /dev/null +++ b/Documentation/breaking-changes/a-concurrentdictionary-serialized-in-_net-4_5-with-netdatacontractserializer-cannot-be-deserialized-by-_net-4_5_1-or-4_5_2.md @@ -0,0 +1,45 @@ +## 133: A ConcurrentDictionary serialized in .NET 4.5 with NetDataContractSerializer cannot be deserialized by .NET 4.5.1 or 4.5.2 + +### Scope +Minor + +### Version Introduced +4.5.1 + +### Version Reverted +4.6 + +### Source Analyzer Status +Available + +### Change Description +Due to internal changes to the type, `System.Collections.Concurrent.ConcurrentDictionary` objects that are serialized with the .NET Framework 4.5 +using the `NetDataContractSerializer` cannot be deserialized in the .NET Framework 4.5.1 or in the .NET Framework 4.5.2. + +Note that moving the other direction (serializing with the .NET Framework 4.5.x and deserializing with the .NET Framework 4.5) works. Similarly, +all 4.x cross-version serialization works with the .NET Framework 4.6. + +Serializing and deserializing with a single version of the .NET Framework is not affected. + +- [ ] Quirked +- [ ] Build-time break + +### Recommended Action +If it is necessary to serialize and deserialize a ConcurrentDictionary between the .NET Framework 4.5 and .NET Framework 4.5.1/4.5.2, an alternate serializer like the +DataContractSerializer or BinaryFormatter serializer should be used instead of the NetDataContractSerializer. + +Alternatively, because this issue is addressed in the .NET Framework 4.6, it may be solved by upgrading to that version of the .NET Framework. + +### Affected APIs +* Not detectable via API analysis + +### Category +Core + +[More information](https://msdn.microsoft.com/en-us/library/dn458360(v=vs.110).aspx#Core) + + + diff --git a/Documentation/breaking-changes/accessing-a-wpf-datagrid's-selected-items-from-a-handler-of-the-datagrid's-unloadingrow-event-can-cause-a-nullreferenceexception.md b/Documentation/breaking-changes/accessing-a-wpf-datagrid's-selected-items-from-a-handler-of-the-datagrid's-unloadingrow-event-can-cause-a-nullreferenceexception.md new file mode 100644 index 000000000..2b59d89f0 --- /dev/null +++ b/Documentation/breaking-changes/accessing-a-wpf-datagrid's-selected-items-from-a-handler-of-the-datagrid's-unloadingrow-event-can-cause-a-nullreferenceexception.md @@ -0,0 +1,29 @@ +## 107: Accessing a WPF DataGrid's selected items from a handler of the DataGrid's UnloadingRow event can cause a NullReferenceException + +### Scope +Minor + +### Version Introduced +4.5 + +### Version Reverted +4.6 + +### Source Analyzer Status +Planned + +### Change Description +Due to a bug in the .NET Framework 4.5, event handlers for DataGrid events involving the removal of a row can cause a NullReferenceException to be thrown if they access the DataGrid's SelectedItem or SelectedItems properties. + +- [ ] Quirked +- [ ] Build-time break + +### Recommended Action +This issue has been fixed in the .NET Framework 4.6 and may be addressed by upgrading to that version of the .NET Framework. + +### Affected APIs +* `E:System.Windows.Controls.DataGrid.UnloadingRow` +* `E:System.Windows.Controls.DataGrid.UnloadingRowDetails` + +### Category +Windows Presentation Foundation (WPF) diff --git a/Documentation/breaking-changes/ado_net-now-attempts-to-automatically-reconnect-broken-sql-connections.md b/Documentation/breaking-changes/ado_net-now-attempts-to-automatically-reconnect-broken-sql-connections.md new file mode 100644 index 000000000..ea7425c8b --- /dev/null +++ b/Documentation/breaking-changes/ado_net-now-attempts-to-automatically-reconnect-broken-sql-connections.md @@ -0,0 +1,45 @@ +## 119: ADO.NET now attempts to automatically reconnect broken SQL connections + +### Scope +Edge + +### Version Introduced +4.5.1 + +### Source Analyzer Status +Planned + +### Change Description +Beginning in the .NET Framework 4.5.1, the .NET Framework will attempt to automatically reconnect broken SQL connections. Although this will typically make apps more reliable, there are edge cases in which an app needs to know that the connection was lost so that it can take some action upon reconnection. + +- [ ] Quirked +- [ ] Build-time break + +### Recommended Action +If this feature is undesirable due to compatibility concerns, it can be disabled by setting the ConnectRetryCount property of a connection string (or SqlConnectionStringBuilder) to 0. + +### Affected APIs +* `M:System.Data.IDbConnection.set_ConnectionString(System.String)` +* `M:System.Data.SqlClient.SqlConnection.set_ConnectionString(System.String)` +* `M:System.Configuration.ConnectionStringSettings.set_ConnectionString(System.String)` +* `M:System.Data.Common.DbConnection.set_ConnectionString(System.String)` +* `M:System.Data.Common.DbConnectionStringBuilder.set_ConnectionString(System.String)` +* `M:System.Data.SqlClient.SqlConnectionStringBuilder.#ctor` +* `M:System.Data.SqlClient.SqlConnectionStringBuilder.#ctor(System.String)` +* `M:System.Data.Common.DbConnectionStringBuilder.#ctor` +* `M:System.Data.Common.DbConnectionStringBuilder.#ctor(System.Boolean)` + +### Categories +ADO.NET +Data + +[More information](http://blogs.msdn.com/b/dotnet/archive/2013/10/17/net-framework-4-5-1-rtm-gt-start-coding.aspx) + + + + diff --git a/Documentation/breaking-changes/aescryptoserviceprovider-decryptor-provides-a-reusable-transform.md b/Documentation/breaking-changes/aescryptoserviceprovider-decryptor-provides-a-reusable-transform.md new file mode 100644 index 000000000..ae10715f4 --- /dev/null +++ b/Documentation/breaking-changes/aescryptoserviceprovider-decryptor-provides-a-reusable-transform.md @@ -0,0 +1,49 @@ +## 165: AesCrytpServiceProvider decryptor provides a reusable transform + +### Scope +Minor + +### Version Introduced +4.6.2 + +### Source Analyzer Status +Investigating + +### Change Description +Starting with apps that target the .NET Framework 4.6.2, the `T:System.Security.Cryptography.AesCryptoServiceProvider` decryptor provides a reusable transform. After a call to `TransformFinalBlock`, the transform is reinitialized and can be reused. +For apps that target earlier versions of the .NET Framework, attempting to reuse the decryptor by calling `TransformBlock` after a call to `TransformFinalBlock` throws a `T:System.Security.Cryptography.CryptographicException` or produces corrupted data. + +- [X] Quirked AppContext or config files. Needs to be turned on automatically for some situations. +- [ ] Build-time break + +### Recommended Action +The impact of this change should be minimal, since this is the expected behavior. + +Applications that depend on the previous behavior can opt out of it using it by adding the following configuration setting to the `` section of the application's configuration file: + + ```xml + + + + ``` + +In addition, applications that target a previous version of the .NET Framework but are running under a version of the .NET Framework starting with .NET Framework 4.6.2 can opt in to it by adding the following configuration setting to the `` section of the application's configuration file: + + ```xml + + + + ``` + +### Affected APIs +- `M:System.Security.Cryptography.AesCryptoServiceProvider.CreateDecryptor` + +### Category +Core + + + + diff --git a/Documentation/breaking-changes/appdomainsetup_dynamicbase-is-no-longer-randomized-by-userandomizedstringhashalgorithm.md b/Documentation/breaking-changes/appdomainsetup_dynamicbase-is-no-longer-randomized-by-userandomizedstringhashalgorithm.md new file mode 100644 index 000000000..2ed99af2c --- /dev/null +++ b/Documentation/breaking-changes/appdomainsetup_dynamicbase-is-no-longer-randomized-by-userandomizedstringhashalgorithm.md @@ -0,0 +1,31 @@ +## 115: AppDomainSetup.DynamicBase is no longer randomized by UseRandomizedStringHashAlgorithm + +### Scope +Edge + +### Version Introduced +4.6 + +### Source Analyzer Status +Planned + +### Change Description +Prior to the .NET Framework 4.6, the value of AppDomainSetup.DynamicBase would be randomized between application domains, or between processes, if UseRandomizedStringHashAlgorithm was enabled in the app's config file. Beginning in the .NET Framework 4.6, AppDomainSetup.DynamicBase will return a stable result between different instances of an app running, and between different app domains. Dynamic bases will still differ for different apps; this change only removes the random naming element for different instances of the same app. + +- [ ] Quirked +- [ ] Build-time break + +### Recommended Action +Be aware that enabling `UseRandomizedStringHashAlgorithm` will not result in `AppDomainSetup.DynamicBase` being randomized. If a random base is needed, it must be produced in your app's code rather than via this API. + +### Affected APIs +* `P:System.AppDomainSetup.DynamicBase` + +### Category +Core + + + diff --git a/Documentation/breaking-changes/application_filtermessage-no-longer-throws-for-re-entrant-implementations-of-imessagefilter_prefiltermessage.md b/Documentation/breaking-changes/application_filtermessage-no-longer-throws-for-re-entrant-implementations-of-imessagefilter_prefiltermessage.md new file mode 100644 index 000000000..e0a0e968d --- /dev/null +++ b/Documentation/breaking-changes/application_filtermessage-no-longer-throws-for-re-entrant-implementations-of-imessagefilter_prefiltermessage.md @@ -0,0 +1,40 @@ +## 144: Application.FilterMessage no longer throws for re-entrant implementations of IMessageFilter.PreFilterMessage + +### Scope +Edge + +### Version Introduced +4.6.1 + +### Source Analyzer Status +Planned + +### Change Description +Prior to the .NET Framework 4.6.1, calling Application.FilterMessage with an IMessageFilter.PreFilterMessage which called AddMessageFilter or RemoveMessageFilter (while also calling Application.DoEvents) would cause an IndexOutOfRangeException. + +Beginning with applications targeting the .NET Framework 4.6.1, this exception is no longer thrown, and re-entrant filters as described above may be used. + +- [x] Quirked +- [ ] Build-time break + +### Recommended Action +Be aware that Application.FilterMessage will no longer throw for the re-entrant IMessageFilter.PreFilterMessage behavior described above. This only affects applications targeting the .NET Framework 4.6.1. + +Apps targeting the .NET Framework 4.6.1 can opt out of this change (or apps targeting older Frameworks may opt in) by using the [DontSupportReentrantFilterMessage](https://msdn.microsoft.com/en-us/library/mt620032%28v=vs.110%29.aspx) compatibility switch. + +### Affected APIs +* `M:System.Windows.Forms.Application.FilterMessage(System.Windows.Forms.Message@)` + +### Category +Windows Forms + +[More information](https://msdn.microsoft.com/en-us/library/mt620031%28v=vs.110%29.aspx#WinForms) + + + + diff --git a/Documentation/breaking-changes/apps-published-with-clickonce-that-use-a-sha-256-code-signing-certificate-may-fail-on-windows-2003.md b/Documentation/breaking-changes/apps-published-with-clickonce-that-use-a-sha-256-code-signing-certificate-may-fail-on-windows-2003.md new file mode 100644 index 000000000..e0e3c91b0 --- /dev/null +++ b/Documentation/breaking-changes/apps-published-with-clickonce-that-use-a-sha-256-code-signing-certificate-may-fail-on-windows-2003.md @@ -0,0 +1,42 @@ +## 63: Apps published with ClickOnce that use a SHA-256 code-signing certificate may fail on Windows 2003 + +### Scope +Edge + +### Version Introduced +4.5 + +### Version Reverted +4.6 + +### Source Analyzer Status +Available + +### Change Description +The executable is signed with SHA256. Previously, it was signed with SHA1 regardless of whether the code-signing certificate was SHA-1 or SHA-256. This applies to: + +- All applications built with Visual Studio 2012 or later. +- Applications built with Visual Studio 2010 or earlier on systems with the .NET Framework 4.5 present. + +In addition, if the .NET Framework 4.5 or later is present, the ClickOnce manifest is also signed with SHA-256 for SHA-256 certificates regardless of the .NET Framework version against which it was compiled. + +- [ ] Quirked +- [x] Build-time break + +### Recommended Action +The change in signing the ClickOnce executable affects only Windows Server 2003 systems; they require that KB 938397 be installed. + +The change in signing the manifest with SHA-256 even when an app targets the .NET Framework 4.0 or earlier versions introduces a runtime dependency on the .NET Framework 4.5 or a later version. + +### Affected APIs +* Investigate applicable APIs + +### Category +ClickOnce + +[More information](https://msdn.microsoft.com/en-us/library/hh367887(v=vs.110).aspx#ClickOnce) + + diff --git a/Documentation/breaking-changes/asp_net-mvc-now-escapes-spaces-in-strings-passed-in-via-route-parameters.md b/Documentation/breaking-changes/asp_net-mvc-now-escapes-spaces-in-strings-passed-in-via-route-parameters.md new file mode 100644 index 000000000..c208eb311 --- /dev/null +++ b/Documentation/breaking-changes/asp_net-mvc-now-escapes-spaces-in-strings-passed-in-via-route-parameters.md @@ -0,0 +1,33 @@ +## 125: ASP.NET MVC now escapes spaces in strings passed in via route parameters + +### Scope +Minor + +### Version Introduced +4.5.2 + +### Source Analyzer Status +Available + +### Change Description +In order to conform to RFC 2396, spaces in route paths are now escaped when populating action parameters from a route. So, whereas `/controller/action/some data` would previously match the route `/controller/action/{data}` and provide `some data` as the data parameter, it will now provide `some%20data` instead. + +- [ ] Quirked +- [ ] Build-time break + +### Recommended Action +Code should be updated to unescape string parameters from a route. If the original URI is needed, it can be accessed with the Request.RequestUri.OriginalString API. + +### Affected APIs +* `M:System.Web.Http.RouteAttribute.#ctor(System.String)` + +### Category +ASP.NET + +[More information](http://connect.microsoft.com/VisualStudio/feedback/details/878827/issues-with-encoding-in-web-api-in-4-5-2) + + + diff --git a/Documentation/breaking-changes/assemblies-compiled-with-regex_compiletoassembly-breaks-between-4_0-and-4_5.md b/Documentation/breaking-changes/assemblies-compiled-with-regex_compiletoassembly-breaks-between-4_0-and-4_5.md new file mode 100644 index 000000000..5275475cc --- /dev/null +++ b/Documentation/breaking-changes/assemblies-compiled-with-regex_compiletoassembly-breaks-between-4_0-and-4_5.md @@ -0,0 +1,32 @@ +## 74: Assemblies compiled with Regex.CompileToAssembly breaks between 4.0 and 4.5 + +### Scope +Minor + +### Version Introduced +4.5 + +### Source Analyzer Status +Planned + +### Change Description +If an assembly of compiled regular expressions is built with the .NET Framework 4.5 but targets the .NET Framework 4, attempting to use one of the regular expressions in that assembly on a system with .NET Framework 4 installed throws an exception. + +- [ ] Quirked +- [ ] Build-time break + +### Recommended Action +To work around this problem, you can do either of the following: + +- Build the assembly that contains the regular expressions with the .NET Framework 4. +- Use an interpreted regular expression. + +### Affected APIs +* `M:System.Text.RegularExpressions.Regex.CompileToAssembly(System.Text.RegularExpressions.RegexCompilationInfo[],System.Reflection.AssemblyName)` +* `M:System.Text.RegularExpressions.Regex.CompileToAssembly(System.Text.RegularExpressions.RegexCompilationInfo[],System.Reflection.AssemblyName,System.Reflection.Emit.CustomAttributeBuilder[])` +* `M:System.Text.RegularExpressions.Regex.CompileToAssembly(System.Text.RegularExpressions.RegexCompilationInfo[],System.Reflection.AssemblyName,System.Reflection.Emit.CustomAttributeBuilder[],System.String)` + +### Category +Core + +[More information](https://msdn.microsoft.com/en-us/library/hh367887\(v=vs.110\).aspx#core) diff --git a/Documentation/breaking-changes/binaryformatter-can-fail-to-find-type-from-loadfrom-context.md b/Documentation/breaking-changes/binaryformatter-can-fail-to-find-type-from-loadfrom-context.md new file mode 100644 index 000000000..48975a0c4 --- /dev/null +++ b/Documentation/breaking-changes/binaryformatter-can-fail-to-find-type-from-loadfrom-context.md @@ -0,0 +1,47 @@ +## 147: BinaryFormatter can fail to find type from LoadFrom context + +### Scope +Edge + +### Version Introduced +4.5 + +### Source Analyzer Status +Planned + +### Change Description +As of .NET Framework 4.5, a number of XmlSerializer changes may cause differences in deserialization when using `BinaryFormatter` to deserialize types that had been loaded in the +LoadFrom context. These changes are due to the new ways `XmlSerializer` now loads a type which causes different behavior when a BinaryFormatter attempts to deserialize to that type +later on. The default serialization binder does not automatically search the LoadFrom context, although it may have worked in some circumstances based on the old behavior of +XmlSerializer. Due to the changes, when a type is being loaded from an assembly loaded in a different context, a FileNotFoundException may be thrown. + +- [ ] Quirked +- [ ] Build-time break + +### Recommended Action +If this exception is seen, the `Binder` property of the `BinaryFormatter` can be set to a custom binder that will find the correct type. + +```C# +var formatter = new BinaryFormatter { Binder = new TypeFinderBinder() } +``` + +And then the custom binder: +```C# +public class TypeFinderBinder : SerializationBinder +{ + private static readonly string s_assemblyName = Assembly.GetExecutingAssembly().FullName; + + public override Type BindToType(string assemblyName, string typeName) + { + return Type.GetType(String.Format(CultureInfo.InvariantCulture, "{0}, {1}", typeName, s_assemblyName)); + } +} +``` + +### Affected APIs +* `T:System.Runtime.Serialization.Formatters.Binary.BinaryFormatter` +* `M:System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize(System.IO.Stream)` +* `M:System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize(System.IO.Stream,System.Runtime.Remoting.Messaging.HeaderHandler)` + +### Category +Serialization diff --git a/Documentation/breaking-changes/binding-a-wpf-selector-property-(such-as-'selecteditem')-to-a-static-property-does-not-work.md b/Documentation/breaking-changes/binding-a-wpf-selector-property-(such-as-'selecteditem')-to-a-static-property-does-not-work.md new file mode 100644 index 000000000..b18caa424 --- /dev/null +++ b/Documentation/breaking-changes/binding-a-wpf-selector-property-(such-as-'selecteditem')-to-a-static-property-does-not-work.md @@ -0,0 +1,37 @@ +## 99: Binding a WPF selector property (such as 'SelectedItem') to a static property does not work + +### Scope +Minor + +### Version Introduced +4.5 + +### Version Reverted +4.5 + +### Source Analyzer Status +Planned + +### Change Description +In the .NET Framework 4.5, WPF Selector properties (such as 'SelectedItem' on ListBoxes or DataGrids) that are data-bound to static properties do not properly update when their bound property is updated. + +- [ ] Quirked +- [ ] Build-time break + +### Recommended Action +This behavior was reverted in a servicing update for the .NET Framework 4.5. Please update the .NET Framework 4.5, or upgrade to .NET Framework 4.5.1 or later, to fix this issue. + +### Affected APIs +* Not detectable via API analysis + +### Category +Windows Presentation Foundation (WPF) + +[More information](https://social.msdn.microsoft.com/Forums/vstudio/en-US/56ff3199-5abc-454e-87f7-bafff43e7422/net-45-critical-selecteditem-not-setting-binding-item?forum=wpf) + + + + diff --git a/Documentation/breaking-changes/blockingcollection_trytakefromany-does-not-throw-anymore.md b/Documentation/breaking-changes/blockingcollection_trytakefromany-does-not-throw-anymore.md new file mode 100644 index 000000000..06b96a84d --- /dev/null +++ b/Documentation/breaking-changes/blockingcollection_trytakefromany-does-not-throw-anymore.md @@ -0,0 +1,32 @@ +## 18: BlockingCollection<T>.TryTakeFromAny does not throw anymore + +### Scope +Minor + +### Version Introduced +4.5 + +### Source Analyzer Status +Available + +### Change Description +If one of the input collections is marked completed, `BlockingCollection.TryTakeFromAny(BlockingCollection[], T)` no longer returns -1 and `BlockingCollection.TakeFromAny` no longer throws an exception. This change makes it possible to work with collections when one of the collections is either empty or completed, but the other collection still has items that can be retrieved. + +- [ ] Quirked +- [ ] Build-time break + +### Recommended Action +If TryTakeFromAny returning -1 or TakeFromAny throwing were used for control-flow purposes in cases of a blocking collection being completed, such code should now be changed to use `.Any(b => b.IsCompleted)` to detect that condition. + +### Affected APIs +* ``M:System.Collections.Concurrent.BlockingCollection`1.TakeFromAny(System.Collections.Concurrent.BlockingCollection{`0}[],`0@)`` +* ``M:System.Collections.Concurrent.BlockingCollection`1.TakeFromAny(System.Collections.Concurrent.BlockingCollection{`0}[],`0@,System.Threading.CancellationToken)`` +* ``M:System.Collections.Concurrent.BlockingCollection`1.TryTakeFromAny(System.Collections.Concurrent.BlockingCollection{`0}[],`0@)`` +* ``M:System.Collections.Concurrent.BlockingCollection`1.TryTakeFromAny(System.Collections.Concurrent.BlockingCollection{`0}[],`0@,System.Int32)`` +* ``M:System.Collections.Concurrent.BlockingCollection`1.TryTakeFromAny(System.Collections.Concurrent.BlockingCollection{`0}[],`0@,System.TimeSpan)`` +* ``M:System.Collections.Concurrent.BlockingCollection`1.TryTakeFromAny(System.Collections.Concurrent.BlockingCollection{`0}[],`0@,System.TimeSpan)`` + +### Category +Core + +[More information](https://msdn.microsoft.com/en-us/library/hh367887#core) diff --git a/Documentation/breaking-changes/building-an-entity-framework-edmx-with-visual-studio-2013-can-fail-with-error-msb4062-if-using-the-entitydeploysplit-or-entityclean-tasks.md b/Documentation/breaking-changes/building-an-entity-framework-edmx-with-visual-studio-2013-can-fail-with-error-msb4062-if-using-the-entitydeploysplit-or-entityclean-tasks.md new file mode 100644 index 000000000..f99f77b90 --- /dev/null +++ b/Documentation/breaking-changes/building-an-entity-framework-edmx-with-visual-studio-2013-can-fail-with-error-msb4062-if-using-the-entitydeploysplit-or-entityclean-tasks.md @@ -0,0 +1,31 @@ +## 109: Building an Entity Framework edmx with Visual Studio 2013 can fail with error MSB4062 if using the EntityDeploySplit or EntityClean tasks + +### Scope +Major + +### Version Introduced +4.5.1 + +### Version Reverted +4.6 + +### Source Analyzer Status +Available + +### Change Description +MSBuild 12.0 tools (included in Visual Studio 2013) changed msbuild file locations, causing older Entity Framework targets files to be invalid. The result is that `EntityDeploySplit` and `EntityClean` tasks fail because they are unable to find `Microsoft.Data.Entity.Build.Tasks.dll`. Note that this break is because of a toolset (msbuild/VS) change, not because of a .NET Framework change. It will only occur when upgrading developer tools, not when merely upgrading the .NET Framework. + +- [ ] Quirked +- [x] Build-time break + +### Recommended Action +Entity Framework targets files are fixed to work with the new msbuild layout beginning in the .NET Framework 4.6. Upgrading to that version of the Framework will fix this issue. Alternatively, [this](http://stackoverflow.com/a/24249247/131944) workaround can be used to patch the targets files directly. + +### Affected APIs +* Not detectable via API analysis + +### Category +Entity Framework + +[More information](http://stackoverflow.com/questions/20400054/entitydeploysplit-error-microsoft-data-entity-build-tasks-dll-missing/24249247#24249247) + diff --git a/Documentation/breaking-changes/calling-attribute_getcustomattributes-on-an-indexer-property-no-longer-throws-ambiguousmatchexception.md b/Documentation/breaking-changes/calling-attribute_getcustomattributes-on-an-indexer-property-no-longer-throws-ambiguousmatchexception.md new file mode 100644 index 000000000..125615e17 --- /dev/null +++ b/Documentation/breaking-changes/calling-attribute_getcustomattributes-on-an-indexer-property-no-longer-throws-ambiguousmatchexception.md @@ -0,0 +1,40 @@ +## 112: Calling Attribute.GetCustomAttributes on an indexer property no longer throws AmbiguousMatchException if the ambiguity can be resolved by index's type + +### Scope +Edge + +### Version Introduced +4.6 + +### Source Analyzer Status +Available + +### Change Description +Prior to the .NET Framework 4.6, calling `GetCustomAttribute(s)` on an indexer property which differed from another property only by the type of the index would result in an `AmbiguousMatchException`. Beginning in the .NET Framework 4.6, the property's attributes will be correctly returned. + +- [ ] Quirked +- [ ] Build-time break + +### Recommended Action +Be aware that GetCustomAttribute(s) will work more frequently now. If an app was previously relying on the `AmbiguousMatchException`, reflection should now be used to explicitly look for multiple indexers, instead. + +### Affected APIs +* `M:System.Attribute.GetCustomAttribute(System.Reflection.MemberInfo,System.Type)` +* `M:System.Attribute.GetCustomAttribute(System.Reflection.MemberInfo,System.Type,System.Boolean)` +* `M:System.Attribute.GetCustomAttributes(System.Reflection.MemberInfo)` +* `M:System.Attribute.GetCustomAttributes(System.Reflection.MemberInfo,System.Boolean)` +* `M:System.Attribute.GetCustomAttributes(System.Reflection.MemberInfo,System.Type)` +* `M:System.Attribute.GetCustomAttributes(System.Reflection.MemberInfo,System.Type,System.Boolean)` +* `M:System.Reflection.CustomAttributeExtensions.GetCustomAttribute(System.Reflection.MemberInfo,System.Type)` +* `M:System.Reflection.CustomAttributeExtensions.GetCustomAttribute(System.Reflection.MemberInfo,System.Type,System.Boolean)` +* `M:System.Reflection.CustomAttributeExtensions.GetCustomAttribute``1(System.Reflection.MemberInfo)` +* `M:System.Reflection.CustomAttributeExtensions.GetCustomAttribute``1(System.Reflection.MemberInfo,System.Boolean)` +* `M:System.Reflection.CustomAttributeExtensions.GetCustomAttributes(System.Reflection.MemberInfo)` +* `M:System.Reflection.CustomAttributeExtensions.GetCustomAttributes(System.Reflection.MemberInfo,System.Boolean)` +* `M:System.Reflection.CustomAttributeExtensions.GetCustomAttributes(System.Reflection.MemberInfo,System.Type)` +* `M:System.Reflection.CustomAttributeExtensions.GetCustomAttributes(System.Reflection.MemberInfo,System.Type,System.Boolean)` +* `M:System.Reflection.CustomAttributeExtensions.GetCustomAttributes``1(System.Reflection.MemberInfo)` +* `M:System.Reflection.CustomAttributeExtensions.GetCustomAttributes``1(System.Reflection.MemberInfo,System.Boolean)` + +### Category +Core \ No newline at end of file diff --git a/Documentation/breaking-changes/calling-createdefaultauthorizationcontext-with-a-null-argument-has-changed.md b/Documentation/breaking-changes/calling-createdefaultauthorizationcontext-with-a-null-argument-has-changed.md new file mode 100644 index 000000000..6a8581cef --- /dev/null +++ b/Documentation/breaking-changes/calling-createdefaultauthorizationcontext-with-a-null-argument-has-changed.md @@ -0,0 +1,30 @@ +## 138: Calling CreateDefaultAuthorizationContext with a null argument has changed + +### Scope +Minor + +### Version Introduced +4.6 + +### Source Analyzer Status +Available + +### Change Description +The implementation of the AuthorizationContext returned by a call to the `CreateDefaultAuthorizationContext(IList)` with a null authorizationPolicies argument has changed its implementation in the .NET Framework 4.6. + +- [x] Quirked +- [ ] Build-time break + +### Recommended Action +In rare cases, WCF apps that use custom authentication may see behavioral differences. In such cases, the previous behavior can be restored in either of two ways: + +1. Recompile your app to target an earlier version of the .NET Framework than 4.6. For IIS-hosted services, use the <httpRuntime targetFramework="x.x" /> element to target an earlier version of the .NET Framework. +2. Add the following line to the `` section of your app.config file: `` + +### Affected APIs +* `M:System.IdentityModel.Policy.AuthorizationContext.CreateDefaultAuthorizationContext(System.Collections.Generic.IList{System.IdentityModel.Policy.IAuthorizationPolicy})` + +### Category +Windows Communication Foundation (WCF) + +[More information](https://msdn.microsoft.com/en-us/library/dn833123%28v=vs.110%29.aspx#WCF) diff --git a/Documentation/breaking-changes/calling-datagrid_commitedit-from-a-celleditending-handler-drops-focus.md b/Documentation/breaking-changes/calling-datagrid_commitedit-from-a-celleditending-handler-drops-focus.md new file mode 100644 index 000000000..5ca4258c2 --- /dev/null +++ b/Documentation/breaking-changes/calling-datagrid_commitedit-from-a-celleditending-handler-drops-focus.md @@ -0,0 +1,29 @@ +## 124: Calling DataGrid.CommitEdit from a CellEditEnding handler drops focus + +### Scope +Edge + +### Version Introduced +4.5 + +### Version Reverted +4.5.2 + +### Source Analyzer Status +Available + +### Change Description +Calling DataGrid.CommitEdit from one of the DataGrid's CellEditEnding event handlers causes the DataGrid to lose focus. + +- [ ] Quirked +- [ ] Build-time break + +### Recommended Action +This bug has been fixed in the .NET Framework 4.5.2, so it can be avoided by upgrading the .NET Framework. Alternatively, it can be avoided by explicitly re-selecting the DataGrid after calling CommitEdit. + +### Affected APIs +* `M:System.Windows.Controls.DataGrid.CommitEdit` +* `M:System.Windows.Controls.DataGrid.CommitEdit(System.Windows.Controls.DataGridEditingUnit,System.Boolean)` + +### Category +Windows Presentation Foundation (WPF) \ No newline at end of file diff --git a/Documentation/breaking-changes/calling-items_refresh-on-a-wpf-listbox-or-listview-or-datagrid-with-items-selected-can-cause-duplicate-items-to-appear-in-the-element.md b/Documentation/breaking-changes/calling-items_refresh-on-a-wpf-listbox-or-listview-or-datagrid-with-items-selected-can-cause-duplicate-items-to-appear-in-the-element.md new file mode 100644 index 000000000..ca4ad3bc6 --- /dev/null +++ b/Documentation/breaking-changes/calling-items_refresh-on-a-wpf-listbox-or-listview-or-datagrid-with-items-selected-can-cause-duplicate-items-to-appear-in-the-element.md @@ -0,0 +1,31 @@ +## 104: Calling Items.Refresh on a WPF ListBox, ListView, or DataGrid with items selected can cause duplicate items to appear in the element + +### Scope +Minor + +### Version Introduced +4.5 + +### Version Reverted +4.6 + +### Source Analyzer Status +Available + +### Change Description +In the .NET Framework 4.5, calling ListBox.Items.Refresh from code while items are selected in a ListBox can cause the selected items to be duplicated in the list. A similar issue occurs with ListView and DataGrid. This is fixed in the .NET Framework 4.6. + +- [ ] Quirked +- [ ] Build-time break + +### Recommended Action +This issue may be worked around by programatically unselecting items before Refresh is called and then re-selecting them after the call is completed. Alternatively, this issue has been fixed in the .NET Framework 4.6 and may be addressed by upgrading to that version of the .NET Framework. + +### Affected APIs +* `M:System.Windows.Data.CollectionView.Refresh` + +### Category +Windows Presentation Foundation (WPF) + +[More information](http://connect.microsoft.com/VisualStudio/feedback/details/873075/on-net-4-5-the-selected-items-in-a-wpf-listbox-listview-control-are-incorrect-when-items-refresh-is-called-from-code-behind) + diff --git a/Documentation/breaking-changes/calls-to-claimsidentity-constructors.md b/Documentation/breaking-changes/calls-to-claimsidentity-constructors.md new file mode 100644 index 000000000..5c925a954 --- /dev/null +++ b/Documentation/breaking-changes/calls-to-claimsidentity-constructors.md @@ -0,0 +1,42 @@ +## 164: Calls to ClaimsIdentity constructors + +### Scope +Edge + +### Version Introduced +4.6.2 + +### Source Analyzer Status +Investigating + +### Change Description +Starting with the .NET Framework 4.6.2, there is a change in how `T:System.Security.Claims.ClaimsIdentity` constructors with an `T:System.Security.Principal.IIdentity` parameter set the `P:System.Security.Claims.ClaimsIdentify.Actor` property. If the `T:System.Security.Principal.IIdentity` argument is a `T:System.Security.Claims.ClaimsIdentity` object, and the `P:System.Security.Claims.ClaimsIdentify.Actor` property of that `T:System.Security.Claims.ClaimsIdentity` object is not `null`, the `P:System.Security.Claims.ClaimsIdentify.Actor` property is attached by using the `M:System.Security.Claims.ClaimsIdentity.Clone` method. In the Framework 4.6.1 and earlier versions, the `P:System.Security.Claims.ClaimsIdentify.Actor` property is attached as an existing reference. + +Because of this change, starting with the .NET Framework 4.6.2, the `P:System.Security.Claims.ClaimsIdentify.Actor` property of the new `T:System.Security.Claims.ClaimsIdentity` object is not equal to the `P:System.Security.Claims.ClaimsIdentify.Actor` property of the constructor's `T:System.Security.Principal.IIdentity` argument. In the .NET Framework 4.6.1 and earlier versions, it is equal. + +- [X] Quirked +- [ ] Build-time break + +### Recommended Action +If this behavior is undesirable, you can restore the previous behavior by setting the `Switch.System.Security.ClaimsIdentity.SetActorAsReferenceWhenCopyingClaimsIdentity` switch in your application configuration file to `true`. This requires that you add the following to the `` section of your web.config file: + + ```xml + + + + + + ``` + +### Affected APIs +- `M:System.Security.Claims.ClaimsIdentity.#ctor(System.Security.Principal.IIdentity)` +- `M:System.Security.Claims.ClaimsIdentity.#ctor(System.Security.Principal.IIdentity,System.Collections.Generic.IEnumerable{System.Security.Claims.Claim})` +- `M:System.Security.Claims.ClaimsIdentity.#ctor(System.Security.Principal.IIdentity,System.Collections.Generic.IEnumerable{System.Security.Claims.Claim},System.String,System.String,System.String)` + +### Category +Core + + diff --git a/Documentation/breaking-changes/change-in-behavior-for-task_waitall-methods-with-time-out-arguments.md b/Documentation/breaking-changes/change-in-behavior-for-task_waitall-methods-with-time-out-arguments.md new file mode 100644 index 000000000..a9c1aeffd --- /dev/null +++ b/Documentation/breaking-changes/change-in-behavior-for-task_waitall-methods-with-time-out-arguments.md @@ -0,0 +1,31 @@ +## 26: Change in behavior for Task.WaitAll methods with time-out arguments + +### Scope +Minor + +### Version Introduced +4.5 + +### Source Analyzer Status +Available + +### Change Description +Task.WaitAll behavior was made more consistent in .NET 4.5. + +In the .NET Framework 4, these methods behaved inconsistently. When the time-out expired, if one or more tasks were completed or canceled before the method call, the method threw an AggregateException exception. When the time-out expired, if no tasks were completed or canceled before the method call, but one or more tasks entered these states after the method call, the method returned false.

In the .NET Framework 4.5, these method overloads now return false if any tasks are still running when the time-out interval expired, and they throw an AggregateException exception only if an input task was cancelled (regardless of whether it was before or after the method call) and no other tasks are still running. + +- [ ] Quirked +- [ ] Build-time break + +### Recommended Action +If an AggregateException was being caught as a means of detecting a task that was cancelled prior to the WaitAll call being invoked, that code should instead do the same detection via the IsCanceled property (for example: .Any(t => t.IsCanceled)) since .NET 4.6 will only throw in that case if all awaited tasks are completed prior to the timeout. + +### Affected APIs +* `M:System.Threading.Tasks.Task.WaitAll(System.Threading.Tasks.Task[],System.Int32)` +* `M:System.Threading.Tasks.Task.WaitAll(System.Threading.Tasks.Task[],System.Int32,System.Threading.CancellationToken)` +* `M:System.Threading.Tasks.Task.WaitAll(System.Threading.Tasks.Task[],System.TimeSpan)` + +### Category +Core + +[More information](https://msdn.microsoft.com/en-us/library/hh367887\(v=vs.110\).aspx#core) diff --git a/Documentation/breaking-changes/change-in-behavior-in-data-definition-language-(ddl)-apis.md b/Documentation/breaking-changes/change-in-behavior-in-data-definition-language-(ddl)-apis.md new file mode 100644 index 000000000..562d23d7d --- /dev/null +++ b/Documentation/breaking-changes/change-in-behavior-in-data-definition-language-(ddl)-apis.md @@ -0,0 +1,33 @@ +## 27: Change in behavior in Data Definition Language (DDL) APIs + +### Scope +Minor + +### Version Introduced +4.5 + +### Source Analyzer Status +Available + +### Change Description +The behavior of DDL APIs when AttachDBFilename is specified has changed as follows: +* Connection strings need not specify an Initial Catalog value. Previously, both AttatchDBFilename and Initial Catalog were required. +* If both AttatchDBFilename and Initial Catalog are specified and the given MDF file exists, the ObjectContext.DatabaseExists method returns true. Previously, it returned false. +* If both AttatchDBFilename and Initial Catalog are specified and the given MDF file exists, calling the ObjectContext.DeleteDatabase method deletes the files. +* If ObjectContext.DeleteDatabase is called when the connection string specifies an AttachDBFilename value with an MDF that doesn't exist and an Initial Catalog that doesn't exist, the method throws an InvalidOperationException exception. Previously, it threw a SqlException exception. + +- [ ] Quirked +- [ ] Build-time break + +### Recommended Action +These changes make it easier to build tools and applications that use the DDL APIs. These changes can affect application compatibility in the following scenarios: +- The user writes code that executes a DROP DATABASE command directly instead of calling ObjectContext.DeleteDatabase if ObjectContext.DatabaseExists returns true. This breaks existing code If the database is not attached but the MDF file exists. +- The user writes code that expects the ObjectContext.DeleteDatabase method to throw a SqlException exception rather than an InvalidOperationException exception when the Initial Catalog and MDF file don't exist. + +### Affected APIs +* Not detectable via API analysis + +### Category +Entity Framework + +[More information](https://msdn.microsoft.com/en-us/library/hh367887(v=vs.110).aspx#sql) diff --git a/Documentation/breaking-changes/changes-in-path-normalization.md b/Documentation/breaking-changes/changes-in-path-normalization.md new file mode 100644 index 000000000..ffb05e573 --- /dev/null +++ b/Documentation/breaking-changes/changes-in-path-normalization.md @@ -0,0 +1,64 @@ +## 163: Changes in path normalization + +### Scope +Minor + +### Version Introduced +4.6.2 + +### Source Analyzer Status +Investigating + +### Change Description +Starting with apps that target the .NET Framework 4.6.2, the way in which the runtime normalizes paths has changed. + +Normalizing a path involves modifying the string that identifies a path or file so that it conforms to a valid path on the target operating system. Normalization typically involves: + +- Canonicalizing component and directory separators. +- Applying the current directory to a relative path. +- Evaluating the relative directory (.) or the parent directory (..) in a path. +- Trimming specified characters. + +Starting with apps that target the .NET Framework 4.6.2, the following changes in path normalization are enabled by default: + +- The runtime defers to the operating system's [GetFullPathName](https://msdn.microsoft.com/library/windows/desktop/aa364963(v=vs.85).aspx) function to normalize paths. +- Normalization no longer involves trimming the end of directory segments (such as a space at the end of a directory name). +- Support for device path syntax in full trust, including `\\.\` and, for file I/O APIs in mscorlib.dll, '\\?\'. +- The runtime does not validate device syntax paths. +- The use of device syntax to access alternate data streams is supported. + +These changes improve performance while allowing methods to access previously inaccessible paths. +Apps that target the .NET Framework 4.6.1 and earlier versions but are running under the .NET Framework 4.6.2 or later are unaffected by this change. + +- [X] Quirked +- [ ] Build-time break + +### Recommended Action +Apps that target the .NET Framework 4.6.2 or later can opt out of this change and use legacy normalization by adding the following to the `` section of the application configuration file: + + ```xml + + + + ``` + +Apps that target the .NET Framework 4.6.1 or earlier but are running on the .NET Framework 4.6.2 or later can enable the changes to path normalization by adding the following line to the `` section of the application .configuration file: + + ```xml + + + + ``` + +### Affected APIs +* Not detectable via API analysis + +### Category +Core + + + + diff --git a/Documentation/breaking-changes/changing-the-isenabled-property-of-the-parent-of-a-textblock-control-affects-any-child-controls.md b/Documentation/breaking-changes/changing-the-isenabled-property-of-the-parent-of-a-textblock-control-affects-any-child-controls.md new file mode 100644 index 000000000..2e5c49839 --- /dev/null +++ b/Documentation/breaking-changes/changing-the-isenabled-property-of-the-parent-of-a-textblock-control-affects-any-child-controls.md @@ -0,0 +1,34 @@ +## 161: Changing the IsEnabled property of the parent of a TextBlock control affects any child controls + +### Scope +Minor + +### Version Introduced +4.6.2 + +### Source Analyzer Status +Investigating + +### Change Description +Starting with the .NET Framework 4.6.2, changing the `IsEnabled` property of the parent of a `T:System.Windows.Controls.TextBlock` control affects any child controls (such as hyperlinks and buttons) of the `T:System.Windows.Controls.TextBlock` control. + +In the .NET Framework 4.6.1 and earlier versions, controls inside a `T:System.Windows.Controls.TextBlock` did not always reflect the state of the IsEnabled property of the `T:System.Windows.Controls.TextBlock` parent. + +- [ ] Quirked // Uses some mechanism to turn the feature on or off, usually using runtime targeting, AppContext or config files. Needs to be turned on automatically for some situations. +- [ ] Build-time break // Causes a break if attempted to recompile + +### Recommended Action +None. This change conforms to the expected behavior for controls inside a `T:System.Windows.Controls.TextBlock` control. + +### Affected APIs +- `P:System.Windows.UIElement.IsEnabled` + +### Category +Windows Presentation Foundation (WPF) + + + + diff --git a/Documentation/breaking-changes/clickonce-supports-sha-256-on-4_0-targeted-apps.md b/Documentation/breaking-changes/clickonce-supports-sha-256-on-4_0-targeted-apps.md new file mode 100644 index 000000000..ce380ff58 --- /dev/null +++ b/Documentation/breaking-changes/clickonce-supports-sha-256-on-4_0-targeted-apps.md @@ -0,0 +1,33 @@ +## 79: ClickOnce supports SHA-256 on 4.0-targeted apps + +### Scope +Minor + +### Version Introduced +4.6 + +### Source Analyzer Status +Planned + +### Change Description +Previously, a ClickOnce app with a certificate signed with SHA-256 would require .NET 4.5 or later to be present, even if the app targeted 4.0. Now, 4.0-targeted ClickOnce apps can run on 4.0, even if signed with SHA-256. + +- [ ] Quirked +- [x] Build-time break + +### Recommended Action +This change removes that dependency and allows SHA-256 certificates to be used to sign ClickOnce apps that target .NET Framework 4 and earlier versions. + +### Affected APIs +* Not detectable via API analysis + +### Category +ClickOnce + +[More information](https://msdn.microsoft.com/en-us/library/dn833125(v=vs.110).aspx#ClickOnce) + + + diff --git a/Documentation/breaking-changes/coerceisselectionboxhighlighted.md b/Documentation/breaking-changes/coerceisselectionboxhighlighted.md new file mode 100644 index 000000000..6f3418bb9 --- /dev/null +++ b/Documentation/breaking-changes/coerceisselectionboxhighlighted.md @@ -0,0 +1,35 @@ +## 179: CoerceIsSelectionBoxHighlighted + +### Scope +Minor + +### Version Introduced +4.6 + +### Version Reverted +4.6.2 + +### Source Analyzer Status +Planned + +### Change Description +Certain sequences of actions involving a ComboBox and its data source can result in a `NullReferenceException`. + +- [ ] Quirked +- [ ] Build-time break + +### Recommended Action +If possible, please upgrade to .NET 4.6.2. + +### Affected APIs +* `P:System.Windows.Controls.ComboBox.IsSelectionBoxHighlighted` + +### Category +Windows Presentation Foundation (WPF) + + + + diff --git a/Documentation/breaking-changes/compiler-support-for-type-forwarding-when-multi-targeting-mscorlib.md b/Documentation/breaking-changes/compiler-support-for-type-forwarding-when-multi-targeting-mscorlib.md new file mode 100644 index 000000000..f21c14cb9 --- /dev/null +++ b/Documentation/breaking-changes/compiler-support-for-type-forwarding-when-multi-targeting-mscorlib.md @@ -0,0 +1,27 @@ +## 56: Compiler support for type forwarding when multi-targeting mscorlib + +### Scope +Edge + +### Version Introduced +4.5 + +### Source Analyzer Status +Not planned + +### Change Description +A new CodeDOM feature allows a compiler to compile against the targeted version of mscorlib.dll instead of the .NET Framework 4.5 version of mscorlib.dll. + +- [ ] Quirked +- [ ] Build-time break + +### Recommended Action +This change prevents compiler warnings (and compilation failure in cases where warnings are treated as errors) when CodeDOM finds two definitions for types that have been type-forwarded. This change may have unintended side effects only if different versions of reference assemblies are mixed in a single location. + +### Affected APIs +* Not detectable via API analysis + +### Category +Core + +[More information](https://msdn.microsoft.com/en-us/library/hh367887(v=vs.110).aspx#core) diff --git a/Documentation/breaking-changes/concurrentqueue_trypeek-can-return-an-erroneous-null-via-its-out-parameter.md b/Documentation/breaking-changes/concurrentqueue_trypeek-can-return-an-erroneous-null-via-its-out-parameter.md new file mode 100644 index 000000000..44dc3330d --- /dev/null +++ b/Documentation/breaking-changes/concurrentqueue_trypeek-can-return-an-erroneous-null-via-its-out-parameter.md @@ -0,0 +1,30 @@ +## 95: ConcurrentQueue<T>.TryPeek can return an erroneous null via its out parameter + +### Scope +Major + +### Version Introduced +4.5 + +### Version Reverted +4.5.1 + +### Source Analyzer Status +Available + +### Change Description +In some multi-threaded scenarios, `ConcurentQueue.TryPeek` can return true, but populate the out parameter with a null value (instead of the correct, peeked value). + +- [ ] Quirked +- [ ] Build-time break + +### Recommended Action +This issue is fixed in the .NET Framework 4.5.1. Upgrading to that Framework will solve the issue. + +### Affected APIs +* ``M:System.Collections.Concurrent.ConcurrentQueue`1.TryPeek(`0@)`` + +### Category +Core + +[More information](http://connect.microsoft.com/VisualStudio/feedback/details/762273/bug-in-concurrentqueue-in-net-4-5-trypeek-returns-true-but-no-real-object-returned) diff --git a/Documentation/breaking-changes/connection-pool-blocking-period-for-azure-sql-databases-is-removed.md b/Documentation/breaking-changes/connection-pool-blocking-period-for-azure-sql-databases-is-removed.md new file mode 100644 index 000000000..94aaa49e6 --- /dev/null +++ b/Documentation/breaking-changes/connection-pool-blocking-period-for-azure-sql-databases-is-removed.md @@ -0,0 +1,42 @@ +## 160: Connection pool blocking period for Azure SQL databases is removed + +### Scope +Minor + +### Version Introduced +4.6.2 + +### Source Analyzer Status +Investigating + +### Change Description +Starting with the .NET Framework 4.6.2, for connection open requests to known Azure SQL databases (*.database.windows.net, *.database.chinacloudapi.cn, *.database.usgovcloudapi.net, *.database.cloudapi.de), the connection pool blocking period is removed, and connection open errors are not cached. Attempts to retry connection open requests will occur almost immediately after transient connection errors. This change allows the connection open attempt to be retried immediately for Azure SQL databases, thereby improving the performance of cloud-enabled apps. For all other connection attempts, the connection pool blocking period continues to be enforced. + +In the .NET Framework 4.6.1 and earlier versions, when an app encounters a transient connection failure when connecting to a database, the connection attempt cannot be retried quickly, because the connection pool caches the error and re-throws it for 5 seconds to 1 minute. For more information, see [SQL Server Connection Pooling (ADO.NET)](https://msdn.microsoft.com/en-us/library/8xx3tyca(v=vs.110).aspx). This behavior is problematic for connections to Azure SQL databases, which often fail with transient errors that are typically recovered from within a few seconds. The connection pool blocking feature means that the app cannot connect to the database for an extensive period, even though the database is available and the app needs to render within a few seconds. + +- [ ] Quirked +- [ ] Build-time break + +### Recommended Action +If this behavior is undesirable, the connection pool blocking period can be configured by setting the `P:System.Data.SqlClient.SqlConnectionStringBuilder.PoolBlockingPeriod` property introduced in the .NET Framework 4.6.2. The value of the property is a member of the `T:System.Data.SqlClient.PoolBlockingPeriod` enumeration that can take either of three values: + +- `F:System.Data.SqlClient.PoolBlockingPeriod.AlwaysBlock` +- `F:System.Data.SqlClient.PoolBlockingPeriod.Auto` +- `F.System.Data.SqlClient.PoolBlockingPeriod.NeverBlock` + +The previous behavior can be restored by setting the `P:System.Data.SqlClient.SqlConnectionStringBuilder.PoolBlockingPeriod` property to `F:System.Data.SqlClient.PoolBlockingPeriod.AlwaysBlock`. + +### Affected APIs +- `M:System.Data.Common.DbConnection.OpenAsync` +- `M:System.Data.SqlClient.SqlConnection.Open` +- `M:System.Data.SqlClient.SqlConnection.OpenAsync(System.Threading.CancellationToken)` + +### Category +Data + + + + diff --git a/Documentation/breaking-changes/contentdisposition-datetimes-returns-slightly-different-string.md b/Documentation/breaking-changes/contentdisposition-datetimes-returns-slightly-different-string.md new file mode 100644 index 000000000..48059c151 --- /dev/null +++ b/Documentation/breaking-changes/contentdisposition-datetimes-returns-slightly-different-string.md @@ -0,0 +1,28 @@ +## 78: ContentDisposition DateTimes returns slightly different string + +### Scope +Minor + +### Version Introduced +4.6 + +### Source Analyzer Status +Available + +### Change Description +String representations of ContentDispositions have been updated, beginning in 4.6, to always represent the hour component of a DateTime with two digits. This is to comply with [RFC822](http://www.ietf.org/rfc/rfc0822.txt) and [RFC2822](http://www.ietf.org/rfc/rfc2822.txt). This causes `ContentDisposition.ToString` to return a slightly different string in 4.6 in scenarios where one of the disposition's time elements was before 10:00 AM. Note that ContentDispositions are sometimes serialized via converting them to strings, so any ContentDisposition ToString operations, serialization, or GetHashCode calls should be reviewed. + +- [ ] Quirked +- [ ] Build-time break + +### Recommended Action +Do not expect that string representations of ContentDispositions from different .NET Framework versions will correctly compare to one another. Convert the strings back to ContentDispositions, if possible, before conducting a comparison. + +### Affected APIs +* `M:System.Net.Mime.ContentDisposition.ToString` +* `M:System.Net.Mime.ContentDisposition.GetHashCode` + +### Category +Networking + +[More information](https://msdn.microsoft.com/en-us/library/dn833125(v=vs.110).aspx#Networking) diff --git a/Documentation/breaking-changes/cor_prf_gc_root_handles-are-not-being-enumerated-by-profilers.md b/Documentation/breaking-changes/cor_prf_gc_root_handles-are-not-being-enumerated-by-profilers.md new file mode 100644 index 000000000..d3b82b6b1 --- /dev/null +++ b/Documentation/breaking-changes/cor_prf_gc_root_handles-are-not-being-enumerated-by-profilers.md @@ -0,0 +1,34 @@ +## 117: COR_PRF_GC_ROOT_HANDLEs are not being enumerated by profilers + +### Scope +Minor + +### Version Introduced +4.5.1 + +### Version Reverted +4.6 + +### Source Analyzer Status +Not planned + +### Change Description +In the .NET Framework v4.5.1, the profiling API `RootReferences2()` is incorrectly never returning `COR_PRF_GC_ROOT_HANDLE` (they are returned as `COR_PRF_GC_ROOT_OTHER` instead). This issue is fixed beginning in the .NET Framework 4.6. + +- [ ] Quirked +- [ ] Build-time break + +### Recommended Action +This issue has been fixed in the .NET Framework 4.6 and may be addressed by upgrading to that version of the .NET Framework. + +### Affected APIs +* Not detectable via API analysis + +### Category +Core + + + diff --git a/Documentation/breaking-changes/cspparameters_parentwindowhandle-now-expects-hwnd-value.md b/Documentation/breaking-changes/cspparameters_parentwindowhandle-now-expects-hwnd-value.md new file mode 100644 index 000000000..94adaf7a5 --- /dev/null +++ b/Documentation/breaking-changes/cspparameters_parentwindowhandle-now-expects-hwnd-value.md @@ -0,0 +1,55 @@ +## 178: CspParameters.ParentWindowHandle now expects HWND value + +### Scope +Minor + +### Version Introduced +4.7 + +### Source Analyzer Status +Investigating + +### Change Description +The `CspParameters.ParentWindowHandle` value, introduced in .NET Framework 2.0, allows an application to register a parent window handle value such +that any UI required to access the key (such as a PIN prompt or consent dialog) opens as a modal child to the specified window. + +Starting with apps that target the .NET Framework 4.7, a Windows Forms application can set the CspParameters.ParentWindowHandle property with code like the following: + +```C# +cspParameters.ParentWindowHandle = form.Handle; +``` + +In previous versions of the .NET Framework, the value was expected to be an IntPtr representing a location in memory where the +[HWND](https://msdn.microsoft.com/en-us/library/windows/desktop/aa383751(v=vs.85).aspx#HWND) value resided. +Setting the property to form.Handle on Windows 7 and earlier versions had no effect, but on Windows 8 and later versions, it results in a �CryptographicException: The parameter is incorrect.� + +- [X] Quirked +- [ ] Build-time break + +### Recommended Action +Applications targeting .NET 4.7 or higher wishing to register a parent window relationship are encouraged to use the simplified form: + +```C# +cspParameters.ParentWindowHandle = form.Handle; +``` + +Users who had identified that the correct value to pass was the address of a memory location which held the value `form.Handle` can opt out of the +behavior change by setting the AppContext switch `Switch.System.Security.Cryptography.DoNotAddrOfCspParentWindowHandle` to `true`. + +1. By programmatically setting compat switches on the AppContext, as explained [here](http://blogs.msdn.com/b/dotnet/archive/2015/04/29/net-announcements-at-build-2015.aspx#dotnet46) +2. By adding the following line to the `` section of the app.config file: + +```xml + + + +``` + +Conversely, users who wish to opt in to the new behavior on the .NET Framework 4.7 runtime when the application loads under older .NET Framework versions +can set the AppContext switch to `false`. + +### Affected APIs +* `P:System.Security.Cryptography.CspParameters.ParentWindowHandle` + +### Category +Security diff --git a/Documentation/breaking-changes/currentculture-flows-across-tasks.md b/Documentation/breaking-changes/currentculture-flows-across-tasks.md new file mode 100644 index 000000000..e5278ba9d --- /dev/null +++ b/Documentation/breaking-changes/currentculture-flows-across-tasks.md @@ -0,0 +1,41 @@ +## 146: CurrentCulture and CurrentUICulture flow across tasks + +### Scope +Minor + +### Version Introduced +4.6 + +### Version Reverted +4.6.2 + +### Source Analyzer Status +Planned + +### Change Description +Beginning in the .NET Framework 4.6, [CurrentCulture](https://msdn.microsoft.com/en-us/library/system.globalization.cultureinfo.currentculture%28v=vs.110%29.aspx) and [CurrentUICulture](https://msdn.microsoft.com/en-us/library/system.globalization.cultureinfo.currentuiculture%28v=vs.110%29.aspx) are stored in the thread's [ExecutionContext](https://msdn.microsoft.com/en-us/library/system.threading.executioncontext%28v=vs.110%29.aspx), which flows across asynchronous operations. + +This means that changes to CurrentCulture or CurrentUICulture will be reflected in tasks which are later run asynchronously. This is different from the behavior of previous .NET Framework versions (which would reset CurrentCulture and CurrentUICulture in all asynchronous tasks). + +- [x] Quirked +- [ ] Build-time break + +### Recommended Action +Apps affected by this change may work around it by explicitly setting the desired CurrentCulture or CurrentUICulture as the first operation in an async Task. Alternatively, the old behavior (of not flowing CurrentCulture/CurrentUICulture) may be opted into by setting the following compatibility switch: +```C# +AppContext.SetSwitch("Switch.System.Globalization.NoAsyncCurrentCulture", true); +``` + +This issue has been fixed by WPF in .NET Framework 4.6.2. It has also been fixed in .NET Frameworks 4.6, 4.6.1 through [KB 3139549](https://support.microsoft.com/en-us/kb/3139549). +Applications targeting .NET 4.6 or later will automatically get the right behavior in WPF applications - CurrentCulture/CurrentUICulture would be preserved across Dispatcher operations. + +### Affected APIs +* `M:System.Globalization.CultureInfo.set_CurrentCulture(System.Globalization.CultureInfo)` +* `M:System.Threading.Thread.set_CurrentCulture(System.Globalization.CultureInfo)` +* `M:System.Globalization.CultureInfo.set_CurrentUICulture(System.Globalization.CultureInfo)` +* `M:System.Threading.Thread.set_CurrentUICulture(System.Globalization.CultureInfo)` + +### Category +Core + +[More information](https://msdn.microsoft.com/en-us/library/system.globalization.cultureinfo%28v=vs.110%29.aspx#Async) diff --git a/Documentation/breaking-changes/currentculture-not-preserved-across-wpf-dispatcher-operations.md b/Documentation/breaking-changes/currentculture-not-preserved-across-wpf-dispatcher-operations.md new file mode 100644 index 000000000..2999059db --- /dev/null +++ b/Documentation/breaking-changes/currentculture-not-preserved-across-wpf-dispatcher-operations.md @@ -0,0 +1,47 @@ +## 145: CurrentCulture is not preserved across WPF Dispatcher operations + +### Scope +Minor + +### Version Introduced +4.6 + +### Version Reverted +4.6.2 + +### Source Analyzer Status +Planned + +### Change Description +Beginning in the .NET Framework 4.6, changes to CurrentCulture or CurrentUICulture made within a [Dispatcher](https://msdn.microsoft.com/en-us/library/system.windows.threading.dispatcher%28v=vs.110%29.aspx) will be lost at the end of that dispatcher operation. Similarly, changes to CurrentCulture or CurrentUICulture made outside of a Dispatcher operation may not be reflected when that operation executes. + +Practically speaking, this means that CurrentCulture and CurrentUICulture changes may not flow between WPF UI callbacks and other code in a WPF application. + +This is due to a change in [ExecutionContext](https://msdn.microsoft.com/en-us/library/system.threading.executioncontext%28v=vs.110%29.aspx) that causes CurrentCulture and CurrentUICulture to be stored in the execution context beginning with apps targeting the .NET Framework 4.6. WPF dispatcher operations store the execution context used to begin the operation and restore the previous context when the operation is completed. Because CurrentCulture and CurrentUICulture are now part of that context, changes to them within a dispatcher operation are not persisted outside of the operation. + +- [x] Quirked +- [ ] Build-time break + +### Recommended Action +Apps affected by this change may work around it by storing the desired CurrentCulture or CurrentUICulture in a field and checking in all Dispatcher operation bodies (including UI event callback handlers) that the correct CurrentCulture and CurrentUICulture are set. Alternatively, because the ExecutionContext change underlying this WPF change only affects apps targeting the .NET Framework 4.6 or newer, this break can be avoided by targeting the .NET Framework 4.5.2. + +Apps that target .NET Framework 4.6 or later can also work around this by setting the following compatibility switch: + + ``` + AppContext.SetSwitch("Switch.System.Globalization.NoAsyncCurrentCulture", true); + ``` + +This issue has been fixed by WPF in .NET Framework 4.6.2. It has also been fixed in .NET Frameworks 4.6, 4.6.1 through [KB 3139549](https://support.microsoft.com/en-us/kb/3139549). +Applications targeting .NET 4.6 or later will automatically get the right behavior in WPF applications - CurrentCulture/CurrentUICulture would be preserved across Dispatcher operations. + +### Affected APIs +* Not detectable via API analysis + +### Category +Windows Presentation Foundation (WPF) + + diff --git a/Documentation/breaking-changes/datagridcellspanel_bringintoview-throws-argumentoutofrangeexception.md b/Documentation/breaking-changes/datagridcellspanel_bringintoview-throws-argumentoutofrangeexception.md new file mode 100644 index 000000000..b93ba1411 --- /dev/null +++ b/Documentation/breaking-changes/datagridcellspanel_bringintoview-throws-argumentoutofrangeexception.md @@ -0,0 +1,37 @@ +## 151: DataGridCellsPanel.BringIndexIntoView throws ArgumentOutOfRangeException + +### Scope +Edge + +### Version Introduced +4.6.2 + +### Version Reverted +4.7 + +### Source Analyzer Status +NotPlanned + +### Change Description +`M:System.Windows.Controls.DataGrid.ScrollIntoView` will work asynchronously when column virtualization is enabled but the column widths +have not yet been determined. If columns are removed before the asynchronous work happens, an `ArgumentOutOfRangeException` can occur. + +- [ ] Quirked +- [ ] Build-time break + +### Recommended Action +Any one of the following: +1. Upgrade to .NET 4.7. +2. Install the latest servicing patch for .NET 4.6.2. +3. Avoid removing columns until the asynchronous response to `M:System.Windows.Controls.DataGrid.ScrollIntoView` has completed. + +### Affected APIs +- `M:System.Windows.Controls.DataGrid.ScrollIntoView(System.Object)` +- `M:System.Windows.Controls.DataGrid.ScrollIntoView(System.Object,System.Windows.Controls.DataGridColumn)` + +### Category +Windows Presentation Foundation (WPF) + + diff --git a/Documentation/breaking-changes/dataobject_getdata-now-retrieves-data-as-utf-8.md b/Documentation/breaking-changes/dataobject_getdata-now-retrieves-data-as-utf-8.md new file mode 100644 index 000000000..cc0c3e31f --- /dev/null +++ b/Documentation/breaking-changes/dataobject_getdata-now-retrieves-data-as-utf-8.md @@ -0,0 +1,38 @@ +## 73: DataObject.GetData now retrieves data as UTF-8 + +### Scope +Edge + +### Version Introduced +4.5.2 + +### Source Analyzer Status +Available + +### Change Description +For apps that target the .NET Framework 4 or that run on the .NET Framework 4.5.1 or earlier versions, DataObject.GetData retrieves HTML-formatted data as an ASCII string. As a result, non-ASCII characters (characters whose ASCII codes are greater than 0x7F) are represented by two random characters. + +For apps that target the .NET Framework 4.5 or later and run on the .NET Framework 4.5.2, `DataObject.GetData` retrieves HTML-formatted data as UTF-8, which represents characters greater than 0x7F correctly. + +- [x] Quirked +- [ ] Build-time break + +### Recommended Action +If you implemented a workaround for the encoding problem with HTML-formatted strings (for example, by explicitly encoding the HTML string retrieved from the Clipboard by passing it to the UTF8Encoding.GetString method) and you're retargeting your app from version 4 to 4.5, that workaround should be removed. + +If the old behavior is needed for some reason, the app can target the .NET Framework 4.0 to get that behavior. + +### Affected APIs +* `M:System.Windows.DataObject.GetData(System.String)` +* `M:System.Windows.DataObject.GetData(System.Type)` +* `M:System.Windows.DataObject.GetData(System.String,System.Boolean)` + +### Category +Windows Forms + +[More information](https://msdn.microsoft.com/en-us/library/dn720772(v=vs.110).aspx#WinForms) + + diff --git a/Documentation/breaking-changes/dbparameter_precision-and-dbparameter_scale-are-now-public-virtual-members.md b/Documentation/breaking-changes/dbparameter_precision-and-dbparameter_scale-are-now-public-virtual-members.md new file mode 100644 index 000000000..2423a68c9 --- /dev/null +++ b/Documentation/breaking-changes/dbparameter_precision-and-dbparameter_scale-are-now-public-virtual-members.md @@ -0,0 +1,29 @@ +## 68: DbParameter.Precision and DbParameter.Scale are now public virtual members + +### Scope +Minor + +### Version Introduced +4.5.1 + +### Source Analyzer Status +Available + +### Change Description + DbParameter.Precision and DbParameter.Scale are implemented as public virtual properties. They replace the corresponding explicit interface implementations, DbParameter.IDbDataParameter.Precision and DbParameter.IDbDataParameter.Scale. + +- [ ] Quirked +- [x] Build-time break + +### Recommended Action +When re-building an ADO.NET database provider, these differences will require the 'override' keyword to be applied to the Precision and Scale properties. This is only needed when re-building the components; exisiting binaries will continue to work. + +### Affected APIs +* `P:System.Data.Common.DbParameter.Precision` +* `P:System.Data.Common.DbParameter.Scale` + +### Category +ADO.NET + +[More information](https://msdn.microsoft.com/en-us/library/dn458356(v=vs.110).aspx#ADO) + diff --git a/Documentation/breaking-changes/deserialization-of-objects-across-appdomains-can-fail.md b/Documentation/breaking-changes/deserialization-of-objects-across-appdomains-can-fail.md new file mode 100644 index 000000000..a5da4b747 --- /dev/null +++ b/Documentation/breaking-changes/deserialization-of-objects-across-appdomains-can-fail.md @@ -0,0 +1,27 @@ +## 67: Deserialization of objects across appdomains can fail + +### Scope +Edge + +### Version Introduced +4.5.1 + +### Source Analyzer Status +Not planned + +### Change Description +In some cases, when an app uses two or more app domains with different application bases, trying to deserialize objects in the logical call context across app domains throws an exception. + +- [ ] Quirked +- [ ] Build-time break + +### Recommended Action +See [Mitigation: Deserialization of Objects Across App Domains](https://msdn.microsoft.com/en-us/library/dn458353(v=vs.110).aspx) + +### Affected APIs +* Not detectable via API analysis + +### Category +Core + +[More information](https://msdn.microsoft.com/en-us/library/dn458360(v=vs.110).aspx) diff --git a/Documentation/breaking-changes/different-exception-handling-for-objectcontext_createdatabase-and-dbproviderservices_createdatabase-methods.md b/Documentation/breaking-changes/different-exception-handling-for-objectcontext_createdatabase-and-dbproviderservices_createdatabase-methods.md new file mode 100644 index 000000000..3e98c20bd --- /dev/null +++ b/Documentation/breaking-changes/different-exception-handling-for-objectcontext_createdatabase-and-dbproviderservices_createdatabase-methods.md @@ -0,0 +1,28 @@ +## 40: Different exception handling for ObjectContext.CreateDatabase and DbProviderServices.CreateDatabase methods + +### Scope +Minor + +### Version Introduced +4.5 + +### Source Analyzer Status +Available + +### Change Description +Beginning in .NET 4.5, if database creation fails, `CreateDatabase` methods will attempt to drop the empty database. If that operation succeeds, the original `SQLException` will be propagated (instead of the `InvalidOperationException` that was always thrown in .NET 4.0) + +- [ ] Quirked +- [ ] Build-time break + +### Recommended Action +When catching an InvalidOperationException while executing ObjectContext.CreateDatabase or DbProviderServices.CreateDatabase, SQLExceptions should now also be caught. + +### Affected APIs +* `M:System.Data.Objects.ObjectContext.CreateDatabase` +* `M:System.Data.Common.DbProviderServices.CreateDatabase(System.Data.Common.DbConnection,System.Nullable{System.Int32},System.Data.Metadata.Edm.StoreItemCollection)` + +### Category +Entity Framework + +[More information](https://msdn.microsoft.com/en-us/library/hh367887(v=vs.110).aspx#sql) diff --git a/Documentation/breaking-changes/ef-no-longer-throws-for-queryviews-with-specific-characteristics.md b/Documentation/breaking-changes/ef-no-longer-throws-for-queryviews-with-specific-characteristics.md new file mode 100644 index 000000000..bd95aa9d9 --- /dev/null +++ b/Documentation/breaking-changes/ef-no-longer-throws-for-queryviews-with-specific-characteristics.md @@ -0,0 +1,31 @@ +## 69: EF no longer throws for QueryViews with specific characteristics + +### Scope +Edge + +### Version Introduced +4.5.2 + +### Source Analyzer Status +Not planned + +### Change Description +Entity Framework no longer throws a StackOverflowException exception when an app executes a query that involves a QueryView with a 0..1 navigation property that attempts to include the related entities as part of the query. For example, by calling `.Include(e => e.RelatedNavProp)`. + +- [ ] Quirked +- [ ] Build-time break + +### Recommended Action +This change only affects code that uses QueryViews with 1-0..1 relationships when running queries that call .Include. It improves reliability and should be transparent to almost all apps. However, if it causes unexpected behavior, you can disable it by adding the following entry to the `` section of the app's configuration file: + +```xml + +``` + +### Affected APIs +* Not detectable via API analysis + +### Category +Entity Framework + +[More information](https://msdn.microsoft.com/en-us/library/dn720774(v=vs.110).aspx) diff --git a/Documentation/breaking-changes/ef-version-must-match-netfx-version.md b/Documentation/breaking-changes/ef-version-must-match-netfx-version.md new file mode 100644 index 000000000..d42107102 --- /dev/null +++ b/Documentation/breaking-changes/ef-version-must-match-netfx-version.md @@ -0,0 +1,27 @@ +## 25: EF version must match NetFX version + +### Scope +Major + +### Version Introduced +4.5 + +### Source Analyzer Status +Planned + +### Change Description +The entity framework version should be matched with the .NET framework version. Entity Framework 5 is recommended for .NET 4.5. There are some known issues with EF 4.x in a .NET 4.5 project around `System.ComponentModel.DataAnnotations`. In .NET 4.5, these were moved to a different assembly, so there are issues determining which annotations to use. + +- [ ] Quirked +- [x] Build-time break + +### Recommended Action +Upgrade to EF 5 for .NET 4.5 + +### Affected APIs +* Not detectable via API analysis + +### Category +Entity Framework + +[More information](http://forums.asp.net/t/1779042.aspx) diff --git a/Documentation/breaking-changes/encoderparameter-ctor-is-obsolete.md b/Documentation/breaking-changes/encoderparameter-ctor-is-obsolete.md new file mode 100644 index 000000000..f4f55eecb --- /dev/null +++ b/Documentation/breaking-changes/encoderparameter-ctor-is-obsolete.md @@ -0,0 +1,27 @@ +## 24: EncoderParameter ctor is obsolete + +### Scope +Minor + +### Version Introduced +4.5 + +### Source Analyzer Status +Available + +### Change Description +The `EncoderParameter.EncoderParameter(Encoder, Int32, Int32, Int32)` constructor is obsolete now and will introduce build warnings if used. + +- [ ] Quirked +- [x] Build-time break + +### Recommended Action +Although the `EncoderParameter.EncoderParameter(Encoder, Int32, Int32, Int32)` constructor will continue to work, the following constructor should be used instead to avoid the obsolete build warning when re-compiling code with .NET 4.5 tools: [EncoderParameter.EncoderParameter(Encoder, Int32, EncoderParameterValueType, IntPtr)](https://msdn.microsoft.com/en-us/library/hh875096(v=vs.110).aspx). + +### Affected APIs +* `M:System.Drawing.Imaging.EncoderParameter.#ctor(System.Drawing.Imaging.Encoder,System.Int32,System.Int32,System.Int32,System.Int32)` + +### Category +Windows Forms + +[More information](https://msdn.microsoft.com/en-us/library/hh367887(v=vs.110).aspx#winForms) diff --git a/Documentation/breaking-changes/entityframework-6_0-loads-very-slowly-in-apps-launched-from-visual-studio.md b/Documentation/breaking-changes/entityframework-6_0-loads-very-slowly-in-apps-launched-from-visual-studio.md new file mode 100644 index 000000000..136482d9d --- /dev/null +++ b/Documentation/breaking-changes/entityframework-6_0-loads-very-slowly-in-apps-launched-from-visual-studio.md @@ -0,0 +1,27 @@ +## 91: EntityFramework 6.0 loads very slowly in apps launched from Visual Studio + +### Scope +Edge + +### Version Introduced +4.5 + +### Source Analyzer Status +Available + +### Change Description +Launching an app from Visual Studio 2013 that uses EntityFramework 6.0 can be very slow. + +- [ ] Quirked +- [ ] Build-time break + +### Recommended Action +This issue is fixed in EntityFramework 6.0.2. Please update EntityFramework to avoid the performance issue. + +### Affected APIs +* Not detectable via API analysis + +### Category +Entity Framework + +[More information](https://entityframework.codeplex.com/workitem/1749) diff --git a/Documentation/breaking-changes/enumerable_empty-always-returns-cached-instance.md b/Documentation/breaking-changes/enumerable_empty-always-returns-cached-instance.md new file mode 100644 index 000000000..7695a6cf0 --- /dev/null +++ b/Documentation/breaking-changes/enumerable_empty-always-returns-cached-instance.md @@ -0,0 +1,29 @@ +## 42: Enumerable.Empty<TResult> always returns cached instance + +### Scope +Edge + +### Version Introduced +4.5 + +### Source Analyzer Status +Available + +### Change Description +Beginning in .NET 4.5, `Enumerable.Empty` always returns a cached internal instance `IEnumerable`. + +Previously, `Enumerable.Empty` would cache an empty `IEnumerable` at the time the API was called, meaning that in some conditions in which `Enumerable.Empty` was called rapidly and concurrently, different instances of the type could be returned for different calls to the API. + +- [ ] Quirked +- [ ] Build-time break + +### Recommended Action +Because the previous behavior was non-deterministic, code is unlikely to depend on it. However, in the unlikely case that empty enumerables are being compared and expected to sometimes be unequal, explicit empty arrays should be created (`new T[0]`) instead of using `Enumerable.Empty`. + +### Affected APIs +* ```M:System.Linq.Enumerable.Empty``1``` + +### Category +LINQ + +[More information](https://msdn.microsoft.com/en-us/library/hh367887(v=vs.110).aspx#sql) diff --git a/Documentation/breaking-changes/error-codes-for-maxrequestlength-or-maxreceivedmessagesize-are-different.md b/Documentation/breaking-changes/error-codes-for-maxrequestlength-or-maxreceivedmessagesize-are-different.md new file mode 100644 index 000000000..d0765e57d --- /dev/null +++ b/Documentation/breaking-changes/error-codes-for-maxrequestlength-or-maxreceivedmessagesize-are-different.md @@ -0,0 +1,31 @@ +## 45: Error codes for maxRequestLength or maxReceivedMessageSize are different + +### Scope +Edge + +### Version Introduced +4.5 + +### Source Analyzer Status +Not planned + +### Change Description +Messages in WCF web services hosted in Internet Information Services (IIS) or ASP.NET Development Server that exceed maxRequestLength (in ASP.NET) or maxReceivedMessageSize (in WCF) have different error code + +The HTTP status code has changed from 400 (Bad Request) to 413 (Request Entity Too Large), and messages that exceed either the maxRequestLength or the maxReceivedMessageSize setting throw a ProtocolException exception. This includes cases in which the transfer mode is Streamed. + +- [ ] Quirked +- [ ] Build-time break + +### Recommended Action +This change facilitates debugging in cases where the message length exceeds the limits allowed by ASP.NET or WCF. + +You must modify any code that performs processing based on an HTTP 400 status code. + +### Affected APIs +* Not detectable via API analysis + +### Category +Windows Communication Foundation (WCF) + +[More information](https://msdn.microsoft.com/en-us/library/hh367887(v=vs.110).aspx#wcf) diff --git a/Documentation/breaking-changes/etw-eventlisteners-do-not-capture-events-from-providers-with-explicit-keywords.md b/Documentation/breaking-changes/etw-eventlisteners-do-not-capture-events-from-providers-with-explicit-keywords.md new file mode 100644 index 000000000..2525c22f5 --- /dev/null +++ b/Documentation/breaking-changes/etw-eventlisteners-do-not-capture-events-from-providers-with-explicit-keywords.md @@ -0,0 +1,32 @@ +## 105: ETW EventListeners do not capture events from providers with explicit keywords (like the TPL provider) + +### Scope +Edge + +### Version Introduced +4.5 + +### Version Reverted +4.6 + +### Source Analyzer Status +Available + +### Change Description +ETW EventListeners with a blank keyword mask do not properly capture events from providers with explicit keywords. In the .NET Framework 4.5, the TPL provider began providing explicit keywords and triggered this issue. In the .NET Framework 4.6, EventListeners have been updated to no longer have this issue. + +- [ ] Quirked +- [ ] Build-time break + +### Recommended Action +To work around this problem, replace calls to EnableEvents(eventSource, level) with calls to the EnableEvents overload that explicitly specifies the "any keywords" mask to use: `EnableEvents(eventSource, level, unchecked((EventKeywords)0xFFFFffffFFFFffff))`. + +Alternatively, this issue has been fixed in the .NET Framework 4.6 and may be addressed by upgrading to that version of the .NET Framework. + +### Affected APIs +* `M:System.Diagnostics.Tracing.EventListener.EnableEvents(System.Diagnostics.Tracing.EventSource,System.Diagnostics.Tracing.EventLevel)` + +### Category +Core + +[More information](http://connect.microsoft.com/VisualStudio/feedback/details/816989/tpl-etw-events-for-task-not-captured-by-eventlistener-anymore) diff --git a/Documentation/breaking-changes/eventlistener-truncates-strings-with-embedded-nulls.md b/Documentation/breaking-changes/eventlistener-truncates-strings-with-embedded-nulls.md new file mode 100644 index 000000000..7c8c2b185 --- /dev/null +++ b/Documentation/breaking-changes/eventlistener-truncates-strings-with-embedded-nulls.md @@ -0,0 +1,30 @@ +## 46: EventListener truncates strings with embedded nulls + +### Scope +Edge + +### Version Introduced +4.5.1 + +### Source Analyzer Status +Available + +### Change Description +EventListener truncates strings with embedded nulls. Null characters are not supported by the EventSource class. The change only affects apps that use EventListener to read EventSource data in process and that use null characters as delimiters. + +- [ ] Quirked +- [ ] Build-time break + +### Recommended Action +EventSource data should be updated, if possible, to not use embedded null characters. + +### Affected APIs +* `M:System.Diagnostics.Tracing.EventListener.#ctor` +* `M:System.Diagnostics.Tracing.EventListener.EnableEvents(System.Diagnostics.Tracing.EventSource,System.Diagnostics.Tracing.EventLevel)` +* `M:System.Diagnostics.Tracing.EventListener.EnableEvents(System.Diagnostics.Tracing.EventSource,System.Diagnostics.Tracing.EventLevel,System.Diagnostics.Tracing.EventKeywords)` +* `M:System.Diagnostics.Tracing.EventListener.EnableEvents(System.Diagnostics.Tracing.EventSource,System.Diagnostics.Tracing.EventLevel,System.Diagnostics.Tracing.EventKeywords,System.Collections.Generic.IDictionary{System.String,System.String})` + +### Category +Core + +[More information](https://msdn.microsoft.com/en-us/library/dn458360%28v=vs.110%29.aspx#Core) diff --git a/Documentation/breaking-changes/eventsource_writeevent-impls-must-pass-writeevent-the-same-parameters-that-it-received-(plus-id).md b/Documentation/breaking-changes/eventsource_writeevent-impls-must-pass-writeevent-the-same-parameters-that-it-received-(plus-id).md new file mode 100644 index 000000000..7b23c1fe5 --- /dev/null +++ b/Documentation/breaking-changes/eventsource_writeevent-impls-must-pass-writeevent-the-same-parameters-that-it-received-(plus-id).md @@ -0,0 +1,27 @@ +## 31: EventSource.WriteEvent impls must pass WriteEvent the same parameters that it received (plus ID) + +### Scope +Minor + +### Version Introduced +4.5.1 + +### Source Analyzer Status +Available + +### Change Description +The runtime now enforces the contract that specifies the following: A class derived from EventSource that defines an ETW event method must call the base class EventSource.WriteEvent method with the event ID followed by the same arguments that the ETW event method was passed. + +- [ ] Quirked +- [ ] Build-time break + +### Recommended Action +An IndexOutOfRangeException exception is thrown if an EventListener reads EventSource data in process for an event source that violates this contract. + +### Affected APIs +* Not detectable via API analysis + +### Category +Core + +[More information](https://msdn.microsoft.com/en-us/library/dn458360(v=vs.110).aspx) diff --git a/Documentation/breaking-changes/exception-message-has-changed-for-failed-datacontract-serialization-in-case-of-an-unknown-type.md b/Documentation/breaking-changes/exception-message-has-changed-for-failed-datacontract-serialization-in-case-of-an-unknown-type.md new file mode 100644 index 000000000..4f3110ad1 --- /dev/null +++ b/Documentation/breaking-changes/exception-message-has-changed-for-failed-datacontract-serialization-in-case-of-an-unknown-type.md @@ -0,0 +1,50 @@ +## 106: Exception message has changed for failed DataContract serialization in case of an unknown type + +### Scope +Edge + +### Version Introduced +4.6 + +### Source Analyzer Status +Planned + +### Change Description +Beginning in the .NET Framework 4.6, the exception message given if a DataContractSerializer or DataContractJsonSerializer fails to serialize or deserialize due to missing 'known types' has been clarified. + +- [ ] Quirked +- [ ] Build-time break + +### Recommended Action +Apps should not depend on specific exception messages. If an app depending on this message, please either update it to expect the new message or (preferably) change it to depend only on the exception type + +### Affected APIs +* `M:System.Runtime.Serialization.Json.DataContractJsonSerializer.#ctor(System.Type)` +* `M:System.Runtime.Serialization.Json.DataContractJsonSerializer.#ctor(System.Type,System.Collections.Generic.IEnumerable{System.Type})` +* `M:System.Runtime.Serialization.Json.DataContractJsonSerializer.#ctor(System.Type,System.Runtime.Serialization.Json.DataContractJsonSerializerSettings)` +* `M:System.Runtime.Serialization.Json.DataContractJsonSerializer.#ctor(System.Type,System.String)` +* `M:System.Runtime.Serialization.Json.DataContractJsonSerializer.#ctor(System.Type,System.String,System.Collections.Generic.IEnumerable{System.Type})` +* `M:System.Runtime.Serialization.Json.DataContractJsonSerializer.#ctor(System.Type,System.Xml.XmlDictionaryString)` +* `M:System.Runtime.Serialization.Json.DataContractJsonSerializer.#ctor(System.Type,System.Xml.XmlDictionaryString,System.Collections.Generic.IEnumerable{System.Type})` +* `M:System.Runtime.Serialization.Json.DataContractJsonSerializer.#ctor(System.Type,System.Collections.Generic.IEnumerable{System.Type},System.Int32,System.Boolean,System.Runtime.Serialization.IDataContractSurrogate,System.Boolean)` +* `M:System.Runtime.Serialization.Json.DataContractJsonSerializer.#ctor(System.Type,System.String,System.Collections.Generic.IEnumerable{System.Type},System.Int32,System.Boolean,System.Runtime.Serialization.IDataContractSurrogate,System.Boolean)` +* `M:System.Runtime.Serialization.Json.DataContractJsonSerializer.#ctor(System.Type,System.Xml.XmlDictionaryString,System.Collections.Generic.IEnumerable{System.Type},System.Int32,System.Boolean,System.Runtime.Serialization.IDataContractSurrogate,System.Boolean)` +* `M:System.Runtime.Serialization.DataContractSerializer.#ctor(System.Type)` +* `M:System.Runtime.Serialization.DataContractSerializer.#ctor(System.Type,System.Runtime.Serialization.DataContractSerializerSettings)` +* `M:System.Runtime.Serialization.DataContractSerializer.#ctor(System.Type,System.Collections.Generic.IEnumerable{System.Type})` +* `M:System.Runtime.Serialization.DataContractSerializer.#ctor(System.Type,System.String,System.String)` +* `M:System.Runtime.Serialization.DataContractSerializer.#ctor(System.Type,System.String,System.String,System.Collections.Generic.IEnumerable{System.Type})` +* `M:System.Runtime.Serialization.DataContractSerializer.#ctor(System.Type,System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString)` +* `M:System.Runtime.Serialization.DataContractSerializer.#ctor(System.Type,System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString,System.Collections.Generic.IEnumerable{System.Type})` +* `M:System.Runtime.Serialization.DataContractSerializer.#ctor(System.Type,System.Collections.Generic.IEnumerable{System.Type},System.Int32,System.Boolean,System.Boolean,System.Runtime.Serialization.IDataContractSurrogate)` +* `M:System.Runtime.Serialization.DataContractSerializer.#ctor(System.Type,System.Collections.Generic.IEnumerable{System.Type},System.Int32,System.Boolean,System.Boolean,System.Runtime.Serialization.IDataContractSurrogate,System.Runtime.Serialization.DataContractResolver)` +* `M:System.Runtime.Serialization.DataContractSerializer.#ctor(System.Type,System.String,System.String,System.Collections.Generic.IEnumerable{System.Type},System.Int32,System.Boolean,System.Boolean,System.Runtime.Serialization.IDataContractSurrogate)` +* `M:System.Runtime.Serialization.DataContractSerializer.#ctor(System.Type,System.String,System.String,System.Collections.Generic.IEnumerable{System.Type},System.Int32,System.Boolean,System.Boolean,System.Runtime.Serialization.IDataContractSurrogate,System.Runtime.Serialization.DataContractResolver)` +* `M:System.Runtime.Serialization.DataContractSerializer.#ctor(System.Type,System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString,System.Collections.Generic.IEnumerable{System.Type},System.Int32,System.Boolean,System.Boolean,System.Runtime.Serialization.IDataContractSurrogate)` +* `M:System.Runtime.Serialization.DataContractSerializer.#ctor(System.Type,System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString,System.Collections.Generic.IEnumerable{System.Type},System.Int32,System.Boolean,System.Boolean,System.Runtime.Serialization.IDataContractSurrogate,System.Runtime.Serialization.DataContractResolver)` + +### Category +Serialization + +[More information](http://connect.microsoft.com/VisualStudio/feedback/details/806395/misleading-exception-with-datacontractjsonserializer) + diff --git a/Documentation/breaking-changes/exceptions-during-unobserved-processing-in-system_threading_tasks_task-no-longer-propagate-on-finalizer-thread.md b/Documentation/breaking-changes/exceptions-during-unobserved-processing-in-system_threading_tasks_task-no-longer-propagate-on-finalizer-thread.md new file mode 100644 index 000000000..4c0c7653d --- /dev/null +++ b/Documentation/breaking-changes/exceptions-during-unobserved-processing-in-system_threading_tasks_task-no-longer-propagate-on-finalizer-thread.md @@ -0,0 +1,36 @@ +## 55: Exceptions during unobserved processing in System.Threading.Tasks.Task no longer propagate on finalizer thread + +### Scope +Edge + +### Version Introduced +4.5 + +### Source Analyzer Status +Planned + +### Change Description +Because the System.Threading.Tasks.Task class represents an asynchronous operation, it catches all non-severe exceptions that occur during asynchronous processing. In the .NET Framework 4.5, if an exception is not observed and your code never waits on the task, the exception will no longer propagate on the finalizer thread and crash the process during garbage collection. This change enhances the reliability of applications that use the Task class to perform unobserved asynchronous processing. + +- [ ] Quirked +- [ ] Build-time break + +### Recommended Action +If an app depends on unobserved asynchronous exceptions propagating to the finalizer thread, the previous behavior can be restored by providing an appropriate handler for the [TaskScheduler.UnobservedTaskException](https://msdn.microsoft.com/en-us/library/system.threading.tasks.taskscheduler.unobservedtaskexception(v=vs.110).aspx) event, or by setting a [runtime configuration element](https://msdn.microsoft.com/en-us/library/jj160346%28v=vs.110%29.aspx). + +### Affected APIs +* `M:System.Threading.Tasks.Task.Run(System.Action)` +* `M:System.Threading.Tasks.Task.Run(System.Action,System.Threading.CancellationToken)` +* `M:System.Threading.Tasks.Task.Run(System.Func{System.Threading.Tasks.Task})` +* `M:System.Threading.Tasks.Task.Run(System.Func{System.Threading.Tasks.Task},System.Threading.CancellationToken)` +* ```M:System.Threading.Tasks.Task.Run``1(System.Func{``0})``` +* ```M:System.Threading.Tasks.Task.Run``1(System.Func{``0},System.Threading.CancellationToken)``` +* ```M:System.Threading.Tasks.Task.Run``1(System.Func{System.Threading.Tasks.Task{``0}})``` +* ```M:System.Threading.Tasks.Task.Run``1(System.Func{System.Threading.Tasks.Task{``0}},System.Threading.CancellationToken)``` +* `M:System.Threading.Tasks.Task.Start` +* `M:System.Threading.Tasks.Task.Start(System.Threading.Tasks.TaskScheduler)` + +### Category +Core + +[More information](https://msdn.microsoft.com/en-us/library/hh367887(v=vs.110).aspx#core) diff --git a/Documentation/breaking-changes/flowdocument-may-show-an-extra-line-of-text.md b/Documentation/breaking-changes/flowdocument-may-show-an-extra-line-of-text.md new file mode 100644 index 000000000..27d598551 --- /dev/null +++ b/Documentation/breaking-changes/flowdocument-may-show-an-extra-line-of-text.md @@ -0,0 +1,35 @@ +## 120: FlowDocument may show an extra line of text + +### Scope +Edge + +### Version Introduced +4.5 + +### Source Analyzer Status +Planned + +### Change Description +In some cases, a FlowDocument element will display an extra line of text when running on the .NET Framework 4.5 compared to how it displayed when run on the .NET Framework 4.0. There are no known cases of the change causing any text to be displayed poorly or illegibly, but it could cause text to appear that previously was omitted from a FlowDocument's view. + +- [ ] Quirked +- [ ] Build-time break + +### Recommended Action +In some cases, decreasing the display element's PageHeight property by one can restore the previous number of displayed lines. + +### Affected APIs +* `M:System.Windows.Documents.FlowDocument.#ctor` +* `M:System.Windows.Documents.FlowDocument.#ctor(System.Windows.Documents.Block)` +* `M:System.Windows.Controls.FlowDocumentReader.#ctor` +* `M:System.Windows.Controls.FlowDocumentPageViewer.#ctor` +* `M:System.Windows.Controls.Primitives.DocumentPageView.#ctor` + +### Category +Windows Presentation Foundation (WPF) + + + diff --git a/Documentation/breaking-changes/foreach-iterator-variable-is-now-scoped-within-the-iteration.md b/Documentation/breaking-changes/foreach-iterator-variable-is-now-scoped-within-the-iteration.md new file mode 100644 index 000000000..3e93121c4 --- /dev/null +++ b/Documentation/breaking-changes/foreach-iterator-variable-is-now-scoped-within-the-iteration.md @@ -0,0 +1,28 @@ +## 100: Foreach iterator variable is now scoped within the iteration, so closure capturing semantics are different (in C#5) + +### Scope +Major + +### Version Introduced +4.5 + +### Source Analyzer Status +Available + +### Change Description +Beginning with C# 5 (Visual Studio 2012), foreach iterator variables are scoped within the iteration. This can cause breaks if code was previously depending on the variables to not be included in the foreach's closure. The symptom of this change will be that an iterator variable passed to a delagate will be treated as the value it had at the time the delegate was created, rather than the value it had at the time the delegate was invoked. + +- [ ] Quirked +- [x] Build-time break + +### Recommended Action +Ideally, code should be updated to expect the new compiler behavior. If the old semantics are required, the iterator variable can be replaced with a separate variable which is explicitly placed outside of the loop's scope. + +### Affected APIs +* Not detectable via API analysis + +### Categories +Core +C# + +[More information](http://blogs.msdn.com/b/ericlippert/archive/2009/11/12/closing-over-the-loop-variable-considered-harmful.aspx) diff --git a/Documentation/breaking-changes/glyphrun_computeinkboundingbox()-and-formattedtext_extent-return-different-values-beginning-in-_net-4_5.md b/Documentation/breaking-changes/glyphrun_computeinkboundingbox()-and-formattedtext_extent-return-different-values-beginning-in-_net-4_5.md new file mode 100644 index 000000000..fd2de1681 --- /dev/null +++ b/Documentation/breaking-changes/glyphrun_computeinkboundingbox()-and-formattedtext_extent-return-different-values-beginning-in-_net-4_5.md @@ -0,0 +1,35 @@ +## 114: GlyphRun.ComputeInkBoundingBox() and FormattedText.Extent return different values beginning in .NET 4.5 + +### Scope +Edge + +### Version Introduced +4.5 + +### Source Analyzer Status +Available + +### Change Description +Improvements were made to GlyphRun.ComputeInkBoundingBox() and FormattedText.Extent in the .NET Framework 4.5 to address issues where the boxes were too small for the contained glyphs in some cases in the .NET Framework 4.0. As a result of this, some bounding boxes will be larger beginning in the .NET Framework 4.5, resulting in subtle differences in UI layout. + +- [ ] Quirked +- [ ] Build-time break + +### Recommended Action +Be aware that some glyph bounding box sizes have increased. These changes will usually improve presentation and hit box testing, but if the older (pre-.NET 4.5) behavior is desired, it can be opted into by adding the following entry to the app.config file: + +```xml + + + +``` + +### Affected APIs +* `M:System.Windows.Media.GlyphRun.ComputeInkBoundingBox` +* `P:System.Windows.Media.FormattedText.Extent` + +### Category +Windows Presentation Foundation (WPF) + +[More information](http://support.microsoft.com/en-us/kb/3009678) + diff --git a/Documentation/breaking-changes/gridviews-with-allowcustompaging-set-to-true-may-fire-the-pageindexchanging-event-when-leaving-the-final-page-of-the-view.md b/Documentation/breaking-changes/gridviews-with-allowcustompaging-set-to-true-may-fire-the-pageindexchanging-event-when-leaving-the-final-page-of-the-view.md new file mode 100644 index 000000000..834ef9811 --- /dev/null +++ b/Documentation/breaking-changes/gridviews-with-allowcustompaging-set-to-true-may-fire-the-pageindexchanging-event-when-leaving-the-final-page-of-the-view.md @@ -0,0 +1,36 @@ +## 116: GridViews with AllowCustomPaging set to true may fire the PageIndexChanging event when leaving the final page of the view + +### Scope +Minor + +### Version Introduced +4.5 + +### Version Reverted +4.6 + +### Source Analyzer Status +Planned + +### Change Description +A bug in the .NET Framework 4.5 causes `PageIndexChanging` to sometimes not fire for GridViews that have enabled `AllowCustomPaging` + +- [ ] Quirked +- [ ] Build-time break + +### Recommended Action +This issue has been fixed in the .NET Framework 4.6 and may be addressed by upgrading to that version of the .NET Framework. As a work-around, the app can do an explicit BindGrid on any `Page_Load` that would hit these conditions (the GridView is on the last page and LastPageSize is different from PageSize). Alternatively, the app can be modified to allow paging (instead of custom paging), as that scenario does not demonstrate the problem. + +### Affected APIs +* `P:System.Web.UI.WebControls.GridView.AllowCustomPaging` + +### Category +ASP.NET + +[More information](http://stackoverflow.com/questions/18793795/asp-net-4-5-gridview-postback-of-last-page) + + + diff --git a/Documentation/breaking-changes/horizontal-scrolling-and-virtualization.md b/Documentation/breaking-changes/horizontal-scrolling-and-virtualization.md new file mode 100644 index 000000000..c01940a47 --- /dev/null +++ b/Documentation/breaking-changes/horizontal-scrolling-and-virtualization.md @@ -0,0 +1,62 @@ +## 153: Horizontal scrolling and virtualization + +### Scope +Minor + +### Version Introduced +4.6.2 + +### Source Analyzer Status +Planned + +### Change Description +This change applies to an ItemsControl that does its own virtualization in the +direction orthogonal to the main scrolling direction (the chief example is +DataGrid with EnableColumnVirtualization="True"). The outcome of certain +horizontal scolling operations has been changed to produce results that are more +intuitive and more analogous to the results of comparable vertical operations. + +The operations include "Scroll Here" and "Right Edge", to use the names from the menu +obtained by right-clicking a horizontal scrollbar. Both of these compute a +candidate offset and call IScrollInfo.SetHorizontalOffset. After scrolling to the new +offset, the notion of "here" or "right edge" may have changed because newly +de-virtualized content has changed the value of IScrollInfo.ExtentWidth. + +Prior to .Net 4.6.2, the scroll operation simply uses the candidate offset, even +though it may not be "here" or at the "right edge" any more. This results in effects +like "bouncing" the scroll thumb, best illustrated by example. Suppose a DataGrid has +ExtentWidth=1000 and Width=200. A scroll to "Right Edge" uses candidate offset +1000 - 200 = 800. While scrolling to that offset, new columns are de-virtualized; +let's suppose they are very wide, so that the ExtentWidth changes to 2000. The scroll +ends with HorizontalOffset=800, and the thumb "bounces" back to near the middle of +the scrollbar - precisely at 800/2000 = 40%. + +The change is to recompute a new candidate offset when this situation occurs, and +try again. (This is how vertical scrolling works already.) + +The change produces a more predictable and intuitive experience for the end user, +but it could also affect any app that depends on the exact value of HorizontalOffset +after a horizontal scroll, whether invoked by the end user or by an explicit call +to SetHorizontalOffset. + +- [ ] Quirked // Uses some mechanism to turn the feature on or off, usually using runtime targeting, AppContext or config files. Needs to be turned on automatically for some situations. +- [ ] Build-time break // Causes a break if attempted to recompile + +### Recommended Action +An app that uses a predicted value for HorizontalOffset should be changed to +fetch the actual value (and the value of ExtentWidth) after any horizontal +scroll that could change ExtentWidth due to de-virtualization. + +### Affected APIs +* `T:System.Windows.Controls.Primitives.IScrollInfo` + + +### Category +Windows Presentation Foundation (WPF) + + + + diff --git a/Documentation/breaking-changes/htmltextwriter-does-not-render-br-element-correctly.md b/Documentation/breaking-changes/htmltextwriter-does-not-render-br-element-correctly.md new file mode 100644 index 000000000..cc86060b7 --- /dev/null +++ b/Documentation/breaking-changes/htmltextwriter-does-not-render-br-element-correctly.md @@ -0,0 +1,28 @@ +## 101: HtmlTextWriter does not render `
` element correctly + +### Scope +Edge + +### Version Introduced +4.6 + +### Source Analyzer Status +Available + +### Change Description +Beginning in the .NET Framework 4.6, calling `HtmlTextWriter.RenderBeginTag()` and `HtmlTextWriter.RenderEndTag()` with a `
` element will correctly insert only one `
` (instead of two) + +- [x] Quirked +- [ ] Build-time break + +### Recommended Action +If an app depended on the extra `
` tag, `HtmlTextWriter.RenderBeginTag()` should be called a second time. Note that this behavior change only affects apps that are targeting the .NET Framework 4.6, so another option is to target a previous version of the .NET Framework in order to get the old behavior. + +### Affected APIs +* `M:System.Web.UI.HtmlTextWriter.RenderBeginTag(System.String)` +* `M:System.Web.UI.HtmlTextWriter.RenderBeginTag(System.Web.UI.HtmlTextWriterTag)` + +### Category +ASP.NET + +[More information](http://connect.microsoft.com/VisualStudio/feedback/details/813061/htmltextwriter-does-not-render-br-element-correctly) diff --git a/Documentation/breaking-changes/httprequest_contentencoding-property-prohibits-utf7.md b/Documentation/breaking-changes/httprequest_contentencoding-property-prohibits-utf7.md new file mode 100644 index 000000000..14778adbb --- /dev/null +++ b/Documentation/breaking-changes/httprequest_contentencoding-property-prohibits-utf7.md @@ -0,0 +1,27 @@ +## 43: HttpRequest.ContentEncoding property prohibits UTF7 + +### Scope +Edge + +### Version Introduced +4.5 + +### Source Analyzer Status +Available + +### Change Description +Beginning in .NET Framework 4.5, UTF-7 encoding is prohibited in HttpRequests' bodies. Data for applications that depend on incoming UTF-7 data will not decode properly in some cases. + +- [ ] Quirked +- [ ] Build-time break + +### Recommended Action +Ideally, applications should be updated to not use UTF-7 encoding in HttpRequests. Alternatively, legacy behavior can be restored by using the `aspnet:AllowUtf7RequestContentEncoding` attribute of the [appSettings](https://msdn.microsoft.com/en-us/library/hh975440(v=vs.110).aspx) element. + +### Affected APIs +* `P:System.Web.HttpRequest.ContentEncoding` + +### Category +ASP.NET + +[More information](https://msdn.microsoft.com/en-us/library/hh367887(v=vs.110).aspx#asp) diff --git a/Documentation/breaking-changes/httputility_javascriptstringencode-escapes-ampersand.md b/Documentation/breaking-changes/httputility_javascriptstringencode-escapes-ampersand.md new file mode 100644 index 000000000..ba9bc1c5a --- /dev/null +++ b/Documentation/breaking-changes/httputility_javascriptstringencode-escapes-ampersand.md @@ -0,0 +1,28 @@ +## 44: HttpUtility.JavaScriptStringEncode escapes ampersand + +### Scope +Minor + +### Version Introduced +4.5 + +### Source Analyzer Status +Available + +### Change Description +Starting with the .NET Framework 4.5, JavaScriptStringEncode escapes the ampersand (&) character. + +- [ ] Quirked +- [ ] Build-time break + +### Recommended Action +If your app depends on the previous behavior of this method, you can add an aspnet:JavaScriptDoNotEncodeAmpersand setting to the [ASP.NET appSettings element](https://msdn.microsoft.com/en-us/library/hh975440(v=vs.110).aspx) in your configuration file. + +### Affected APIs +* `M:System.Web.HttpUtility.JavaScriptStringEncode(System.String)` +* `M:System.Web.HttpUtility.JavaScriptStringEncode(System.String,System.Boolean)` + +### Category +ASP.NET + +[More information](https://msdn.microsoft.com/en-us/library/hh367887(v=vs.110).aspx#asp) diff --git a/Documentation/breaking-changes/iasyncresult_completedsynchronously-property-must-be-correct-for-the-resulting-task-to-complete.md b/Documentation/breaking-changes/iasyncresult_completedsynchronously-property-must-be-correct-for-the-resulting-task-to-complete.md new file mode 100644 index 000000000..56534dfe6 --- /dev/null +++ b/Documentation/breaking-changes/iasyncresult_completedsynchronously-property-must-be-correct-for-the-resulting-task-to-complete.md @@ -0,0 +1,48 @@ +## 58: IAsyncResult.CompletedSynchronously property must be correct for the resulting task to complete + +### Scope +Edge + +### Version Introduced +4.5 + +### Source Analyzer Status +Available + +### Change Description +When calling TaskFactory.FromAsync, the implementation of the IAsyncResult.CompletedSynchronously property must be correct for the resulting task to complete. That is, the property must return true if, and only if, the implementation completed synchronously. Previously, the property was not checked. + +- [x] Quirked +- [ ] Build-time break + +### Recommended Action +If IAsyncResult implementations correctly return true for the CompletedSynchronusly property only when a task completed synchronously, then no break will be observed. Users should review IAsyncResult implementations they own (if any) to ensure that they correctly evaluate whether a task completed synchronously or not. + +### Affected APIs +* ```M:System.Threading.Tasks.TaskFactory.FromAsync(System.IAsyncResult,System.Action{System.IAsyncResult})``` +* ```M:System.Threading.Tasks.TaskFactory.FromAsync(System.IAsyncResult,System.Action{System.IAsyncResult},System.Threading.Tasks.TaskCreationOptions)``` +* ```M:System.Threading.Tasks.TaskFactory.FromAsync(System.IAsyncResult,System.Action{System.IAsyncResult},System.Threading.Tasks.TaskCreationOptions,System.Threading.Tasks.TaskScheduler)``` +* ```M:System.Threading.Tasks.TaskFactory.FromAsync``1(System.IAsyncResult,System.Func{System.IAsyncResult,``0})``` +* ```M:System.Threading.Tasks.TaskFactory.FromAsync(System.Func{System.AsyncCallback,System.Object,System.IAsyncResult},System.Action{System.IAsyncResult},System.Object)``` +* ```M:System.Threading.Tasks.TaskFactory.FromAsync(System.Func{System.AsyncCallback,System.Object,System.IAsyncResult},System.Action{System.IAsyncResult},System.Object,System.Threading.Tasks.TaskCreationOptions)``` +* ```M:System.Threading.Tasks.TaskFactory.FromAsync``1(System.Func{``0,System.AsyncCallback,System.Object,System.IAsyncResult},System.Action{System.IAsyncResult},``0,System.Object)``` +* ```M:System.Threading.Tasks.TaskFactory.FromAsync``1(System.Func{``0,System.AsyncCallback,System.Object,System.IAsyncResult},System.Action{System.IAsyncResult},``0,System.Object,System.Threading.Tasks.TaskCreationOptions)``` +* ```M:System.Threading.Tasks.TaskFactory.FromAsync``1(System.Func{System.AsyncCallback,System.Object,System.IAsyncResult},System.Func{System.IAsyncResult,``0},System.Object)``` +* ```M:System.Threading.Tasks.TaskFactory.FromAsync``1(System.Func{System.AsyncCallback,System.Object,System.IAsyncResult},System.Func{System.IAsyncResult,``0},System.Object,System.Threading.Tasks.TaskCreationOptions)``` +* ```M:System.Threading.Tasks.TaskFactory.FromAsync``1(System.IAsyncResult,System.Func{System.IAsyncResult,``0},System.Threading.Tasks.TaskCreationOptions)``` +* ```M:System.Threading.Tasks.TaskFactory.FromAsync``1(System.IAsyncResult,System.Func{System.IAsyncResult,``0},System.Threading.Tasks.TaskCreationOptions,System.Threading.Tasks.TaskScheduler)``` +* ```M:System.Threading.Tasks.TaskFactory.FromAsync``2(System.Func{``0,``1,System.AsyncCallback,System.Object,System.IAsyncResult},System.Action{System.IAsyncResult},``0,``1,System.Object)``` +* ```M:System.Threading.Tasks.TaskFactory.FromAsync``2(System.Func{``0,``1,System.AsyncCallback,System.Object,System.IAsyncResult},System.Action{System.IAsyncResult},``0,``1,System.Object,System.Threading.Tasks.TaskCreationOptions)``` +* ```M:System.Threading.Tasks.TaskFactory.FromAsync``2(System.Func{``0,System.AsyncCallback,System.Object,System.IAsyncResult},System.Func{System.IAsyncResult,``1},``0,System.Object)``` +* ```M:System.Threading.Tasks.TaskFactory.FromAsync``2(System.Func{``0,System.AsyncCallback,System.Object,System.IAsyncResult},System.Func{System.IAsyncResult,``1},``0,System.Object,System.Threading.Tasks.TaskCreationOptions)``` +* ```M:System.Threading.Tasks.TaskFactory.FromAsync``3(System.Func{``0,``1,System.AsyncCallback,System.Object,System.IAsyncResult},System.Func{System.IAsyncResult,``2},``0,``1,System.Object)``` +* ```M:System.Threading.Tasks.TaskFactory.FromAsync``3(System.Func{``0,``1,``2,System.AsyncCallback,System.Object,System.IAsyncResult},System.Action{System.IAsyncResult},``0,``1,``2,System.Object)``` +* ```M:System.Threading.Tasks.TaskFactory.FromAsync``3(System.Func{``0,``1,``2,System.AsyncCallback,System.Object,System.IAsyncResult},System.Action{System.IAsyncResult},``0,``1,``2,System.Object,System.Threading.Tasks.TaskCreationOptions)``` +* ```M:System.Threading.Tasks.TaskFactory.FromAsync``3(System.Func{``0,``1,System.AsyncCallback,System.Object,System.IAsyncResult},System.Func{System.IAsyncResult,``2},``0,``1,System.Object,System.Threading.Tasks.TaskCreationOptions)``` +* ```M:System.Threading.Tasks.TaskFactory.FromAsync``4(System.Func{``0,``1,``2,System.AsyncCallback,System.Object,System.IAsyncResult},System.Func{System.IAsyncResult,``3},``0,``1,``2,System.Object)``` +* ```M:System.Threading.Tasks.TaskFactory.FromAsync``4(System.Func{``0,``1,``2,System.AsyncCallback,System.Object,System.IAsyncResult},System.Func{System.IAsyncResult,``3},``0,``1,``2,System.Object,System.Threading.Tasks.TaskCreationOptions)``` + +### Category +Core + +[More information](https://msdn.microsoft.com/en-us/library/hh367887(v=vs.110).aspx#core) diff --git a/Documentation/breaking-changes/icommand_canexecutechanged-event-behaviour-changed-in-_net-4_5.md b/Documentation/breaking-changes/icommand_canexecutechanged-event-behaviour-changed-in-_net-4_5.md new file mode 100644 index 000000000..d098e92f7 --- /dev/null +++ b/Documentation/breaking-changes/icommand_canexecutechanged-event-behaviour-changed-in-_net-4_5.md @@ -0,0 +1,30 @@ +## 84: ICommand.CanExecuteChanged event behaviour changed in .NET 4.5 + +### Scope +Minor + +### Version Introduced +4.5 + +### Version Reverted +4.5 + +### Source Analyzer Status +Planned + +### Change Description +In the .NET Framework 4.5, a CanExecuteChangedEvent was ignored unless the sender of the event was the same object as the object that raised the event. This bug was fixed in .NET Framework 4.5 servcing updates. + +- [ ] Quirked +- [ ] Build-time break + +### Recommended Action +This bug has been fixed in the .NET Framework 4.5 servicing releases, so it can be avoided by making sure that the .NET Framework is up-to-date or by upgrading to .NET Framework 4.5.1. Alternatively, application code using ICommand can be modified to make sure that the sender when raising a CanExecuteChanged command is the same as the object raising the event. + +### Affected APIs +* `E:System.Windows.Input.ICommand.CanExecuteChanged` + +### Category +Windows Presentation Foundation (WPF) + +[More information](http://connect.microsoft.com/VisualStudio/feedback/details/751429/wpf-icommand-canexecutechanged-behaviour-change-in-net-4-5) diff --git a/Documentation/breaking-changes/il-ret-not-allowed-in-a-try-region.md b/Documentation/breaking-changes/il-ret-not-allowed-in-a-try-region.md new file mode 100644 index 000000000..5cb318029 --- /dev/null +++ b/Documentation/breaking-changes/il-ret-not-allowed-in-a-try-region.md @@ -0,0 +1,34 @@ +## 80: IL ret not allowed in a try region + +### Scope +Edge + +### Version Introduced +4.6 + +### Source Analyzer Status +Planned + +### Change Description +Unlike the JIT64 just-in-time compiler, RyuJIT (used in .NET 4.6) does not allow an IL ret instruction in a try region. Returning from a try region is disallowed by the ECMA-335 specification, and no known managed compiler generates such IL. However, the JIT64 compiler will execute such IL if it is generated using reflection emit. + +- [x] Quirked +- [ ] Build-time break + +### Recommended Action +If an app is generating IL that includes a ret opcode in a try region, the app may target .NET 4.5 to use the old JIT and avoid this break. Alternatively, the generated IL may be updated to return after the try region. + +### Affected APIs +* Not detectable via API analysis + +### Category +JIT + +[More information](https://msdn.microsoft.com/en-us/library/dn833125(v=vs.110).aspx#RyuJIT) + + + + diff --git a/Documentation/breaking-changes/incorrect-implementation-of-memberdescriptor_equals.md b/Documentation/breaking-changes/incorrect-implementation-of-memberdescriptor_equals.md new file mode 100644 index 000000000..2ca02aa8e --- /dev/null +++ b/Documentation/breaking-changes/incorrect-implementation-of-memberdescriptor_equals.md @@ -0,0 +1,51 @@ +## 150: Incorrect implementation of MemberDescriptor.Equals + +### Scope +Edge + +### Version Introduced +4.6.2 + +### Source Analyzer Status +Planned + +### Change Description +Original implementation of "Equals" method was comparing two different string properties from +the objects under comparison: category name to description string. The fix is to compare +"category" of first object to "category" of the second one and "description" to "description". +MemberDescriptorEqualsReturnsFalseIfEquivalent configuration value can be set to true to opt out of +the new behavior if targeting 4.6.2 or to false to enable this fix when targeting framework +version is below 4.6.2. + +- [x] Quirked +- [ ] Build-time break + +### Recommended Action +If your application depends on MemberDescriptor.Equals sometimes returning false when descriptors +are equivalent, and you are targeting 4.6.2 version of the .NET Framework, you have several options: + +1. Make code changes to compare "category" and "description" fields manually in addition to +running Equals method. +2. Opt out from this change by adding the following value to the app.config file: + +```xml + + + +``` + +If your application targets 4.6.1 or lower version of the .NET Framework, and you want this change +enabled, you can set the compatibility switch to false by adding the following value to the +app.config file: + +```xml + + + +``` + +### Affected APIs +* `M:System.ComponentModel.MemberDescriptor.Equals(System.Object)` + +### Category +Windows Forms diff --git a/Documentation/breaking-changes/intermittently-unable-to-scroll-to-bottom-item-in-itemscontrols-when-using-customer-datatemplates.md b/Documentation/breaking-changes/intermittently-unable-to-scroll-to-bottom-item-in-itemscontrols-when-using-customer-datatemplates.md new file mode 100644 index 000000000..294d3e9ad --- /dev/null +++ b/Documentation/breaking-changes/intermittently-unable-to-scroll-to-bottom-item-in-itemscontrols-when-using-customer-datatemplates.md @@ -0,0 +1,35 @@ +## 113: Intermittently unable to scroll to bottom item in ItemsControls (like ListBox and DataGrid) when using custom DataTemplates + +### Scope +Minor + +### Version Introduced +4.5 + +### Version Reverted +4.5.2 + +### Source Analyzer Status +Available + +### Change Description +In some instances, a bug in the .NET Framework 4.5 is causing ItemsControls (like ListBox, ComboBox, DataGrid, etc.) to not scroll to their bottom item when using custom DataTemplates. If the scrolling is attempted a second time (after scrolling back up), it will work then. + +- [ ] Quirked +- [ ] Build-time break + +### Recommended Action +This issue has been fixed in the .NET Framework 4.5.2 and may be addressed by upgrading to that version (or a later version) of the .NET Framework. Alternatively, users can still drag scroll bars to the final items in these collections, but may need to try twice to do so successfully. + +### Affected APIs +* Not detectable via API analysis + +### Category +Windows Presentation Foundation (WPF) + + + + diff --git a/Documentation/breaking-changes/ipad-should-not-be-used-in-custom-capabilities-file-because-it-is-now-a-browser-capability.md b/Documentation/breaking-changes/ipad-should-not-be-used-in-custom-capabilities-file-because-it-is-now-a-browser-capability.md new file mode 100644 index 000000000..6746a1f85 --- /dev/null +++ b/Documentation/breaking-changes/ipad-should-not-be-used-in-custom-capabilities-file-because-it-is-now-a-browser-capability.md @@ -0,0 +1,31 @@ +## 118: IPad should not be used in custom capabilities file because it is now a browser capability + +### Scope +Edge + +### Version Introduced +4.5 + +### Source Analyzer Status +Planned + +### Change Description +Beginning in .NET 4.5, iPad is an identifier in the default ASP.NET browser capabilities file, so it should not be used in a custom capabilties file + +- [ ] Quirked +- [ ] Build-time break + +### Recommended Action +If iPad-specific capabilities are required, it is necessary to modify iPad behavior by setting capabilities on the pre-defined gateway refID "IPad" instead of by generating a new "IPad" ID by user agent matching. + +### Affected APIs +* Not detectable via API analysis + +### Category +ASP.NET + + + diff --git a/Documentation/breaking-changes/item-scrolling-a-flat-list-with-items-of-different-pixel-height.md b/Documentation/breaking-changes/item-scrolling-a-flat-list-with-items-of-different-pixel-height.md new file mode 100644 index 000000000..9071027ab --- /dev/null +++ b/Documentation/breaking-changes/item-scrolling-a-flat-list-with-items-of-different-pixel-height.md @@ -0,0 +1,50 @@ +## 152: Item-scrolling a flat list with items of different pixel-height + +### Scope +Minor + +### Version Introduced +4.6.1 + +### Version Reverted +4.6.2 + +### Source Analyzer Status +Planned + +### Change Description +When an ItemsControl displays a collection using virtualization (`IsVirtualizing=true`) and item-scrolling (`ScrollUnit=Item`), +and when the control scrolls to display an item whose height in pixels differs from its neighbors, the VirtualizingStackPanel +iterates over all items in the collection. The UI is unresponsive during this iteration; if the collection is +large, this can be perceived as a hang. + +The iteration occurs in other circumstances, even in previous .Net releases. For example, it occurs when +pixel-scrolling (`ScrollUnit=Pixel`) upon encountering an item with different pixel height, and when item-scrolling +hierarchical data (such as a TreeView or an ItemsControl with grouping enabled) upon encountering an item with +a different number of descendant items than its neighbors. + +For the case of item-scrolling and different pixel height, the iteration was introduced in .Net 4.6.1 to fix +bugs in the layout of hierarchical data. It is not needed if the data is flat (no hierarchy), and .Net 4.6.2 +does not do it in that case. + +- [ ] Quirked +- [ ] Build-time break + +### Recommended Action +If the iteration occurs in .Net 4.6.1 but not in earlier releases - that is, if the ItemsControl is item-scrolling +a flat list with items of different pixel height - there are two remedies: +1. Install .Net 4.6.2. +2. Install hotfix HR 1605 for .Net 4.6.1. + +### Affected APIs +* `T:System.Windows.Controls.VirtualizingStackPanel` + +### Category +Windows Presentation Foundation (WPF) + + + + diff --git a/Documentation/breaking-changes/items_clear-does-not-remove-duplicates-from-selecteditems.md b/Documentation/breaking-changes/items_clear-does-not-remove-duplicates-from-selecteditems.md new file mode 100644 index 000000000..7875ebd43 --- /dev/null +++ b/Documentation/breaking-changes/items_clear-does-not-remove-duplicates-from-selecteditems.md @@ -0,0 +1,40 @@ +## 154: Items.Clear does not remove duplicates from SelectedItems + +### Scope +Minor + +### Version Introduced +4.5 + +### Version Reverted +4.6.2 + +### Source Analyzer Status +NotPlanned + +### Change Description +Suppose a Selector (with multiple selection enabled) has duplicates in its SelectedItems +collection - the same item appears more than once. Removing those items from the +data source (e.g. by calling Items.Clear) fails to remove them from SelectedItems; +only the first instance is removed. Furthermore, subsequent use of SelectedItems +(e.g. SelectedItems.Clear()) can encounter problems such as ArgumentException, because +SelectedItems contains items that are no longer in the data source. + +- [ ] Quirked +- [ ] Build-time break + +### Recommended Action +Upgrade if possible to .NET 4.6.2. + +### Affected APIs +* `P:System.Windows.Controls.Primitives.MultiSelector.SelectedItems` + +### Category +Windows Presentation Foundation (WPF) + + + + diff --git a/Documentation/breaking-changes/linq-to-ef-join-throws-argumentoutofrangeexception.md b/Documentation/breaking-changes/linq-to-ef-join-throws-argumentoutofrangeexception.md new file mode 100644 index 000000000..4e1419fe1 --- /dev/null +++ b/Documentation/breaking-changes/linq-to-ef-join-throws-argumentoutofrangeexception.md @@ -0,0 +1,37 @@ +## 93: Linq to EF Join throws ArgumentOutOfRangeException + +### Scope +Minor + +### Version Introduced +4.5 + +### Version Reverted +4.5 + +### Source Analyzer Status +Not planned + +### Change Description +Linq queries or enumerables that call 'Join' on Entity Framework entities can cause an `ArgumentOutOfRangeException` in .NET Framework 4.5 + +- [ ] Quirked +- [ ] Build-time break + +### Recommended Action +This issue was fixed in a servicing update. Please update the .NET Framework 4.5, or upgrade to .NET Framework 4.5.1 or later, to fix this issue. + +### Affected APIs +* ```M:System.Linq.Enumerable.Join``4(System.Collections.Generic.IEnumerable{``0},System.Collections.Generic.IEnumerable{``1},System.Func{``0,``2},System.Func{``1,``2},System.Func{``0,``1,``3})``` +* ```M:System.Linq.Enumerable.Join``4(System.Collections.Generic.IEnumerable{``0},System.Collections.Generic.IEnumerable{``1},System.Func{``0,``2},System.Func{``1,``2},System.Func{``0,``1,``3},System.Collections.Generic.IEqualityComparer{``2})``` +* ```M:System.Linq.ParallelEnumerable.Join``4(System.Linq.ParallelQuery{``0},System.Collections.Generic.IEnumerable{``1},System.Func{``0,``2},System.Func{``1,``2},System.Func{``0,``1,``3})``` +* ```M:System.Linq.ParallelEnumerable.Join``4(System.Linq.ParallelQuery{``0},System.Collections.Generic.IEnumerable{``1},System.Func{``0,``2},System.Func{``1,``2},System.Func{``0,``1,``3},System.Collections.Generic.IEqualityComparer{``2})``` +* ```M:System.Linq.ParallelEnumerable.Join``4(System.Linq.ParallelQuery{``0},System.Linq.ParallelQuery{``1},System.Func{``0,``2},System.Func{``1,``2},System.Func{``0,``1,``3})``` +* ```M:System.Linq.ParallelEnumerable.Join``4(System.Linq.ParallelQuery{``0},System.Linq.ParallelQuery{``1},System.Func{``0,``2},System.Func{``1,``2},System.Func{``0,``1,``3},System.Collections.Generic.IEqualityComparer{``2})``` +* ```M:System.Linq.Queryable.Join``4(System.Linq.IQueryable{``0},System.Collections.Generic.IEnumerable{``1},System.Linq.Expressions.Expression{System.Func{``0,``2}},System.Linq.Expressions.Expression{System.Func{``1,``2}},System.Linq.Expressions.Expression{System.Func{``0,``1,``3}})``` +* ```M:System.Linq.Queryable.Join``4(System.Linq.IQueryable{``0},System.Collections.Generic.IEnumerable{``1},System.Linq.Expressions.Expression{System.Func{``0,``2}},System.Linq.Expressions.Expression{System.Func{``1,``2}},System.Linq.Expressions.Expression{System.Func{``0,``1,``3}},System.Collections.Generic.IEqualityComparer{``2})``` + +### Category +LINQ + +[More information](http://connect.microsoft.com/VisualStudio/feedback/details/763986/linq-to-ef-join-throws-index-was-out-of-range-after-upgrade-from-vs2010-to-vs2012) diff --git a/Documentation/breaking-changes/list_foreach-can-throw-exception-when-modifying-list-item.md b/Documentation/breaking-changes/list_foreach-can-throw-exception-when-modifying-list-item.md new file mode 100644 index 000000000..1310c7a8e --- /dev/null +++ b/Documentation/breaking-changes/list_foreach-can-throw-exception-when-modifying-list-item.md @@ -0,0 +1,27 @@ +## 5: List<T>.ForEach can throw exception when modifying list item + +### Scope +Edge + +### Version Introduced +4.5 + +### Source Analyzer Status +Available + +### Change Description +Beginning in .NET 4.5, a `List.ForEach` enumerator will throw an InvalidOperationException exception if an element in the calling collection is modified. Previously, this would not throw an exception but could lead to race conditions. + +- [x] Quirked +- [ ] Build-time break + +### Recommended Action +Ideally, code should be fixed to not modify lists while enumerating their elements because that is never a safe operation. To revert to the previous behavior, though, an app may target .NET 4.0. + +### Affected APIs +* ``M:System.Collections.Generic.List`1.ForEach(System.Action{`0})`` + +### Category +Core + +[More information](https://msdn.microsoft.com/en-us/library/hh367887\(v=vs.110\).aspx#core) diff --git a/Documentation/breaking-changes/list_sort-algorithm-changed.md b/Documentation/breaking-changes/list_sort-algorithm-changed.md new file mode 100644 index 000000000..302b537dd --- /dev/null +++ b/Documentation/breaking-changes/list_sort-algorithm-changed.md @@ -0,0 +1,30 @@ +## 54: List.Sort algorithm changed + +### Scope +Transparent + +### Version Introduced +4.5 + +### Source Analyzer Status +Not planned + +### Change Description +Begining in .NET Framework 4.5, `List`'s sort algorithm has changed (to be an introspective sort instead of a quick sort). `List`'s sort has never been stable, but this change may cause different scenarios to sort in unstable ways. That simply means that equivalent items may sort in different orders in subsequent calls of the API. + +- [ ] Quirked +- [ ] Build-time break + +### Recommended Action +Because the old sort algorithm was also unstable (though in slightly different ways), there should be no code that depends on equivalent items always sorting in a particular order. If there are instances of code depending upon that and being lucky with the old behavior, that code should be updated to use a comparer that will deterministically sort the items in the desired order. + +### Affected APIs +* ``M:System.Collections.Generic.List`1.Sort`` +* ``M:System.Collections.Generic.List`1.Sort(System.Collections.Generic.IComparer{`0})`` +* ``M:System.Collections.Generic.List`1.Sort(System.Comparison{`0})`` +* ``M:System.Collections.Generic.List`1.Sort(System.Int32,System.Int32,System.Collections.Generic.IComparer{`0})`` + +### Category +Core + +[More information](http://stackoverflow.com/questions/12461328/behaviour-of-listt-sort-in-net-4-5-changed-from-net-4-0?rq=1) diff --git a/Documentation/breaking-changes/listboxitem-isselected-binding-issue-with-observablecollection_move.md b/Documentation/breaking-changes/listboxitem-isselected-binding-issue-with-observablecollection_move.md new file mode 100644 index 000000000..397557574 --- /dev/null +++ b/Documentation/breaking-changes/listboxitem-isselected-binding-issue-with-observablecollection_move.md @@ -0,0 +1,32 @@ +## 102: ListBoxItem IsSelected binding issue with ObservableCollection<T>.Move + +### Scope +Minor + +### Version Introduced +4.5 + +### Version Reverted +4.6 + +### Source Analyzer Status +Planned + +### Change Description +Calling `ObservableCollection.Move` on a collection bound to a ListBox with items selected can lead to erratic behavior with future selection or unselection of ListBox items + +- [ ] Quirked +- [ ] Build-time break + +### Recommended Action +Calling `ObservableCollection.Remove` and `ObservableCollection.Insert` instead of `ObservableCollection.Move` will work around this issue. Alternatively, this issue has been fixed in the .NET Framework 4.6 and may be addressed by upgrading to that version of the .NET Framework. + +### Affected APIs +* ``M:System.Collections.ObjectModel.ObservableCollection`1.Move(System.Int32,System.Int32)`` +* ``M:System.Collections.ObjectModel.ObservableCollection`1.MoveItem(System.Int32,System.Int32)`` + +### Category +Windows Presentation Foundation (WPF) + +[More information](http://social.msdn.microsoft.com/Forums/en-US/afcbc8b3-a2f2-41e4-b402-2efc9eab1ffe/listboxitem-isselected-binding-issue-with-observablecollectiontmove?forum=wpf) + diff --git a/Documentation/breaking-changes/log-file-name-created-by-the-objectcontext_createdatabase-method-has-changed-to-match-sql-server-specifications.md b/Documentation/breaking-changes/log-file-name-created-by-the-objectcontext_createdatabase-method-has-changed-to-match-sql-server-specifications.md new file mode 100644 index 000000000..b0e6200f5 --- /dev/null +++ b/Documentation/breaking-changes/log-file-name-created-by-the-objectcontext_createdatabase-method-has-changed-to-match-sql-server-specifications.md @@ -0,0 +1,27 @@ +## 59: Log file name created by the ObjectContext.CreateDatabase method has changed to match SQL Server specifications + +### Scope +Edge + +### Version Introduced +4.5 + +### Source Analyzer Status +Available + +### Change Description +When the CreateDatabase method is called either directly or by using Code First with the SqlClient provider and an AttachDBFilename value in the connection string, it creates a log file named filename_log.ldf instead of filename.ldf (where filename is the name of the file specified by the AttachDBFilename value). This change improves debugging by providing a log file named according to SQL Server specifications. + +- [ ] Quirked +- [ ] Build-time break + +### Recommended Action +If the log file name is important for an app, the app should be updated to expect the standard _log.ldf file name format. + +### Affected APIs +* `M:System.Data.Objects.ObjectContext.CreateDatabase` + +### Category +Entity Framework + +[More information](https://msdn.microsoft.com/en-us/library/hh367887(v=vs.110).aspx#sql) diff --git a/Documentation/breaking-changes/long-path-support.md b/Documentation/breaking-changes/long-path-support.md new file mode 100644 index 000000000..7d6ace1f9 --- /dev/null +++ b/Documentation/breaking-changes/long-path-support.md @@ -0,0 +1,51 @@ +## 162: Long path support + +### Scope +Minor + +### Version Introduced +4.6.2 + +### Source Analyzer Status +Investigating + +### Change Description +Starting with apps that target the .NET Framework 4.6.2, long paths (of up to 32K characters) are supported, and the 260-character (or `MAX_PATH`) limitation on path lengths has been removed. + +For apps that are recompiled to target the .NET Framework 4.6.2, code paths that previously threw a `T:System.IO.PathTooLongException` because a path exceeded 260 characters will now throw a `T:System.IO.PathTooLongException` only under the following conditions: + +- The length of the path is greater than `F:System.Int16.MaxValue` (32,767) characters. +- The operating system returns `COR_E_PATHTOOLONG` or its equivalent. + +For apps that target the .NET Framework 4.6.1 and earlier versions, the runtime automatically throws a `T:System.IO.PathTooLongException` whenever a path exceeds 260 characters. + +- [X] Quirked +- [ ] Build-time break + +### Recommended Action +For apps that target the .NET Framework 4.6.2, you can opt out of long path support if it is not desirable by adding the following to to the `` section of your `app.config` file: + + ```xml + + + + ``` +For apps that target earlier versions of the .NET Framework but run on the .NET Framework 4.6.2 or later, you can opt in to long path support by adding the following to to the `` section of your `app.config` file: + + ```xml + + + + ``` +### Affected APIs +* Not detectable via API analysis + +### Category +Core + + + + diff --git a/Documentation/breaking-changes/machinekey_encode-and-machinekey_decode-methods-are-now-obsolete.md b/Documentation/breaking-changes/machinekey_encode-and-machinekey_decode-methods-are-now-obsolete.md new file mode 100644 index 000000000..1288de05f --- /dev/null +++ b/Documentation/breaking-changes/machinekey_encode-and-machinekey_decode-methods-are-now-obsolete.md @@ -0,0 +1,28 @@ +## 28: MachineKey.Encode and MachineKey.Decode methods are now obsolete + +### Scope +Minor + +### Version Introduced +4.5 + +### Source Analyzer Status +Available + +### Change Description +These methods are now obsolete. Compilation of code that calls these methods produces a compiler warning. + +- [ ] Quirked +- [x] Build-time break + +### Recommended Action +The recommended alternatives are [MachineKey.Protect](https://msdn.microsoft.com/en-us/library/system.web.security.machinekey.protect(v=vs.110).aspx) and [MachineKey.Unprotect](https://msdn.microsoft.com/en-us/library/system.web.security.machinekey.unprotect(v=vs.110).aspx). Alternatively, the build warnings can be suppressed or they can be avoided by using an older compiler. The APIs are still supported. + +### Affected APIs +* `M:System.Web.Security.MachineKey.Encode(System.Byte[],System.Web.Security.MachineKeyProtection)` +* `M:System.Web.Security.MachineKey.Decode(System.String,System.Web.Security.MachineKeyProtection)` + +### Category +ASP.NET + +[More information](https://msdn.microsoft.com/en-us/library/hh367887(v=vs.110).aspx#asp) diff --git a/Documentation/breaking-changes/managed-browser-hosting-controls-from-the-_net-framework-1_1-and-2_0-are-blocked.md b/Documentation/breaking-changes/managed-browser-hosting-controls-from-the-_net-framework-1_1-and-2_0-are-blocked.md new file mode 100644 index 000000000..8742d28ec --- /dev/null +++ b/Documentation/breaking-changes/managed-browser-hosting-controls-from-the-_net-framework-1_1-and-2_0-are-blocked.md @@ -0,0 +1,27 @@ +## 64: Managed browser hosting controls from the .NET Framework 1.1 and 2.0 are blocked + +### Scope +Minor + +### Version Introduced +4.5 + +### Source Analyzer Status +Not planned + +### Change Description +Hosting these controls is blocked in Internet Explorer. + +- [ ] Quirked +- [ ] Build-time break + +### Recommended Action +Internet Explorer will fail to launch an application that uses managed browser hosting controls. The previous behavior can be restored by setting the EnableIEHosting value of the registry subkey `HKLM/SOFTWARE/MICROSOFT/.NETFramework` to `1` for x86 systems and for 32-bit processes on x64 systems, and by setting the `EnableIEHosting` value of the registry subkey `HKLM/SOFTWARE/Wow6432Node/Microsoft/.NETFramework` to `1` for 64-bit processes on x64 systems. + +### Affected APIs +* Not detectable via API analysis + +### Category +Web Applications + +[More information](https://msdn.microsoft.com/en-us/library/hh367887(v=vs.110).aspx#web) diff --git a/Documentation/breaking-changes/marshal_sizeof-and-marshal_ptrtostructure-overloads-break-dynamic-code.md b/Documentation/breaking-changes/marshal_sizeof-and-marshal_ptrtostructure-overloads-break-dynamic-code.md new file mode 100644 index 000000000..d7ca41599 --- /dev/null +++ b/Documentation/breaking-changes/marshal_sizeof-and-marshal_ptrtostructure-overloads-break-dynamic-code.md @@ -0,0 +1,39 @@ +## 130: Marshal.SizeOf and Marshal.PtrToStructure overloads break dynamic code + +### Scope +Minor + +### Version Introduced +4.5.1 + +### Source Analyzer Status +Available + +### Change Description +Beginning in the .NET Framework 4.5.1, dynamically binding to the methods `Marshal.SizeOf` or `Marshal.PtrToStructure ` +(via Windows PowerShell, IronPython, or the C# dynamic keyword, for example) can result in `MethodInvocationExceptions` because +new overloads of these methods have been added that may be ambiguous to the scripting engines. + +- [ ] Quirked +- [ ] Build-time break + +### Recommended Action +Update scripts to clearly indicate which overload shouldbe used. This can typically done by explicitly casting the +methods' type parameters as `System.Type`. See [this link](https://support.microsoft.com/en-us/kb/2909958/) for more +detail and examples of how to workaround the issue. + +### Affected APIs +* Not detectable via API analysis + +### Category +Core + +[More information](https://support.microsoft.com/en-us/kb/2909958/) + + + diff --git a/Documentation/breaking-changes/mef-catalogs-implement-ienumerable-and-therefore-can-no-longer-be-used-to-create-a-serializer.md b/Documentation/breaking-changes/mef-catalogs-implement-ienumerable-and-therefore-can-no-longer-be-used-to-create-a-serializer.md new file mode 100644 index 000000000..78a645ad2 --- /dev/null +++ b/Documentation/breaking-changes/mef-catalogs-implement-ienumerable-and-therefore-can-no-longer-be-used-to-create-a-serializer.md @@ -0,0 +1,28 @@ +## 12: MEF catalogs implement IEnumerable and therefore can no longer be used to create a serializer + + +### Scope +Major + +### Version Introduced +4.5 + +### Source Analyzer Status +Available + +### Change Description +Starting with the .NET Framework 4.5, MEF catalogs implement IEnumerable and therefore can no longer be used to create a serializer (XmlSerializer object). Trying to serialize a MEF catalog throws an exception. + +- [ ] Quirked +- [ ] Build-time break + +### Recommended Action +Can no longer use MEF to create a serializer + +### Affected APIs +* Not detectable via API analysis + +### Category +Managed Extensibility Framework (MEF) + +[More information](https://msdn.microsoft.com/en-us/library/hh367887#MEF) diff --git a/Documentation/breaking-changes/minfreememorypercentagetoactiveservice-is-now-respected.md b/Documentation/breaking-changes/minfreememorypercentagetoactiveservice-is-now-respected.md new file mode 100644 index 000000000..76263e73a --- /dev/null +++ b/Documentation/breaking-changes/minfreememorypercentagetoactiveservice-is-now-respected.md @@ -0,0 +1,27 @@ +## 32: MinFreeMemoryPercentageToActiveService is now respected + +### Scope +Minor + +### Version Introduced +4.5.1 + +### Source Analyzer Status +Available + +### Change Description +This setting establishes the minimum memory that must be available on the server before a WCF service can be activated. It is designed to prevent OutOfMemoryException exceptions. In the .NET Framework 4.5, this setting had no effect. In the .NET Framework 4.5.1, the setting is observed. + +- [ ] Quirked +- [ ] Build-time break + +### Recommended Action +An exception occurs if the free memory available on the web server is less than the percentage defined by the configuration setting. Some WCF services that successfully started and ran in a constrained memory environment may now fail. + +### Affected APIs +* Not detectable via API analysis + +### Category +Windows Communication Foundation (WCF) + +[More information](https://msdn.microsoft.com/en-us/library/dn458360(v=vs.110).aspx) diff --git a/Documentation/breaking-changes/missing-target-framework-moniker-results-in-4_0-behavior.md b/Documentation/breaking-changes/missing-target-framework-moniker-results-in-4_0-behavior.md new file mode 100644 index 000000000..d2e2beac4 --- /dev/null +++ b/Documentation/breaking-changes/missing-target-framework-moniker-results-in-4_0-behavior.md @@ -0,0 +1,25 @@ +## 13: Missing Target Framework Moniker results in 4.0 behavior + +### Scope +Major + +### Version Introduced +4.5 + +### Source Analyzer Status +Available + +### Change Description +Applications without a [TargetFrameworkAttribute](https://msdn.microsoft.com/en-us/library/system.runtime.versioning.targetframeworkattribute(v=vs.110).aspx) applied at the assembly level will automatically run using the semantics (quirks) of the .NET Framework 4.0. To ensure high quality, it is recommended that all binaries be explicitly attributed with a TargetFrameworkAttribute indicating the version of the .NET Framework they were built with. Note that using a target framework moniker in a project file will caues MSBuild to automatically apply a TargetFrameworkAttribute. + +- [ ] Quirked +- [ ] Build-time break + +### Recommended Action +A [target framework attribute](https://msdn.microsoft.com/en-us/library/system.runtime.versioning.targetframeworkattribute(v=vs.110).aspx) should be supplied, either through adding the attribute directly to the assembly or by specifying a target framework in the [project file or through Visual Studio's project properties GUI](http://blogs.msdn.com/b/visualstudio/archive/2010/05/19/visual-studio-managed-multi-targeting-part-1-concepts-target-framework-moniker-target-framework.aspx). + +### Affected APIs +* Not detectable via API analysis + +### Category +Core \ No newline at end of file diff --git a/Documentation/breaking-changes/multi-line-asp_net-textbox-spacing-changed-when-using-antixssencoder.md b/Documentation/breaking-changes/multi-line-asp_net-textbox-spacing-changed-when-using-antixssencoder.md new file mode 100644 index 000000000..3fe9605ca --- /dev/null +++ b/Documentation/breaking-changes/multi-line-asp_net-textbox-spacing-changed-when-using-antixssencoder.md @@ -0,0 +1,32 @@ +## 92: Multi-line ASP.Net TextBox spacing changed when using AntiXSSEncoder + +### Scope +Minor + +### Version Introduced +4.5 + +### Source Analyzer Status +Available + +### Change Description +In .NET Framework 4.0, extra lines were inserted between lines of a multi-line text box on postback, if using the `AntiXSSEncoder`. In .NET Framework 4.5, those extra line breaks are not included, but only if the web app is targeting .NET 4.5 + +- [x] Quirked +- [ ] Build-time break + +### Recommended Action +Be aware that 4.0 web apps retargeted to .NET 4.5 may have multi-line text boxes improved to no longer insert extra line breaks. If this is not desirable, the app can have the old behavior when running on .NET Framework 4.5 by targeting the .NET Framework 4.0. + +### Affected APIs +* Not detectable via API analysis + +### Category +ASP.NET + +[More information](http://connect.microsoft.com/VisualStudio/feedback/details/748052/textbox-with-multiline-textmode-adds-additional-linebreak-to-the-output) + + diff --git a/Documentation/breaking-changes/multiple-items-in-a-single-tablelayoutpanel-cell-may-be-rearranged.md b/Documentation/breaking-changes/multiple-items-in-a-single-tablelayoutpanel-cell-may-be-rearranged.md new file mode 100644 index 000000000..78f53d9cb --- /dev/null +++ b/Documentation/breaking-changes/multiple-items-in-a-single-tablelayoutpanel-cell-may-be-rearranged.md @@ -0,0 +1,34 @@ +## 98: Multiple items in a single TableLayoutPanel cell may be rearranged + +### Scope +Minor + +### Version Introduced +4.5 + +### Version Reverted +4.5 + +### Source Analyzer Status +Available + +### Change Description +In the .NET Framework 4.5, if multiple items are placed in the same TableLayoutPanel cell, they may be displayed in a different order than they were in the .NET Framework 4.0. + +- [ ] Quirked +- [ ] Build-time break + +### Recommended Action +This behavior was reverted in a servicing update for the .NET Framework 4.5. Please update the .NET Framework 4.5, or upgrade to .NET Framework 4.5.1 or later, to fix this issue. Alternatively, avoid the ambiguous case of multiple items in the same TableLayourPanel cell. + +### Affected APIs +* `M:System.Windows.Forms.TableLayoutControlCollection.Add(System.Windows.Forms.Control,System.Int32,System.Int32)` + +### Category +Windows Forms + + diff --git a/Documentation/breaking-changes/netdatacontractserializer-fails-to-deserialize-a-concurrentdictionary-serialized-with-a-different-_net-version.md b/Documentation/breaking-changes/netdatacontractserializer-fails-to-deserialize-a-concurrentdictionary-serialized-with-a-different-_net-version.md new file mode 100644 index 000000000..12e632b77 --- /dev/null +++ b/Documentation/breaking-changes/netdatacontractserializer-fails-to-deserialize-a-concurrentdictionary-serialized-with-a-different-_net-version.md @@ -0,0 +1,34 @@ +## 110: NetDataContractSerializer fails to deserialize a ConcurrentDictionary serialized with a different .NET version + +### Scope +Minor + +### Version Introduced +4.5.1 + +### Source Analyzer Status +Planned + +### Change Description +By design, the [NetDataContractSerializer](https://msdn.microsoft.com/en-us/library/system.runtime.serialization.netdatacontractserializer.aspx) can be used only if both the serializing and deserializing ends share the same CLR types. Therefore, it is not guaranteed that an object serialized with one version of the .NET Framework can be deserialized by a different version. + +ConcurrentDictionary is a type that is known to not to deserialize correctly if serialized with the .NET Framework 4.5 or earlier and deserialized with the .NET Framework 4.5.1 or later. + +- [ ] Quirked +- [ ] Build-time break + +### Recommended Action +There are a number of possible work-arounds for this issue: + +- Upgrade the serializing computer to use the .NET Framework 4.5.1, as well. +- Use DataContractSerializer instead of NetDataContractSerializer as this does not expect the exact same CLR types at both serializing and deserializing ends. +- Use Dictionary instead of ConcurrentDictionary since it does not exhibit this particular 4.5->4.5.1 break. + +### Affected APIs +* `M:System.Runtime.Serialization.NetDataContractSerializer.Deserialize(System.IO.Stream)` + +### Category +Serialization + +[More information](http://stackoverflow.com/questions/19585791/net-4-5-1-wcf-serialization-exception) + diff --git a/Documentation/breaking-changes/new-(ambiguous)-dispatcher_invoke-overloads-could-result-in-different-behavior.md b/Documentation/breaking-changes/new-(ambiguous)-dispatcher_invoke-overloads-could-result-in-different-behavior.md new file mode 100644 index 000000000..2110a989b --- /dev/null +++ b/Documentation/breaking-changes/new-(ambiguous)-dispatcher_invoke-overloads-could-result-in-different-behavior.md @@ -0,0 +1,33 @@ +## 23: New (ambiguous) Dispatcher.Invoke overloads could result in different behavior + +### Scope +Minor + +### Version Introduced +4.5 + +### Source Analyzer Status +Available + +### Change Description +The .NET Framework 4.5 adds new overloads to Dispatcher.Invoke that include a parameter of type System.Action. When existing code is recompiled, compilers may resolve calls to Dispatcher.Invoke methods that have a Delegate parameter as calls to Dispatcher.Invoke methods with an System.Action parameter. If a call to a Dispatcher.Invoke overload with a Delegate parameter is resolved as a call to a Dispatcher.Invoke overload with an System.Action parameter, the following differences in behavior may occur: + +- If an exception occurs, the Dispatcher.UnhandledExceptionFilter and Dispatcher.UnhandledException events are not raised. Instead, exceptions are handled by the UnobservedTaskException event. +- Calls to some members, such as DispatcherOperation.Result, block until the operation has completed. + +- [ ] Quirked +- [x] Build-time break + +### Recommended Action +To avoid ambiguity (and potential differences in exception handling or blocking behaviors), code calling Dispatcher.Invoke can pass an empty object[] as a second parameter to the Invoke call to be sure of resolving to the .NET 4.0 method overload. + +### Affected APIs +* `M:System.Windows.Threading.Dispatcher.Invoke(System.Delegate,System.Object[])` +* `M:System.Windows.Threading.Dispatcher.Invoke(System.Delegate,System.TimeSpan,System.Object[])` +* `M:System.Windows.Threading.Dispatcher.Invoke(System.Delegate,System.TimeSpan,System.Windows.Threading.DispatcherPriority,System.Object[])` +* `M:System.Windows.Threading.Dispatcher.Invoke(System.Delegate,System.Windows.Threading.DispatcherPriority,System.Object[])` + +### Category +Windows Workflow Foundation (WF) + +[More information](https://msdn.microsoft.com/en-us/library/hh367887(v=vs.110).aspx#wwf) diff --git a/Documentation/breaking-changes/new-enum-values-in-wpf's-pagerangeselection.md b/Documentation/breaking-changes/new-enum-values-in-wpf's-pagerangeselection.md new file mode 100644 index 000000000..ff232fea1 --- /dev/null +++ b/Documentation/breaking-changes/new-enum-values-in-wpf's-pagerangeselection.md @@ -0,0 +1,32 @@ +## 37: New enum values in WPF's PageRangeSelection + +### Scope +Edge + +### Version Introduced +4.5 + +### Source Analyzer Status +Available + +### Change Description +Two new members (CurrentPage and SelectedPage) have been added to the [PageRangeSelection](https://msdn.microsoft.com/en-us/library/system.windows.controls.pagerangeselection(v=vs.110).aspx) enum. + +- [ ] Quirked +- [ ] Build-time break + +### Recommended Action +In most cases, these changes won't impact user code. Code that depends on a particular number of elements existing in Enum.GetNames or Enum.GetValues calls on the PageRangeSelection type should be modified, though. + +### Affected APIs +* `T:System.Windows.Controls.PageRangeSelection` + +### Category +Windows Presentation Foundation (WPF) + +[More information](https://msdn.microsoft.com/en-us/library/hh367887(v=vs.110).aspx#wpf) + + diff --git a/Documentation/breaking-changes/no-longer-able-to-set-enableviewstatemac-to-false.md b/Documentation/breaking-changes/no-longer-able-to-set-enableviewstatemac-to-false.md new file mode 100644 index 000000000..b87546208 --- /dev/null +++ b/Documentation/breaking-changes/no-longer-able-to-set-enableviewstatemac-to-false.md @@ -0,0 +1,27 @@ +## 14: No longer able to set EnableViewStateMac to false + +### Scope +Major + +### Version Introduced +4.5.2 + +### Source Analyzer Status +Available + +### Change Description +ASP.NET no longer allows developers to specify `` or `<@Page EnableViewStateMac="false" %>`. The view state message authentication code (MAC) is now enforced for all requests with embedded view state. Only apps that explicitly set the EnableViewStateMac property to false are affected. + +- [ ] Quirked +- [ ] Build-time break + +### Recommended Action +EnableViewStateMac must be assumed to be true, and any resulting MAC errors must be resolved (as explained in [this](https://support.microsoft.com/en-us/kb/2915218) guidance, which contains multiple resolutions depending on the specifics of what is causing MAC errors). + +### Affected APIs +* Not detectable via API analysis + +### Category +ASP.NET + +[More information](https://msdn.microsoft.com/en-us/library/dn720774#ASP_NET) diff --git a/Documentation/breaking-changes/non-pooled-sql-connections-will-leak-memory-if-not-explicitly-disposed.md b/Documentation/breaking-changes/non-pooled-sql-connections-will-leak-memory-if-not-explicitly-disposed.md new file mode 100644 index 000000000..ad76e5c61 --- /dev/null +++ b/Documentation/breaking-changes/non-pooled-sql-connections-will-leak-memory-if-not-explicitly-disposed.md @@ -0,0 +1,31 @@ +## 97: Non-pooled SQL connections will leak memory if not explicitly disposed + +### Scope +Edge + +### Version Introduced +4.5 + +### Version Reverted +4.5 + +### Source Analyzer Status +Not planned + +### Change Description +In the .NET Framework 4.5, non-pooled SQL connections which are not explicitly exposed (via Dispose, Close, or using) will leak memory + +- [ ] Quirked +- [ ] Build-time break + +### Recommended Action +This issue is fixed in a .NET Framework 4.5 servicing update. Please update the .NET Framework 4.5, or upgrade to .NET Framework 4.5.1 or later, to fix this issue. Alternatively, this issue may be avoided by using the SqlConnection in a 'using' pattern (which is a best practice) or by explicitly calling Dispose or Close when the connection is no longer needed. + +### Affected APIs +* `M:System.Data.SqlClient.SqlConnection.#ctor(System.String)` +* `M:System.Data.SqlClient.SqlConnection.#ctor(System.String,System.Data.SqlClient.SqlCredential)` + +### Category +Data + +[More information](https://support.microsoft.com/kb/2748720) diff --git a/Documentation/breaking-changes/null-coalescer-values-are-not-visible-in-debugger-until-one-step-later.md b/Documentation/breaking-changes/null-coalescer-values-are-not-visible-in-debugger-until-one-step-later.md new file mode 100644 index 000000000..affa6dde4 --- /dev/null +++ b/Documentation/breaking-changes/null-coalescer-values-are-not-visible-in-debugger-until-one-step-later.md @@ -0,0 +1,30 @@ +## 123: Null coalescer values are not visible in debugger until one step later + +### Scope +Edge + +### Version Introduced +4.5 + +### Version Reverted +4.6 + +### Source Analyzer Status +Not planned + +### Change Description +A bug in the .NET Framework 4.5 causes values set via a null coalescing operation to not be visible in the debugger immediately after the assignment operation is executed when running on the 64-bit version of the Framework. + +- [ ] Quirked +- [ ] Build-time break + +### Recommended Action +Stepping one additional time in the debugger will cause the local/field's value to be correctly updated. Also, this issue has been fixed in the .NET Framework 4.6; upgrading to that version of the Framework should solve the issue. + +### Affected APIs +* Not detectable via API analysis + +### Category +Debugger + +[More information](http://stackoverflow.com/questions/19352130/why-doesnt-the-null-coalescing-operator-work-in-this-situation) diff --git a/Documentation/breaking-changes/objectcontext_translate-and-objectcontext_executestorequery-now-support-enum-type.md b/Documentation/breaking-changes/objectcontext_translate-and-objectcontext_executestorequery-now-support-enum-type.md new file mode 100644 index 000000000..549e96ff1 --- /dev/null +++ b/Documentation/breaking-changes/objectcontext_translate-and-objectcontext_executestorequery-now-support-enum-type.md @@ -0,0 +1,30 @@ +## 41: ObjectContext.Translate and ObjectContext.ExecuteStoreQuery now support enum type + +### Scope +Edge + +### Version Introduced +4.5 + +### Source Analyzer Status +Available + +### Change Description +In .NET 4.0, the generic parameter `T` of `ObjectContext.Translate` and `ObjectContext.ExecuteStoreQuery` methods could not be an enum. That scenario is now supported. + +- [ ] Quirked +- [ ] Build-time break + +### Recommended Action +If Translate or ExecuteStoreQuery was called on an enum type in .NET 4.0, '0' was returned. If that behavior was desirable, the calls should be replaced with a constant 0 (or the enum equivalent of it). + +### Affected APIs +* ```M:System.Data.Objects.ObjectContext.Translate``1(System.Data.Common.DbDataReader)``` +* ```M:System.Data.Objects.ObjectContext.Translate``1(System.Data.Common.DbDataReader,System.String,System.Data.Objects.MergeOption)``` +* ``M:System.Data.Objects.ObjectContext.ExecuteStoreQuery``1(System.String,System.Object[])``` +* ```M:System.Data.Objects.ObjectContext.ExecuteStoreQuery``1(System.String,System.String,System.Data.Objects.MergeOption,System.Object[])``` + +### Category +Entity Framework + +[More information](https://msdn.microsoft.com/en-us/library/hh367887\(v=vs.110\).aspx#sql) diff --git a/Documentation/breaking-changes/objectdisposedexception-thrown-by-wpf-spellchecker.md b/Documentation/breaking-changes/objectdisposedexception-thrown-by-wpf-spellchecker.md new file mode 100644 index 000000000..88d912e99 --- /dev/null +++ b/Documentation/breaking-changes/objectdisposedexception-thrown-by-wpf-spellchecker.md @@ -0,0 +1,33 @@ +## 174: ObjectDisposedException thrown by WPF spellchecker + +### Scope +Edge + +### Version Introduced +4.6.1 + +### Version Reverted +4.7 + +### Source Analyzer Status +NotPlanned + +### Change Description +WPF applications occasionally crash during application shutdown with an ObjectDisposedException thrown by the spellchecker. This is fixed in .NET 4.7 WPF by handling the exception gracefully, and thus ensuring that applications are no longer adversely affected.It should be noted that occasional first-chance exceptions would continue to be observed in applications running under a debugger. + +- [ ] Quirked +- [ ] Build-time break + +### Recommended Action +Upgrade to .NET 4.7 + +### Affected APIs +Not detectable via API analysis + +### Category +Windows Presentation Foundation (WPF) + + diff --git a/Documentation/breaking-changes/obsoleteattribute-exports-as-both-obsoleteattribute-and-deprecatedattribute-in-winmd-scenarios.md b/Documentation/breaking-changes/obsoleteattribute-exports-as-both-obsoleteattribute-and-deprecatedattribute-in-winmd-scenarios.md new file mode 100644 index 000000000..3149ca0e2 --- /dev/null +++ b/Documentation/breaking-changes/obsoleteattribute-exports-as-both-obsoleteattribute-and-deprecatedattribute-in-winmd-scenarios.md @@ -0,0 +1,29 @@ +## 48: ObsoleteAttribute exports as both ObsoleteAttribute and DeprecatedAttribute in WinMD scenarios + +### Scope +Edge + +### Version Introduced +4.5.1 + +### Source Analyzer Status +Available + +### Change Description +When you create a Windows Metadata library (.winmd file), the ObsoleteAttribute attribute is exported as both ObsoleteAttribute and Windows.Foundation.DeprecatedAttribute. + +- [ ] Quirked +- [x] Build-time break + +### Recommended Action +Recompilation of existing source code that uses the ObsoleteAttribute attribute may generate warnings when consuming that code from C++/CX or JavaScript. + +We do not recommend applying both ObsoleteAttribute and Windows.Foundation.DeprecatedAttribute to code in managed assemblies; it may result in build warnings. + +### Affected APIs +* Not detectable via API analysis + +### Category +Core + +[More information](https://msdn.microsoft.com/en-us/library/dn458356(v=vs.110).aspx) diff --git a/Documentation/breaking-changes/only-tls-1_0-1_1-and-1_2-protocols-supported-in-system_net_servicepointmanager-and-system_net_security_sslstream.md b/Documentation/breaking-changes/only-tls-1_0-1_1-and-1_2-protocols-supported-in-system_net_servicepointmanager-and-system_net_security_sslstream.md new file mode 100644 index 000000000..e92cd875a --- /dev/null +++ b/Documentation/breaking-changes/only-tls-1_0-1_1-and-1_2-protocols-supported-in-system_net_servicepointmanager-and-system_net_security_sslstream.md @@ -0,0 +1,33 @@ +## 137: Only Tls 1.0, 1.1 and 1.2 protocols supported in System.Net.ServicePointManager and System.Net.Security.SslStream + +### Scope +Minor + +### Version Introduced +4.6 + +### Source Analyzer Status +Planned + +### Change Description +Starting with the .NET Framework 4.6, the `System.Net.ServicePointManager` and `System.Net.Security.SslStream` classes are only allowed to use one of the following three protocols: Tls1.0, Tls1.1, or Tls1.2. The SSL3.0 protocol and RC4 cipher are not supported. + +- [x] Quirked +- [ ] Build-time break + +### Recommended Action +The recommended mitigation is to upgrade the sever-side app to Tls1.0, Tls1.1, or Tls1.2. If this is not feasible, or if client apps are broken, the AppContext class can be used to opt out of this feature in either of two ways: + +1. By programmatically setting compat switches on the AppContext, as explained [here](http://blogs.msdn.com/b/dotnet/archive/2015/04/29/net-announcements-at-build-2015.aspx#dotnet46) +2. By adding the following line to the `` section of the app.config file: ``; + +### Affected APIs +* `F:System.Net.SecurityProtocolType.Ssl3` +* `F:System.Security.Authentication.SslProtocols.None` +* `F:System.Security.Authentication.SslProtocols.Ssl2` +* `F:System.Security.Authentication.SslProtocols.Ssl3` + +### Category +Networking + +[More information](https://msdn.microsoft.com/en-us/library/dn833123(v=vs.110).aspx#Net) diff --git a/Documentation/breaking-changes/opt-in-break-to-revert-from-different-4_5-sql-generation-to-simpler-4_0-sql-generation.md b/Documentation/breaking-changes/opt-in-break-to-revert-from-different-4_5-sql-generation-to-simpler-4_0-sql-generation.md new file mode 100644 index 000000000..d35f5fb63 --- /dev/null +++ b/Documentation/breaking-changes/opt-in-break-to-revert-from-different-4_5-sql-generation-to-simpler-4_0-sql-generation.md @@ -0,0 +1,34 @@ +## 50: Opt-in break to revert from different 4.5 SQL generation to simpler 4.0 SQL generation + +### Scope +Transparent + +### Version Introduced +4.5.2 + +### Source Analyzer Status +Not planned + +### Change Description +Queries that produce JOIN statements and contain a call to a limiting operation without first using OrderBy now produce simpler SQL. After upgrading to .NET Framework 4.5, these queries produced more complicated SQL than previous versions. + +- [ ] Quirked +- [x] Optional +- [ ] Build-time break + +### Recommended Action +This feature is disabled by default. If Entity Framework generates extra JOIN statements that cause performance degradation, you can enable this feature by adding the following entry to the `` section of the application configuration (app.config) file: + +```xml + +``` + +### Affected APIs +* Not detectable via API analysis + +### Category +Entity Framework + +[More information](https://msdn.microsoft.com/en-us/library/dn720772(v=vs.110).aspx) + + \ No newline at end of file diff --git a/Documentation/breaking-changes/page_loadcomplete-event-no-longer-causes-system_web_ui_webcontrols_entitydatasource-control-to-invoke-data-binding.md b/Documentation/breaking-changes/page_loadcomplete-event-no-longer-causes-system_web_ui_webcontrols_entitydatasource-control-to-invoke-data-binding.md new file mode 100644 index 000000000..02e7acf75 --- /dev/null +++ b/Documentation/breaking-changes/page_loadcomplete-event-no-longer-causes-system_web_ui_webcontrols_entitydatasource-control-to-invoke-data-binding.md @@ -0,0 +1,36 @@ +## 60: Page.LoadComplete event no longer causes System.Web.UI.WebControls.EntityDataSource control to invoke data binding + +### Scope +Edge + +### Version Introduced +4.5 + +### Source Analyzer Status +Available + +### Change Description +The `Page.LoadComplete` event no longer causes the System.Web.UI.WebControls.EntityDataSource control to invoke data binding for changes to create/update/delete parameters. +This change eliminates an extraneous trip to the database, prevents the values of controls from being reset, and produces behavior that is consistent with other data controls, such as SqlDataSource and ObjectDataSource. +This change produces different behavior in the unlikely event that applications rely on invoking data binding in the `Page.LoadComplete` event. + +- [ ] Quirked +- [ ] Build-time break + +### Recommended Action +If there is a need for databinding, manually invoke databind in an event that is earlier in the post-back. + +### Affected APIs +* Investigate applicable APIs + +### Category +ASP.NET + +[More information](https://msdn.microsoft.com/en-us/library/hh367887(v=vs.110).aspx#asp) + + + + diff --git a/Documentation/breaking-changes/path-colon-checks-are-stricter.md b/Documentation/breaking-changes/path-colon-checks-are-stricter.md new file mode 100644 index 000000000..24bfd4041 --- /dev/null +++ b/Documentation/breaking-changes/path-colon-checks-are-stricter.md @@ -0,0 +1,36 @@ +## 158: Path colon checks are stricter + +### Scope +Edge + +### Version Introduced +4.6.2 + +### Source Analyzer Status +NotPlanned + +### Change Description +In .NET Framework 4.6.2, a number of changes were made to support previously unsupported paths (both in length and format). Checks for proper +drive separator (colon) syntax were made more correct, which had the side effect of blocking some URI paths in a few select Path APIs where they +used to be tolerated. + +- [x] Quirked +- [ ] Build-time break + +### Recommended Action + +If passing a URI to affected APIs, modify the string to be a legal path first. + +- Remove the scheme from URLs manually (e.g. remove `file://` from URLs) +- Pass the URI to the `System.Uri` class and use `System.Uri.LocalPath` + +Alternatively, you can opt out of the new path normalization by setting the `Switch.System.IO.UseLegacyPathHandling` AppContext switch to true. + +### Affected APIs + +* `M:System.IO.Path.GetDirectoryName(System.String)` +* `M:System.IO.Path.GetPathRoot(System.String)` + +### Category +Core + diff --git a/Documentation/breaking-changes/persian-calendar-now-uses-the-hijri-solar-algorithm.md b/Documentation/breaking-changes/persian-calendar-now-uses-the-hijri-solar-algorithm.md new file mode 100644 index 000000000..5650cef3f --- /dev/null +++ b/Documentation/breaking-changes/persian-calendar-now-uses-the-hijri-solar-algorithm.md @@ -0,0 +1,29 @@ +## 134: Persian calendar now uses the Hijri solar algorithm + +### Scope +Minor + +### Version Introduced +4.6 + +### Source Analyzer Status +Available + +### Change Description +Starting with the .NET Framework 4.6, the PersianCalendar class uses the Hijri solar algorithm. Converting dates between the PersianCalendar and other calendars may produce a slightly different result beginning with the .NET Framework 4.6 for dates earlier than 1800 or later than 2023 (Gregorian). + +Also, `PersianCalendar.MinSupportedDateTime` is now `March 22, 0622 instead of March 21, 0622`. + +- [ ] Quirked +- [ ] Build-time break + +### Recommended Action +Be aware that some early or late dates may be slightly different when using the PersianCalendar in .NET 4.6. Also, when serializing dates between processes which may run on different .NET Framework versions, do not store them as PersianCalendar date strings (since those values may be different). + +### Affected APIs +* `T:System.Globalization.PersianCalendar` + +### Category +Core + +[More information](https://msdn.microsoft.com/en-us/library/dn833125%28v=vs.110%29.aspx#Core) diff --git a/Documentation/breaking-changes/previewlostkeyboardfocus-is-called-repeatedly-if-its-handler-shows-a-message-box.md b/Documentation/breaking-changes/previewlostkeyboardfocus-is-called-repeatedly-if-its-handler-shows-a-message-box.md new file mode 100644 index 000000000..c8b41587d --- /dev/null +++ b/Documentation/breaking-changes/previewlostkeyboardfocus-is-called-repeatedly-if-its-handler-shows-a-message-box.md @@ -0,0 +1,42 @@ +## 131: PreviewLostKeyboardFocus is called repeatedly if its handler shows a Windows Forms message box + +### Scope +Edge + +### Version Introduced +4.5 + +### Source Analyzer Status +Available + +### Change Description +Beginning in the .NET Framework 4.5, calling `System.Windows.Forms.MessageBox.Show` from a `UIElement.PreviewLostKeyboardFocus` +handler will cause the handler to re-fire when the message box is closed, potentially resulting in an infinite loop of +message boxes. + +- [ ] Quirked +- [ ] Build-time break + +### Recommended Action +There are two options to work around this issue - + +1. It may be avoided by calling `System.Windows.MessageBox.Show` instead of `System.Windows.Forms.MessageBox.Show`. +2. It may be avoided by showing the message box from a `LostKeyboardFocus` event handler (as opposed to a `PreviewLostKeyboardFocus` event handler). + +### Affected APIs +* `M:System.Windows.ContentElement.add_PreviewLostKeyboardFocus(System.Windows.Input.KeyboardFocusChangedEventHandler)` +* `M:System.Windows.IInputElement.add_PreviewLostKeyboardFocus(System.Windows.Input.KeyboardFocusChangedEventHandler)` +* `M:System.Windows.UIElement.add_PreviewLostKeyboardFocus(System.Windows.Input.KeyboardFocusChangedEventHandler)` +* `M:System.Windows.UIElement3D.add_PreviewLostKeyboardFocus(System.Windows.Input.KeyboardFocusChangedEventHandler)` + +### Categories +Windows Forms +Windows Presentation Foundation (WPF) + +[More information](http://stackoverflow.com/questions/17988219/system-windows-forms-messagebox-in-netversion-4-0-4-5-behaves-differently-in-wi) + + + diff --git a/Documentation/breaking-changes/profiling-asp_net-mvc4-apps-can-lead-to-fatal-execution-engine-error.md b/Documentation/breaking-changes/profiling-asp_net-mvc4-apps-can-lead-to-fatal-execution-engine-error.md new file mode 100644 index 000000000..1a8f20cf4 --- /dev/null +++ b/Documentation/breaking-changes/profiling-asp_net-mvc4-apps-can-lead-to-fatal-execution-engine-error.md @@ -0,0 +1,30 @@ +## 96: Profiling ASP.Net MVC4 apps can lead to Fatal Execution Engine Error + +### Scope +Edge + +### Version Introduced +4.5 + +### Version Reverted +4.5.2 + +### Source Analyzer Status +Not planned + +### Change Description +Profilers using NGEN /Profile assemblies may crash profiled ASP.NET MVC4 applications on startup with a 'Fatal Execution Engine Exception' + +- [ ] Quirked +- [ ] Build-time break + +### Recommended Action +This issue is fixed in the .NET Framework 4.5.2. Alternatively, the profiler may avoid this issue by specifying `COR_PRF_DISABLE_ALL_NGEN_IMAGES` in its event mask. + +### Affected APIs +* Not detectable via API analysis + +### Category +ASP.NET + +[More information](http://connect.microsoft.com/VisualStudio/feedback/details/793730/clr-profiler-crashes-any-asp-net-mvc4-app-on-startup-due-to-ngen-profile-images) diff --git a/Documentation/breaking-changes/reflection-objects-can-no-longer-be-passed-from-managed-code-to-out-of-process-dcom-clients.md b/Documentation/breaking-changes/reflection-objects-can-no-longer-be-passed-from-managed-code-to-out-of-process-dcom-clients.md new file mode 100644 index 000000000..b6936734e --- /dev/null +++ b/Documentation/breaking-changes/reflection-objects-can-no-longer-be-passed-from-managed-code-to-out-of-process-dcom-clients.md @@ -0,0 +1,35 @@ +## 77: Reflection objects can no longer be passed from managed code to out-of-process DCOM clients + +### Scope +Minor + +### Version Introduced +4.6 + +### Source Analyzer Status +Available + +### Change Description +Reflection objects can no longer be passed from managed code to out-of-process DCOM clients. The following types are affected: + +- Assembly +- MemberInfo (and its derived types, including FieldInfo, MethodInfo, Type, and TypeInfo) +- MethodBody +- Module +- ParameterInfo. + +Calls to `IMarshal` for the object return `E_NOINTERFACE`. + +- [ ] Quirked +- [ ] Build-time break + +### Recommended Action +Update marshaling code to work with non-reflection objects + +### Affected APIs +* Investigate applicable APIs + +### Category +Core + +[More information](https://msdn.microsoft.com/en-us/library/dn833125(v=vs.110).aspx#Core) diff --git a/Documentation/breaking-changes/remove-ssl3-from-the-wcf-transportdefaults.md b/Documentation/breaking-changes/remove-ssl3-from-the-wcf-transportdefaults.md new file mode 100644 index 000000000..33a8c29a4 --- /dev/null +++ b/Documentation/breaking-changes/remove-ssl3-from-the-wcf-transportdefaults.md @@ -0,0 +1,33 @@ +## 149: Remove Ssl3 from the WCF TransportDefaults + +### Scope +Edge + +### Version Introduced +4.6.2 + +### Source Analyzer Status +Planned + +### Change Description +When using NetTcp with transport security and a credential type of certificate, the SSL 3 protocol is no longer a default protocol used for negotiating a secure connection. In most cases there should be no impact to existing apps as TLS 1.0 has always been included in the protocol list for NetTcp. All existing clients should be able to negotiate a connection using at least TLS1.0. + +- [ ] Quirked +- [ ] Build-time break + +### Recommended Action +If Ssl3 is required, use one of the following configuration mechanisms to add Ssl3 to the list of negotiated protocols. + +* [SslStreamSecurityBindingElement.SslProtocols Property](https://msdn.microsoft.com/en-us/library/system.servicemodel.channels.sslstreamsecuritybindingelement.sslprotocols%28v=vs.110%29.aspx) +* [TcpTransportSecurity.SslProtocols Property](https://msdn.microsoft.com/en-us/library/system.servicemodel.tcptransportsecurity.sslprotocols%28v=vs.110%29.aspx) +* [\ section of \](https://msdn.microsoft.com/en-us/library/ms731331%28v=vs.110%29.aspx) +* [\ section of \](https://msdn.microsoft.com/en-us/library/ms731328%28v=vs.110%29.aspx) + + +### Affected APIs +* `P:System.ServiceModel.Channels.SslStreamSecurityBindingElement.SslProtocols` +* `P:System.ServiceModel.TcpTransportSecurity.SslProtocols` + + +### Category +* Windows Communication Foundation (WCF) \ No newline at end of file diff --git a/Documentation/breaking-changes/resolveassemblyreference-task-now-warns-on-dependencies-with-the-wrong-architecture.md b/Documentation/breaking-changes/resolveassemblyreference-task-now-warns-on-dependencies-with-the-wrong-architecture.md new file mode 100644 index 000000000..3cf86fd9a --- /dev/null +++ b/Documentation/breaking-changes/resolveassemblyreference-task-now-warns-on-dependencies-with-the-wrong-architecture.md @@ -0,0 +1,30 @@ +## 49: ResolveAssemblyReference task now warns on dependencies with the wrong architecture + +### Scope +Minor + +### Version Introduced +4.5.1 + +### Source Analyzer Status +Planned + +### Change Description +The task emits a warning, MSB3270, which indicates that a reference or any of its dependencies does not match the app's architecture. For example, this occurs if an app that was compiled with the anycpu option includes an x86 reference. Such a scenario could result in an app failure at run time (in this case, if the app is deployed as an x64 process). + +- [ ] Quirked +- [x] Build-time break + +### Recommended Action +There are two areas of impact: + +* Recompilation generates warnings that did not appear when the app was compiled under a previous version of MSBuild. However, because the warning identifies a possible source of runtime failure, it should be investigated and addressed. +* If warnings are treated as errors, the app will fail to compile. + +### Affected APIs +* Not detectable via API analysis + +### Category +MSBuild + +[More information](https://msdn.microsoft.com/en-us/library/dn458356(v=vs.110).aspx) diff --git a/Documentation/breaking-changes/ribbongroup-background-is-set-to-transparent-in-localized-builds.md b/Documentation/breaking-changes/ribbongroup-background-is-set-to-transparent-in-localized-builds.md new file mode 100644 index 000000000..efe78714e --- /dev/null +++ b/Documentation/breaking-changes/ribbongroup-background-is-set-to-transparent-in-localized-builds.md @@ -0,0 +1,33 @@ +## 175: RibbonGroup background is set to transparent in localized builds + +### Scope +Edge + +### Version Introduced +4.6.2 + +### Version Reverted +4.7 + +### Source Analyzer Status +NotPlanned + +### Change Description +RibbonGroup background on localized builds was always painted with Transparent brush, resulting in poor UI experience. This is fixed in .NET 4.7 WPF fix by updating the localized resources for RibbonGroup, which in turn ensures that the correct brush is selected. + +- [ ] Quirked +- [ ] Build-time break + +### Recommended Action +Upgrade to .NET 4.7 + +### Affected APIs +Not detectable via API analysis + +### Category +Windows Presentation Foundation (WPF) + + \ No newline at end of file diff --git a/Documentation/breaking-changes/right-clicking-on-a-wpf-datagrid-row-header-changes-the-datagrid-selection.md b/Documentation/breaking-changes/right-clicking-on-a-wpf-datagrid-row-header-changes-the-datagrid-selection.md new file mode 100644 index 000000000..d3817e155 --- /dev/null +++ b/Documentation/breaking-changes/right-clicking-on-a-wpf-datagrid-row-header-changes-the-datagrid-selection.md @@ -0,0 +1,31 @@ +## 103: Right clicking on a WPF DataGrid row header changes the DataGrid selection + +### Scope +Edge + +### Version Introduced +4.5 + +### Version Reverted +4.6 + +### Source Analyzer Status +Planned + +### Change Description +Right-clicking a selected DataGrid row header while multiple rows are selected results in the DataGrid's selection changing to only that row. + +- [ ] Quirked +- [ ] Build-time break + +### Recommended Action +This issue has been fixed in the .NET Framework 4.6 and may be addressed by upgrading to that version of the .NET Framework. + +### Affected APIs +* `M:System.Windows.Controls.DataGrid.#ctor` + +### Category +Windows Presentation Foundation (WPF) + +[More information](http://connect.microsoft.com/VisualStudio/feedback/details/1001771/right-clicking-on-wpf-data-grid-row-header-changes-selection) + diff --git a/Documentation/breaking-changes/rsacng-now-correctly-loads-rsa-keys-of-non-standard-keysize.md b/Documentation/breaking-changes/rsacng-now-correctly-loads-rsa-keys-of-non-standard-keysize.md new file mode 100644 index 000000000..a0956b853 --- /dev/null +++ b/Documentation/breaking-changes/rsacng-now-correctly-loads-rsa-keys-of-non-standard-keysize.md @@ -0,0 +1,38 @@ +## 148: RSACng now correctly loads RSA keys of non-standard key size + +### Scope +Edge + +### Version Introduced +4.6.2 + +### Source Analyzer Status +Planned + +### Change Description +In .NET Framework versions prior to 4.6.2, customers with non-standard +key sizes for RSA certificates are unable to access those keys via the +`GetRSAPublicKey()` and `GetRSAPrivateKey()` extension methods. A +`CryptographicException` with the message "The requested key size is +not supported" is thrown. In .NET Framework 4.6.2 this issue has been +fixed. Similarly, `RSA.ImportParameters()` and +`RSACng.ImportParameters()` now work with non-standard key sizes +without throwing `CryptographicException`'s. + +- [X] Quirked +- [ ] Build-time break + +### Recommended Action +If there is any exception handling logic that relies on the previous +behavior where a `CryptographicException` is thrown when non-standard +key sizes are used, consider removing the logic. + + +### Affected APIs +* `M:System.Security.Cryptography.RSA.ImportParameters(System.Security.Cryptography.RSAParameters)` +* `M:System.Security.Cryptography.RSACng.ImportParameters(System.Security.Cryptography.RSAParameters)` +* `M:System.Security.Cryptography.X509Certificates.RSACertificateExtensions.GetRSAPrivateKey(System.Security.Cryptography.X509Certificates.X509Certificate2)` +* `M:System.Security.Cryptography.X509Certificates.RSACertificateExtensions.GetRSAPublicKey(System.Security.Cryptography.X509Certificates.X509Certificate2)` + +### Category +Security diff --git a/Documentation/breaking-changes/rsacng_verifyhash-now-returns-false-for-any-verification-failure.md b/Documentation/breaking-changes/rsacng_verifyhash-now-returns-false-for-any-verification-failure.md new file mode 100644 index 000000000..088e4f797 --- /dev/null +++ b/Documentation/breaking-changes/rsacng_verifyhash-now-returns-false-for-any-verification-failure.md @@ -0,0 +1,35 @@ +## 159: RSACng.VerifyHash now returns False for any verification failure + +### Scope +Minor + +### Version Introduced +4.6.2 + +### Source Analyzer Status +Investigating + +### Change Description +Starting with the .NET Framework 4.6.2, this method returns **False** if the signature itself is badly formatted. It now returns false for any verification failure. + +In the .NET Framework 4.6 and 4.6.1, the method throws a `T:System.Security.Cryptography.CryptographicException` if the signature itself is badly formatted. + +- [ ] Quirked +- [ ] Build-time break + +### Recommended Action + +Any code whose execution depends on handling the `T:System.Security.Cryptography.CryptographicException` should instead execute if validation fails and the method returns **False**. + +### Affected APIs +* `M:System.Security.Cryptography.RSACng.VerifyHash(System.Byte[],System.Byte[],System.Security.Cryptography.HashAlgorithmName,System.Security.Cryptography.RSASignaturePadding)` + +### Category +Security + + + + diff --git a/Documentation/breaking-changes/scrolling-a-wpf-treeview-or-grouped-listbox-in-a-virtualizingstackpanel-can-cause-a-hang.md b/Documentation/breaking-changes/scrolling-a-wpf-treeview-or-grouped-listbox-in-a-virtualizingstackpanel-can-cause-a-hang.md new file mode 100644 index 000000000..049813535 --- /dev/null +++ b/Documentation/breaking-changes/scrolling-a-wpf-treeview-or-grouped-listbox-in-a-virtualizingstackpanel-can-cause-a-hang.md @@ -0,0 +1,30 @@ +## 86: Scrolling a WPF TreeView or grouped ListBox in a VirtualizingStackPanel can cause a hang + +### Scope +Major + +### Version Introduced +4.5 + +### Version Reverted +4.5.1 + +### Source Analyzer Status +Planned + +### Change Description +In the .NET Framework v4.5, scrolling a WPF TreeView in a virtualized stack panel can cause hangs if there are margins in the viewport (between the items in the TreeView, for example, or on an ItemsPresenter element). Additionally, in some cases, different sized items in the view can cause instability even if there are no margins. + +- [ ] Quirked +- [ ] Build-time break + +### Recommended Action +This bug can be avoided by upgrading to .NET Framework 4.5.1. Alternatively, margins can be removed from view collections (like TreeViews) within virtualized stack panels if all contained items are the same size. + +### Affected APIs +* `M:System.Windows.Controls.VirtualizingStackPanel.SetIsVirtualizing(System.Windows.DependencyObject,System.Boolean)` + +### Category +Windows Presentation Foundation (WPF) + +[More information](http://connect.microsoft.com/VisualStudio/feedback/details/763639/wpf-application-built-on-net-4-0-freezes-under-system-with-net-4-5-while-scrolling-the-treeview-under-specific-conditions) diff --git a/Documentation/breaking-changes/serialization-of-control-characters-with-datacontractjsonserializer-is-now-compatible-with-ecmascript-v6-and-v8.md b/Documentation/breaking-changes/serialization-of-control-characters-with-datacontractjsonserializer-is-now-compatible-with-ecmascript-v6-and-v8.md new file mode 100644 index 000000000..c551dfcf5 --- /dev/null +++ b/Documentation/breaking-changes/serialization-of-control-characters-with-datacontractjsonserializer-is-now-compatible-with-ecmascript-v6-and-v8.md @@ -0,0 +1,35 @@ +## 168: Serialization of control characters with DataContractJsonSerializer is now compatible with ECMAScript V6 and V8 + +### Scope +Edge + +### Version Introduced +4.7 + +### Source Analyzer Status +Planned + +### Change Description +In the .NET framework 4.6.2 and earlier versions, the DataContractJsonSerializer did not serialize some special control characters, such as \b, \f, and \t, in a way that was compatible with the ECMAScript V6 and V8 standards. Starting with the .NET Framework 4.7, serialization of these control characters is compatible with ECMAScript V6 and V8. + +- [x] Quirked +- [ ] Build-time break + +### Recommended Action +For apps that target the .NET Framework 4.7, this feature is enabled by default. If this behavior is not desirable, you can opt out of this feature by adding the following line to the `` section of the app.config or web.config file: + + ```xml + + + + ``` + + +### Affected APIs +* `M:System.Runtime.Serialization.Json.DataContractJsonSerializer.WriteObject(System.IO.Stream,System.Object)` +* `M:System.Runtime.Serialization.Json.DataContractJsonSerializer.WriteObject(System.Xml.XmlDictionaryWriter,System.Object)` +* `M:System.Runtime.Serialization.Json.DataContractJsonSerializer.WriteObject(System.Xml.XmlWriter,System.Object)` + + +### Category +* Windows Communication Foundation (WCF) \ No newline at end of file diff --git a/Documentation/breaking-changes/sharing-session-state-with-asp_net-stateserver-requires-all-servers-in-the-web-farm-to-use-the-same-_net-framework-version.md b/Documentation/breaking-changes/sharing-session-state-with-asp_net-stateserver-requires-all-servers-in-the-web-farm-to-use-the-same-_net-framework-version.md new file mode 100644 index 000000000..1aae2c074 --- /dev/null +++ b/Documentation/breaking-changes/sharing-session-state-with-asp_net-stateserver-requires-all-servers-in-the-web-farm-to-use-the-same-_net-framework-version.md @@ -0,0 +1,33 @@ +## 128: Sharing session state with Asp.Net StateServer requires all servers in the web farm to use the same .NET Framework version + +### Scope +Edge + +### Version Introduced +4.5 + +### Source Analyzer Status +Planned + +### Change Description +When enabling StateServer session state, all of the servers in the given web farm must use the same version of the .NET Framework in order for state to be properly shared. + +- [ ] Quirked +- [ ] Build-time break + +### Recommended Action +Be sure to upgrade .NET Framework versions on web servers that share state at the same time. + +### Affected APIs +* `F:System.Web.SessionState.SessionStateMode.StateServer` + +### Category +ASP.NET + +[More information](http://connect.microsoft.com/VisualStudio/feedback/details/823803/asp-net-stateserver-requests-are-not-compatible-between-4-0-and-4-5-1-versions-of-net-framework) + + + diff --git a/Documentation/breaking-changes/soapformatter-cannot-deserialize-hashtable-and-similar-ordered-collection-objects.md b/Documentation/breaking-changes/soapformatter-cannot-deserialize-hashtable-and-similar-ordered-collection-objects.md new file mode 100644 index 000000000..9def1d2ef --- /dev/null +++ b/Documentation/breaking-changes/soapformatter-cannot-deserialize-hashtable-and-similar-ordered-collection-objects.md @@ -0,0 +1,31 @@ +## 1: SoapFormatter cannot deserialize Hashtable and similar ordered collection objects + +### Scope +Minor + +### Version Introduced +4.5 + +### Source Analyzer Status +Available + +### Change Description +The SoapFormatter does not guarantee that objects serialized under one .NET Framework version will successfully deserialize under a different version. Specifically, some ordered collections (like Hashtable) added members between 4.0 and 4.5 such that objects of these types cannot deserialize with .NET 4.0 if they were serialzied with .NET 4.5. +Note that if the serialized data is both serialized and deserialized with the same .NET Framework version, no issue will occur. + +- [ ] Quirked +- [ ] Build-time break + +### Recommended Action +SoapFormatter serialization should be replaced with BinaryFormatter serialization or NetDataContractSerialization to be resilient to .NET Framework changes. + +### Affected APIs +* `M:System.Runtime.Serialization.Formatters.Soap.SoapFormatter.Serialize(System.IO.Stream,System.Object)` +* `M:System.Runtime.Serialization.Formatters.Soap.SoapFormatter.Serialize(System.IO.Stream,System.Object,System.Runtime.Remoting.Messaging.Header[])` +* `M:System.Runtime.Serialization.Formatters.Soap.SoapFormatter.Deserialize(System.IO.Stream)` +* `M:System.Runtime.Serialization.Formatters.Soap.SoapFormatter.Deserialize(System.IO.Stream,System.Runtime.Remoting.Messaging.HeaderHandler)` + +### Category +Serialization + +[More information](https://msdn.microsoft.com/en-us/library/hh367887\(v=vs.110\).aspx#core) diff --git a/Documentation/breaking-changes/some-_net-apis-cause-first-chance-(handled)-entrypointnotfoundexceptions.md b/Documentation/breaking-changes/some-_net-apis-cause-first-chance-(handled)-entrypointnotfoundexceptions.md new file mode 100644 index 000000000..29d174aa0 --- /dev/null +++ b/Documentation/breaking-changes/some-_net-apis-cause-first-chance-(handled)-entrypointnotfoundexceptions.md @@ -0,0 +1,35 @@ +## 85: Some .NET APIs cause first chance (handled) EntryPointNotFoundExceptions + +### Scope +Edge + +### Version Introduced +4.5 + +### Version Reverted +4.5.1 + +### Source Analyzer Status +Available + +### Change Description +In the .NET Framework 4.5, a small number of .NET methods began throwing first chance EntryPointNotFoundExceptions. These exceptions were handled within the .Net Framework, but could break test automation that did not expect the first chance exceptions. These same APIs break some ApiVerifier scenarios when HighVersionLie is enabled. + +- [ ] Quirked +- [ ] Build-time break + +### Recommended Action +This bug can be avoided by upgrading to .NET Framework 4.5.1. Alternatively, test automation can be updated to not break on first-chance EntryPointNotFoundExceptions. + +### Affected APIs +* `M:System.Diagnostics.Debug.Assert(System.Boolean)` +* `M:System.Diagnostics.Debug.Assert(System.Boolean,System.String)` +* `M:System.Diagnostics.Debug.Assert(System.Boolean,System.String,System.String)` +* `M:System.Diagnostics.Debug.Assert(System.Boolean,System.String,System.String,System.Object[])` +* `M:System.Xml.Serialization.XmlSerializer.#ctor(System.Type)` +* Investigate applicable APIs + +### Category +Core + +[More information](https://connect.microsoft.com/VisualStudio/feedback/details/732334/unable-to-find-an-entry-point-named-getcurrentpackageid-in-dll-kernel32-dll) diff --git a/Documentation/breaking-changes/some-workflow-drag-and-drop-apis-are-obsolete.md b/Documentation/breaking-changes/some-workflow-drag-and-drop-apis-are-obsolete.md new file mode 100644 index 000000000..6b8a19172 --- /dev/null +++ b/Documentation/breaking-changes/some-workflow-drag-and-drop-apis-are-obsolete.md @@ -0,0 +1,30 @@ +## 22: Some WorkFlow drag and drop APIs are obsolete + +### Scope +Minor + +### Version Introduced +4.5 + +### Source Analyzer Status +Available + +### Change Description +This WorkFlow Drag/Drop API is obsolete and will cause compiler warnings if the app is rebuilt against 4.5. + +- [ ] Quirked +- [x] Build-time break + +### Recommended Action +New [DragDropHelper](https://msdn.microsoft.com/en-us/library/system.activities.presentation.dragdrophelper(v=vs.110).aspx) APIs that support operations with multiple objects should be used instead. Alternatively, the build warnings can be suppressed or they can be avoided by using an older compiler. The APIs are still supported. + +### Affected APIs +* `M:System.Activities.Presentation.DragDropHelper.DoDragMove(System.Activities.Presentation.WorkflowViewElement,System.Windows.Point)` +* `M:System.Activities.Presentation.DragDropHelper.GetCompositeView(System.Windows.DragEventArgs)` +* `M:System.Activities.Presentation.DragDropHelper.GetDraggedModelItem(System.Windows.DragEventArgs)` +* `M:System.Activities.Presentation.DragDropHelper.GetDroppedObject(System.Windows.DependencyObject,System.Windows.DragEventArgs,System.Activities.Presentation.EditingContext)` + +### Category +Windows Workflow Foundation (WF) + +[More information](https://msdn.microsoft.com/en-us/library/hh367887#wwf) diff --git a/Documentation/breaking-changes/sql_variant-data-uses-sql_variant-collation-rather-than-database-collation.md b/Documentation/breaking-changes/sql_variant-data-uses-sql_variant-collation-rather-than-database-collation.md new file mode 100644 index 000000000..73283cac0 --- /dev/null +++ b/Documentation/breaking-changes/sql_variant-data-uses-sql_variant-collation-rather-than-database-collation.md @@ -0,0 +1,27 @@ +## 72: Sql_variant data uses sql_variant collation rather than database collation + +### Scope +Transparent + +### Version Introduced +4.5 + +### Source Analyzer Status +Not planned + +### Change Description +`sql_variant` data uses `sql_variant` collation rather than database collation. + +- [ ] Quirked +- [ ] Build-time break + +### Recommended Action +This change addresses possible data corruption if the database collation differs from the `sql_variant` collation. Applications that rely on the corrupted data may experience failure. + +### Affected APIs +* Not detectable via API analysis + +### Category +Data + +[More information](https://msdn.microsoft.com/en-us/library/hh367887(v=vs.110).aspx#xml) diff --git a/Documentation/breaking-changes/sqlbulkcopy-uses-destination-column-encoding-for-strings.md b/Documentation/breaking-changes/sqlbulkcopy-uses-destination-column-encoding-for-strings.md new file mode 100644 index 000000000..0db5c9021 --- /dev/null +++ b/Documentation/breaking-changes/sqlbulkcopy-uses-destination-column-encoding-for-strings.md @@ -0,0 +1,28 @@ +## 71: SqlBulkCopy uses destination column encoding for strings + +### Scope +Edge + +### Version Introduced +4.5 + +### Source Analyzer Status +Planned + +### Change Description +When inserting data into a column, SqlBulkCopy uses the encoding of the destination column rather than the default encoding for `VARCHAR` and `CHAR` types. This change eliminates the possibility of data corruption caused by using the default encoding when the destination column does not use the default encoding. In rare cases, an existing application may throw a SqlException exception if the change in encoding produces data that is too big to fit into the destination column. + +- [ ] Quirked +- [ ] Build-time break + +### Recommended Action +Expect that SqlBulkCopy will no longer corrupt data due to encoding differences. If strings near the destination column's size limit are being copied, it may be necessary to either pre-encode data (to be copied to check that the data will fit in the destination column) or catch SqlExceptions. + +### Affected APIs +* `T:System.Data.SqlClient.SqlBulkCopy` +* `M:System.Data.SqlClient.SqlBulkCopy.#ctor(System.Data.SqlClient.SqlConnection)` + +### Category +Data + +[More information](https://msdn.microsoft.com/en-us/library/hh367887(v=vs.110).aspx#xml) diff --git a/Documentation/breaking-changes/sqlconnection-can-no-longer-connect-to-sql-server-1997-or-databases-using-the-via-adapter.md b/Documentation/breaking-changes/sqlconnection-can-no-longer-connect-to-sql-server-1997-or-databases-using-the-via-adapter.md new file mode 100644 index 000000000..1f375a846 --- /dev/null +++ b/Documentation/breaking-changes/sqlconnection-can-no-longer-connect-to-sql-server-1997-or-databases-using-the-via-adapter.md @@ -0,0 +1,32 @@ +## 70: SqlConnection can no longer connect to SQL Server 1997 or databases using the VIA adapter + +### Scope +Edge + +### Version Introduced +4.5 + +### Source Analyzer Status +Planned + +### Change Description +Connections to SQL Server databases using the [Virtual Interface Adapter (VIA) protocol](https://technet.microsoft.com/en-us/library/ms191229%28v=sql.105%29.aspx) are no longer supported. +The protocol used to connect to a SQL Server database is visible in the connection string. A VIA connection will contain via:\. +If this app is connecting to SQL via a protocol other than VIA (tcp: or np: for example), then no breaking change will be encountered. + +Also, connections to SQL Server 7 (1997) are no longer supported. + +- [ ] Quirked +- [ ] Build-time break + +### Recommended Action +The VIA protocol is deprecated, so an alternative protocol should be used to connect to SQL databases. The most common protocol used is TCP/IP. Instructions for enabling the TCP/IP protocol can be found [here](https://msdn.microsoft.com/en-us/library/bb909712(v=vs.90).aspx). If the database is only accessed from within an intranet, the shared pipes protocol may provide better performance if the network is slow. + +### Affected APIs +* `M:System.Data.SqlClient.SqlConnection.#ctor(System.String)` +* `M:System.Data.SqlClient.SqlConnection.#ctor(System.String,System.Data.SqlClient.SqlCredential)` + +### Category +Data + +[More information](https://msdn.microsoft.com/en-us/library/hh367887%28v=vs.110%29.aspx#sql) diff --git a/Documentation/breaking-changes/sqlconnection_open-fails-on-windows-7-with-non-ifs-winsock-bsp-or-lsp-present.md b/Documentation/breaking-changes/sqlconnection_open-fails-on-windows-7-with-non-ifs-winsock-bsp-or-lsp-present.md new file mode 100644 index 000000000..f418acfec --- /dev/null +++ b/Documentation/breaking-changes/sqlconnection_open-fails-on-windows-7-with-non-ifs-winsock-bsp-or-lsp-present.md @@ -0,0 +1,33 @@ +## 83: SqlConnection.Open fails on Windows 7 with non-IFS Winsock BSP or LSP present + +### Scope +Minor + +### Version Introduced +4.5 + +### Version Reverted +4.5.2 + +### Source Analyzer Status +Planned + +### Change Description +SqlConneciton.Open and OpenAsync fail in the .NET Framework 4.5 if running on a Windows 7 machine with a non-IFS Winsock BSP or LSP are present on the computer. + +To determine whether a non-IFS BSP or LSP is installed, use the `netsh WinSock Show Catalog` command, and examine every `Winsock Catalog Provider Entry` item that is returned. If the Service Flags value has the `0x20000` bit set, the provider uses IFS handles and will work correctly. If the `0x20000` bit is clear (not set), it is a non-IFS BSP or LSP. + +- [ ] Quirked +- [ ] Build-time break + +### Recommended Action +This bug has been fixed in the .NET Framework 4.5.2, so it can be avoided by upgrading the .NET Framework. Alternatively, it can be avoided by removing any installed non-IFS Winsock LSPs. + +### Affected APIs +* `M:System.Data.SqlClient.SqlConnection.Open` +* `M:System.Data.SqlClient.SqlConnection.OpenAsync(System.Threading.CancellationToken)` + +### Category +Data + +[More information](https://connect.microsoft.com/VisualStudio/feedback/details/729323) diff --git a/Documentation/breaking-changes/sslstream-support-for-tls-alerts.md b/Documentation/breaking-changes/sslstream-support-for-tls-alerts.md new file mode 100644 index 000000000..237ce8e19 --- /dev/null +++ b/Documentation/breaking-changes/sslstream-support-for-tls-alerts.md @@ -0,0 +1,71 @@ +## 181: SslStream supports TLS Alerts + +### Scope +Edge + +### Version Introduced +4.7 + +### Source Analyzer Status +NotPlanned + +### Change Description +After a failed TLS handshake, an `IOException` with an inner `Win32Exception` exception will be thrown by the first I/O Read/Write operation. The `NativeErrorCode` code for the `Win32Exception` can be mapped to the TLS Alert from the remote party using this [Schannel documentation](https://msdn.microsoft.com/en-us/library/windows/desktop/dd721886%28v=vs.85%29.aspx). + +For more information, see +[RFC 2246: Section 7.2.2 Error alerts](https://tools.ietf.org/html/rfc2246#section-7.2.2) + +The behavior in .NET 4.6.2 and below is that the transport channel (usually TCP connection) will timeout during either Write or Read if the other party failed the handshake and immediately afterwards rejected the connection. + +- [x] Quirked +- [ ] Build-time break + +### Recommended Action + +Applications calling network I/O APIs such as `Stream.Read`/`Stream.Write` should handle `IOException` or `TimeoutException`. + +The TLS Alerts feature is enabled by default starting with .NET 4.7. Applications targeting .NET 4.0 - .NET 4.6.2 running on a .NET 4.7 or higher system will have the feature disabled to preserve compatibility. + +The following configuration API is available to enable or disable the feature for .NET 4.6 and above applications running on .NET 4.7 or higher framework. + +* Programmatically: + + Must be the very first thing the application does since ServicePointManager will initialize only once: +   +```C# + AppContext.SetSwitch("TestSwitch.LocalAppContext.DisableCaching", true); + AppContext.SetSwitch("Switch.System.Net.DontEnableTlsAlerts", true); // Set to 'false' to enable the feature in .NET 4.6 - 4.6.2. +``` +* AppConfig: + +```XML + + + + +``` +* Registry key (machine global): + + Set the Value to 'false' to enable the feature in .NET 4.6 - 4.6.2. + +``` + Key = HKLM\SOFTWARE\[Wow6432Node\]Microsoft\.NETFramework\AppContext\Switch.System.Net.DontEnableTlsAlerts + Type = String + Value = "true" +``` + + +### Affected APIs +* `T:System.Net.Security.SslStream` +* `T:System.Net.WebRequest` +* `T:System.Net.HttpWebRequest` +* `T:System.Net.FtpWebRequest` +* `T:System.Net.Mail.SmtpClient` +* `N:System.Net.Http` + +### Category +Networking, Security + + diff --git a/Documentation/breaking-changes/system_activities-is-now-aptca.md b/Documentation/breaking-changes/system_activities-is-now-aptca.md new file mode 100644 index 000000000..47b7e49f4 --- /dev/null +++ b/Documentation/breaking-changes/system_activities-is-now-aptca.md @@ -0,0 +1,27 @@ +## 20: System.Activities is now APTCA + +### Scope +Edge + +### Version Introduced +4.5 + +### Source Analyzer Status +Available + +### Change Description +The assembly is marked with the AllowPartiallyTrustedCallersAttribute attribute. + +- [ ] Quirked +- [ ] Build-time break + +### Recommended Action +Derived classes cannot be marked with the SecurityCriticalAttribute. Previously, derived types had to be marked with the SecurityCriticalAttribute. However, this change should have no real impact. + +### Affected APIs +* Not detectable via API analysis + +### Category +Windows Workflow Foundation (WF) + +[More information](https://msdn.microsoft.com/en-us/library/hh367887) diff --git a/Documentation/breaking-changes/system_net_peertopeer_collaboration-unavailable-on-windows-8.md b/Documentation/breaking-changes/system_net_peertopeer_collaboration-unavailable-on-windows-8.md new file mode 100644 index 000000000..09785f930 --- /dev/null +++ b/Documentation/breaking-changes/system_net_peertopeer_collaboration-unavailable-on-windows-8.md @@ -0,0 +1,27 @@ +## 11: System.Net.PeerToPeer.Collaboration unavailable on Windows 8 + +### Scope +Major + +### Version Introduced +4.5 + +### Source Analyzer Status +Available + +### Change Description +The System.Net.PeerToPeer.Collaboration namespace is unavailable on Windows 8 or above. + +- [ ] Quirked +- [ ] Build-time break + +### Recommended Action +Apps that support Windows 8 or above must be updated to not depend on this namespace or its members. + +### Affected APIs +* `N:System.Net.PeerToPeer.Collaboration` + +### Category +Networking + +[More information](https://msdn.microsoft.com/en-us/library/hh367887#network) diff --git a/Documentation/breaking-changes/system_servicemodel_web_webservicehost-object-no-longer-adds-a-default-endpoint.md b/Documentation/breaking-changes/system_servicemodel_web_webservicehost-object-no-longer-adds-a-default-endpoint.md new file mode 100644 index 000000000..2d1cf7d60 --- /dev/null +++ b/Documentation/breaking-changes/system_servicemodel_web_webservicehost-object-no-longer-adds-a-default-endpoint.md @@ -0,0 +1,43 @@ +## 30: System.ServiceModel.Web.WebServiceHost object no longer adds a default endpoint + +### Scope +Minor + +### Version Introduced +4.5 + +### Source Analyzer Status +Planned + +### Change Description +The System.ServiceModel.Web.WebServiceHost object no longer adds a default endpoint if an explicit endpoint has been added by application code. + +- [ ] Quirked +- [ ] Build-time break + +### Recommended Action +If users will expect to be able to connect to a default endpoint and other explicit endpoints have been added to the WebServiceHost, default endpoints should also be added explicitly (using AddDefaultEndpoints). + +### Affected APIs +* `M:System.ServiceModel.ServiceHost.AddServiceEndpoint(System.Type,System.ServiceModel.Channels.Binding,System.String)` +* `M:System.ServiceModel.ServiceHost.AddServiceEndpoint(System.Type,System.ServiceModel.Channels.Binding,System.Uri)` +* `M:System.ServiceModel.ServiceHost.AddServiceEndpoint(System.Type,System.ServiceModel.Channels.Binding,System.String,System.Uri)` +* `M:System.ServiceModel.ServiceHost.AddServiceEndpoint(System.Type,System.ServiceModel.Channels.Binding,System.Uri,System.Uri)` +* `M:System.ServiceModel.ServiceHost.AddServiceEndpoint(System.Type,System.ServiceModel.Channels.Binding,System.Uri,System.Uri)` +* `M:System.ServiceModel.ServiceHostBase.AddServiceEndpoint(System.ServiceModel.Description.ServiceEndpoint)` +* `M:System.ServiceModel.ServiceHostBase.AddServiceEndpoint(System.String,System.ServiceModel.Channels.Binding,System.String)` +* `M:System.ServiceModel.ServiceHostBase.AddServiceEndpoint(System.String,System.ServiceModel.Channels.Binding,System.Uri)` +* `M:System.ServiceModel.ServiceHostBase.AddServiceEndpoint(System.String,System.ServiceModel.Channels.Binding,System.String,System.Uri)` +* `M:System.ServiceModel.ServiceHostBase.AddServiceEndpoint(System.String,System.ServiceModel.Channels.Binding,System.Uri,System.Uri)` + +### Category +Windows Communication Foundation (WCF) + +[More information](https://msdn.microsoft.com/en-us/library/hh367887(v=vs.110).aspx#wcf) + + diff --git a/Documentation/breaking-changes/system_threading_tasks_task-no-longer-throw-objectdisposedexception-after-object-is-disposed.md b/Documentation/breaking-changes/system_threading_tasks_task-no-longer-throw-objectdisposedexception-after-object-is-disposed.md new file mode 100644 index 000000000..fcdafa711 --- /dev/null +++ b/Documentation/breaking-changes/system_threading_tasks_task-no-longer-throw-objectdisposedexception-after-object-is-disposed.md @@ -0,0 +1,27 @@ +## 39: System.Threading.Tasks.Task no longer throw ObjectDisposedException after object is disposed + +### Scope +Minor + +### Version Introduced +4.5 + +### Source Analyzer Status +Available + +### Change Description +Except for Task.IAsyncResult.AsyncWaitHandle, System.Threading.Tasks.Task methods no longer throw an ObjectDisposedException exception after the object is disposed.

This change supports the use of cached tasks. For example, a method can return a cached task to represent an already completed operation instead of allocating a new task. This was impossible in previous .NET Framework versions, because any consumer of the task could dispose of it, which rendered it unusable. + +- [ ] Quirked +- [ ] Build-time break + +### Recommended Action +Be aware that Task methods may no longer throw ObjectDisposedExceptions in cases when the object is disposed. If an app was depending on this exception to know that a task was disposed, it should be updated to explicitly check the task's status using [Task.Status](https://msdn.microsoft.com/en-us/library/system.threading.tasks.task.status(v=vs.110).aspx). + +### Affected APIs +* Not detectable via API analysis + +### Category +Core + +[More information](https://msdn.microsoft.com/en-us/library/hh367887(v=vs.110).aspx#core) diff --git a/Documentation/breaking-changes/system_uri-escaping-now-supports-rfc-3986.md b/Documentation/breaking-changes/system_uri-escaping-now-supports-rfc-3986.md new file mode 100644 index 000000000..8a4842d63 --- /dev/null +++ b/Documentation/breaking-changes/system_uri-escaping-now-supports-rfc-3986.md @@ -0,0 +1,35 @@ +## 10: System.Uri escaping now supports RFC 3986 (http://tools.ietf.org/html/rfc3986) + +### Scope +Minor + +### Version Introduced +4.5 + +### Source Analyzer Status +Available + +### Change Description +URI escaping has changed in .NET 4.5 to support [RFC 3986](http://tools.ietf.org/html/rfc3986). Specific changes include: + +- `EscapeDataString` escapes reserved characters based on RFC 3986. +- `EscapeUriString` does not escape reserved characters. +- `UnescapeDataString` does not throw an exception if it encounters an invalid escape sequence. +- Unreserved escaped characters are un-escaped. + +- [ ] Quirked +- [ ] Build-time break + +### Recommended Action +* Update applications to not rely on UnescapeDataString to throw in the case of an invalid escape sequence. Such sequences must be detected directly now. +* Similarly, expect that Escaped and Unescaped URI and Data strings may vary from .NET 4.0 and .NET 4.5 and should not be compared across .NET versions directly. Instead, they should be parsed and normalized in a single .NET version before any comparisons are made. + +### Affected APIs +* `M:System.Uri.EscapeDataString(System.String)` +* `M:System.Uri.EscapeUriString(System.String)` +* `M:System.Uri.UnescapeDataString(System.String)` + +### Category +Core + +[More information](https://msdn.microsoft.com/en-us/library/hh367887\(v=vs.110\).aspx#core) diff --git a/Documentation/breaking-changes/system_uri-parsing-adheres-to-rfc-3987.md b/Documentation/breaking-changes/system_uri-parsing-adheres-to-rfc-3987.md new file mode 100644 index 000000000..cf137ae56 --- /dev/null +++ b/Documentation/breaking-changes/system_uri-parsing-adheres-to-rfc-3987.md @@ -0,0 +1,42 @@ +## 6: System.Uri parsing adheres to RFC 3987 + +### Scope +Major + +### Version Introduced +4.5 + +### Source Analyzer Status +Available + +### Change Description +URI parsing has changed in several ways in .NET 4.5. Note, however, that these changes only affect code targeting .NET 4.5. If a binary targets .NET 4.0, the old behavior will be observed. +Changes to URI parsing in .NET 4.5 include: + +- URI parsing will perform normalization and character checking according to the latest IRI rules in RFC 3987 +- Unicode normalization form C will only be performed on the host portion of the URI +- Invalid mailto: URIs will now cause an exception +- Trailing dots at the end of a path segment are now preserved +- `file://` URIs do not escape the `?` character +- Unicode control characters `U+0080` through `U+009F` are not supported +- Comma characters `,` or `%2c` are not automatically unescaped + +- [x] Quirked +- [ ] Build-time break + +### Recommended Action +If the old .NET 4.0 URI parsing semantics are necessary (they often aren't), they can be used by targeting .NET 4.0. This can be accomplished by using a TargetFrameworkAttribute on the assembly, or through Visual Studio's project system UI in the 'project properties' page. + +### Affected APIs +* `M:System.Uri.#ctor(System.String)` +* `M:System.Uri.#ctor(System.String,System.Boolean)` +* `M:System.Uri.#ctor(System.String,System.UriKind)` +* `M:System.Uri.#ctor(System.Uri,System.String)` +* `M:System.Uri.TryCreate(System.String,System.UriKind,System.Uri@)` +* `M:System.Uri.TryCreate(System.Uri,System.String,System.Uri@)` +* `M:System.Uri.TryCreate(System.Uri,System.Uri,System.Uri@)` + +### Category +Core + +[More information](https://msdn.microsoft.com/en-us/library/hh367887\(v=vs.110\).aspx#core) diff --git a/Documentation/breaking-changes/system_uri_iswellformeduristring-method-returns-false-for-relative-uris-with-a-colon-char-in-first-segment.md b/Documentation/breaking-changes/system_uri_iswellformeduristring-method-returns-false-for-relative-uris-with-a-colon-char-in-first-segment.md new file mode 100644 index 000000000..8eff62695 --- /dev/null +++ b/Documentation/breaking-changes/system_uri_iswellformeduristring-method-returns-false-for-relative-uris-with-a-colon-char-in-first-segment.md @@ -0,0 +1,28 @@ +## 121: System.Uri.IsWellFormedUriString method returns false for relative URIs with a colon char in first segment + +### Scope +Minor + +### Version Introduced +4.5 + +### Source Analyzer Status +Planned + +### Change Description +Beginning with the .NET Framework 4.5, `Uri.IsWellFormedUriString` will treat relative URIs with a `:` in their first segment as not well formed. This is a change from `Uri.IsWellFormedUriString` behavior in the .NET Framework 4.0 that was made to conform to RFC3986. + +- [x] Quirked +- [ ] Build-time break + +### Recommended Action +This change (like many other URI changes) will only affect applications targeting the .NET Framework 4.5 (or later). To keep using the old behavior, target the app against the .NET Framework 4.0. Alternatively, scan URI's prior to calling `IsWellFormedUriString` looking for `:` characters that you may want to remove for validation purposes, if the old behavior is desirable. + +### Affected APIs +* `M:System.Uri.IsWellFormedUriString(System.String,System.UriKind)` + +### Category +Core + +[More information](http://connect.microsoft.com/VisualStudio/feedback/details/788841/net-4-5-system-uri-iswellformeduristring-method-returns-false-for-relative-uris-with-a-colon-char-in-first-segment) + diff --git a/Documentation/breaking-changes/targetframeworkname-for-default-app-domain-no-longer-defaults-to-null-if-not-set.md b/Documentation/breaking-changes/targetframeworkname-for-default-app-domain-no-longer-defaults-to-null-if-not-set.md new file mode 100644 index 000000000..756ad8d07 --- /dev/null +++ b/Documentation/breaking-changes/targetframeworkname-for-default-app-domain-no-longer-defaults-to-null-if-not-set.md @@ -0,0 +1,27 @@ +## 75: TargetFrameworkName for default app domain no longer defaults to null if not set + +### Scope +Edge + +### Version Introduced +4.6 + +### Source Analyzer Status +Planned + +### Change Description +The TargetFrameworkName was previously null in the default app domain, unless it was explicitly set. Beginning in 4.6, the TargetFrameworkName property for the default app domain will have a default value derived from the TargetFrameworkAttribute (if one is present). Non-default app domains will continue to inherit their TargetFrameworkName from the default app domain (which will not default to null in 4.6) unless it is explicitly overridden. + +- [ ] Quirked +- [ ] Build-time break + +### Recommended Action +Code should be updated to not depend on `AppDomainSetup.TargetFrameworkName` defaulting to null. If it is required that this property continue to evaluate to null, it can be explicitly set to that value. + +### Affected APIs +* `M:System.AppDomainSetup.get_TargetFrameworkName` + +### Category +Core + +[More information](https://msdn.microsoft.com/en-us/library/dn833125(v=vs.110).aspx#Core) diff --git a/Documentation/breaking-changes/the-_net-framework-4_6-does-not-use-a-4_5_x_x-version-when-registering-itself-in-the-registry.md b/Documentation/breaking-changes/the-_net-framework-4_6-does-not-use-a-4_5_x_x-version-when-registering-itself-in-the-registry.md new file mode 100644 index 000000000..90ab6b5f8 --- /dev/null +++ b/Documentation/breaking-changes/the-_net-framework-4_6-does-not-use-a-4_5_x_x-version-when-registering-itself-in-the-registry.md @@ -0,0 +1,27 @@ +## 122: The .NET Framework 4.6 does not use a 4.5.x.x version when registering itself in the registry + +### Scope +Edge + +### Version Introduced +4.6 + +### Source Analyzer Status +Not planned + +### Change Description +As one might expect, the version key set in the registry (at `HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\NET Framework Setup\NDP\v4\Full`) for the .NET Framework 4.6 begins with '4.6', not '4.5'. Apps that depend on these registry keys to know which .NET Framework versions are installed on a machine should be updated to understand that 4.6 is a new possible version, and one that is compatible with previous 4.5.x releases. + +- [ ] Quirked +- [ ] Build-time break + +### Recommended Action +Update apps probing for a .NET Framework 4.5 install by looking for 4.5 registry keys to also accept 4.6. + +### Affected APIs +* Not detectable via API analysis + +### Category +Setup and Deployment + +[More information](https://msdn.microsoft.com/en-us/library/mt125490%28v=vs.110%29.aspx) \ No newline at end of file diff --git a/Documentation/breaking-changes/the-replace-method-in-odata-urls-is-disabled-by-default.md b/Documentation/breaking-changes/the-replace-method-in-odata-urls-is-disabled-by-default.md new file mode 100644 index 000000000..36d33fcb8 --- /dev/null +++ b/Documentation/breaking-changes/the-replace-method-in-odata-urls-is-disabled-by-default.md @@ -0,0 +1,27 @@ +## 29: The Replace method in OData URLs is disabled by default + +### Scope +Edge + +### Version Introduced +4.5 + +### Source Analyzer Status +Available + +### Change Description +Beginning in the .NET Framework 4.5, the Replace method in OData URLs is disabled by default. When OData Replace is disabled (now by default), any user requests including replace functions (which are uncommon) will fail. + +- [ ] Quirked +- [ ] Build-time break + +### Recommended Action +If the replace method is required (which is uncommon), it can be re-enabled through a [config settings](https://msdn.microsoft.com/en-us/library/system.data.services.configuration.dataservicesfeaturessection.replacefunction.aspx). However, an enabled replace method can open security vulnerabilities and should only be used after careful review. + +### Affected APIs +* ``T:System.Data.Services.DataService`1`` + +### Category +Windows Communication Foundation (WCF) + +[More information](https://msdn.microsoft.com/en-us/library/hh367887(v=vs.110).aspx#wcf) diff --git a/Documentation/breaking-changes/throttle-concurrent-requests-per-session.md b/Documentation/breaking-changes/throttle-concurrent-requests-per-session.md new file mode 100644 index 000000000..a01c6c748 --- /dev/null +++ b/Documentation/breaking-changes/throttle-concurrent-requests-per-session.md @@ -0,0 +1,31 @@ +## 169: Throttle concurrent requests per session + +### Scope +Edge + +### Version Introduced +4.7 + +### Source Analyzer Status +NotPlanned + +### Change Description +In the .NET Framework 4.6.2 and earlier, Asp.net executes requests with the same Sessionid sequentially, and asp.net always issues the Sessionid through cookie by default. If a page takes long time to response, it will significantly degrade the server performance just by pressing F5 on the browser. In the fix, we added a counter to track the queued requests and terminates the requests when they exceed a specified limit. The default value is 50. If the the limit is reached, a warning will be logged in event log and HTTP 500 response may be recorded in IIS log. + +- [x] Quirked +- [ ] Build-time break + +### Recommended Action +To restore the old behavior, you can add the following setting to your web.config file to opt out of the new behavior. + +```xml + + + +``` + +### Affected APIs +* Not detectable via API analysis + +### Category +ASP.NET diff --git a/Documentation/breaking-changes/two-way-data-binding-to-a-property-with-a-non-public-setter-is-not-supported.md b/Documentation/breaking-changes/two-way-data-binding-to-a-property-with-a-non-public-setter-is-not-supported.md new file mode 100644 index 000000000..4a8bfcd3f --- /dev/null +++ b/Documentation/breaking-changes/two-way-data-binding-to-a-property-with-a-non-public-setter-is-not-supported.md @@ -0,0 +1,34 @@ +## 129: Two-way data-binding to a property with a non-public setter is not supported + +### Scope +Minor + +### Version Introduced +4.5.1 + +### Source Analyzer Status +Planned + +### Change Description +Attempting to data bind to a property without a public setter has never been a supported scenario. Beginning in the .NET Framework 4.5.1, this scenario will throw an InvalidOperationException. Note that this new exception will only be thrown for apps that specifically target the .NET Framework 4.5.1. If an app targets the .NET Framework 4.5, the call will be allowed. If the app does not target a particular .NET Framework version, the binding will be treated as one-way. + +- [x] Quirked +- [ ] Build-time break + +### Recommended Action +The app should be updated to either use one-way binding, or expose the property's setter publicly. Alternatively, targeting the .NET Framework 4.5 will cause the app to exhibit the old behavior. + +### Affected APIs +* `F:System.Windows.Data.BindingMode.TwoWay` + +### Category +Windows Presentation Foundation (WPF) + +[More information](http://connect.microsoft.com/VisualStudio/feedback/details/773682/wpf-property-with-private-setter-is-updated-by-a-twoway-binding) + + + + diff --git a/Documentation/breaking-changes/type_isassignablefrom-returns-wrong-result-for-generic-variables-with-constraints.md b/Documentation/breaking-changes/type_isassignablefrom-returns-wrong-result-for-generic-variables-with-constraints.md new file mode 100644 index 000000000..dbf782e34 --- /dev/null +++ b/Documentation/breaking-changes/type_isassignablefrom-returns-wrong-result-for-generic-variables-with-constraints.md @@ -0,0 +1,35 @@ +## 89: Type.IsAssignableFrom returns wrong result for generic variables with constraints + +### Scope +Minor + +### Version Introduced +4.5 + +### Version Reverted +4.5 + +### Source Analyzer Status +Planned + +### Change Description +In the .NET Framework 4.5, Type.IsAssignableFrom will incorrectly return `false` in all cases for some generic types with constraints. + +- [ ] Quirked +- [ ] Build-time break + +### Recommended Action +This issue was fixed in a servicing update. Please update the .NET Framework 4.5, or upgrade to .NET Framework 4.5.1 or later, to fix this issue. Alternatively, avoid using IsAssignableFrom with generic types that have constraints on generic parameters. Reflection APIs can be used as a work-around. + +### Affected APIs +* `M:System.Type.IsAssignableFrom(System.Type)` + +### Category +Core + +[More information](http://connect.microsoft.com/VisualStudio/feedback/details/760270/type-isassignablefrom-for-type-parameters-is-broken) + + diff --git a/Documentation/breaking-changes/unexpected-invalidcastexception-from-invokemethod-activity-in-wf4.md b/Documentation/breaking-changes/unexpected-invalidcastexception-from-invokemethod-activity-in-wf4.md new file mode 100644 index 000000000..36bb24ff3 --- /dev/null +++ b/Documentation/breaking-changes/unexpected-invalidcastexception-from-invokemethod-activity-in-wf4.md @@ -0,0 +1,37 @@ +## 88: Unexpected InvalidCastException from InvokeMethod activity in WF4 + +### Scope +Minor + +### Version Introduced +4.5 + +### Version Reverted +4.5 + +### Source Analyzer Status +Planned + +### Change Description +Using a System.Activities.Statements.InvokeMethod that targets a method with a nullable parameter can throw an InvalidCastException. + +- [ ] Quirked +- [ ] Build-time break + +### Recommended Action +This behavior was reverted in a .NET Framework 4.5 servicing release. Please update the .NET Framework 4.5 (or upgrade to .NET Framework 4.5.1 or later) to fix the issue. + +### Affected APIs +* `P:System.Activities.Statements.InvokeMethod.Parameters` + +### Category +Windows Workflow Foundation (WF) + +[More information](http://connect.microsoft.com/VisualStudio/feedback/details/758736/unexpected-invalidcastexception-from-invokemethod-activity-in-wf4-after-net-4-5-install) + + + + diff --git a/Documentation/breaking-changes/unicode-data-now-support-standard-v8_0-categories.md b/Documentation/breaking-changes/unicode-data-now-support-standard-v8_0-categories.md new file mode 100644 index 000000000..98bf86bd0 --- /dev/null +++ b/Documentation/breaking-changes/unicode-data-now-support-standard-v8_0-categories.md @@ -0,0 +1,35 @@ +## 157: .Net Framework now supports Unicode standard version 8.0 categories + +### Scope +Minor + +### Version Introduced +4.6.2 + +### Source Analyzer Status +Planned + +### Change Description +In .NET Framework 4.6.2, Unicode data in the framework has been +upgraded from Unicode standard version 6.3 to version 8.0. When +requesting Unicode character category in .NET Framework 4.6.2, some +results might not match the results in previous .NET Framework +versions. This change mostly affects Cherokee syllables and New Tai +Lue vowels signs and tone marks. + +- [ ] Quirked +- [ ] Build-time break + +### Recommended Action +Review code and remove/change logic that depends on hard-coded Unicode +character categories. + +### Affected APIs +* `M:System.Char.GetUnicodeCategory(System.Char)` +* `M:System.Globalization.CharUnicodeInfo.GetUnicodeCategory(System.Char)` +* `M:System.Globalization.CharUnicodeInfo.GetUnicodeCategory(System.String,System.Int32)` + +### Category +Globalization + +[More information](https://github.com/Microsoft/dotnet/blob/master/releases/net462/dotnet462-changes.md) diff --git a/Documentation/breaking-changes/vb_net-no-longer-supports-partial-namespace-qualification-for-system_windows-apis.md b/Documentation/breaking-changes/vb_net-no-longer-supports-partial-namespace-qualification-for-system_windows-apis.md new file mode 100644 index 000000000..fb371e2b1 --- /dev/null +++ b/Documentation/breaking-changes/vb_net-no-longer-supports-partial-namespace-qualification-for-system_windows-apis.md @@ -0,0 +1,27 @@ +## 127: VB.NET no longer supports partial namespace qualification for System.Windows APIs + +### Scope +Minor + +### Version Introduced +4.5.2 + +### Source Analyzer Status +Available + +### Change Description +Beginning in .NET 4.5.2, VB.NET projects cannot specify System.Windows APIs with partially-qualified namespaces. For example, referring to `Windows.Forms.DialogResult` will fail. Instead, code must refer to the fully qualified name (`System.Windows.Forms.DialogResult`) or import the specific namespace and refer simply to `DialogResult`. + +- [ ] Quirked +- [x] Build-time break + +### Recommended Action +Code should be updated to refer to `System.Windows` APIs either with simple names (and importing the relevant namespace) or with fully qualified names. + +### Affected APIs +* Not detectable via API analysis + +### Category +Visual Basic .NET + +[More information](http://stackoverflow.com/questions/23573659/forms-is-not-a-member-of-windows) diff --git a/Documentation/breaking-changes/wcf-binding-with-the-transportwithmessagecredential-security-mode.md b/Documentation/breaking-changes/wcf-binding-with-the-transportwithmessagecredential-security-mode.md new file mode 100644 index 000000000..b4fe132a5 --- /dev/null +++ b/Documentation/breaking-changes/wcf-binding-with-the-transportwithmessagecredential-security-mode.md @@ -0,0 +1,40 @@ +## 142: WCF binding with the TransportWithMessageCredential security mode + +### Scope +Transparent + +### Version Introduced +4.6.1 + +### Source Analyzer Status +Not planned + +### Change Description +Beginning in the .NET Framework 4.6.1, WCF binding that uses the TransportWithMessageCredential security mode can be setup to receive messages with unsigned "to" headers for asymmetric security keys. + +By default, unsigned "to" headers will continue to be rejected in .NET 4.6.1. They will only be accepted if an application opts into this new mode of operation using the Switch.System.ServiceModel.AllowUnsignedToHeader configuration switch. + +Because this is an opt-in feature, it should not affect the behavior of existing apps. + +- [ ] Quirked +- [ ] Build-time break + +### Recommended Action +Because this is an opt-in feature, it should not affect the behavior of existing apps. To control whether the new behavior is used or not, use the following configuration setting: +``` + + + +``` + +### Affected APIs +* `F:System.ServiceModel.BasicHttpSecurityMode.TransportWithMessageCredential` +* `F:System.ServiceModel.BasicHttpsSecurityMode.TransportWithMessageCredential` +* `F:System.ServiceModel.SecurityMode.TransportWithMessageCredential` +* `F:System.ServiceModel.WSFederationHttpSecurityMode.TransportWithMessageCredential` + +### Category +Windows Communication Foundation (WCF) + +[More information](https://msdn.microsoft.com/en-US/library/mt592686%28v=vs.110%29.aspx) + diff --git a/Documentation/breaking-changes/wcf-message-security-unable-to-use-tls1_1-and-tls1_2.md b/Documentation/breaking-changes/wcf-message-security-unable-to-use-tls1_1-and-tls1_2.md new file mode 100644 index 000000000..79457a9e0 --- /dev/null +++ b/Documentation/breaking-changes/wcf-message-security-unable-to-use-tls1_1-and-tls1_2.md @@ -0,0 +1,28 @@ +## 167: WCF message security now is able to use TLS1.1 and TLS1.2 + +### Scope +Edge + +### Version Introduced +4.7 + +### Source Analyzer Status +Planned + +### Change Description +Starting in the .NET Framework 4.7, customers can configure either TLS1.1 or TLS1.2 in WCF message security in addition to SSL3.0 and TLS1.0 through application configuration settings. + +- [x] Quirked +- [ ] Build-time break + +### Recommended Action +In the .NET Framework 4.7, support for TLS1.1 and TLS1.2 in WCF message security is disabled by default. You can enable it by adding the following line to the `` section of the app.config or web.config file: + + ```xml + + + + ``` + +### Category +* Windows Communication Foundation (WCF) \ No newline at end of file diff --git a/Documentation/breaking-changes/wcf-transport-security-supports-certificates-stored-using-cng.md b/Documentation/breaking-changes/wcf-transport-security-supports-certificates-stored-using-cng.md new file mode 100644 index 000000000..b7a233b40 --- /dev/null +++ b/Documentation/breaking-changes/wcf-transport-security-supports-certificates-stored-using-cng.md @@ -0,0 +1,50 @@ +## 166: WCF transport security supports certificates stored using CNG + +### Scope +Minor + +### Version Introduced +4.6.2 + +### Source Analyzer Status +Investigating + +### Change Description +Starting with apps that target the .NET Framework 4.6.2, WCF transport security supports certificates stored using the Windows Cryptography Library (CNG). This support is limited to certificates with a public key that has an exponent no more than 32 bits in length. When an application targets the .NET Framework 4.6.2, this feature is on by default. + +In earlier versions of the .NET Framework, the attempt to use X509 certificates with a CSG key storage provider throws an exception. +- [X] Quirked +- [ ] Build-time break + +### Recommended Action +Apps that target the .NET Framework 4.6.1 and earlier but are running on the .NET Framework 4.6.2 can enable support for CNG certificates by adding the following line to the `` section of the app.config or web.config file: + + ```xml + + + + ``` + +This can also be done programmatically with the following code: + + ```cs + private const string DisableCngCertificates = @"Switch.System.ServiceModel.DisableCngCertificate"; + AppContext.SetSwitch(disableCngCertificates, false); + ``` + + ```vb + Const DisableCngCertificates As String = "Switch.System.ServiceModel.DisableCngCertificates" + AppContext.SetSwitch(disableCngCertificates, False) + ``` + +Note that, because of this change, any exception handling code that depends on the attempt to initiate secure communication with a CNG certificate to fail will no longer execute. + +### Category +Windows Communication Foundation (WCF) + + + + diff --git a/Documentation/breaking-changes/webutility_htmldecode-no-longer-decodes-invalid-input-sequences.md b/Documentation/breaking-changes/webutility_htmldecode-no-longer-decodes-invalid-input-sequences.md new file mode 100644 index 000000000..e0f92c0e2 --- /dev/null +++ b/Documentation/breaking-changes/webutility_htmldecode-no-longer-decodes-invalid-input-sequences.md @@ -0,0 +1,34 @@ +## 61: WebUtility.HtmlDecode no longer decodes invalid input sequences + +### Scope +Minor + +### Version Introduced +4.5 + +### Source Analyzer Status +Planned + +### Change Description +By default, decoding methods no longer decode an invalid input sequence into an invalid UTF-16 string. Instead, they return the original input. + +- [ ] Quirked +- [ ] Build-time break + +### Recommended Action +The change in decoder output should matter only if you store binary data instead of UTF-16 data in strings. To explicitly control this behavior, set the `aspnet:AllowRelaxedUnicodeDecoding` attribute of the [appSettings](https://msdn.microsoft.com/en-us/library/ms228154(v=vs.110).aspx) element to true to enable legacy behavior or to false to enable the current behavior. + +### Affected APIs +* `M:System.Net.WebUtility.HtmlDecode(System.String)` +* `M:System.Net.WebUtility.HtmlDecode(System.String,System.IO.TextWriter)` +* `M:System.Net.WebUtility.UrlDecode(System.String)` + +### Category +ASP.NET + +[More information](https://msdn.microsoft.com/en-us/library/hh367887\(v=vs.110\).aspx#asp) + + diff --git a/Documentation/breaking-changes/webutility_htmlencode-and-webutility_htmldecode-round-trip-bmp-correctly.md b/Documentation/breaking-changes/webutility_htmlencode-and-webutility_htmldecode-round-trip-bmp-correctly.md new file mode 100644 index 000000000..d96be25d2 --- /dev/null +++ b/Documentation/breaking-changes/webutility_htmlencode-and-webutility_htmldecode-round-trip-bmp-correctly.md @@ -0,0 +1,33 @@ +## 62: WebUtility.HtmlEncode and WebUtility.HtmlDecode round-trip BMP correctly + +### Scope +Edge + +### Version Introduced +4.5 + +### Source Analyzer Status +Planned + +### Change Description +For applications that target the .NET Framework 4.5, characters that are outside the Basic Multilingual Plane (BMP) round-trip correctly when they are passed to the WebUtility.HtmlDecode method. + +- [x] Quirked +- [ ] Build-time break + +### Recommended Action +This change should have no effect on current applications, but to restore the original behavior, set the targetFramework attribute of the `` element to a string other than "4.5". You can also set the `unicodeEncodingConformance` and `unicodeDecodingConformance` attributes of the `` configuration element to control this behavior independently of the targeted version of the .NET Framework. + +### Affected APIs +* `M:System.Net.WebUtility.HtmlEncode(System.String)` +* `M:System.Net.WebUtility.HtmlEncode(System.String,System.IO.TextWriter)` + +### Category +ASP.NET + +[More information](https://msdn.microsoft.com/en-us/library/hh367887(v=vs.110).aspx#asp) + + diff --git a/Documentation/breaking-changes/wf-serializes-expressions_literal-datetimes-differently.md b/Documentation/breaking-changes/wf-serializes-expressions_literal-datetimes-differently.md new file mode 100644 index 000000000..2b7cc1865 --- /dev/null +++ b/Documentation/breaking-changes/wf-serializes-expressions_literal-datetimes-differently.md @@ -0,0 +1,32 @@ +## 36: WF serializes Expressions.Literal<T> DateTimes differently now (breaks custom XAML parsers) + +### Scope +Edge + +### Version Introduced +4.5 + +### Source Analyzer Status +Planned + +### Change Description +The associated [ValueSerializer](https://msdn.microsoft.com/en-us/library/system.windows.markup.valueserializer(v=vs.110).aspx) object will convert a DateTime or DateTimeOffset object whose Second and Millisecond components are non-zero and (for a DateTime value) whose DateTime.Kind property is not Unspecified to property element syntax instead of a string. This change allows DateTime and DateTimeOffset values to be round-tripped. Custom XAML parsers that assume that input XAML is in the attribute syntax will not function correctly. + +- [ ] Quirked +- [ ] Build-time break + +### Recommended Action +This change allows DateTime and DateTimeOffset values to be round-tripped. Custom XAML parsers that assume that input XAML is in the attribute syntax will not function correctly. + +### Affected APIs +* Not detectable via API analysis + +### Category +Windows Workflow Foundation (WF) + +[More information](https://msdn.microsoft.com/en-us/library/hh367887(v=vs.110).aspx#wwf) + + diff --git a/Documentation/breaking-changes/winform's-checkforoverflowunderflow-property-is-now-true-for-system_drawing.md b/Documentation/breaking-changes/winform's-checkforoverflowunderflow-property-is-now-true-for-system_drawing.md new file mode 100644 index 000000000..5dafeaba3 --- /dev/null +++ b/Documentation/breaking-changes/winform's-checkforoverflowunderflow-property-is-now-true-for-system_drawing.md @@ -0,0 +1,27 @@ +## 53: WinForm's CheckForOverflowUnderflow property is now true for System.Drawing + +### Scope +Edge + +### Version Introduced +4.5 + +### Source Analyzer Status +Not planned + +### Change Description +The CheckForOverflowUnderflow property for the System.Drawing.dll assembly is set to true. + +- [ ] Quirked +- [ ] Build-time break + +### Recommended Action +Previously when overflows occurred, the result would be silently truncated. Now an OverflowException exception is thrown. + +### Affected APIs +* Not detectable via API analysis + +### Category +Windows Forms + +[More information](https://msdn.microsoft.com/en-us/library/hh367887(v=vs.110).aspx) diff --git a/Documentation/breaking-changes/winrt-stream-adapters-no-long-call-flushasync-automatically-on-close.md b/Documentation/breaking-changes/winrt-stream-adapters-no-long-call-flushasync-automatically-on-close.md new file mode 100644 index 000000000..4556816ac --- /dev/null +++ b/Documentation/breaking-changes/winrt-stream-adapters-no-long-call-flushasync-automatically-on-close.md @@ -0,0 +1,35 @@ +## 47: WinRT stream adapters no long call FlushAsync automatically on close + +### Scope +Transparent + +### Version Introduced +4.5.1 + +### Source Analyzer Status +Not planned + +### Change Description +In Windows Store apps, Windows Runtime stream adapters no longer call the FlushAsync method from the Dispose method. + +- [ ] Quirked +- [ ] Build-time break + +### Recommended Action +This change should be transparent. Developers can restore the previous behavior by writing code like this: + +```csharp +using (var stream = GetWindowsRuntimeStream() as Stream) +{ + // do something + await stream.FlushAsync(); +} +``` + +### Affected APIs +* Not detectable via API analysis + +### Category +Core + +[More information](https://msdn.microsoft.com/en-us/library/dn458360(v=vs.110).aspx) diff --git a/Documentation/breaking-changes/workflow-3_0-types-are-obsolete.md b/Documentation/breaking-changes/workflow-3_0-types-are-obsolete.md new file mode 100644 index 000000000..7df5d2128 --- /dev/null +++ b/Documentation/breaking-changes/workflow-3_0-types-are-obsolete.md @@ -0,0 +1,27 @@ +## 21: WorkFlow 3.0 types are obsolete + +### Scope +Major + +### Version Introduced +4.5 + +### Source Analyzer Status +Available + +### Change Description +Windows Workflow Foundation (WWF) 3.0 APIs (those from the System.Workflow namespace) are now obsolete. + +- [ ] Quirked +- [x] Build-time break + +### Recommended Action +New WWF 4.0 APIs (in System.Activities) should be used instead. An example of using the new APIs can be found [here](https://msdn.microsoft.com/en-us/library/jj205427.aspx) and further guidance is available [here](http://blogs.msdn.com/b/workflowteam/archive/2012/02/08/deprecatingwf3.aspx). Alternatively, since the WWF 3.0 APIs are still supported, they may be used and the build-time warning avoided either by suppressing it or by using an older compiler. + +### Affected APIs +* Not detectable via API analysis + +### Category +Windows Workflow Foundation (WF) + +[More information](https://msdn.microsoft.com/en-us/library/hh367887#wwf) diff --git a/Documentation/breaking-changes/workflow-checksums-changed-from-md5-to-sha1.md b/Documentation/breaking-changes/workflow-checksums-changed-from-md5-to-sha1.md new file mode 100644 index 000000000..7dd883354 --- /dev/null +++ b/Documentation/breaking-changes/workflow-checksums-changed-from-md5-to-sha1.md @@ -0,0 +1,46 @@ +## 176: Workflow checksums changed from MD5 to SHA1 + +### Scope +Minor + +### Version Introduced +4.7 + +### Source Analyzer Status +NotPlanned + +### Change Description +To support debugging with Visual Studio, +the Workflow runtime generates a checksum for a workflow instance using a hashing algorithm. +In the .NET Framework 4.6.2 and earlier versions, workflow checksum hashing used the MD5 +algorithm, which caused issues on FIPS-enabled systems. Starting with the .NET Framework 4.7, +the algorithm is SHA1. If your code has persisted these checksums, they will be incompatible. + +- [x] Quirked +- [ ] Build-time break + +### Recommended Action +If your code is unable to load workflow instances due to a checksum failure, try setting +the `AppContext` switch "Switch.System.Activities.UseMD5ForWFDebugger" to true. + +In code: +```csharp +System.AppContext.SetSwitch("Switch.System.Activities.UseMD5ForWFDebugger", true); +``` + +Or in configuration: +```xml + + + + + +``` + + +### Affected APIs +* Not detectable via API analysis + +### Category +Windows Workflow Foundation (WF) + diff --git a/Documentation/breaking-changes/workflow-now-throws-original-exception-instead-of-nullreferenceexception-in-some-cases.md b/Documentation/breaking-changes/workflow-now-throws-original-exception-instead-of-nullreferenceexception-in-some-cases.md new file mode 100644 index 000000000..d2dcf73f8 --- /dev/null +++ b/Documentation/breaking-changes/workflow-now-throws-original-exception-instead-of-nullreferenceexception-in-some-cases.md @@ -0,0 +1,34 @@ +## 170: Workflow now throws original exception instead of NullReferenceException in some cases + +### Scope +Minor + +### Version Introduced +4.7 + +### Source Analyzer Status +NotPlanned + +### Change Description +In the .NET Framework 4.6.2 and earlier versions, when the Execute method of a workflow activity +throws an exception with a `null` value for the `P:System.Exception.Message` property, the +System.Activities Workflow runtime throws a `NullReferenceException`, masking the original +exception. + +In the .NET Framework 4.7, the previously masked exception is thrown. + +- [ ] Quirked +- [ ] Build-time break + +### Recommended Action +If your code relies on handling the `NullReferenceException`, change it to catch the exceptions +that could be thrown from your custom activities. + +### Affected APIs +* `M:System.Activities.CodeActivity.Execute` +* `M:System.Activities.AsyncCodeActivity.BeginExecute` +* `M:System.Activities.WorkflowInvoker.Invoke` + +### Category +Windows Workflow Foundation (WF) + diff --git a/Documentation/breaking-changes/workflow-sql-persistence-adds-primary-key-clusters-and-disallows-null-values-in-some-columns.md b/Documentation/breaking-changes/workflow-sql-persistence-adds-primary-key-clusters-and-disallows-null-values-in-some-columns.md new file mode 100644 index 000000000..7aa95c004 --- /dev/null +++ b/Documentation/breaking-changes/workflow-sql-persistence-adds-primary-key-clusters-and-disallows-null-values-in-some-columns.md @@ -0,0 +1,30 @@ +## 180: Workflow SQL persistence adds primary key clusters and disallows null values in some columns + +### Scope +Edge + +### Version Introduced +4.7 + +### Source Analyzer Status +NotPlanned + +### Change Description +Starting with the .NET Framework 4.7, the tables created for the SQL Workflow Instance Store +(SWIS) by the SqlWorkflowInstanceStoreSchema.sql script use clustered primary keys. Because of +this, identities do not support `null` values. The operation of SWIS is not impacted by this +change. The updates were made to support SQL Server Transactional Replication. + +- [ ] Quirked +- [ ] Build-time break + +### Recommended Action +The SQL file SqlWorkflowInstanceStoreSchemaUpgrade.sql must be applied to existing installations +in order to experience this change. New database installations will automatically have the change. + +### Affected APIs +* Not detectable via API analysis + +### Category +Windows Workflow Foundation (WF) + diff --git a/Documentation/breaking-changes/workflowdesigner_load-doesn't-remove-symbol-property.md b/Documentation/breaking-changes/workflowdesigner_load-doesn't-remove-symbol-property.md new file mode 100644 index 000000000..64b9a7106 --- /dev/null +++ b/Documentation/breaking-changes/workflowdesigner_load-doesn't-remove-symbol-property.md @@ -0,0 +1,32 @@ +## 82: WorkflowDesigner.Load doesn't remove symbol property + +### Scope +Major + +### Version Introduced +4.5 + +### Version Reverted +4.5.2 + +### Source Analyzer Status +Planned + +### Change Description +When targeting the .NET Framework 4.5 in the workflow designer, and loading a re-hosted 3.5 workflow with the WorkflowDesigner.Load() method, a XamlDuplicateMemberException is thrown while saving the workflow. + +- [x] Quirked +- [ ] Build-time break + +### Recommended Action +This bug only manifests when targeting .NET Framework 4.5 in the workflow designer, so it can be worked around by setting the `WorkflowDesigner.Context.Services.GetService().TargetFrameworkName` to the 4.0 .NET Framework. + +Alternatively, the issue may be avoided by using the [WorkflowContext.Load(string)](https://msdn.microsoft.com/en-us/library/ee425926(v=vs.110).aspx) method to load the workflow, instead of [WorkflowDesigner.Load()](https://msdn.microsoft.com/en-us/library/ee403482(v=vs.110).aspx). + +### Affected APIs +* `M:System.Activities.Presentation.WorkflowDesigner.Load` + +### Category +Windows Workflow Foundation (WF) + +[More information](https://connect.microsoft.com/VisualStudio/feedback/details/786503/) diff --git a/Documentation/breaking-changes/wpf-aero2-and-aerolite-themes-toggle-button-doesn't-show-any-state.md b/Documentation/breaking-changes/wpf-aero2-and-aerolite-themes-toggle-button-doesn't-show-any-state.md new file mode 100644 index 000000000..21ab6fba6 --- /dev/null +++ b/Documentation/breaking-changes/wpf-aero2-and-aerolite-themes-toggle-button-doesn't-show-any-state.md @@ -0,0 +1,38 @@ +## 90: WPF Aero2 and AeroLite themes toggle button doesn't show any state + +### Scope +Major + +### Version Introduced +4.5 + +### Version Reverted +4.5 + +### Source Analyzer Status +Not planned + +### Change Description +In the .NET Framework 4.5, WPF's Aero2 and AeroLite themes do not show a difference between the 'on' and 'off' states of a toggle button. + +- [ ] Quirked +- [ ] Build-time break + +### Recommended Action +This issue was fixed in a servicing update. Please update the .NET Framework 4.5, or upgrade to .NET Framework 4.5.1 or later, to fix this issue. Alternatively, toggle buttons may be explicitly styled to work around this issue. + +### Affected APIs +* T:System.Windows.Controls.Primitives.ToggleButton +* M:System.Windows.Controls.Primitives.ToggleButton.#ctor + +### Category +Windows Presentation Foundation (WPF) + +[More information](http://stackoverflow.com/questions/12450751/togglebutton-doesnt-show-any-state) + + + + diff --git a/Documentation/breaking-changes/wpf-datatemplate-elements-are-now-visible-to-uia.md b/Documentation/breaking-changes/wpf-datatemplate-elements-are-now-visible-to-uia.md new file mode 100644 index 000000000..6154db625 --- /dev/null +++ b/Documentation/breaking-changes/wpf-datatemplate-elements-are-now-visible-to-uia.md @@ -0,0 +1,28 @@ +## 3: WPF DataTemplate elements are now visible to UIA + +### Scope +Edge + +### Version Introduced +4.5 + +### Source Analyzer Status +Available + +### Change Description +Previously, DataTemplate elements were invisible to UI Automation. Beginning in 4.5, UI Automation will detect these elements. This is useful in many cases, but can break tests that depend on UIA trees not containing DataTemplate elements. + +- [ ] Quirked +- [ ] Build-time break + +### Recommended Action +UI Auomation tests for this app may need updated to account for the UIA tree now including previously invisible DataTemplate elements. For example, tests that expect some elements to be next to each other may now need to expect previously invisible UIA elements in between. Or tests that rely on certain counts or indexes for UIA elements may need updated with new values. + +### Affected APIs +* `M:System.Windows.DataTemplate.#ctor` +* `M:System.Windows.DataTemplate.#ctor(System.Object)` + +### Category +Windows Presentation Foundation (WPF) + +[More information](https://msdn.microsoft.com/en-us/library/hh367887\(v=vs.110\).aspx#wpf) diff --git a/Documentation/breaking-changes/wpf-dispatchersynchronizationcontext_createcopy-now-returns-a-new-copy-instead-of-the-current-instance.md b/Documentation/breaking-changes/wpf-dispatchersynchronizationcontext_createcopy-now-returns-a-new-copy-instead-of-the-current-instance.md new file mode 100644 index 000000000..caf9e65a4 --- /dev/null +++ b/Documentation/breaking-changes/wpf-dispatchersynchronizationcontext_createcopy-now-returns-a-new-copy-instead-of-the-current-instance.md @@ -0,0 +1,27 @@ +## 38: WPF DispatcherSynchronizationContext.CreateCopy now returns a new copy instead of the current instance + +### Scope +Minor + +### Version Introduced +4.5 + +### Source Analyzer Status +Available + +### Change Description +In the .NET Framework 4, DispatcherSynchronizationContext.CreateCopy() returned a reference to the current instance, primarily as a performance optimization. In the .NET Framework 4.5, it returns a new instance which makes it possible for the first time to conclude that equal references indicate the executing thread is in the correct synchronization context. It is unlikely that code that checks the identity of these references will be affected, but because of the change, code that calls DispatcherSynchronizationContext.CreateCopy should be tested as part of migration to the .NET Framework 4.5 or newer. + +- [ ] Quirked +- [ ] Build-time break + +### Recommended Action +Be aware that DispatcherSynchronizationContext.CreateCopy() will now return a new SynchronizationContext object. Previously, code that used equivalence of references generated this way was not actually checking whether it was in the proper context, but does when built against .NET 4.5 or newer. While unlikely to cause issues, exercising the affected code paths should be enough to determine if this poses any problem. + +### Affected APIs +* `M:System.Windows.Threading.DispatcherSynchronizationContext.CreateCopy` + +### Category +Windows Presentation Foundation (WPF) + +[More information](https://msdn.microsoft.com/en-us/library/hh367887(v=vs.110).aspx#wpf) diff --git a/Documentation/breaking-changes/wpf-grid-allocation-of-space-to-star-columns.md b/Documentation/breaking-changes/wpf-grid-allocation-of-space-to-star-columns.md new file mode 100644 index 000000000..6258613b8 --- /dev/null +++ b/Documentation/breaking-changes/wpf-grid-allocation-of-space-to-star-columns.md @@ -0,0 +1,84 @@ +## 171: WPF Grid allocation of space to star-columns + +### Scope +Minor + +### Version Introduced +4.7 + +### Source Analyzer Status +NotPlanned + +### Change Description + +Starting with the .NET Framework 4.7, WPF replaces the algorithm that `T:System.Windows.Controls.Grid` uses to allocate space to *-columns. This will change the actual width assigned to *-columns in a number of cases: + +- When one or more *-columns also have a minimum or maximum width that overrides the proportional allocation for that colum. (The minimum width can derive from an explicit MinWidth declaration, or from an implicit minimum obtained from the column's content. The maximum width can only be defined explicitly, from a MaxWidth declaration.) + +- When one or more *-columns declare an extremely large *-weight, greater than 10^298. + +- When the *-weights are sufficiently different to encounter floating-point instability (overflow, underflow, loss of precision). + +- When layout rounding is enabled, and the effective display DPI is sufficiently high. + +In the first two cases, the widths produced by the new algorithm can be significantly different from those produced by the old algorithm; in the last case, the difference will be at most one or two pixels. + +The new algorithm fixes several bugs present in the old algorithm: + +1. Total allocation to columns can exceed the Grid's width. This can occur when allocating space to a column whose proportional share is less than its minimum size. The algorithm allocates the minimum size, which decreases the space available to other columns. If there are no *-columns left to allocate, the total allocation will be too large. + +2. Total allocation can fall short of the Grid's width. This is the dual problem to #1, arising when allocating to a column whose proportional share is greater than its maximum size, with no *-columns left to take up the slack. + +3. Two *-columns can receive allocations not proportional to their *-weights. This is a milder version of #1/#2, arising when allocating to *-columns A, B, and C (in that order), where B's proportional share violates its min (or max) constraint. As above, this changes the space available to column C, who gets less (or more) proportional allocation than A did, + +4. Columns with extremely large weights (> 10^298) are all treated as if they had weight 10^298. Proportional differences between them (and between columns with slightly smaller weights) are not honored. + +5. Columns with inifinte weights are not handled correctly. [Actually you can't set a weight to Infinity, but this is an artificial restriction. The allocation code was trying to handle it, but doing a bad job.] + +6. Several minor problems while avoiding overflow, underflow, loss of precision and similar floating-point issues. + +7. Adjustments for layout rounding are incorrect at sufficiently high DPI. + +The new algorithm produces results that meet the following criteria: + +A. The actual width assigned to a *-column is never less than its minimum width nor greater than its maximum width. + +B. Each *-column that is not assigned its minimum or maximum width is assigned a width proportional to its *-weight. To be precise, if two columns are declared with width x* and y* respectively, and if neither column receives its minimum or maximum width, the actual widths v and w assigned to the columns are in the same proportion: v / w == x / y. + +C. The total width allocated to "proportional" *-columns is equal to the space available after allocating to the constrained columns (fixed, auto, and *-columns that are allocated their min or max width). This might be zero, for instance if the sum of the minimum widths exceeds the Grid's availbable width. + +D. All these statements are to be interpreted with respect to the "ideal" layout. When layout rounding is in effect, the actual widths can differ from the ideal widths by as much as one pixel. + +The old algorithm honored (A) but failed to honor the other criteria in the cases outlined above. + +Everything said about columns and widths in this article applies as well to rows and heights. + +- [x] Quirked +- [ ] Build-time break + +### Recommended Action + +By default, apps that target versions of the .NET Framework starting with the .NET Framework 4.7 will see the new algorithm, while apps that target the .NET Framework 4.6.2 or earlier versions will see the old algorithm. + +To override the default, use the following configuration setting: + +```xml + + + +``` + +The value 'true' selects the old algorithm, 'false' selects the new algorithm. + +### Affected APIs +* Not detectable via API analysis + +### Category +Windows Presentation Foundation (WPF) + + + + diff --git a/Documentation/breaking-changes/wpf-layout-rounding-of-margins-has-changed.md b/Documentation/breaking-changes/wpf-layout-rounding-of-margins-has-changed.md new file mode 100644 index 000000000..2bb5851bf --- /dev/null +++ b/Documentation/breaking-changes/wpf-layout-rounding-of-margins-has-changed.md @@ -0,0 +1,35 @@ +## 139: WPF layout rounding of margins has changed + +### Scope +Minor + +### Version Introduced +4.6 + +### Source Analyzer Status +Not planned + +### Change Description +The way in which margins are rounded and borders and the background inside of them has changed. As a result of this change: + +- The width or height of elements may grow or shrink by at most one pixel. +- The placement of an object can move by at most one pixel. +- Centered elements can be vertically or horizontally off center by at most one pixel. + +By default, this new layout is enabled only for apps that target the .NET Framework 4.6. + +- [x] Quirked +- [ ] Build-time break + +### Recommended Action +Since this modification tends to eliminate clipping of the right or bottom of WPF controls at high DPIs, apps that target earlier versions of the .NET Framework but are running on the .NET Framework 4.6 can opt into this new behavior by adding the following line to the `` section of the app.config file: `` + +Apps that target the .NET Framework 4.6 but want WPF controls to render using the previous layout algorithm can do so by adding the following line to the `` section of the app.config file: ``. + +### Affected APIs +* Not detectable via API analysis + +### Category +Windows Presentation Foundation (WPF) + +[More information](https://msdn.microsoft.com/en-us/library/mt298997(v=vs.110).aspx) diff --git a/Documentation/breaking-changes/wpf-nullreferenceexception-in-exception-handling-code-from-imagesourceconverter_convertfrom.md b/Documentation/breaking-changes/wpf-nullreferenceexception-in-exception-handling-code-from-imagesourceconverter_convertfrom.md new file mode 100644 index 000000000..9c9d20996 --- /dev/null +++ b/Documentation/breaking-changes/wpf-nullreferenceexception-in-exception-handling-code-from-imagesourceconverter_convertfrom.md @@ -0,0 +1,40 @@ +## 177: NullReferenceException in exception handling code from ImageSourceConverter.ConvertFrom + +### Scope +Edge + +### Version Introduced +4.7 + +### Source Analyzer Status +NotPlanned + +### Change Description +An error in the exception handling code for ImageSourceConverter.ConvertFrom caused an incorrect NullReferenceException to be thrown instead of the intended exception (e.g. DirectoryNotFoundException , FileNotFoundException), this change corrects that error so that the method now throws the right exception. +By default all applications targeting .NET Framework 4.6.2 and below will continue to throw NullReferenceException for compatibility, developers targeting .NET Framework 4.7 and above should see the right exceptions. + +// Replace the space with an 'x' if applicable +- [x] Quirked +- [ ] Build-time break + +### Recommended Action +Developers who wish to revert to getting NullReferenceException when targeting .NET Framework 4.7 can add/merge the following to their application's App.config file: + +```xml + + + + + +``` + +### Affected APIs +- `M:System.Windows.Media.ImageSourceConverter.ConvertFrom(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object)` + +### Category +Windows Presentation Foundation (WPF) + + diff --git a/Documentation/breaking-changes/wpf-pointer-based-touch-stack.md b/Documentation/breaking-changes/wpf-pointer-based-touch-stack.md new file mode 100644 index 000000000..78265d482 --- /dev/null +++ b/Documentation/breaking-changes/wpf-pointer-based-touch-stack.md @@ -0,0 +1,54 @@ +## 172: WPF Pointer-Based Touch Stack + +### Scope +Edge + +### Version Introduced +4.7 + +### Source Analyzer Status +NotPlanned + +### Change Description +This change adds the ability to enable an optional WM_POINTER based WPF touch/stylus stack. Developers that do not explicitly enable this should see no change in WPF touch/stylus behavior. + +Current Known Issues With optional WM_POINTER based touch/stylus stack: +- No support for real-time inking. + - While inking and StylusPlugins will still work, they will be processed on the UI Thread which can lead to poor performance. +- Behavioral changes due to changes in promotion from touch/stylus events to mouse events + - Manipulation may behave differently + - Drag/Drop will not show appropriate feedback for touch input + - This does not affect stylus input + - Drag/Drop can no longer be initiated on touch/stylus events + - This can potentially hang the application until mouse input is detected. + - Instead, developers should initiate drag and drop from mouse events. + +- [X] Quirked +- [ ] Build-time break + +### Recommended Action +Developers who wish to enable this stack can add/merge the following to their application's App.config file: + +```xml + + + + + +``` + +Removing this or setting the value to false will turn this optional stack off. + +Please note that this stack is available only on Windows 10 Creators Update and above. + +### Affected APIs +Not detectable via API analysis + +### Category +Windows Presentation Foundation (WPF) + + diff --git a/Documentation/breaking-changes/wpf-printing-stack-update.md b/Documentation/breaking-changes/wpf-printing-stack-update.md new file mode 100644 index 000000000..da141d37c --- /dev/null +++ b/Documentation/breaking-changes/wpf-printing-stack-update.md @@ -0,0 +1,32 @@ +## 173: WPF Printing Stack Update + +### Scope +Edge + +### Version Introduced +4.7 + +### Source Analyzer Status +NotPlanned + +### Change Description +WPF's Printing APIs using PrintQueue now call Window's Print Document Package API in favor of the now deprecated XPS Print API, neither users nor developers should see any changes in behaviour or API usage, the change was made with serviceability in mind. +The new printing stack is by default enabled when running in Windows 10 Creators Update. +The old printing stack will still continue to work just as before in older Windows versions. + +- [x] Quirked +- [ ] Build-time break + +### Recommended Action +If the user wants to use the old stack in Windows 10 Creators Update , the user should set registry key REG_DWORD `HKEY_CURRENT_USER\Software\Microsoft\.NETFramework\Windows Presentation Foundation\Printing\UseXpsOMPrinting = 1` + +### Affected APIs +Not detectable via API analysis + +### Category +Windows Presentation Foundation (WPF) + +### Original Bug +https://devdiv.visualstudio.com/DevDiv/_workitems?id=113979 + + diff --git a/Documentation/breaking-changes/wpf-spawns-a-wisptis_exe-process-which-can-freeze-the-mouse.md b/Documentation/breaking-changes/wpf-spawns-a-wisptis_exe-process-which-can-freeze-the-mouse.md new file mode 100644 index 000000000..346b5c565 --- /dev/null +++ b/Documentation/breaking-changes/wpf-spawns-a-wisptis_exe-process-which-can-freeze-the-mouse.md @@ -0,0 +1,30 @@ +## 87: WPF spawns a wisptis.exe process which can freeze the mouse + +### Scope +Major + +### Version Introduced +4.5.2 + +### Version Reverted +4.6 + +### Source Analyzer Status +Not planned + +### Change Description +An issue was introduced in 4.5.2 that causes `wisptis.exe` to be spawned that can freeze mouse input. + +- [ ] Quirked +- [ ] Build-time break + +### Recommended Action +A fix for this issue is available in a servicing release of the .NET Framework 4.5.2 (hotfix rollup 3026376), or by upgrading to the .NET Framework 4.6 + +### Affected APIs +* Not detectable via API analysis + +### Category +Windows Presentation Foundation (WPF) + +[More information](http://connect.microsoft.com/VisualStudio/feedback/details/927119/net-framework-4-5-2-causes-applications-using-wpf-to-spawn-a-wisptis-exe-process-which-can-freeze-the-mouse) diff --git a/Documentation/breaking-changes/wpf-spell-checking-fail-in-unexpected-ways.md b/Documentation/breaking-changes/wpf-spell-checking-fail-in-unexpected-ways.md new file mode 100644 index 000000000..34a749940 --- /dev/null +++ b/Documentation/breaking-changes/wpf-spell-checking-fail-in-unexpected-ways.md @@ -0,0 +1,45 @@ +## 155: WPF Spell Checking fails in unexpected ways + +### Scope +Edge + +### Version Introduced +4.6.1 + +### Version Reverted +4.6.2 + +### Source Analyzer Status +Not planned + +### Change Description + +This includes a number of WPF Spell Checker issues: +- WPF Spell Checker sometimes throws COMException +- WPF Spell Checker fails with System.UnauthorizedAccessException when applications are launched using 'run as different user' +- WPF Spell Checker incorrectly identifies spelling errors in compound words like 'Hausnummer' in German. + +- [ ] Quirked +- [ ] Build-time break + +### Recommended Action + +Issue #1 - This has been fixed in .NET Framework 4.6.2 +Issue #2 - WPF Spell Checker is no longer supported when applications are launched using 'run as different user'. Starting .NET Framework 4.6.2, applications launched in this manner will no longer crash unexpectedly - instead the Spell Checker will be silently disabled. +Issue #3 - This has been fixed in .NET Framework 4.6.2. + + +### Affected APIs +* Not detectable via API analysis + +### Category +Windows Presentation Foundation (WPF) + + + + diff --git a/Documentation/breaking-changes/wpf-spell-checking-in-text-enabled-controls-will-not-work-in-windows-10-for-languages-not-in-the-input-language-list.md b/Documentation/breaking-changes/wpf-spell-checking-in-text-enabled-controls-will-not-work-in-windows-10-for-languages-not-in-the-input-language-list.md new file mode 100644 index 000000000..2009f69be --- /dev/null +++ b/Documentation/breaking-changes/wpf-spell-checking-in-text-enabled-controls-will-not-work-in-windows-10-for-languages-not-in-the-input-language-list.md @@ -0,0 +1,29 @@ +## 136: WPF spell checking in text-enabled controls will not work in Windows 10 for languages not in the OS's input language list + +### Scope +Edge + +### Version Introduced +4.6 + +### Source Analyzer Status +Not planned + +### Change Description +When running on Windows 10, the spell checker may not work for WPF text-enabled controls because platform spell-checking capabilities are available only for languages present in the input languages list. + +In Windows 10, when a language is added to the list of available keyboards, Windows automatically downloads and installs a corresponding Feature on Demand (FOD) package that provides spell-checking capabilities. By adding the language to the input languages list, the spell checker will be supported. + +- [ ] Quirked +- [ ] Build-time break + +### Recommended Action +Be aware that the language or text to be spell-checked must be added as an input language for spell-checking to work in Windows 10. + +### Affected APIs +* Not detectable via API analysis + +### Category +Windows Presentation Foundation (WPF) + +[More information](https://msdn.microsoft.com/en-us/library/dn833125(v=vs.110).aspx#WPF) diff --git a/Documentation/breaking-changes/wpf-textbox-defaults-to-undo-limit-of-100.md b/Documentation/breaking-changes/wpf-textbox-defaults-to-undo-limit-of-100.md new file mode 100644 index 000000000..12de55271 --- /dev/null +++ b/Documentation/breaking-changes/wpf-textbox-defaults-to-undo-limit-of-100.md @@ -0,0 +1,27 @@ +## 51: WPF TextBox defaults to undo limit of 100 + +### Scope +Edge + +### Version Introduced +4.5 + +### Source Analyzer Status +Planned + +### Change Description +In .NET 4.5, the default undo limit for a WPF textbox is 100 (as opposed to being unlimited in .NET 4.0) + +- [ ] Quirked +- [ ] Build-time break + +### Recommended Action +If an undo limit of 100 is too low, the limit can be set explicitly with the TextBox's UndoLimit property + +### Affected APIs +* `T:System.Windows.Controls.TextBox` + +### Category +Windows Presentation Foundation (WPF) + +[More information](https://msdn.microsoft.com/en-us/library/hh367887(v=vs.110).aspx) diff --git a/Documentation/breaking-changes/wpf-textbox-selected-text-appears-a-different-color-when-the-text-box-is-inactive.md b/Documentation/breaking-changes/wpf-textbox-selected-text-appears-a-different-color-when-the-text-box-is-inactive.md new file mode 100644 index 000000000..11af843dd --- /dev/null +++ b/Documentation/breaking-changes/wpf-textbox-selected-text-appears-a-different-color-when-the-text-box-is-inactive.md @@ -0,0 +1,27 @@ +## 4: WPF TextBox selected text appears a different color when the text box is inactive + +### Scope +Edge + +### Version Introduced +4.5 + +### Source Analyzer Status +Available + +### Change Description +In .NET 4.5, when a WPF text box control is inactive (it doesn't have focus), the selected text inside the box will appear a different color than when the control is active. + +- [ ] Quirked +- [ ] Build-time break + +### Recommended Action +Previous (.NET 4.0) behavior may be restored by setting the [FrameworkCompatibilityPreferences.AreInactiveSelectionHighlightBrushKeysSupported](https://msdn.microsoft.com/en-us/library/system.windows.frameworkcompatibilitypreferences.areinactiveselectionhighlightbrushkeyssupported(v=vs.110).aspx) property to false. + +### Affected APIs +* `T:System.Windows.Controls.TextBox` + +### Category +Windows Presentation Foundation (WPF) + +[More information](https://msdn.microsoft.com/en-us/library/hh367887(v=vs.110).aspx#wpf) diff --git a/Documentation/breaking-changes/wpf-textbox_text-can-be-out-of-sync-with-databinding.md b/Documentation/breaking-changes/wpf-textbox_text-can-be-out-of-sync-with-databinding.md new file mode 100644 index 000000000..4c30f5970 --- /dev/null +++ b/Documentation/breaking-changes/wpf-textbox_text-can-be-out-of-sync-with-databinding.md @@ -0,0 +1,27 @@ +## 52: WPF TextBox.Text can be out-of-sync with databinding + +### Scope +Edge + +### Version Introduced +4.5 + +### Source Analyzer Status +Planned + +### Change Description +In some cases, the TextBox.Text property reflects a previous value of the databound property value if the property is modified during a databinding write operation. + +- [x] Quirked +- [ ] Build-time break + +### Recommended Action +This should have no negative impact. However, you can restore the previous behavior by setting the [FrameworkCompatibilityPreferences.KeepTextBoxDisplaySynchronizedWithTextProperty](https://msdn.microsoft.com/en-us/library/system.windows.frameworkcompatibilitypreferences.keeptextboxdisplaysynchronizedwithtextproperty(v=vs.110).aspx) property to false. + +### Affected APIs +* `P:System.Windows.Controls.TextBox.Text` + +### Category +Windows Presentation Foundation (WPF) + +[More information](https://msdn.microsoft.com/en-us/library/hh367887(v=vs.110).aspx#wpf) diff --git a/Documentation/breaking-changes/wpf-treeviewitem-must-be-used-within-a-treeview.md b/Documentation/breaking-changes/wpf-treeviewitem-must-be-used-within-a-treeview.md new file mode 100644 index 000000000..06528728e --- /dev/null +++ b/Documentation/breaking-changes/wpf-treeviewitem-must-be-used-within-a-treeview.md @@ -0,0 +1,35 @@ +## 141: WPF TreeViewItem must be used within a TreeView + +### Scope +Minor + +### Version Introduced +4.5 + +### Source Analyzer Status +Available + +### Change Description +A change was introduced in 4.5 that restricts usage of TreeViewItem elements outside of a TreeView. This manifests under the following conditions: + +- TreeViewItem's visual parent is not a panel. (A TreeViewItem generated for a TreeView will have a panel as its parent) +- The TreeViewItem is a descendant of a VirtualizingStackPanel acting as the "items host" for a list control (ListBox, DataGrid, ListView, etc.). Virtualization doesn't need to be enabled. +- The VirtualizingStackPanel is item-scrolling (`ScrollUnit="Item"`). +- Someone calls `VirtualizingStackPanel.MakeVisible(v)` to scroll an element `v` into view. This can be done explicitly, or implicitly in a number of ways; perhaps the most common way is simply clicking on `v` to give it the keyboard focus. +- The visual-parent chain from `v` to the VirtualizingStackPanel passes through the TreeViewItem. + +In other words, this is seen when a TreeViewItem is used outside of a TreeView, and the user clicks on a descendant of the TreeViewItem to bring it into view. If the TreeViewItem has no +focusable descendants, you'll never see this issue. An example of a situation where this is hit is when a TreeViewItem is the root of a DataTemplate. When this issue is hit, there is an +InvalidCastException that occurs within the WPF framework. + +- [ ] Quirked +- [ ] Build-time break + +### Recommended Action +A hotfix will be made available for this. + +### Affected APIs +* Not detectable via API analysis + +### Category +Windows Presentation Foundation (WPF) \ No newline at end of file diff --git a/Documentation/breaking-changes/wpf-windows-are-rendered-without-clipping-when-extending-outside-a-single-monitor.md b/Documentation/breaking-changes/wpf-windows-are-rendered-without-clipping-when-extending-outside-a-single-monitor.md new file mode 100644 index 000000000..8797e9128 --- /dev/null +++ b/Documentation/breaking-changes/wpf-windows-are-rendered-without-clipping-when-extending-outside-a-single-monitor.md @@ -0,0 +1,27 @@ +## 135: WPF windows are rendered without clipping when extending outside a single monitor + +### Scope +Minor + +### Version Introduced +4.6 + +### Source Analyzer Status +Not planned + +### Change Description +In the .NET Framework 4.6 running on Windows 8 and above, the entire window is rendered without clipping when it extends outside of single display in a multi-monitor scenario. This is different from previous versions of the .NET Framework which would clip WPF windows that extended beyond a single display. + +- [ ] Quirked +- [ ] Build-time break + +### Recommended Action +This behavior (whether to clip or not) can be explicitly set using the `` element in `` in an application's configuration file, or by setting the `EnableMultiMonitorDisplayClipping` property at app startup. + +### Affected APIs +* Not detectable via API analysis + +### Category +Windows Presentation Foundation (WPF) + +[More information](https://msdn.microsoft.com/en-us/library/dn833125(v=vs.110).aspx#WPF) diff --git a/Documentation/breaking-changes/x509certificate2_tostring(bool)-does-not-throw-now-when-_net-cannot-handle-the-certificate.md b/Documentation/breaking-changes/x509certificate2_tostring(bool)-does-not-throw-now-when-_net-cannot-handle-the-certificate.md new file mode 100644 index 000000000..2534a7288 --- /dev/null +++ b/Documentation/breaking-changes/x509certificate2_tostring(bool)-does-not-throw-now-when-_net-cannot-handle-the-certificate.md @@ -0,0 +1,27 @@ +## 76: X509Certificate2.ToString(bool) does not throw now when .NET cannot handle the certificate + +### Scope +Edge + +### Version Introduced +4.6 + +### Source Analyzer Status +Available + +### Change Description +Previously, this method would throw if 'true' was passed for the verbose parameter and there were certificates installed that weren't supported by the .Net Framework. Now, the method will succeed and return a valid string that omits the inaccessible portions of the certifiate. + +- [ ] Quirked +- [ ] Build-time break + +### Recommended Action +Any code depending on X509Certificate2.ToString(bool) should be updated to expect that the returned string may exclude some certificate data (such as public key, private key, and extensions) in some cases in which the API would have previously thrown. + +### Affected APIs +* `M:System.Security.Cryptography.X509Certificates.X509Certificate2.ToString(System.Boolean)` + +### Category +Core + +[More information](https://msdn.microsoft.com/en-us/library/dn833125\(v=vs.110\).aspx#Core) diff --git a/Documentation/breaking-changes/x509certificateclaimset_findclaims-considers-all-claimtypes.md b/Documentation/breaking-changes/x509certificateclaimset_findclaims-considers-all-claimtypes.md new file mode 100644 index 000000000..d0a08e6ba --- /dev/null +++ b/Documentation/breaking-changes/x509certificateclaimset_findclaims-considers-all-claimtypes.md @@ -0,0 +1,29 @@ +## 143: X509CertificateClaimSet.FindClaims Considers All claimTypes + +### Scope +Minor + +### Version Introduced +4.6.1 + +### Source Analyzer Status +Planned + +### Change Description +In apps that target the .NET Framework 4.6.1, if an X509 claim set is initialized from a certificate that has multiple DNS entries in its SAN field, the FindClaims method attempts to match the claimType argument with all the DNS entries. + +For apps that target previous versions of the .NET Framework, the FindClaims method attempts to match the claimType argument only with the last DNS entry. + +- [x] Quirked +- [ ] Build-time break + +### Recommended Action +This change only affects applications targeting the .NET Framework 4.6.1. This change may be disabled (or enabled if targetting pre-4.6.1) with the [DisableMultipleDNSEntries](https://msdn.microsoft.com/en-us/library/mt620030%28v=vs.110%29.aspx) compatibility switch. + +### Affected APIs +* `M:System.IdentityModel.Claims.X509CertificateClaimSet.FindClaims(System.String,System.String)` + +### Category +Windows Communication Foundation (WCF) + +[More information](https://msdn.microsoft.com/en-us/library/mt620031%28v=vs.110%29.aspx#WCF) diff --git a/Documentation/breaking-changes/xml-documents-are-now-consider-invalid-if-they-contains-transforms-that-are-not-allowed-on-digital-signatures.md b/Documentation/breaking-changes/xml-documents-are-now-consider-invalid-if-they-contains-transforms-that-are-not-allowed-on-digital-signatures.md new file mode 100644 index 000000000..e14769a99 --- /dev/null +++ b/Documentation/breaking-changes/xml-documents-are-now-consider-invalid-if-they-contains-transforms-that-are-not-allowed-on-digital-signatures.md @@ -0,0 +1,47 @@ +## 156: SignedXml and EncryptedXml Breaking Changes + +### Scope +Minor + +### Version Introduced +4.6.2 + +### Source Analyzer Status +Planned + +### Change Description + +In .NET Framework 4.6.2, Security fixes in `SignedXml` and `EncryptedXml` lead +to different run-time behaviors. For example, + +* If a document has multiple elements with the same `id` attribute and a + signature targets one of those elements as the root of the signature, the + document will now be considered invalid. +* Documents using non-canonical XPath transform algorithms in references are now + considered invalid. +* Documents using non-canonical XSLT transform algorithms in references are now + consider invalid. +* Any program making use of external resource detached signatures will be unable + to do so. + +- [ ] Quirked +- [ ] Build-time break + +### Recommended Action + +Developers might want to review the usage of +`System.Security.Cryptography.Xml.XmlDsigXsltTransform` and +`System.Security.Cryptography.Xml.XmlDsigXPathTransform`, as well as types +derived from `System.Security.Cryptography.Xml.Transform` since a document +receiver may not be able to process it. + +### Affected APIs + +* `T:System.Security.Cryptography.Xml.Transform` +* `T:System.Security.Cryptography.Xml.XmlDsigXPathTransform` +* `T:System.Security.Cryptography.Xml.XmlDsigXsltTransform` + +### Category +Security + +[More information](https://github.com/Microsoft/dotnet/blob/master/releases/net462/dotnet462-changes.md) diff --git a/Documentation/breaking-changes/xml-schema-validation-is-stricter.md b/Documentation/breaking-changes/xml-schema-validation-is-stricter.md new file mode 100644 index 000000000..f5a6a15d4 --- /dev/null +++ b/Documentation/breaking-changes/xml-schema-validation-is-stricter.md @@ -0,0 +1,27 @@ +## 2: XML schema validation is stricter + +### Scope +Minor + +### Version Introduced +4.5 + +### Source Analyzer Status +Available + +### Change Description +In the .NET Framework 4.5, XML schema validation is more strict. If you use xsd:anyURI to validate a URI such as a mailto protocol, validation fails if there are spaces in the URI. In previous versions of the .NET Framework, validation succeeded. The change affects only applications that target the .NET Framework 4.5. + +- [x] Quirked +- [ ] Build-time break + +### Recommended Action +If looser .NET Framework 4.0 validation is needed, the validating application can target version 4.0 of the .NET Framework. When retargeting to .NET 4.5, however, code review should be done to be sure that invalid URIs (with spaces) are not expected as attribute values with the anyURI data type. + +### Affected APIs +* Not detectable via API analysis + +### Category +XML, XSLT + +[More information](https://msdn.microsoft.com/en-us/library/hh367887\(v=vs.110\).aspx) diff --git a/Documentation/breaking-changes/xmlschemaexception-now-sets-line-positions-properly.md b/Documentation/breaking-changes/xmlschemaexception-now-sets-line-positions-properly.md new file mode 100644 index 000000000..d6878ab3d --- /dev/null +++ b/Documentation/breaking-changes/xmlschemaexception-now-sets-line-positions-properly.md @@ -0,0 +1,27 @@ +## 19: XmlSchemaException now sets line positions properly + +### Scope +Edge + +### Version Introduced +4.5 + +### Source Analyzer Status +Available + +### Change Description +If the LoadOptions.SetLineInfo value is passed to the Load method and a validation error occurs, the XmlSchemaException.LineNumber and XmlSchemaException.LinePosition properties now contain line information. + +- [ ] Quirked +- [ ] Build-time break + +### Recommended Action +Exception-handling code that assumes XmlSchemaException.LineNumber and XmlSchemaException.LinePosition will not be set should be updated since these properties will now be set properly when SetLineInfo is used while loading XML. + +### Affected APIs +* `F:System.Xml.Linq.LoadOptions.SetLineInfo` + +### Category +XML, XSLT + +[More information](https://msdn.microsoft.com/en-us/library/hh367887#xml) diff --git a/Documentation/breaking-changes/xmlserializer-fails-while-serializing-a-type-that-hides-an-accessible-member-with-an-inaccessible-one.md b/Documentation/breaking-changes/xmlserializer-fails-while-serializing-a-type-that-hides-an-accessible-member-with-an-inaccessible-one.md new file mode 100644 index 000000000..8c737f26b --- /dev/null +++ b/Documentation/breaking-changes/xmlserializer-fails-while-serializing-a-type-that-hides-an-accessible-member-with-an-inaccessible-one.md @@ -0,0 +1,43 @@ +## 140: XmlSerializer fails while serializing a type that hides an accessible member with an inaccessible one + +### Scope +Minor + +### Version Introduced +4.5 + +### Source Analyzer Status +Planned + +### Change Description +When serializing a derived type, the XmlSerializer can fail if the type contains an inaccessible field or property that hides (via the 'new' keyword) a field or property of the same name that was previously accessible (public, for example) on the base type. + +- [ ] Quirked +- [ ] Build-time break + +### Recommended Action +This problem can be solved by making the new, hiding member accessible to the XmlSerializer (by marking it public, for example). + +Alternatively, the following config setting will revert to 4.0 XmlSerializer behavior, which will fix the problem: + +```xml + + + +``` + +### Affected APIs +* `M:System.Xml.Serialization.XmlSerializer.Serialize(System.IO.Stream,System.Object)` +* `M:System.Xml.Serialization.XmlSerializer.Serialize(System.IO.TextWriter,System.Object)` +* `M:System.Xml.Serialization.XmlSerializer.Serialize(System.Object,System.Xml.Serialization.XmlSerializationWriter)` +* `M:System.Xml.Serialization.XmlSerializer.Serialize(System.Xml.XmlWriter,System.Object)` +* `M:System.Xml.Serialization.XmlSerializer.Serialize(System.IO.Stream,System.Object,System.Xml.Serialization.XmlSerializerNamespaces)` +* `M:System.Xml.Serialization.XmlSerializer.Serialize(System.IO.TextWriter,System.Object,System.Xml.Serialization.XmlSerializerNamespaces)` +* `M:System.Xml.Serialization.XmlSerializer.Serialize(System.Xml.XmlWriter,System.Object,System.Xml.Serialization.XmlSerializerNamespaces)` +* `M:System.Xml.Serialization.XmlSerializer.Serialize(System.Xml.XmlWriter,System.Object,System.Xml.Serialization.XmlSerializerNamespaces,System.String)` +* `M:System.Xml.Serialization.XmlSerializer.Serialize(System.Xml.XmlWriter,System.Object,System.Xml.Serialization.XmlSerializerNamespaces,System.String,System.String)` + +### Category +Serialization + +[More information](http://stackoverflow.com/questions/14689305/serialization-breaks-in-net-4-5) diff --git a/Documentation/breaking-changes/xmlserializer-serializes-fields-differently-in-4_5.md b/Documentation/breaking-changes/xmlserializer-serializes-fields-differently-in-4_5.md new file mode 100644 index 000000000..3d239bed9 --- /dev/null +++ b/Documentation/breaking-changes/xmlserializer-serializes-fields-differently-in-4_5.md @@ -0,0 +1,45 @@ +## 94: XmlSerializer serializes fields differently in 4.5 + +### Scope +Major + +### Version Introduced +4.5 + +### Version Reverted +4.5 + +### Source Analyzer Status +Not planned + +### Change Description +Changes in the XmlSerializer in .NET Framework 4.5 caused fields to be formatted differently in the serialized XML. + +- [ ] Quirked +- [ ] Build-time break + +### Recommended Action +This behavior was corrected in a servicing update of .NET Framework 4.5. Please update the .NET Framework 4.5, or upgrade to .NET Framework 4.5.1 or later, to fix this issue. Alternatively, the following config setting will revert to 4.0 XmlSerializer behavior: + +```xml + + + +``` + +### Affected APIs +* `M:System.Xml.Serialization.XmlSerializer.Serialize(System.IO.Stream,System.Object)` +* `M:System.Xml.Serialization.XmlSerializer.Serialize(System.IO.TextWriter,System.Object)` +* `M:System.Xml.Serialization.XmlSerializer.Serialize(System.Object,System.Xml.Serialization.XmlSerializationWriter)` +* `M:System.Xml.Serialization.XmlSerializer.Serialize(System.Xml.XmlWriter,System.Object)` +* `M:System.Xml.Serialization.XmlSerializer.Serialize(System.IO.Stream,System.Object,System.Xml.Serialization.XmlSerializerNamespaces)` +* `M:System.Xml.Serialization.XmlSerializer.Serialize(System.IO.TextWriter,System.Object,System.Xml.Serialization.XmlSerializerNamespaces)` +* `M:System.Xml.Serialization.XmlSerializer.Serialize(System.Xml.XmlWriter,System.Object,System.Xml.Serialization.XmlSerializerNamespaces)` +* `M:System.Xml.Serialization.XmlSerializer.Serialize(System.Xml.XmlWriter,System.Object,System.Xml.Serialization.XmlSerializerNamespaces,System.String)` +* `M:System.Xml.Serialization.XmlSerializer.Serialize(System.Xml.XmlWriter,System.Object,System.Xml.Serialization.XmlSerializerNamespaces,System.String,System.String)` + +### Categories +Serialization +XML, XSLT + +[More information](http://connect.microsoft.com/VisualStudio/feedback/details/761786/net-4-5-xmlserializer-produces-different-output-from-4-0) diff --git a/Documentation/breaking-changes/xmltextreader-dtd-entity-expansion-is-limited-to-10000000-characters.md b/Documentation/breaking-changes/xmltextreader-dtd-entity-expansion-is-limited-to-10000000-characters.md new file mode 100644 index 000000000..feaca6791 --- /dev/null +++ b/Documentation/breaking-changes/xmltextreader-dtd-entity-expansion-is-limited-to-10000000-characters.md @@ -0,0 +1,41 @@ +## 33: XmlTextReader DTD entity expansion is limited to 10,000,000 characters + +### Scope +Edge + +### Version Introduced +4.5 + +### Source Analyzer Status +Available + +### Change Description +DTD entity expansion is now limited to 10,000,000 characters. Loading XML files without DTD entity expansion or with limited DTD entity expansion is unaffected. Files with DTD entities that expand to more than 10,000,000 characters fail to load, and now throw an exception. + +- [ ] Quirked +- [ ] Build-time break + +### Recommended Action +If the limit of DTD entity expansion is too low 10,000,000, the value can be overridden with the [XmlReaderSettings.MaxCharactersFromEntities](https://msdn.microsoft.com/en-us/library/system.xml.xmlreadersettings.maxcharactersfromentities%28v=vs.110%29.aspx) property. An XmlReaderSettings with the proper MaxCharactersFromEntity value can be passed to [XmlReader.Create](https://msdn.microsoft.com/en-us/library/System.Xml.XmlReader.Create(v=vs.110).aspx) + +### Affected APIs +* `T:System.Xml.XmlTextReader` +* `M:System.Xml.XmlTextReader.#ctor` +* `M:System.Xml.XmlTextReader.#ctor(System.IO.Stream)` +* `M:System.Xml.XmlTextReader.#ctor(System.IO.Stream,System.Xml.XmlNameTable)` +* `M:System.Xml.XmlTextReader.#ctor(System.IO.Stream,System.Xml.XmlNodeType,System.Xml.XmlParserContext)` +* `M:System.Xml.XmlTextReader.#ctor(System.IO.TextReader)` +* `M:System.Xml.XmlTextReader.#ctor(System.IO.TextReader,System.Xml.XmlNameTable)` +* `M:System.Xml.XmlTextReader.#ctor(System.String)` +* `M:System.Xml.XmlTextReader.#ctor(System.String,System.IO.Stream)` +* `M:System.Xml.XmlTextReader.#ctor(System.String,System.IO.Stream,System.Xml.XmlNameTable)` +* `M:System.Xml.XmlTextReader.#ctor(System.String,System.IO.TextReader)` +* `M:System.Xml.XmlTextReader.#ctor(System.String,System.IO.TextReader,System.Xml.XmlNameTable)` +* `M:System.Xml.XmlTextReader.#ctor(System.String,System.Xml.XmlNameTable)` +* `M:System.Xml.XmlTextReader.#ctor(System.String,System.Xml.XmlNodeType,System.Xml.XmlParserContext)` +* `M:System.Xml.XmlTextReader.#ctor(System.Xml.XmlNameTable)` + +### Category +XML, XSLT + +[More information](https://msdn.microsoft.com/en-us/library/hh367887(v=vs.110).aspx) diff --git a/Documentation/breaking-changes/xmlwriter-throws-on-invalid-surrogate-pairs.md b/Documentation/breaking-changes/xmlwriter-throws-on-invalid-surrogate-pairs.md new file mode 100644 index 000000000..4edbd0663 --- /dev/null +++ b/Documentation/breaking-changes/xmlwriter-throws-on-invalid-surrogate-pairs.md @@ -0,0 +1,57 @@ +## 81: XmlWriter throws on invalid surrogate pairs + +### Scope +Edge + +### Version Introduced +4.6 + +### Source Analyzer Status +Planned + +### Change Description +For apps that target the .NET Framework 4.5.2 or previous versions, writing an invalid surrogate pair using exception fallback handling does not always throw an exception. For apps that target the .NET Framework 4.6, attempting to write an invalid surrogate pair throws an `ArgumentException`. + +- [x] Quirked +- [ ] Build-time break + +### Recommended Action +If necessary, this break can be avoided by targeting the .NET Framework 4.5.2 or earlier. Alternatively, invalid surrogate pairs can be pre-processed into valid xml prior to writing them. + +### Affected APIs +* `M:System.Xml.XmlWriter.WriteAttributeString(System.String,System.String)` +* `M:System.Xml.XmlWriter.WriteAttributeString(System.String,System.String,System.String)` +* `M:System.Xml.XmlWriter.WriteAttributeString(System.String,System.String,System.String,System.String)` +* `M:System.Xml.XmlWriter.WriteAttributeStringAsync(System.String,System.String,System.String,System.String)` +* `M:System.Xml.XmlWriter.WriteCData(System.String)` +* `M:System.Xml.XmlWriter.WriteCDataAsync(System.String)` +* `M:System.Xml.XmlWriter.WriteChars(System.Char[],System.Int32,System.Int32)` +* `M:System.Xml.XmlWriter.WriteCharsAsync(System.Char[],System.Int32,System.Int32)` +* `M:System.Xml.XmlWriter.WriteComment(System.String)` +* `M:System.Xml.XmlWriter.WriteCommentAsync(System.String)` +* `M:System.Xml.XmlWriter.WriteEntityRef(System.String)` +* `M:System.Xml.XmlWriter.WriteEntityRefAsync(System.String)` +* `M:System.Xml.XmlWriter.WriteRaw(System.Char[],System.Int32,System.Int32)` +* `M:System.Xml.XmlWriter.WriteProcessingInstruction(System.String,System.String)` +* `M:System.Xml.XmlWriter.WriteProcessingInstructionAsync(System.String,System.String)` +* `M:System.Xml.XmlWriter.WriteRaw(System.String)` +* `M:System.Xml.XmlWriter.WriteRawAsync(System.Char[],System.Int32,System.Int32)` +* `M:System.Xml.XmlWriter.WriteRawAsync(System.String)` +* `M:System.Xml.XmlWriter.WriteString(System.String)` +* `M:System.Xml.XmlWriter.WriteStringAsync(System.String)` +* `M:System.Xml.XmlWriter.WriteSurrogateCharEntity(System.Char,System.Char)` +* `M:System.Xml.XmlWriter.WriteSurrogateCharEntityAsync(System.Char,System.Char)` +* `M:System.Xml.XmlWriter.WriteValue(System.String)` + +### Category +XML, XSLT + +[More information](https://msdn.microsoft.com/en-us/library/dn833123\(v=vs.110\).aspx) + + + + diff --git a/Documentation/breaking-changes/xsd-schema-validation-now-correctly-detects-violations-of-unique-constraints-if-compound-keys-are-used-and-one-key-is-empty.md b/Documentation/breaking-changes/xsd-schema-validation-now-correctly-detects-violations-of-unique-constraints-if-compound-keys-are-used-and-one-key-is-empty.md new file mode 100644 index 000000000..a04512624 --- /dev/null +++ b/Documentation/breaking-changes/xsd-schema-validation-now-correctly-detects-violations-of-unique-constraints-if-compound-keys-are-used-and-one-key-is-empty.md @@ -0,0 +1,25 @@ +## 111: XSD Schema validation now correctly detects violations of unique constraints if compound keys are used and one key is empty + +### Scope +Edge + +### Version Introduced +4.6 + +### Source Analyzer Status +Available + +### Change Description +Versions of the .NET Framework prior to 4.6 had a bug that caused XSD validation to not detect unique constraints on compound keys if one of the keys was empty. In the .NET Framework 4.6, this issue is corrected. This will result in more correct validation, but it may also result in some XML not validating which previously would have. + +- [x] Quirked +- [ ] Build-time break + +### Recommended Action +If looser, .NET Framework 4.0 validation is needed, the validating application can target version 4.5 (or earlier) of the .NET Framework. When retargeting to .NET 4.6, however, code review should be done to be sure that duplicate compound keys (as described in this issue's description) are not expected to validate. + +### Affected APIs +* Not detectable via API analysis + +### Category +XML, XSLT \ No newline at end of file diff --git a/Documentation/breaking-changes/xslt-forward-compat-now-works.md b/Documentation/breaking-changes/xslt-forward-compat-now-works.md new file mode 100644 index 000000000..365bc0522 --- /dev/null +++ b/Documentation/breaking-changes/xslt-forward-compat-now-works.md @@ -0,0 +1,32 @@ +## 34: XSLT forward compat now works + +### Scope +Edge + +### Version Introduced +4.5 + +### Source Analyzer Status +Available + +### Change Description +In the .NET Framework 4, XSLT 1.0 forward compatibility had the following issues: + +- Loading a style sheet failed if its version was set to 2.0 and the parser encountered an unrecognized XSLT 1.0 construct. +- The `xsl:sort` construct failed to sort data if the style sheet version was set to 1.1. + +In the .NET Framework 4.5, these issues have been fixed, and XSLT 1.0 forward compatibility mode works properly. + +- [ ] Quirked +- [ ] Build-time break + +### Recommended Action +Most apps should be unaffected, however data will be sorted differently in some cases now that xsl:sort is respected. If `xsl:sort` is used in 1.1 style sheets, confirm that apps were not depending on the unsorted order of data. If apps rely on the 4.0 sorting behavior, remove `xsl:sort` from the style sheet. + +### Affected APIs +* `T:System.Xml.Xsl.XslCompiledTransform` + +### Category +XML, XSLT + +[More information](https://msdn.microsoft.com/en-us/library/hh367887(v=vs.110).aspx#xml) diff --git a/Documentation/breaking-changes/xslt-style-sheet-exception-message-changed.md b/Documentation/breaking-changes/xslt-style-sheet-exception-message-changed.md new file mode 100644 index 000000000..5d5805d53 --- /dev/null +++ b/Documentation/breaking-changes/xslt-style-sheet-exception-message-changed.md @@ -0,0 +1,34 @@ +## 35: XSLT style sheet exception message changed + +### Scope +Edge + +### Version Introduced +4.5 + +### Source Analyzer Status +Available + +### Change Description +In the .NET Framework 4.5, the text of the error message when an XSLT file is too complex is "The style sheet is too complex." In previous versions, the error message was "XSLT compile error." Application code that depends on the text of the error message will no longer work. However, the exception types remain the same, so this change should have no real impact. + +- [ ] Quirked +- [ ] Build-time break + +### Recommended Action +Update any app code depending on the excepton message from this error condition to expect the new message, or (even better) update the code to depend only on the exception type ([XsltException](https://msdn.microsoft.com/en-us/library/system.xml.xsl.xsltexception(v=vs.110).aspx)), which has not changed. + +### Affected APIs +* `M:System.Xml.Xsl.XslCompiledTransform.Load(System.String)` +* `M:System.Xml.Xsl.XslCompiledTransform.Load(System.Type)` +* `M:System.Xml.Xsl.XslCompiledTransform.Load(System.Xml.XmlReader)` +* `M:System.Xml.Xsl.XslCompiledTransform.Load(System.Xml.XPath.IXPathNavigable)` +* `M:System.Xml.Xsl.XslCompiledTransform.Load(System.Reflection.MethodInfo,System.Byte[],System.Type[])` +* `M:System.Xml.Xsl.XslCompiledTransform.Load(System.String,System.Xml.Xsl.XsltSettings,System.Xml.XmlResolver)` +* `M:System.Xml.Xsl.XslCompiledTransform.Load(System.Xml.XmlReader,System.Xml.Xsl.XsltSettings,System.Xml.XmlResolver)` +* `M:System.Xml.Xsl.XslCompiledTransform.Load(System.Xml.XPath.IXPathNavigable,System.Xml.Xsl.XsltSettings,System.Xml.XmlResolver)` + +### Category +XML, XSLT + +[More information](https://msdn.microsoft.com/en-us/library/hh367887(v=vs.110).aspx#xml) From 12482495cb0e8017be36637b65607a61f4866da3 Mon Sep 17 00:00:00 2001 From: Rich Lander Date: Wed, 5 Apr 2017 14:28:36 -0700 Subject: [PATCH 337/872] .NET Framework 4.7 Release notes (#372) --- data/platforms.json | 12 + releases/README.md | 12 +- releases/net47/README.md | 21 + releases/net47/dotnet47-api-changes.md | 579 +++++++++++++++++++++++++ releases/net47/dotnet47-changes.md | 141 ++++++ 5 files changed, 763 insertions(+), 2 deletions(-) create mode 100644 releases/net47/README.md create mode 100644 releases/net47/dotnet47-api-changes.md create mode 100644 releases/net47/dotnet47-changes.md diff --git a/data/platforms.json b/data/platforms.json index 3059cf84d..87afc340e 100644 --- a/data/platforms.json +++ b/data/platforms.json @@ -68,6 +68,18 @@ } ] }, + { + "platform": ".NET Framework 4.7", + "alias": "net47", + "category": "netfx", + "supportInfo": { + "support": "Supported in Windows 10 Creators Update", + "link": "" + }, + "popular": true, + "info": "http://go.microsoft.com/fwlink/?LinkID=845636", + "includedIn": [ "VS2017" ] + }, { "platform": ".NET Framework 4.6.2", "alias": "net462", diff --git a/releases/README.md b/releases/README.md index cb2d93265..b33cf6222 100644 --- a/releases/README.md +++ b/releases/README.md @@ -7,20 +7,28 @@ To get up-to-date with the latest versions of .NET Framework and Visual Studio, ## Releases You can see what was included in each .NET Framework release. Some releases are now unsupported, as called out. - +- .NET Framework 4.7 + - [Announcement blog post](https://go.microsoft.com/fwlink/?linkid=845636) + - [Release notes](net47/README.md) + - [Known issues](https://support.microsoft.com/en-us/help/4015088/known-issues-for-the-net-framework-4-7) - .NET Framework 4.6.2 - [Announcement blog post](https://blogs.msdn.microsoft.com/dotnet/2016/08/02/announcing-net-framework-4-6-2/) - [Release notes](net462/README.md) + - [Known issues](https://support.microsoft.com/en-us/help/3151796/known-issues-for-the-.net-framework-4.6.2) - .NET Framework 4.6.1 - [Announcement blog post](https://blogs.msdn.microsoft.com/dotnet/2015/11/30/net-framework-4-6-1-is-now-available/) - - [Release notes](net461) + - [Release notes](net461) + - [Known issues](https://support.microsoft.com/en-us/help/3102432/known-issues-for-the-.net-framework-4.6.1) - .NET Framework 4.6 - [Announcement blog post](https://blogs.msdn.microsoft.com/dotnet/2015/07/20/announcing-net-framework-4-6/) - [Release notes](net46) + - [Known issues](https://support.microsoft.com/en-us/help/3047761/known-issues-for-the-.net-framework-4.6) - .NET Framework 4.5.2 - [Announcement blog post](https://blogs.msdn.microsoft.com/dotnet/2014/05/05/announcing-the-net-framework-4-5-2/) + - [Known issues](https://support.microsoft.com/en-us/help/2962547/known-issues-for-the-.net-framework-4.5.2) - .NET Framework 4.5.1 (unsupported) - [Announcement blog post](https://blogs.msdn.microsoft.com/dotnet/2013/10/17/net-framework-4-5-1-rtm-start-coding/) + - [Known issues](https://support.microsoft.com/en-us/help/2890857/known-issues-for-the-.net-framework-4.5.1) - .NET Framework 4.5 (unsupported) - [Announcement blog post](https://blogs.msdn.microsoft.com/dotnet/2012/08/15/announcing-the-release-of-net-framework-4-5-rtm-product-and-source-code/) - .NET Framework 4.0.3 (unsupported) diff --git a/releases/net47/README.md b/releases/net47/README.md new file mode 100644 index 000000000..9ef5b5dd3 --- /dev/null +++ b/releases/net47/README.md @@ -0,0 +1,21 @@ +# .NET Framework 4.7 Release Notes + +The following information describes the changes made in the .NET Framework 4.7 release. + +- [Announcement blog post](https://go.microsoft.com/fwlink/?linkid=845636) +- [Release notes](dotnet47-changes.md) +- [API changes](dotnet47-api-changes.md) +- [referencesource](https://go.microsoft.com/fwlink/?linkid=846346) + +# Product Areas + +- [ASP.NET](dotnet47-changes.md#aspnet) +- [BCL](dotnet47-changes.md#bcl) +- [ClickOnce](dotnet47-changes.md#clickonce) +- [CLR](dotnet47-changes.md#clr) +- [Networking](dotnet47-changes.md#networking) +- [SQL](dotnet47-changes.md#sql) +- [WCF](dotnet47-changes.md#wcf) +- [Windows Forms](dotnet47-changes.md#windows-forms) +- [Workflow](dotnet47-changes.md#workflow) +- [WPF](dotnet47-changes.md#wpf) diff --git a/releases/net47/dotnet47-api-changes.md b/releases/net47/dotnet47-api-changes.md new file mode 100644 index 000000000..399cbaa7d --- /dev/null +++ b/releases/net47/dotnet47-api-changes.md @@ -0,0 +1,579 @@ +```diff + namespace System { + public static class AppContext { ++ public static string TargetFrameworkName { get; } ++ public static object GetData(string name); + } ++ public static class TupleExtensions { ++ public static void Deconstruct(this Tuple value, out T1 item1); ++ public static void Deconstruct(this Tuple value, out T1 item1, out T2 item2); ++ public static void Deconstruct(this Tuple value, out T1 item1, out T2 item2, out T3 item3); ++ public static void Deconstruct(this Tuple value, out T1 item1, out T2 item2, out T3 item3, out T4 item4); ++ public static void Deconstruct(this Tuple value, out T1 item1, out T2 item2, out T3 item3, out T4 item4, out T5 item5); ++ public static void Deconstruct(this Tuple value, out T1 item1, out T2 item2, out T3 item3, out T4 item4, out T5 item5, out T6 item6); ++ public static void Deconstruct(this Tuple value, out T1 item1, out T2 item2, out T3 item3, out T4 item4, out T5 item5, out T6 item6, out T7 item7); ++ public static void Deconstruct(this Tuple> value, out T1 item1, out T2 item2, out T3 item3, out T4 item4, out T5 item5, out T6 item6, out T7 item7, out T8 item8); ++ public static void Deconstruct(this Tuple> value, out T1 item1, out T2 item2, out T3 item3, out T4 item4, out T5 item5, out T6 item6, out T7 item7, out T8 item8, out T9 item9); ++ public static void Deconstruct(this Tuple> value, out T1 item1, out T2 item2, out T3 item3, out T4 item4, out T5 item5, out T6 item6, out T7 item7, out T8 item8, out T9 item9, out T10 item10); ++ public static void Deconstruct(this Tuple> value, out T1 item1, out T2 item2, out T3 item3, out T4 item4, out T5 item5, out T6 item6, out T7 item7, out T8 item8, out T9 item9, out T10 item10, out T11 item11); ++ public static void Deconstruct(this Tuple> value, out T1 item1, out T2 item2, out T3 item3, out T4 item4, out T5 item5, out T6 item6, out T7 item7, out T8 item8, out T9 item9, out T10 item10, out T11 item11, out T12 item12); ++ public static void Deconstruct(this Tuple> value, out T1 item1, out T2 item2, out T3 item3, out T4 item4, out T5 item5, out T6 item6, out T7 item7, out T8 item8, out T9 item9, out T10 item10, out T11 item11, out T12 item12, out T13 item13); ++ public static void Deconstruct(this Tuple> value, out T1 item1, out T2 item2, out T3 item3, out T4 item4, out T5 item5, out T6 item6, out T7 item7, out T8 item8, out T9 item9, out T10 item10, out T11 item11, out T12 item12, out T13 item13, out T14 item14); ++ public static void Deconstruct(this Tuple>> value, out T1 item1, out T2 item2, out T3 item3, out T4 item4, out T5 item5, out T6 item6, out T7 item7, out T8 item8, out T9 item9, out T10 item10, out T11 item11, out T12 item12, out T13 item13, out T14 item14, out T15 item15); ++ public static void Deconstruct(this Tuple>> value, out T1 item1, out T2 item2, out T3 item3, out T4 item4, out T5 item5, out T6 item6, out T7 item7, out T8 item8, out T9 item9, out T10 item10, out T11 item11, out T12 item12, out T13 item13, out T14 item14, out T15 item15, out T16 item16); ++ public static void Deconstruct(this Tuple>> value, out T1 item1, out T2 item2, out T3 item3, out T4 item4, out T5 item5, out T6 item6, out T7 item7, out T8 item8, out T9 item9, out T10 item10, out T11 item11, out T12 item12, out T13 item13, out T14 item14, out T15 item15, out T16 item16, out T17 item17); ++ public static void Deconstruct(this Tuple>> value, out T1 item1, out T2 item2, out T3 item3, out T4 item4, out T5 item5, out T6 item6, out T7 item7, out T8 item8, out T9 item9, out T10 item10, out T11 item11, out T12 item12, out T13 item13, out T14 item14, out T15 item15, out T16 item16, out T17 item17, out T18 item18); ++ public static void Deconstruct(this Tuple>> value, out T1 item1, out T2 item2, out T3 item3, out T4 item4, out T5 item5, out T6 item6, out T7 item7, out T8 item8, out T9 item9, out T10 item10, out T11 item11, out T12 item12, out T13 item13, out T14 item14, out T15 item15, out T16 item16, out T17 item17, out T18 item18, out T19 item19); ++ public static void Deconstruct(this Tuple>> value, out T1 item1, out T2 item2, out T3 item3, out T4 item4, out T5 item5, out T6 item6, out T7 item7, out T8 item8, out T9 item9, out T10 item10, out T11 item11, out T12 item12, out T13 item13, out T14 item14, out T15 item15, out T16 item16, out T17 item17, out T18 item18, out T19 item19, out T20 item20); ++ public static void Deconstruct(this Tuple>> value, out T1 item1, out T2 item2, out T3 item3, out T4 item4, out T5 item5, out T6 item6, out T7 item7, out T8 item8, out T9 item9, out T10 item10, out T11 item11, out T12 item12, out T13 item13, out T14 item14, out T15 item15, out T16 item16, out T17 item17, out T18 item18, out T19 item19, out T20 item20, out T21 item21); ++ public static Tuple ToTuple(this ValueTuple value); ++ public static Tuple ToTuple(this ValueTuple value); ++ public static Tuple ToTuple(this ValueTuple value); ++ public static Tuple ToTuple(this ValueTuple value); ++ public static Tuple ToTuple(this ValueTuple value); ++ public static Tuple ToTuple(this ValueTuple value); ++ public static Tuple ToTuple(this ValueTuple value); ++ public static Tuple> ToTuple(this ValueTuple> value); ++ public static Tuple> ToTuple(this ValueTuple> value); ++ public static Tuple> ToTuple(this ValueTuple> value); ++ public static Tuple> ToTuple(this ValueTuple> value); ++ public static Tuple> ToTuple(this ValueTuple> value); ++ public static Tuple> ToTuple(this ValueTuple> value); ++ public static Tuple> ToTuple(this ValueTuple> value); ++ public static Tuple>> ToTuple(this ValueTuple>> value); ++ public static Tuple>> ToTuple(this ValueTuple>> value); ++ public static Tuple>> ToTuple(this ValueTuple>> value); ++ public static Tuple>> ToTuple(this ValueTuple>> value); ++ public static Tuple>> ToTuple(this ValueTuple>> value); ++ public static Tuple>> ToTuple(this ValueTuple>> value); ++ public static Tuple>> ToTuple(this ValueTuple>> value); ++ public static ValueTuple ToValueTuple(this Tuple value); ++ public static ValueTuple ToValueTuple(this Tuple value); ++ public static ValueTuple ToValueTuple(this Tuple value); ++ public static ValueTuple ToValueTuple(this Tuple value); ++ public static ValueTuple ToValueTuple(this Tuple value); ++ public static ValueTuple ToValueTuple(this Tuple value); ++ public static ValueTuple ToValueTuple(this Tuple value); ++ public static ValueTuple> ToValueTuple(this Tuple> value); ++ public static ValueTuple> ToValueTuple(this Tuple> value); ++ public static ValueTuple> ToValueTuple(this Tuple> value); ++ public static ValueTuple> ToValueTuple(this Tuple> value); ++ public static ValueTuple> ToValueTuple(this Tuple> value); ++ public static ValueTuple> ToValueTuple(this Tuple> value); ++ public static ValueTuple> ToValueTuple(this Tuple> value); ++ public static ValueTuple>> ToValueTuple(this Tuple>> value); ++ public static ValueTuple>> ToValueTuple(this Tuple>> value); ++ public static ValueTuple>> ToValueTuple(this Tuple>> value); ++ public static ValueTuple>> ToValueTuple(this Tuple>> value); ++ public static ValueTuple>> ToValueTuple(this Tuple>> value); ++ public static ValueTuple>> ToValueTuple(this Tuple>> value); ++ public static ValueTuple>> ToValueTuple(this Tuple>> value); ++ } ++ public struct ValueTuple : IComparable, IComparable, IEquatable, IStructuralComparable, IStructuralEquatable, ITupleInternal { ++ public int CompareTo(ValueTuple other); ++ public static ValueTuple Create(T1 item1); ++ public static ValueTuple Create(T1 item1, T2 item2); ++ public static ValueTuple Create(T1 item1, T2 item2, T3 item3); ++ public static ValueTuple Create(T1 item1, T2 item2, T3 item3, T4 item4); ++ public static ValueTuple Create(T1 item1, T2 item2, T3 item3, T4 item4, T5 item5); ++ public static ValueTuple Create(T1 item1, T2 item2, T3 item3, T4 item4, T5 item5, T6 item6); ++ public static ValueTuple Create(T1 item1, T2 item2, T3 item3, T4 item4, T5 item5, T6 item6, T7 item7); ++ public static ValueTuple> Create(T1 item1, T2 item2, T3 item3, T4 item4, T5 item5, T6 item6, T7 item7, T8 item8); ++ public static ValueTuple Create(); ++ public override bool Equals(object obj); ++ public bool Equals(ValueTuple other); ++ public override int GetHashCode(); ++ int System.Collections.IStructuralComparable.CompareTo(object other, IComparer comparer); ++ bool System.Collections.IStructuralEquatable.Equals(object other, IEqualityComparer comparer); ++ int System.Collections.IStructuralEquatable.GetHashCode(IEqualityComparer comparer); ++ int System.IComparable.CompareTo(object other); ++ public override string ToString(); ++ } ++ public struct ValueTuple : IComparable, IComparable>, IEquatable>, IStructuralComparable, IStructuralEquatable, ITupleInternal { ++ public T1 Item1; ++ public ValueTuple(T1 item1); ++ public int CompareTo(ValueTuple other); ++ public override bool Equals(object obj); ++ public bool Equals(ValueTuple other); ++ public override int GetHashCode(); ++ int System.Collections.IStructuralComparable.CompareTo(object other, IComparer comparer); ++ bool System.Collections.IStructuralEquatable.Equals(object other, IEqualityComparer comparer); ++ int System.Collections.IStructuralEquatable.GetHashCode(IEqualityComparer comparer); ++ int System.IComparable.CompareTo(object other); ++ public override string ToString(); ++ } ++ public struct ValueTuple : IComparable, IComparable>, IEquatable>, IStructuralComparable, IStructuralEquatable, ITupleInternal { ++ public T1 Item1; ++ public T2 Item2; ++ public ValueTuple(T1 item1, T2 item2); ++ public int CompareTo(ValueTuple other); ++ public override bool Equals(object obj); ++ public bool Equals(ValueTuple other); ++ public override int GetHashCode(); ++ int System.Collections.IStructuralComparable.CompareTo(object other, IComparer comparer); ++ bool System.Collections.IStructuralEquatable.Equals(object other, IEqualityComparer comparer); ++ int System.Collections.IStructuralEquatable.GetHashCode(IEqualityComparer comparer); ++ int System.IComparable.CompareTo(object other); ++ public override string ToString(); ++ } ++ public struct ValueTuple : IComparable, IComparable>, IEquatable>, IStructuralComparable, IStructuralEquatable, ITupleInternal { ++ public T1 Item1; ++ public T2 Item2; ++ public T3 Item3; ++ public ValueTuple(T1 item1, T2 item2, T3 item3); ++ public int CompareTo(ValueTuple other); ++ public override bool Equals(object obj); ++ public bool Equals(ValueTuple other); ++ public override int GetHashCode(); ++ int System.Collections.IStructuralComparable.CompareTo(object other, IComparer comparer); ++ bool System.Collections.IStructuralEquatable.Equals(object other, IEqualityComparer comparer); ++ int System.Collections.IStructuralEquatable.GetHashCode(IEqualityComparer comparer); ++ int System.IComparable.CompareTo(object other); ++ public override string ToString(); ++ } ++ public struct ValueTuple : IComparable, IComparable>, IEquatable>, IStructuralComparable, IStructuralEquatable, ITupleInternal { ++ public T1 Item1; ++ public T2 Item2; ++ public T3 Item3; ++ public T4 Item4; ++ public ValueTuple(T1 item1, T2 item2, T3 item3, T4 item4); ++ public int CompareTo(ValueTuple other); ++ public override bool Equals(object obj); ++ public bool Equals(ValueTuple other); ++ public override int GetHashCode(); ++ int System.Collections.IStructuralComparable.CompareTo(object other, IComparer comparer); ++ bool System.Collections.IStructuralEquatable.Equals(object other, IEqualityComparer comparer); ++ int System.Collections.IStructuralEquatable.GetHashCode(IEqualityComparer comparer); ++ int System.IComparable.CompareTo(object other); ++ public override string ToString(); ++ } ++ public struct ValueTuple : IComparable, IComparable>, IEquatable>, IStructuralComparable, IStructuralEquatable, ITupleInternal { ++ public T1 Item1; ++ public T2 Item2; ++ public T3 Item3; ++ public T4 Item4; ++ public T5 Item5; ++ public ValueTuple(T1 item1, T2 item2, T3 item3, T4 item4, T5 item5); ++ public int CompareTo(ValueTuple other); ++ public override bool Equals(object obj); ++ public bool Equals(ValueTuple other); ++ public override int GetHashCode(); ++ int System.Collections.IStructuralComparable.CompareTo(object other, IComparer comparer); ++ bool System.Collections.IStructuralEquatable.Equals(object other, IEqualityComparer comparer); ++ int System.Collections.IStructuralEquatable.GetHashCode(IEqualityComparer comparer); ++ int System.IComparable.CompareTo(object other); ++ public override string ToString(); ++ } ++ public struct ValueTuple : IComparable, IComparable>, IEquatable>, IStructuralComparable, IStructuralEquatable, ITupleInternal { ++ public T1 Item1; ++ public T2 Item2; ++ public T3 Item3; ++ public T4 Item4; ++ public T5 Item5; ++ public T6 Item6; ++ public ValueTuple(T1 item1, T2 item2, T3 item3, T4 item4, T5 item5, T6 item6); ++ public int CompareTo(ValueTuple other); ++ public override bool Equals(object obj); ++ public bool Equals(ValueTuple other); ++ public override int GetHashCode(); ++ int System.Collections.IStructuralComparable.CompareTo(object other, IComparer comparer); ++ bool System.Collections.IStructuralEquatable.Equals(object other, IEqualityComparer comparer); ++ int System.Collections.IStructuralEquatable.GetHashCode(IEqualityComparer comparer); ++ int System.IComparable.CompareTo(object other); ++ public override string ToString(); ++ } ++ public struct ValueTuple : IComparable, IComparable>, IEquatable>, IStructuralComparable, IStructuralEquatable, ITupleInternal { ++ public T1 Item1; ++ public T2 Item2; ++ public T3 Item3; ++ public T4 Item4; ++ public T5 Item5; ++ public T6 Item6; ++ public T7 Item7; ++ public ValueTuple(T1 item1, T2 item2, T3 item3, T4 item4, T5 item5, T6 item6, T7 item7); ++ public int CompareTo(ValueTuple other); ++ public override bool Equals(object obj); ++ public bool Equals(ValueTuple other); ++ public override int GetHashCode(); ++ int System.Collections.IStructuralComparable.CompareTo(object other, IComparer comparer); ++ bool System.Collections.IStructuralEquatable.Equals(object other, IEqualityComparer comparer); ++ int System.Collections.IStructuralEquatable.GetHashCode(IEqualityComparer comparer); ++ int System.IComparable.CompareTo(object other); ++ public override string ToString(); ++ } ++ public struct ValueTuple : IComparable, IComparable>, IEquatable>, IStructuralComparable, IStructuralEquatable, ITupleInternal where TRest : struct { ++ public T1 Item1; ++ public T2 Item2; ++ public T3 Item3; ++ public T4 Item4; ++ public T5 Item5; ++ public T6 Item6; ++ public T7 Item7; ++ public TRest Rest; ++ public ValueTuple(T1 item1, T2 item2, T3 item3, T4 item4, T5 item5, T6 item6, T7 item7, TRest rest); ++ public int CompareTo(ValueTuple other); ++ public override bool Equals(object obj); ++ public bool Equals(ValueTuple other); ++ public override int GetHashCode(); ++ int System.Collections.IStructuralComparable.CompareTo(object other, IComparer comparer); ++ bool System.Collections.IStructuralEquatable.Equals(object other, IEqualityComparer comparer); ++ int System.Collections.IStructuralEquatable.GetHashCode(IEqualityComparer comparer); ++ int System.IComparable.CompareTo(object other); ++ public override string ToString(); ++ } + } + namespace System.Diagnostics.Tracing { + public class EventListener : IDisposable { +- protected static int EventSourceIndex(EventSource eventSource); ++ public static int EventSourceIndex(EventSource eventSource); + } + } + namespace System.IO { + public sealed class DirectoryInfo : FileSystemInfo { ++ public override string FullName { get; } + } + } + namespace System.Net { + public enum SecurityProtocolType { ++ SystemDefault = 0, + } + } + namespace System.Net.Security { + public class SslStream : AuthenticatedStream { ++ public virtual void AuthenticateAsClient(string targetHost, X509CertificateCollection clientCertificates, bool checkCertificateRevocation); ++ public virtual Task AuthenticateAsClientAsync(string targetHost, X509CertificateCollection clientCertificates, bool checkCertificateRevocation); ++ public virtual void AuthenticateAsServer(X509Certificate serverCertificate, bool clientCertificateRequired, bool checkCertificateRevocation); ++ public virtual Task AuthenticateAsServerAsync(X509Certificate serverCertificate, bool clientCertificateRequired, bool checkCertificateRevocation); ++ public virtual IAsyncResult BeginAuthenticateAsClient(string targetHost, X509CertificateCollection clientCertificates, bool checkCertificateRevocation, AsyncCallback asyncCallback, object asyncState); ++ public virtual IAsyncResult BeginAuthenticateAsServer(X509Certificate serverCertificate, bool clientCertificateRequired, bool checkCertificateRevocation, AsyncCallback asyncCallback, object asyncState); ++ public virtual Task ShutdownAsync(); + } + } + namespace System.Runtime.Caching { + public class MemoryCache : ObjectCache, IDisposable, IEnumerable { ++ public MemoryCache(string name, NameValueCollection config, bool ignoreConfigSection); ++ public long GetLastSize(string regionName=null); ++ public object Remove(string key, CacheEntryRemovedReason reason, string regionName=null); + } + } + namespace System.Runtime.CompilerServices { ++ public sealed class TupleElementNamesAttribute : Attribute { ++ public TupleElementNamesAttribute(string[] transformNames); ++ public IList TransformNames { get; } ++ } + } + namespace System.Runtime.InteropServices { + public enum UnmanagedType { ++ LPUTF8Str = 48, + } + } + namespace System.Security.Authentication { + public enum HashAlgorithmType { ++ Sha256 = 32780, ++ Sha384 = 32781, ++ Sha512 = 32782, + } + } + namespace System.Security.Cryptography { + public sealed class CngAlgorithm : IEquatable { ++ public static CngAlgorithm ECDiffieHellman { get; } ++ public static CngAlgorithm ECDsa { get; } + } + public sealed class CngKey : IDisposable { +- public CngExportPolicies ExportPolicy { get; } ++ public CngExportPolicies ExportPolicy { get; internal set; } + } + public sealed class CngKeyBlobFormat : IEquatable { ++ public static CngKeyBlobFormat EccFullPrivateBlob { get; } ++ public static CngKeyBlobFormat EccFullPublicBlob { get; } + } ++ public struct ECCurve { ++ public enum ECCurveType { ++ Characteristic2 = 4, ++ Implicit = 0, ++ Named = 5, ++ PrimeMontgomery = 3, ++ PrimeShortWeierstrass = 1, ++ PrimeTwistedEdwards = 2, ++ } ++ public static class NamedCurves { ++ public static ECCurve brainpoolP160r1 { get; } ++ public static ECCurve brainpoolP160t1 { get; } ++ public static ECCurve brainpoolP192r1 { get; } ++ public static ECCurve brainpoolP192t1 { get; } ++ public static ECCurve brainpoolP224r1 { get; } ++ public static ECCurve brainpoolP224t1 { get; } ++ public static ECCurve brainpoolP256r1 { get; } ++ public static ECCurve brainpoolP256t1 { get; } ++ public static ECCurve brainpoolP320r1 { get; } ++ public static ECCurve brainpoolP320t1 { get; } ++ public static ECCurve brainpoolP384r1 { get; } ++ public static ECCurve brainpoolP384t1 { get; } ++ public static ECCurve brainpoolP512r1 { get; } ++ public static ECCurve brainpoolP512t1 { get; } ++ public static ECCurve nistP256 { get; } ++ public static ECCurve nistP384 { get; } ++ public static ECCurve nistP521 { get; } ++ } ++ public byte[] A; ++ public byte[] B; ++ public byte[] Cofactor; ++ public ECCurve.ECCurveType CurveType; ++ public ECPoint G; ++ public Nullable Hash; ++ public byte[] Order; ++ public byte[] Polynomial; ++ public byte[] Prime; ++ public byte[] Seed; ++ public bool IsCharacteristic2 { get; } ++ public bool IsExplicit { get; } ++ public bool IsNamed { get; } ++ public bool IsPrime { get; } ++ public Oid Oid { get; private set; } ++ public static ECCurve CreateFromFriendlyName(string oidFriendlyName); ++ public static ECCurve CreateFromOid(Oid curveOid); ++ public static ECCurve CreateFromValue(string oidValue); ++ public void Validate(); ++ } + public abstract class ECDiffieHellman : AsymmetricAlgorithm { ++ public static ECDiffieHellman Create(ECCurve curve); ++ public static ECDiffieHellman Create(ECParameters parameters); ++ public virtual ECParameters ExportExplicitParameters(bool includePrivateParameters); ++ public virtual ECParameters ExportParameters(bool includePrivateParameters); ++ public virtual void GenerateKey(ECCurve curve); ++ public virtual void ImportParameters(ECParameters parameters); + } + public sealed class ECDiffieHellmanCng : ECDiffieHellman { ++ public ECDiffieHellmanCng(ECCurve curve); ++ public override ECParameters ExportExplicitParameters(bool includePrivateParameters); ++ public override ECParameters ExportParameters(bool includePrivateParameters); ++ public override void GenerateKey(ECCurve curve); ++ public override void ImportParameters(ECParameters parameters); + } + public sealed class ECDiffieHellmanCngPublicKey : ECDiffieHellmanPublicKey { ++ public override ECParameters ExportExplicitParameters(); ++ public override ECParameters ExportParameters(); + } + public abstract class ECDiffieHellmanPublicKey : IDisposable { ++ protected ECDiffieHellmanPublicKey(); ++ public virtual ECParameters ExportExplicitParameters(); ++ public virtual ECParameters ExportParameters(); + } + public abstract class ECDsa : AsymmetricAlgorithm { ++ public static ECDsa Create(ECCurve curve); ++ public static ECDsa Create(ECParameters parameters); ++ public virtual ECParameters ExportExplicitParameters(bool includePrivateParameters); ++ public virtual ECParameters ExportParameters(bool includePrivateParameters); ++ public virtual void GenerateKey(ECCurve curve); ++ public virtual void ImportParameters(ECParameters parameters); + } + public sealed class ECDsaCng : ECDsa { ++ public ECDsaCng(ECCurve curve); ++ public override ECParameters ExportExplicitParameters(bool includePrivateParameters); ++ public override ECParameters ExportParameters(bool includePrivateParameters); ++ public override void GenerateKey(ECCurve curve); ++ public override void ImportParameters(ECParameters parameters); + } ++ public struct ECParameters { ++ public ECCurve Curve; ++ public byte[] D; ++ public ECPoint Q; ++ public void Validate(); ++ } ++ public struct ECPoint { ++ public byte[] X; ++ public byte[] Y; ++ } + } + namespace System.Text.RegularExpressions { + public class Group : Capture { ++ public string Name { get; } + } + } + namespace System.Web.Caching { +- public sealed class AggregateCacheDependency : CacheDependency, ICacheDependencyChanged { ++ public sealed class AggregateCacheDependency : CacheDependency { + } + public class CacheDependency : IDisposable { ++ public void ItemRemoved(); ++ public void KeepDependenciesAlive(); ++ public void SetCacheDependencyChanged(Action dependencyChangedAction); ++ public bool TakeOwnership(); + } ++ public class CacheInsertOptions { ++ public CacheInsertOptions(); ++ public DateTime AbsoluteExpiration { get; set; } ++ public CacheDependency Dependencies { get; set; } ++ public CacheItemRemovedCallback OnRemovedCallback { get; set; } ++ public CacheItemPriority Priority { get; set; } ++ public TimeSpan SlidingExpiration { get; set; } ++ } ++ public abstract class CacheStoreProvider : ProviderBase, IDisposable { ++ protected CacheStoreProvider(); ++ public abstract long ItemCount { get; } ++ public abstract long SizeInBytes { get; } ++ public abstract object Add(string key, object item, CacheInsertOptions options); ++ public abstract bool AddDependent(string key, CacheDependency dependency, out DateTime utcLastUpdated); ++ public abstract void Dispose(); ++ public abstract object Get(string key); ++ public abstract IDictionaryEnumerator GetEnumerator(); ++ public abstract void Initialize(string name, NameValueCollection config); ++ public abstract void Insert(string key, object item, CacheInsertOptions options); ++ public abstract object Remove(string key); ++ public abstract object Remove(string key, CacheItemRemovedReason reason); ++ public abstract void RemoveDependent(string key, CacheDependency dependency); ++ public abstract long Trim(int percent); ++ } + public static class OutputCacheUtility { ++ public static void FlushKernelCache(string cacheKey); + } + } + namespace System.Web.Configuration { + public sealed class CacheSection : ConfigurationSection { ++ public string DefaultProvider { get; set; } ++ public ProviderSettingsCollection Providers { get; } + } + } + namespace System.Web.Hosting { ++ public sealed class ApplicationMonitors { ++ public IApplicationMonitor MemoryMonitor { get; set; } ++ } ++ public sealed class AspNetMemoryMonitor : IApplicationMonitor, IDisposable, IObservable, IObservable { ++ public IObserver DefaultLowPhysicalMemoryObserver { get; set; } ++ public IObserver DefaultRecycleLimitObserver { get; set; } ++ public void Dispose(); ++ public void Start(); ++ public void Stop(); ++ public IDisposable Subscribe(IObserver observer); ++ public IDisposable Subscribe(IObserver observer); ++ } + public sealed class HostingEnvironment : MarshalByRefObject { ++ public static ApplicationMonitors ApplicationMonitors { get; } + } ++ public interface IApplicationMonitor : IDisposable { ++ void Start(); ++ void Stop(); ++ } ++ public sealed class LowPhysicalMemoryInfo { ++ public LowPhysicalMemoryInfo(int currentPercentUsed, int percentLimit); ++ public int CurrentPercentUsed { get; } ++ public int PercentLimit { get; } ++ public bool RequestGC { get; set; } ++ } ++ public class LowPhysicalMemoryObserver : IObserver { ++ public LowPhysicalMemoryObserver(); ++ public void OnCompleted(); ++ public void OnError(Exception error); ++ public void OnNext(LowPhysicalMemoryInfo lowMemoryInfo); ++ } ++ public sealed class RecycleLimitInfo { ++ public RecycleLimitInfo(long currentPrivateBytes, long recycleLimit, RecycleLimitNotificationFrequency recycleLimitNearFrequency); ++ public long CurrentPrivateBytes { get; } ++ public long RecycleLimit { get; } ++ public bool RequestGC { get; set; } ++ public RecycleLimitNotificationFrequency TrimFrequency { get; } ++ } ++ public class RecycleLimitMonitor : MarshalByRefObject { ++ public class RecycleLimitMonitorSingleton : MarshalByRefObject { ++ public void Dispose(); ++ public static void EnsureCreated(); ++ public override object InitializeLifetimeService(); ++ public void RegisterProxyAndStart(RecycleLimitMonitor proxy, string applicationID); ++ public void UnregisterProxyAndStop(RecycleLimitMonitor proxy); ++ } ++ public void Dispose(); ++ public override object InitializeLifetimeService(); ++ } ++ public enum RecycleLimitNotificationFrequency { ++ High = 0, ++ Low = 2, ++ Medium = 1, ++ } ++ public class RecycleLimitObserver : IObserver { ++ public RecycleLimitObserver(); ++ public void OnCompleted(); ++ public void OnError(Exception error); ++ public void OnNext(RecycleLimitInfo recycleLimitInfo); ++ } + } + namespace System.Windows.Forms { + public class Control : Component, IArrangedElement, IBindableComponent, IComponent, IDisposable, IDropTarget, ISynchronizeInvoke, IWin32Window { ++ public int DeviceDpi { get; } ++ public int LogicalToDeviceUnits(int value); ++ protected virtual void OnDpiChangedAfterParent(EventArgs e); ++ protected virtual void OnDpiChangedBeforeParent(EventArgs e); ++ protected virtual void RescaleConstantsForDpi(int deviceDpiOld, int deviceDpiNew); ++ public void ScaleBitmapLogicalToDevice(ref Bitmap logicalBitmap); ++ public event EventHandler DpiChangedAfterParent; ++ public event EventHandler DpiChangedBeforeParent; + } ++ public sealed class DpiChangedEventArgs : CancelEventArgs { ++ public int DeviceDpiNew { get; private set; } ++ public int DeviceDpiOld { get; private set; } ++ public Rectangle SuggestedRectangle { get; private set; } ++ public override string ToString(); ++ } ++ public delegate void DpiChangedEventHandler(object sender, DpiChangedEventArgs e); { ++ public DpiChangedEventHandler(object @object, IntPtr method); ++ public virtual IAsyncResult BeginInvoke(object sender, DpiChangedEventArgs e, AsyncCallback callback, object @object); ++ public virtual void EndInvoke(IAsyncResult result); ++ public virtual void Invoke(object sender, DpiChangedEventArgs e); ++ } + public class Form : ContainerControl { ++ protected virtual void OnDpiChanged(DpiChangedEventArgs e); ++ protected virtual bool OnGetDpiScaledSize(int deviceDpiOld, int deviceDpiNew, ref Size desiredSize); ++ public event DpiChangedEventHandler DpiChanged; + } + public class ListBox : ListControl { ++ protected override void RescaleConstantsForDpi(int deviceDpiOld, int deviceDpiNew); + } + public class SystemInformation { ++ public static Size GetBorderSizeForDpi(int dpi); ++ public static int GetHorizontalScrollBarHeightForDpi(int dpi); ++ public static Font GetMenuFontForDpi(int dpi); ++ public static int GetVerticalScrollBarWidthForDpi(int dpi); + } + public abstract class UpDownBase : ContainerControl { ++ protected override void RescaleConstantsForDpi(int deviceDpiOld, int deviceDpiNew); + } + } + namespace System.Windows.Input { + public class StylusPointPropertyInfo : StylusPointProperty { +- public float Resolution { get; } ++ public float Resolution { get; internal set; } + } + public class TabletDeviceCollection : ICollection, IEnumerable { ++ public TabletDeviceCollection(); + } + } ++namespace System.Windows.Input.StylusWisp { ++ public class WispTabletDeviceCollection : TabletDeviceCollection ++} + namespace System.Windows.Markup { ++ public sealed class MarkupExtensionBracketCharactersAttribute : Attribute { ++ public MarkupExtensionBracketCharactersAttribute(char openingBracket, char closingBracket); ++ public char ClosingBracket { get; } ++ public char OpeningBracket { get; } ++ } + } + namespace System.Windows.Xps { + public class XpsDocumentWriter : SerializerWriter { +- public override event WritingProgressChangedEventHandler WritingProgressChanged; ++ public virtual event WritingProgressChangedEventHandler WritingProgressChanged; + } + } + namespace System.Windows.Xps.Serialization { +- public class XpsSerializationManager : PackageSerializationManager { ++ public class XpsSerializationManager : PackageSerializationManager, IXpsSerializationManager { + } +- public sealed class XpsSerializationManagerAsync : XpsSerializationManager { ++ public sealed class XpsSerializationManagerAsync : XpsSerializationManager, IXpsSerializationManager, IXpsSerializationManagerAsync { + } + } + namespace System.Xaml { + public class XamlMember : IEquatable { ++ public IReadOnlyDictionary MarkupExtensionBracketCharacters { get; } ++ protected virtual IReadOnlyDictionary LookupMarkupExtensionBracketCharacters(); + } + } +``` diff --git a/releases/net47/dotnet47-changes.md b/releases/net47/dotnet47-changes.md new file mode 100644 index 000000000..a44076b6c --- /dev/null +++ b/releases/net47/dotnet47-changes.md @@ -0,0 +1,141 @@ +.NET Framework 4.7 List of Changes +============================================ + +.NET Framework 4.7 contains dozens of bug fixes and improvements. +This list details those changes, grouped by feature area. +Each change includes our TFS bug numbers at the end of the line. Please include those numbers in your communication if you wish to contact us to obtain more information. + +## [CLR](#clr) + +* Fixed buffer overflows with large manifests in EventSource. [199198] +* If a COM interface contain setter only indexed property, Tlbimp will generate incorrect setter property metadata. [220918] +* Implemented IEnumerator in EventPayload (EventSource). [220990] +* JIT performance improvements [223169] +* Improved performance of creating large numbers of TaskSchedulers when a debugger isn't attached. [227010] +* EventSourceIndex method is now public. [227686] +* Support for ToEventKeywords() method instead of working with keywords directly. [232335] +* Fixed NGen Task to respect battery saver setting. [250762] +* Fixed a bug where null paths would not throw ArgumentNullException. [252467] +* Added the case of Wrong machine code generated by RyuJIT on AVX2-capable CPU to the list of instructions that have this characteristic. [258520] +* Implemented flexibility in specifying Server GC resource consumption. [271883] + + +## [BCL](#bcl) + +* Opening a cryptographic key with CspParameters.ParentWindowHandle set to this.Handle will now correctly make any PIN or password prompt be modal to the current window [208813] +* Added [ValueTuple](https://docs.microsoft.com/dotnet/api/System.ValueTuple?view=netframework-4.7) types to support C# 7.0 and VB 15 tuples [257122] +* Added [Name](https://docs.microsoft.com/dotnet/api/system.text.regularexpressions.group.name?view=netframework-4.7) property to Regex.Group. [234526] +* Fixed InvalidPath exception when using FileIOPermissions with device syntax (\\?\), [245244] +* [ECDsa](https://docs.microsoft.com/dotnet/api/System.Security.Cryptography.ECDsa?view=netframework-4.7) and [ECDiffieHellman](https://docs.microsoft.com/dotnet/api/System.Security.Cryptography.ECDiffieHellman?view=netframework-4.7) can now import and export key parameters (all OSes) as well as represent points over an expanded set of curves (Win10). [266138] +* Fixed an issue in SerialPort where unplugging the device during execution could cause a memory leak in the SerialStream class. [288363] +* Improved support of RSA decryption with hardware keys [298923] + +## [Networking](#networking) + +* [ServicePointManager.SecurityProtocol](https://docs.microsoft.com/dotnet/api/system.net.servicepointmanager.securityprotocol?view=netframework-4.7) will default to a new value: SystemDefault which allows applications to use the underlying operating system TLS version selection defaults. +New [SslStream*AuthenticateAs*](https://docs.microsoft.com/dotnet/api/System.Net.Security.SslStream?view=netframework-4.7) APIs allow applications to omit the SslProtocols parameter and use the system default. +New [HashAlgorithmType](https://docs.microsoft.com/dotnet/api/System.Security.Authentication.HashAlgorithmType?view=netframework-4.7) enum members. [197039] +* Added support for the TLS Alert Protocol [273411] +* Updated HttpListener to handle improvements to the token binding protocol. [365993], [377357] +* Fixed pointer offset calculation in HttpListener for token binding struct. [262268] + + +## [ASP.NET](#aspnet) + +* Allows for extensibility of the cache providers that could allow them to operate on new services with less overhead from memory usage. [180994] +* Introduced a new config parameter 'timeoutUnit' for [ActiveDirectoryMembershipProvider](https://docs.microsoft.com/dotnet/api/System.Web.Security.ActiveDirectoryMembershipProvider?view=netframework-4.7) that can be used to indicate the 'clientSearchTimeout' and 'serverSearchTimeout' values. These should be interpreted as Days/Hours/Minutes/Seconds/Milliseconds. If not specified, the default is Minutes, as was the previous behavior. [212045] +* Customer will see a warning in the windows event log if they have specified to use unsecured password formats in their web application. [265267] +* Fixed assignment issue with max-age value for OutputCache. [288337] +* Fixed an issue with exception handling for custom membership provider scenario. [294931] + +## [WPF](#wpf) + +* WPF now uses [PrintDocumentPackageTarget](https://msdn.microsoft.com/en-us/library/mt800103(v=vs.110).aspx) instead of the deprecated XpsPrint API. [113979] +* Fixed crash in WPF when typing in text with specific language input [121579] +* The escape sequences have been unescaped in the URLs while converting from XAML to RTF. [132397] +* Fixed crash in DocumentView when receiving input from IMEs. [133072] +* Fixed ribbon crash when Alt + accelerator key is pressed to display the submenu. [170982] +* Previously, large amounts of connects and disconnects of tablet/stylus devices could result in WPF losing all touch support except for promoted mouse messages. This was due to a reference counting issue within WPF and its Windows side touch component (WISP). This change, along with the associated WISP change available in RS2, fixes this situation allowing large numbers of connects and disconnects. [174153] +* Conversion of BaselineOffset property has been added while converting from XAML to RTF and vice versa. [181850] +* Modernize touch stack [197685] +* Fixed crashes in Combobox [208379] +* Added support for alternative delimiter characters in markup. [210368] +* Fixed textbox focus issues [215639] +* Fixed out of memory issues with custom textbox. [216018] +* In some scenarios, shutting down input for a stylus/touch device (program shutdown or device disconnection) could result in a deadlock. This change alleviates that issue by fixing a timing problem with the WPF stylus/tablet initialization and shutdown code. [220285] +* In order to disable the WPF stylus/touch stack developers were previously using a private reflection mechanism. This provides a new mechanism in the form of an AppContext switch. Switch.System.Windows.Input.Stylus.DisableStylusAndTouchSupport set to true will fully disable the stylus/touch stack without requiring any private reflection or other workarounds. [221075] +* Inheritable properties propagate through a new link in the visual tree, including properties declared in a Style newly enabled by the link because a DynamicResource reference now resolves. [221837] +* [ImageSourceConverter.ConvertFromString](https://msdn.microsoft.com/en-us/library/mt800102(v=vs.110).aspx) now throws the correct DirectoryNotFoundException instead of NullReferenceException if called with an invalid path (only on apps targeting .NET Framework 4.7 and above) [223209] +* Fixed IOException crashes arising from Cursor.LoadFromStream, that could happen on application start. [227517] +* Fixed a deadlock arising from re-entrant COM requests while waiting for the lock protecting WPF's weak-event component. [234423] +* Scroll tracing now supports scenarios involving multiple instances of an ItemsControl with the same name, that enter and leave the visual tree dynamically. [234612] +* Some ItemsControls allow null to appear in the ItemsSource. If so, the automation for the control should allow null as well. An app that works in a normal environment should not crash in when automation is present. [239479] +* Fixed an ArgumentException arising from bindings on a non-Visual element declared in a DataGrid cell template. [240237] +* Improved Grid algorithm usages to allocate space to columns declared with *-width. For details refer to [Application compatibility changes](https://msdn.microsoft.com/en-us/library/mt800102(v=vs.110).aspx). [245278] +* Fixed crash arising from displaying certain sequences of Unicode characters deemed (by the font and by DWrite) to have negative advance width. [252835] +* Fixed a crash arising when running two instances of a process that creates multiple large packages when using System.IO.Packaging. [259773] +* When an exception interrupts a PropertyChanged or CollectionChanged notification raised on a worker thread, other such notifications continue to be processed normally. [260469] +* Fixed D3DImage memory leak. [261139] +* Fixed crashes in DataGrid with column virtualization enabled scenario. [274127] +* Improved reliability of anchored scroll scenarios. [282666] +* Support for Async and AddJob scenarios in printing. [292567] +* The content of the selected item in a TabControl is visible to UI Automation, even after changing IsEnabled (or other properties) on the TabItems. [365337] + + +## [WCF](#wcf) + +* Fixed a bug in SocketConnection.Read which caused the operation to hang when mixing synchronous and asynchronous calls. [171322] +* Support for CNG certificates. For details refer to [Application compatibility changes](https://msdn.microsoft.com/en-us/library/mt800102(v=vs.110).aspx). [194808] +* Support for DataContractJsonSerializer to follow ECMAScript 6 when serializing control character. [200613] +* Fixed process crash in concurrent Dictionary scenario [209749] +* Fixed a race condition on the cleanup path of WCF Tracing that caused an ObjectDisposedException. [219051] +* Enabled WCF message security configuration to use TLS1.1 or TLS1.2. For details refer to [Application compatibility changes](https://msdn.microsoft.com/en-us/library/mt800102(v=vs.110).aspx). [226570] +* Fixed a bug in OperationContext.Current which caused it to return null when called inside an OperationContextScope [249750] +* Ensure no deadlock occurs when two threads try to abort the channel. [257126] + + +## [Workflow](#workflow) + +* Support for propagating an activity exception as-is instead of throwing a Null Reference Exception. For details refer to [Application compatibility changes](https://msdn.microsoft.com/en-us/library/mt800102(v=vs.110).aspx). [155469] +* Previously when trying to use Visual Studio to debug XAML-based workflows on a machine with FIPS enabled, one would encounter a NullReferenceException. This has been resolved. However, in order to take advantage of this change, you will need to add the following to the App.Config file for the workflow application: +``` + + + +``` +For details refer to [Application compatibility changes](https://msdn.microsoft.com/en-us/library/mt800102(v=vs.110).aspx). [193017] +* SqlWorkflowInstanceStore database now defines Primary Key columns, allowing transactional replication. [206271] + + +## [Windows Forms](#windows-forms) + +* Fixed dialog layout for High DPI scenarios [123539] +* Enabled ClickOnce signing scenarios where certificate is identified by a cryptographic provider and private key container names. [146775] +* Docked ListBox controls will now revert to their correct size in the designer when the Dock property is changed to DockStyle.None in the property browser. [159543] +* Fixed properly scaling across dialog control elements, including control padding and sizes in High DPI scenarios. [164251] +* Fixed text clipping in localized versions of .NET SDK tool MageUI.exe. [197100] +* Fixed IndexOutOfRangeException. [199325] +* Fixed clipped buttons in WinRes.exe .Net SDK tool [203672] +* Fixed crashes in Windows Forms Designer that happened when the Windows theme was changed. [204800] +* Fixed an issue in the Windows Forms designer where under some circumstances selecting a ContextMenuStrip causes Visual Studio to crash. [214130] +* Improved reliability of ToolTip control. [219724] +* Fixed reliability issue with ShowPropertyBrowser and Controls [223512] +* Changed the background color of property grid lines to provide an 8:1 contrast ratio for high contrast themes. [225121] +* Improved reliability of the Windows Forms DataGrid control. [236488] +* Fixed control height scaling issues in DPI mode [236540] +* Fixed toolstrip scaling issues in DPI mode [236541] +* Fixed case-insensitivity issues with command line arguments in mage.exe .NET SDK tool. [245680] +* [High DPI support](https://msdn.microsoft.com/en-us/library/ms171868(v=vs.110).aspx#wf47) for winforms applications via app.config file. [272446], [284519], [297641], [297725], [297811], [365350] +* Fixed for the proper placement of anchored controls. [275828] +* Fixed control text truncations issue in a Visual Studio dialog. [280675] +* Enable [per-monitor scaling](https://msdn.microsoft.com/en-us/library/ms171868(v=vs.110).aspx#wf47) in DPI mode [292303] + +## [SQL](#sql) + +* Fixed TransparentNetworkIPResolution (TNIR) Connectivity issues. [222375] +* SQL Client now uses TCP as the default protocol for connections to Azure SQL Database. Previously, SQL Client tried every protocol including viz, Shared Memory, TCP, and Named Pipes to establish a connection to Azure SQL Database, which only supports TCP connections. [276556] + +## [ClickOnce](#clickonce) + +* Fixed store corruption in ClickOnce application. [260868] +* Added the ability to sign a manifest file via a Hardware-Security Module (HSM) to Mage.exe and MageUI.exe [166355] From 7ea9c4e6976d51a738560b124d9e34c038f732a7 Mon Sep 17 00:00:00 2001 From: Rich Lander Date: Wed, 5 Apr 2017 14:30:13 -0700 Subject: [PATCH 338/872] Add links to BC docs (#373) --- README.md | 1 + releases/README.md | 1 + 2 files changed, 2 insertions(+) diff --git a/README.md b/README.md index 3b1c1b231..41a9d1d56 100644 --- a/README.md +++ b/README.md @@ -7,6 +7,7 @@ This repo is not an official .NET Framework support location, however, we will r ## In this repository - [.NET Framework Release Notes](releases/README.md) +- [.NET Framework Breaking Changes](Documentation/breaking-changes/README.md) - [.NET Open Source Developer Projects](dotnet-developer-projects.md) - [.NET Open Source Consumer Projects](dotnet-consumer-projects.md) - [Free Services & Tools for Open Source .NET Projects](dotnet-free-oss-services.md) diff --git a/releases/README.md b/releases/README.md index b33cf6222..675a9786d 100644 --- a/releases/README.md +++ b/releases/README.md @@ -38,6 +38,7 @@ You can see what was included in each .NET Framework release. Some releases are ## Resources +- [.NET Framework Breaking Changes](../Documentation/breaking-changes/README.md) - [.NET Framework Docs](https://docs.microsoft.com/dotnet) - [.NET Framework Docs Source (dotnet/docs)](https://github.com/dotnet/docs) - [.NET Framework Reference Source](https://referencesource.microsoft.com/) From c3a38db08edad6298e74588b410f42a042b93588 Mon Sep 17 00:00:00 2001 From: Rich Lander Date: Fri, 7 Apr 2017 14:36:27 -0700 Subject: [PATCH 339/872] Update dotnet47-changes.md --- releases/net47/dotnet47-changes.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/releases/net47/dotnet47-changes.md b/releases/net47/dotnet47-changes.md index a44076b6c..7b914d284 100644 --- a/releases/net47/dotnet47-changes.md +++ b/releases/net47/dotnet47-changes.md @@ -17,7 +17,7 @@ Each change includes our TFS bug numbers at the end of the line. Please include * Fixed NGen Task to respect battery saver setting. [250762] * Fixed a bug where null paths would not throw ArgumentNullException. [252467] * Added the case of Wrong machine code generated by RyuJIT on AVX2-capable CPU to the list of instructions that have this characteristic. [258520] -* Implemented flexibility in specifying Server GC resource consumption. [271883] +* Implemented flexibility in specifying Server GC resource consumption. [271883] [dotnet/coreclr #6104](https://github.com/dotnet/coreclr/pull/6104) ## [BCL](#bcl) From 0fe90710731058b7482286b1c4d63a9ef2591cb0 Mon Sep 17 00:00:00 2001 From: Rich Lander Date: Fri, 7 Apr 2017 14:36:45 -0700 Subject: [PATCH 340/872] Update dotnet47-changes.md --- releases/net47/dotnet47-changes.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/releases/net47/dotnet47-changes.md b/releases/net47/dotnet47-changes.md index 7b914d284..c30ebd008 100644 --- a/releases/net47/dotnet47-changes.md +++ b/releases/net47/dotnet47-changes.md @@ -17,7 +17,7 @@ Each change includes our TFS bug numbers at the end of the line. Please include * Fixed NGen Task to respect battery saver setting. [250762] * Fixed a bug where null paths would not throw ArgumentNullException. [252467] * Added the case of Wrong machine code generated by RyuJIT on AVX2-capable CPU to the list of instructions that have this characteristic. [258520] -* Implemented flexibility in specifying Server GC resource consumption. [271883] [dotnet/coreclr #6104](https://github.com/dotnet/coreclr/pull/6104) +* Implemented flexibility in specifying Server GC resource consumption. [271883] [[dotnet/coreclr #6104](https://github.com/dotnet/coreclr/pull/6104)] ## [BCL](#bcl) From 28be04f49b90154919b51eb4da70fb36d8eaf46a Mon Sep 17 00:00:00 2001 From: Richard Lander Date: Tue, 11 Apr 2017 19:36:08 -0700 Subject: [PATCH 341/872] Move known issues to release README --- releases/README.md | 2 -- releases/net462/README.md | 1 + releases/net47/README.md | 3 ++- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/releases/README.md b/releases/README.md index 675a9786d..e7a2aa8ad 100644 --- a/releases/README.md +++ b/releases/README.md @@ -10,11 +10,9 @@ You can see what was included in each .NET Framework release. Some releases are - .NET Framework 4.7 - [Announcement blog post](https://go.microsoft.com/fwlink/?linkid=845636) - [Release notes](net47/README.md) - - [Known issues](https://support.microsoft.com/en-us/help/4015088/known-issues-for-the-net-framework-4-7) - .NET Framework 4.6.2 - [Announcement blog post](https://blogs.msdn.microsoft.com/dotnet/2016/08/02/announcing-net-framework-4-6-2/) - [Release notes](net462/README.md) - - [Known issues](https://support.microsoft.com/en-us/help/3151796/known-issues-for-the-.net-framework-4.6.2) - .NET Framework 4.6.1 - [Announcement blog post](https://blogs.msdn.microsoft.com/dotnet/2015/11/30/net-framework-4-6-1-is-now-available/) - [Release notes](net461) diff --git a/releases/net462/README.md b/releases/net462/README.md index aac0602e0..84b0d8720 100644 --- a/releases/net462/README.md +++ b/releases/net462/README.md @@ -4,6 +4,7 @@ The following information describes the changes made in the .NET Framework 4.6.2 - [Announcement blog post](https://blogs.msdn.microsoft.com/dotnet/2016/08/02/announcing-net-framework-4-6-2/) - [Release notes](dotnet462-changes.md) +- [Known issues](https://support.microsoft.com/en-us/help/3151796/known-issues-for-the-.net-framework-4.6.2) - [API changes](dotnet462-api-changes.md) - [referencesource](https://github.com/Microsoft/referencesource/commit/1acafe20a789a55daa17aac6bb47d1b0ec04519f) diff --git a/releases/net47/README.md b/releases/net47/README.md index 9ef5b5dd3..e17d66789 100644 --- a/releases/net47/README.md +++ b/releases/net47/README.md @@ -4,8 +4,9 @@ The following information describes the changes made in the .NET Framework 4.7 r - [Announcement blog post](https://go.microsoft.com/fwlink/?linkid=845636) - [Release notes](dotnet47-changes.md) +- [Known issues](https://support.microsoft.com/en-us/help/4015088/known-issues-for-the-net-framework-4-7) - [API changes](dotnet47-api-changes.md) -- [referencesource](https://go.microsoft.com/fwlink/?linkid=846346) +- [referencesource](https://github.com/Microsoft/referencesource/commit/4251daa76e0aae7330139978648fc04f5c7b8ccb) # Product Areas From f23f40a90e6d11d20cc0aa37516168d880733ef2 Mon Sep 17 00:00:00 2001 From: Richard Lander Date: Wed, 12 Apr 2017 13:20:52 -0700 Subject: [PATCH 342/872] Add link for .NET 4.7 --- data/platforms.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data/platforms.json b/data/platforms.json index 87afc340e..07f2f0485 100644 --- a/data/platforms.json +++ b/data/platforms.json @@ -77,7 +77,7 @@ "link": "" }, "popular": true, - "info": "http://go.microsoft.com/fwlink/?LinkID=845636", + "info": "https://blogs.msdn.microsoft.com/dotnet/2017/04/05/announcing-the-net-framework-4-7/", "includedIn": [ "VS2017" ] }, { From 6569c7acd3d9fda789bb62cec52a8c9931181626 Mon Sep 17 00:00:00 2001 From: Karel Zikmund Date: Sun, 16 Apr 2017 16:43:08 -0700 Subject: [PATCH 343/872] Make sections of dotnet-developer-projects.md linkable (#377) * Make sections of dotnet-developer-projects.md linkable Lists are not linkable, but headings are. * Create dotnet-developer-projects.md Missed case --- dotnet-developer-projects.md | 62 ++++++++++++++++++------------------ 1 file changed, 31 insertions(+), 31 deletions(-) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 27a274934..447f3f527 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -4,7 +4,7 @@ This community maintained list showcases .NET open source developer projects. It Please sort projects alphabetically and provide a one-line description. GitHub/CodePlex (or other source) links are preferred, but feel free to also include marketing sites. Create new sections, as appropriate. -* .NET Implementations +## .NET Implementations * [.NET Core](https://github.com/dotnet/core) - Core .NET Framework * [C# Native](https://csnative.codeplex.com) - Compiles C# to native. * [Cosmos](https://github.com/CosmosOS/Cosmos) - C# Open Source Managed Operating System, an operating system "construction kit". @@ -13,7 +13,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [MOSA Project](https://github.com/mosa/MOSA-Project/) - Managed Operating System Alliance Project - C# Operating System. * [SharpLang](https://github.com/xen2/SharpLang) - Compiles C# & .NET to native machine code, using [LLVM](http://llvm.org) as a backend. -* Platforms +## Platforms * [Castle Project](https://github.com/castleproject) - Umbrella project for ActiveRecord, DynamicProxy, MonoRail, Windsor * [Catel](https://github.com/catel/catel) - Application platform with IoC, logging, reflection and much more that serves as a base for applications that must be ready for future growth. * [Enterprise Web Library (EWL)](https://github.com/enduracode/enterprise-web-library) - An extremely opinionated platform for web applications that trades off performance, scalability, and development flexibility for an ease of maintenance you won't find anywhere else. [Enterprise Web Library site](http://www.enterpriseweblibrary.org/). @@ -21,7 +21,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [Akka.NET](http://github.com/akkadotnet) - Akka.NET is a toolkit and runtime for building highly concurrent, distributed, and fault tolerant event-driven applications on .NET & Mono. This community-driven port brings C# & F# developers the capabilities of the original Akka framework in Java/Scala. [[Project Site]](http://getakka.net/) * [Orleans](http://dotnet.github.io/orleans/) - Orleans is a framework that provides a straightforward approach to building distributed high-scale computing applications, without the need to learn and apply complex concurrency or other scaling patterns. It was created by Microsoft Research and designed for use in the cloud. Orleans is a mature but fast evolving platform that has been battle tested since 2011 by several Microsoft product groups, such as Halo, Gears of War, Skype, Azure, Xbox, as well as by a growing number of other companies using it in Azure, AWS, GCP, and on premises. -* Languages +## Languages * [Boo](https://github.com/bamboo/boo) - A .NET language similar to Python but with static typing, and many meta-programming capabilities. * [ClojureCLR](https://github.com/clojure/clojure-clr) - A .NET implemention of the [Clojure](http://clojure.org) programming language, built on the DLR. * [Cobra](http://cobra-language.com/source/) - Clean, high-level syntax (Boo/Python-like). Static and dynamic binding. First class support for unit tests and contracts. Compiled performance with scripting conveniences. Lambdas and closures. Extensions and mixins @@ -40,16 +40,16 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [Phalanger](https://github.com/DEVSENSE/Phalanger) - full-featured PHP runtime & compiler for .NET/Mono frameworks. Phalanger is modern open-source implementation of PHP, compatible with the vast array of existing PHP code. * [Roslyn (.NET Compiler Platform)](https://roslyn.codeplex.com/) - Open-source C# and Visual Basic compilers with rich code analysis APIs. -* Quality Assurance +## Quality Assurance * [C# Coding Guidelines](https://github.com/dennisdoomen/CSharpGuidelines) - A set of coding guidelines for C# 3.0, 4.0 and 5.0 that extend StyleCop and can be forked and adapted for internal use. -* Security / Identity Management +## Security / Identity Management * [NWebsec](https://github.com/NWebsec/NWebsec) - Security headers for ASP.NET applications. * [IdentityManager](https://github.com/IdentityManager/IdentityManager) * [IdentityServer](https://github.com/IdentityServer/IdentityServer3) * [SKGL - Serial Key Generating Library](https://skgl.codeplex.com/) -* Web CMS +## Web CMS * [Composite C1](https://github.com/Orckestra/C1-CMS) - Web content management platform (CMS). * [DNN (formerly DotNetNuke)](https://dotnetnuke.codeplex.com/) - Web content management platform (CMS). * [Kaliko CMS](https://github.com/KalikoCMS/KalikoCMS.Core) - Flexible and extensible CMS framework supporting both ASP.NET MVC and WebForms. @@ -61,26 +61,26 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [WebSharper](https://bitbucket.org/IntelliFactory/websharper) - Web programming platform including a compiler from F# code to JavaScript. * [Platformus](https://github.com/Platformus/Platformus) - Free, open source and cross-platform CMS based on ASP.NET Core 1.1 and ExtCore framework. -* Web Marketplace +## Web Marketplace * [BeYourMarket](https://github.com/beyourmarket/beyourmarket) - BeYourMarket is a peer-to-peer marketplace framework http://beyourmarket.com -* Web Frameworks +## Web Frameworks * [DotVVM](https://github.com/riganti/dotvvm) - MVVM framework for people who don't like to write JavaScript, with OWIN and ASP.NET Core support and a free extension for Visual Studio 2015 and 2017. * [Nancy](https://github.com/NancyFx/Nancy) - A lightweight, low-ceremony, framework for building HTTP based services on .NET and Mono. * [NemerleWeb](https://github.com/NemerleWeb/NemerleWeb) - Web MVVM library for .Net. It uses reactive data model which allows creating rich internet applications. -* Static Site Generators +## Static Site Generators * [FsBlog](https://github.com/fsprojects/FsBlog/) - Blog aware, static site generation using F#. * [Pretzel](https://github.com/Code52/pretzel) - A site generation tool (and then some) for .NET platforms. * [Sandra.Snow](https://github.com/Sandra/Sandra.Snow) - Jekyll inspired static site generation for .NET. * [Wyam](http://wyam.io) - A simple to use, highly modular, and extremely configurable static content generator. -* ADO.NET providers +## ADO.NET providers * [Firebird .NET Data Provider](https://github.com/cincuranet/FirebirdSql.Data.FirebirdClient) - Firebird * [Npgsql](https://github.com/npgsql/npgsql) - PostgreSQL * [System.Data.SQLite](https://system.data.sqlite.org) - SQLite -* Messaging +## Messaging * [Azure Service Bus](https://github.com/azure/azure-service-bus-dotnet) - .NET Standard client library for [Azure Service Bus](https://docs.microsoft.com/en-us/azure/service-bus/). * [Azure Event Hubs](https://github.com/azure/azure-event-hubs-dotnet) - .NET Standard client library for [Azure Event Hubs](https://docs.microsoft.com/en-us/azure/event-hubs/). * [Azure Relay](https://github.com/azure/azure-relay-dotnet) - .NET Standard client library for [Azure Relay](https://docs.microsoft.com/en-us/azure/service-bus-relay/relay-what-is-it). @@ -92,7 +92,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [MassTransit](https://github.com/MassTransit/MassTransit) - A distributed application framework for RabbitMQ and Azure Service Bus. * [RestBus](https://github.com/tenor/RestBus) - Easy Asynchronous Messaging and Queueing for .NET -* Libraries +## Libraries * [Albedo](https://github.com/ploeh/Albedo) - A .NET library targeted at making Reflection programming more consistent, using a common set of abstractions and utilities. * [Algorithmia](https://github.com/SolutionsDesign/Algorithmia) - Algorithms and Data structures * [AngleSharp](https://github.com/FlorianRappl/AngleSharp) - Ultimate angle brackets parser library. It parses HTML5, MathML, SVG and CSS to construct a DOM based on the official W3C specification. @@ -178,14 +178,14 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [Zlib.Portable](https://github.com/AdvancedREI/Zlib.Portable) - A Portable Class Library port of the Zlib library from http://dotnetzip.codeplex.com. * [ExtCore](https://github.com/ExtCore/ExtCore) - Free, open source and cross-platform framework for creating modular and extendable web applications based on ASP.NET Core 1.1. -* Data Mine/Data Extraction/Machine Learning/AI +## Data Mine/Data Extraction/Machine Learning/AI * [AForge.NET](http://www.aforgenet.com/) - a C# framework designed for developers and researchers in the fields of Computer Vision and Artificial Intelligence - image processing, neural networks, genetic algorithms, machine learning, robotics * [Accord.NET Framework](https://github.com/accord-net/framework) - The Accord.NET Framework is a .NET machine learning framework combined with audio and image processing libraries completely written in C#. * [Nepy](http://nepy.codeplex.com) - A collection of NLP parsers for .NET * [SharpNLP](http://sharpnlp.codeplex.com) - SharpNLP is a collection of natural language processing tools written in C# * [Toxy](http://toxy.codeplex.com) - An data/text extraction framework for .NET, similar to Tika in Java. -* Graphics & Server-side Image Processing +## Graphics & Server-side Image Processing * [DynamicImage](https://github.com/tgjones/dynamic-image) - WPF-based server-side image rendering system - lots of visual effects implemented as high-performance shaders. Has URL api, several plugins available. * [ImageSharp](https://github.com/jimbobsquarepants/imagesharp/) - A cross-platform library for processing of image files written in C#. (NetStandard 1.1 X-Plat). * [ImageProcessor](https://github.com/jimbobsquarepants/imageprocessor/) - A fluent wrapper around System.Drawing for the processing of image files (NET 4.5+ GDI+ based). @@ -198,14 +198,14 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [SharpDX](https://github.com/sharpdx/SharpDX) - SharpDX is a project delivering the full DirectX API for .NET on all Windows platforms. * [numl](http://numl.net) - numl is a general purpose machine learning framework meant to simplify the data analysis process -* Logging +## Logging * [Exceptionless](https://github.com/exceptionless/Exceptionless) - Provides real-time .NET error reporting for your ASP.NET, Web API, WebForms, WPF, Console, and MVC apps. It organizes the gathered information into simple actionable data that will help your app become exceptionless! * [ELMAH](https://github.com/elmah/Elmah) - [ELMAH (Error Logging Modules and Handlers)](https://elmah.github.io/) is an application-wide error logging facility that is completely pluggable. It can be dynamically added to a running ASP.NET web application, or even all ASP.NET web applications on a machine, without any need for re-compilation or re-deployment. * [log4net](http://logging.apache.org/log4net/) - A tool to help the programmer output log statements to a variety of output targets. * [LogMaster4Net](https://github.com/kerryjiang/LogMaster4Net) - It is a central log server which can organize your logs in different applications in a same place but have same log behaviors (loggers, appenders, levels and rules) like in the indepedent applications before. * [NLog](https://github.com/NLog/NLog) - NLog is a free logging platform for .NET with rich log routing and management capabilities. -* Model-View-ViewModel (MVVM) Frameworks +## Model-View-ViewModel (MVVM) Frameworks * [Caliburn Micro](https://github.com/Caliburn-Micro/Caliburn.Micro) - A small, yet powerful framework, designed for building applications across all XAML platforms. * [Catel.MVVM](https://github.com/catel/catel) - Catel is an application development platform with the focus on MVVM. * [MVVM Cross](https://github.com/MvvmCross/MvvmCross) - A cross-platform mobile MVVM development framework. @@ -218,7 +218,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [Simple Mvvm Toolkit](http://simplemvvmtoolkit.codeplex.com/) - Provides a simple framework and set of tools for getting up to speed quickly with applications based on the MVVM design pattern. * [WPF Application Framework (WAF)](http://waf.codeplex.com) - A lightweight Framework that helps you to create well structured WPF Applications. It supports you in applying a Layered Architecture and the Model-View-ViewModel pattern. -* Tools +## Tools * [API Port](https://github.com/microsoft/dotnet-apiport) - A tool that will analyze code for compatability issues when migrating between .NET Framework releases. * [Cake](https://github.com/cake-build/cake) (C# Make) - A build automation system with C#/Roslyn driven build scripts. * [CppSharp](https://github.com/mono/CppSharp) - C/C++ bindings generation for .NET. @@ -251,7 +251,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [XDav](https://github.com/rezabazargan/xDav) - A .net server mudole for webdav standard. * [ZeroToNine](https://github.com/ploeh/ZeroToNine) - A tool for maintaining .NET Assembly versions across multiple files. -* Testing +## Testing * [AutoFixture](https://github.com/AutoFixture/AutoFixture) - An open source framework for .NET designed to minimize the 'Arrange' phase of your unit tests. Its primary goal is to allow developers to focus on what is being tested rather than how to setup the test scenario, by making it easier to create object graphs containing test data. * [canopy](https://github.com/lefthandedgoat/canopy) - A web testing framework. * [FakeItEasy](https://github.com/FakeItEasy/FakeItEasy) - The easy mocking library for .NET. @@ -275,7 +275,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [xBehave.net](https://github.com/xbehave/xbehave.net/) - A BDD/TDD framework based on xUnit.net and inspired by Gherkin. * [xUnit](https://github.com/xunit/xunit) - xUnit.net is a community-focused unit testing tool for the .NET Framework. -* Dependency Injection +## Dependency Injection * [Autofac](https://github.com/autofac/Autofac) - Autofac is an addictive Inversion of Control container for .NET 4.5, Silverlight 5, Windows Store apps, and Windows Phone 8 apps. * [Castle Windsor](https://github.com/castleproject/Windsor) - A mature Inversion of Control container available for .NET and Silverlight * [DI Feature Tests](https://github.com/ashmind/net-feature-tests) - Tests that track commmon DI features among multiple containers @@ -302,7 +302,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [TinyIoC](https://github.com/grumpydev/TinyIoC) - An easy to use, hassle free, Inversion of Control Container for small projects, libraries and beginners alike. * [Unity Container](http://unity.codeplex.com/) - The Unity Container (Unity) is a lightweight, extensible dependency injection container with optional support for instance and type interception. -* Data Access +## Data Access * [Dapper](https://github.com/StackExchange/dapper-dot-net) - Dapper is a single file you can drop in to your project that will extend your IDbConnection interface. * [Eggado](https://bitbucket.org/raboof/eggado) - Eggado takes generics, lambdas, expression trees, dynamic methods and DLR and uses them to breathe new life into data access using good old ADO.NET. It's for folks who can live with a SQL dialect. * [King.Mapper](https://github.com/jefking/King.Mapper) - High performance model mapping. @@ -319,14 +319,14 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [Elephant](https://github.com/takenet/elephant) - Persistence library that provides common data structures as composable elements to abstract any storage engine, including (No)SQL databases. * [Marten](https://github.com/JasperFx/marten) - Document DB / Event Store built on top of PostgreSQL. -* Games +## Games * [Duality](https://github.com/AdamsLair/duality) - An Open Source 2D Game Engine + Visual Editor written entirely in C#. * [MonoGame](https://github.com/mono/MonoGame) - One framework for creating powerful cross-platform games. * [OpenRA](https://github.com/OpenRA/OpenRA) - An open-source implementation of the Command & Conquer: Red Alert engine using .NET/Mono and OpenGL. * [Paradox](https://github.com/SiliconStudio/paradox) - Paradox is a versatile and engaging game engine. * [WaveEngine](https://github.com/waveengine) - A powerful component based game engine for desktop and mobile platforms using C#. -* UI and Control libraries +## UI and Control libraries * [Callisto](https://github.com/timheuer/callisto) - UI Control Toolkit for WinRT apps * [Dragablz](http://github.com/ButchersBoy/Dragablz) - A tearable TabControl for WPF which also provides easy-to-use and implement docking features. * [Eto](https://github.com/picoe/Eto) - Cross platform GUI Toolkit for desktop and mobile apps @@ -335,39 +335,39 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [Mono XWT](https://github.com/mono/xwt) - A cross-platform UI toolkit for creating desktop apps * [UWP Community Toolkit](https://github.com/Microsoft/UWPCommunityToolkit) - The UWP Community Toolkit is a collection of helper functions, custom controls, and app services. It simplifies and demonstrates common developer tasks building UWP apps for Windows 10. -* Windows Services +## Windows Services * [King.Service](https://github.com/jefking/King.Service) - Task scheduling for Azure and Windows * [TopShelf](https://github.com/Topshelf/Topshelf) - An easy service hosting framework for building Windows services using .NET. -* Scheduling +## Scheduling * [Hangfire](https://github.com/HangfireIO/Hangfire) - An easy way to perform fire-and-forget, delayed and recurring tasks inside ASP.NET applications. * [Quartz.Net](https://github.com/quartznet/quartznet) - A full-featured, open source job scheduling system that can be used from smallest apps to large scale enterprise systems. * [FluentScheduler](https://github.com/fluentscheduler/FluentScheduler) - Task scheduler with fluent interface that runs automated tasks (cron jobs) from your application. -* Deployment +## Deployment * [DropkicK](https://github.com/chucknorris/dropkick/) - A fluent deployment library for Windows applications * [RoundHouse](https://github.com/chucknorris/roundhouse) - RoundhousE is a Database Migration Utility for .NET using sql files and versioning based on source control -* Service Bus +## Service Bus * [King.Service.ServiceBus](https://github.com/jefking/King.Service.ServiceBus) - Task scheduling for Azure and Windows Servers: Service Bus. * [Warewolf Easy Service Bus](https://github.com/Warewolf-ESB/Warewolf-ESB) - An open source easy to use service bus, built on numerous .Net technologies including WF (Windows Workflow Foundation), SignalR and WPF. -* Distributed Caching and Computing +## Distributed Caching and Computing * [CacheAdapter](https://bitbucket.org/glav/cacheadapter) - a .Net library allows developers to use unified-implemented cahce provider * [CacheManager](https://github.com/MichaCo/CacheManager) - A configurable abstraction layer for caching. It supports various caches, like redis and memcached, and provides many advanced features, like layered cache, synchronization, serialization etc. * [Dache](https://github.com/ironyx/dache) - An open source distributed caching service, built on .NET 4.0 and using TCP sockets for communication. * [Orleans](https://github.com/dotnet/orleans) - Framework that provides a straight-forward approach to building distributed high-scale computing applications using virtual actor model. -* Windows Workflow +## Windows Workflow * [Workflow Extractor](https://github.com/punitganshani/WorkflowExtractor) - Document Windows Workflow logic into a Word document or Excel sheet. -* Amazon Echo/Alexa Integration +## Amazon Echo/Alexa Integration * [AlexaSkillsKit.NET](https://github.com/AreYouFreeBusy/AlexaSkillsKit.NET) - .NET library to write Alexa Skills that's interface-compatible with Amazon's AlexaSkillsKit for Java and matches that functionality. -* Remote Desktop +## Remote Desktop * [Myrtille](https://github.com/cedrozor/myrtille) - A native HTML4/5 Remote Desktop Protocol client, HTTP gateway written in C# for .NET -* Project Templates +## Project Templates * [ASP.NET MVC Boilerplate](https://github.com/ASP-NET-MVC-Boilerplate/Templates) - Professional ASP.NET MVC templates for building secure, fast, robust and adaptable web applications or sites. It provides the minimum amount of code required on top of the default MVC template provided by Microsoft. This list is just a starting point - also take a look at all the projects on [CodePlex](http://www.codeplex.com/) and on [GitHub Trending C#](https://github.com/trending?l=csharp). From 08440cfd01a7a8acd6b55391527c9b70026e229d Mon Sep 17 00:00:00 2001 From: Rich Lander Date: Sun, 16 Apr 2017 17:26:17 -0700 Subject: [PATCH 344/872] Update LICENSE --- LICENSE | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/LICENSE b/LICENSE index e4daab2be..9984736c7 100644 --- a/LICENSE +++ b/LICENSE @@ -1,5 +1,8 @@ The MIT License (MIT) -Copyright (c) Microsoft Corporation + +Copyright (c) Microsoft + +All rights reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal From f5db962b5a8124e49da3ef15cadbaba7aae29fd4 Mon Sep 17 00:00:00 2001 From: Richard Lander Date: Sun, 16 Apr 2017 17:49:55 -0700 Subject: [PATCH 345/872] Add .git files --- .gitattributes | 74 +++++++++++++ .gitignore | 290 +++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 364 insertions(+) create mode 100644 .gitattributes create mode 100644 .gitignore diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 000000000..70a51e2dd --- /dev/null +++ b/.gitattributes @@ -0,0 +1,74 @@ +############################################################################### +# Set default behavior to automatically normalize line endings. +############################################################################### +* text=auto encoding=UTF-8 + +# csc/vbc are shell scripts and should always have unix line endings +# These shell scripts are included in the toolset packages. Normally, the shell +# scripts in our repo are only run by cloning onto a Linux/Mac machine, and git +# automatically chooses LF as the line ending. +# +# However, right now the toolset packages must be built on Windows, and so the +# files must be hard-coded to be cloned with LF +src/Compilers/CSharp/CscCore/csc text eol=lf +src/Compilers/VisualBasic/VbcCore/vbc text eol=lf + +############################################################################### +# Set default behavior for command prompt diff. +# +# This is need for earlier builds of msysgit that does not have it on by +# default for csharp files. +# Note: This is only used by command line +############################################################################### +*.cs diff=csharp text +*.vb text + +############################################################################### +# Set the merge driver for project and solution files +# +# Merging from the command prompt will add diff markers to the files if there +# are conflicts (Merging from VS is not affected by the settings below, in VS +# the diff markers are never inserted). Diff markers may cause the following +# file extensions to fail to load in VS. An alternative would be to treat +# these files as binary and thus will always conflict and require user +# intervention with every merge. To do so, just uncomment the entries below +############################################################################### +#*.sln merge=binary +#*.csproj merge=binary +#*.vbproj merge=binary +#*.vcxproj merge=binary +#*.vcproj merge=binary +#*.dbproj merge=binary +#*.fsproj merge=binary +#*.lsproj merge=binary +#*.wixproj merge=binary +#*.modelproj merge=binary +#*.sqlproj merge=binary +#*.wwaproj merge=binary + +############################################################################### +# behavior for image files +# +# image files are treated as binary by default. +############################################################################### +#*.jpg binary +#*.png binary +#*.gif binary + +############################################################################### +# diff behavior for common document formats +# +# Convert binary document formats to text before diffing them. This feature +# is only available from the command line. Turn it on by uncommenting the +# entries below. +############################################################################### +#*.doc diff=astextplain +#*.DOC diff=astextplain +#*.docx diff=astextplain +#*.DOCX diff=astextplain +#*.dot diff=astextplain +#*.DOT diff=astextplain +#*.pdf diff=astextplain +#*.PDF diff=astextplain +#*.rtf diff=astextplain +#*.RTF diff=astextplain diff --git a/.gitignore b/.gitignore new file mode 100644 index 000000000..eaf5e216b --- /dev/null +++ b/.gitignore @@ -0,0 +1,290 @@ +## Ignore Visual Studio temporary files, build results, and +## files generated by popular Visual Studio add-ons. +## +## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore + +# User-specific files +*.suo +*.user +*.userosscache +*.sln.docstates + +# User-specific files (MonoDevelop/Xamarin Studio) +*.userprefs + +# Build results +[Dd]ebug/ +[Dd]ebugPublic/ +[Rr]elease/ +[Rr]eleases/ +x64/ +x86/ +bld/ +[Bb]in/ +[Oo]bj/ +[Ll]og/ + +# 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 + +# .NET Core +project.lock.json +project.fragment.lock.json +artifacts/ +**/Properties/launchSettings.json + +# VS Code +.vscode/ + +*_i.c +*_p.c +*_i.h +*.ilk +*.meta +*.obj +*.pch +*.pdb +*.pgc +*.pgd +*.rsp +*.sbr +*.tlb +*.tli +*.tlh +*.tmp +*.tmp_proj +*.log +*.vspscc +*.vssscc +.builds +*.pidb +*.svclog +*.scc + +# Chutzpah Test files +_Chutzpah* + +# Visual C++ cache files +ipch/ +*.aps +*.ncb +*.opendb +*.opensdf +*.sdf +*.cachefile +*.VC.db +*.VC.VC.opendb + +# 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 + +# Visual Studio code coverage results +*.coverage +*.coveragexml + +# 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 +DocProject/Help/*.HxC +DocProject/Help/*.hhc +DocProject/Help/*.hhk +DocProject/Help/*.hhp +DocProject/Help/Html2 +DocProject/Help/html + +# Click-Once directory +publish/ + +# Publish Web Output +*.[Pp]ublish.xml +*.azurePubxml +# TODO: Comment the next line if you want to checkin your web deploy settings +# but database connection strings (with potential passwords) will be unencrypted +*.pubxml +*.publishproj + +# Microsoft Azure Web App publish settings. Comment the next line if you want to +# checkin your Azure Web App publish settings, but sensitive information contained +# in these scripts will be unencrypted +PublishScripts/ + +# NuGet Packages +*.nupkg +# The packages folder can be ignored because of Package Restore +**/packages/* +# except build/, which is used as an MSBuild target. +!**/packages/build/ +# Uncomment if necessary however generally it will be regenerated when needed +#!**/packages/repositories.config +# NuGet v3's project.json files produces more ignorable files +*.nuget.props +*.nuget.targets + +# Microsoft Azure Build Output +csx/ +*.build.csdef + +# Microsoft Azure Emulator +ecf/ +rcf/ + +# Windows Store app package directories and files +AppPackages/ +BundleArtifacts/ +Package.StoreAssociation.xml +_pkginfo.txt + +# 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/ +~$* +*~ +*.dbmdl +*.dbproj.schemaview +*.jfm +*.pfx +*.publishsettings +orleans.codegen.cs + +# Since there are multiple workflows, uncomment next line to ignore bower_components +# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) +#bower_components/ + +# 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 ;-) +_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 +node_modules/ + +# Typescript v1 declaration files +typings/ + +# Visual Studio 6 build log +*.plg + +# Visual Studio 6 workspace options file +*.opt + +# Visual Studio 6 auto-generated workspace file (contains which files were open etc.) +*.vbw + +# Visual Studio LightSwitch build output +**/*.HTMLClient/GeneratedArtifacts +**/*.DesktopClient/GeneratedArtifacts +**/*.DesktopClient/ModelManifest.xml +**/*.Server/GeneratedArtifacts +**/*.Server/ModelManifest.xml +_Pvt_Extensions + +# Paket dependency manager +.paket/paket.exe +paket-files/ + +# FAKE - F# Make +.fake/ + +# JetBrains Rider +.idea/ +*.sln.iml + +# CodeRush +.cr/ + +# Python Tools for Visual Studio (PTVS) +__pycache__/ +*.pyc + +# Cake - Uncomment if you are using it +# tools/** +# !tools/packages.config + +# Telerik's JustMock configuration file +*.jmconfig + +# BizTalk build output +*.btp.cs +*.btm.cs +*.odx.cs +*.xsd.cs From 05728cebaa291562438b6f31f9c4c90db1f960b8 Mon Sep 17 00:00:00 2001 From: Richard Lander Date: Mon, 17 Apr 2017 06:54:39 -0700 Subject: [PATCH 346/872] Delete popular tag from some releases --- data/platforms.json | 3 --- 1 file changed, 3 deletions(-) diff --git a/data/platforms.json b/data/platforms.json index 07f2f0485..f07edeccc 100644 --- a/data/platforms.json +++ b/data/platforms.json @@ -76,7 +76,6 @@ "support": "Supported in Windows 10 Creators Update", "link": "" }, - "popular": true, "info": "https://blogs.msdn.microsoft.com/dotnet/2017/04/05/announcing-the-net-framework-4-7/", "includedIn": [ "VS2017" ] }, @@ -115,7 +114,6 @@ "support": "Supported", "link" : "" }, -"popular": true, "info":"http://blogs.msdn.com/b/dotnet/archive/2015/11/30/net-framework-4-6-1-is-now-available.aspx", "includedIn":["VS2017","VS2015"], "supportedBy":["VS2013"], @@ -134,7 +132,6 @@ "support": "Supported", "link" : "" }, -"popular": true, "info":"http://blogs.msdn.com/b/dotnet/archive/2015/07/20/announcing-net-framework-4-6.aspx", "includedIn":["VS2017","VS2015"], "supportedBy":["VS2013"], From 832b70c66d7500bce77ddd3a5013d19ff2c3432b Mon Sep 17 00:00:00 2001 From: Rich Lander Date: Mon, 17 Apr 2017 13:43:22 -0700 Subject: [PATCH 347/872] Restore and move RyuJIT testing doc (#380) * Restore and move RyuJIT testing doc * Fix link * Freshen content --- Documentation/testing-with-ryujit.md | 225 +++++++++++++++++++++++++++ docs/testing-with-ryujit.md | 1 + 2 files changed, 226 insertions(+) create mode 100644 Documentation/testing-with-ryujit.md create mode 100644 docs/testing-with-ryujit.md diff --git a/Documentation/testing-with-ryujit.md b/Documentation/testing-with-ryujit.md new file mode 100644 index 000000000..7144b0ce2 --- /dev/null +++ b/Documentation/testing-with-ryujit.md @@ -0,0 +1,225 @@ +.NET Framework - Troubleshooting RyuJIT +========================================== + +This document provides instructions to disable RyuJIT or one of its optimizations. This is useful if you experience unexpected product behavior after installing .NET Framework 4.6 or later and want to determine if RyuJIT is the cause of that behavioral change. RyuJIT is only used for 64-bit processes. This document does not describe troubleshooting problems with the 32-bit JIT or 32-bit applications. + +If you find a problem that appears to be a bug with the .NET JIT compiler, we want to know about it! Please report the bug at [Visual Studio Connect](https://connect.microsoft.com/VisualStudio) or as a [microsoft/dotnet issue](https://github.com/microsoft/dotnet/issues). + +**Important** Follow the steps in this document carefully. Serious problems might +occur if you modify the registry incorrectly. Before you modify it, +[back up the registry](http://support.microsoft.com/kb/322756) so that it can be restored in case problems occur. + +**Note** The registry methods below use either `HKEY_LOCAL_MACHINE` or `HKEY_CURRENT_USER`. Using `HKEY_LOCAL_MACHINE` makes the setting applicable to the entire machine and all users. Using `HKEY_CURRENT_USER` makes the setting applicable to just the current user. + +In general, you should choose the least impactful option. Choose a per-application setting if possible, and only move to a per-user or per-machine setting if necessary. Note that per-application settings are not available for ASP.NET applications. + +Disable RyuJIT +============== + +**Note** For all these methods, all dynamic compilation is performed by the older +"legacy" JIT (sometimes known as JIT64). All NGEN compilation continues to use the new JIT, and all +existing NGEN images that have been compiled by the new JIT continue to be used. + +### Method 1: per-application config file + +Add the following text to the `.exe.config` file. Create + the indicated sections if they do not already exist. + + **Note** In this file name, `` represents the actual name of the + application. So, for example, for `MyApp.exe`, you will have `MyApp.exe.config`. + + + + + + + + Note that Method 1 does not apply to ASP.NET websites; you cannot use this method in web.config files. + + This method is preferable as it is scoped to just one application. + +### Method 2: environment variable + +Set the following environment variable: + + COMPLUS_useLegacyJit=1 + + This method affects any environment that inherits this environment variable. This might be just a single + console session, or it might affect the entire machine, if you set the environment variable globally. + +### Method 3: registry + +Using Registry Editor (regedit.exe), find either of the following subkeys: + + HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework + HKEY_CURRENT_USER\SOFTWARE\Microsoft\.NETFramework + + Then, add the following: + + Value name: useLegacyJit + Type: DWORD (32-bit) Value (also called REG_WORD) + Value: 1 + + You can use the Windows REG.EXE tool to add this value from a command-line or scripting environment. For example: + + reg add HKLM\SOFTWARE\Microsoft\.NETFramework /v useLegacyJit /t REG_DWORD /d 1 + + In this case, `HKLM` is used instead of `HKEY_LOCAL_MACHINE`. Use `reg add /?` to see help on this syntax. + +Disable loading NGEN Images +=========================== + +If you encounter a bug when you use the new JIT, and if the bug manifests itself in a function in an NGEN native image (see [here](https://msdn.microsoft.com/en-us/library/6t9t5wcf(v=vs.110).aspx) for details), use any of the following methods to force certain named assemblies to be recompiled by the JIT and not use the existing native images. You will generally pair one of these methods with the same numbered method above to get an NGEN image to fall back to JIT compilation, and, in addition, do that JIT compilation with the legacy JIT. + +In the examples below, we wish to prevent using the NGEN images of three assemblies, named `assembly_one.dll`, `assembly_two.dll`, and `assembly_three.dll`. We specify the assemblies using simple assembly names (no public key token, no architecture, and so on). The assembly names are specified without using the `.dll` file name extension. + +### Method 1: : per-application config file + +Add the following text to the `.exe.config` file. Create + the indicated sections if they do not already exist. + + **Note** In this file name, `` represents the actual name of the application. + + + + + + + + + + + +### Method 2: environment variable + +Set the following environment variable: + + COMPLUS_DisableNativeImageLoadList=assembly_one;assembly_two;assembly_three + + **Note** This is a semicolon-delimited list of simple assembly names. + +### Method 3: registry + +Using Registry Editor (regedit.exe), find either of the following subkeys: + + HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework + HKEY_CURRENT_USER\SOFTWARE\Microsoft\.NETFramework + + Then, add the following value: + + Value name: DisableNativeImageLoadList + Type: String Value (also known as REG_SZ) + Value: assembly_one;assembly_two;assembly_three + + **Note** This is a semicolon-delimited list of simple assembly names. + +Disabling the use of all NGEN images +==================================== + +To prevent any NGEN native image from being used, and force all code to be compiled with the JIT compiler, you can use the ZapDisable configuration variable, as follows. You might choose to do this as an experiment, to see if any NGEN native image contains generated code that is inducing a bug in your application. Generally, if an NGEN native image does have a problem, and the identity of that native image can be determined, using one of the `DisableNativeImageLoadList` mechanisms described above is preferable. + +**Note** This setting applies to both the 32-bit and 64-bit JIT. Thus, setting this globally will affect all 32-bit .NET applications as well. This is particularly true for **Method 2: environment variable**. + +**Note 2** NGEN provides significant performance improvements to .NET applications. Disabling the use of NGEN may result in significantly slower application startup times. + +### Method 1: per-application config file + +Add the following text to the `.exe.config` file. Create + the indicated sections if they do not already exist. + + **Note** In this file name, `` represents the actual name of the + application. So, for example, for `MyApp.exe`, you will have `MyApp.exe.config`. + + + + + + + + Note that Method 1 does not apply to ASP.NET websites; you cannot use this method in web.config files. + + This method is preferable as it is scoped to just one application. + +### Method 2: environment variable + +Set the following environment variable: + + COMPLUS_ZapDisable=1 + + This method affects any environment that inherits this environment variable. This might be just a single + console session, or it might affect the entire machine, if you set the environment variable globally. + +### Method 3: registry + +Using Registry Editor (regedit.exe), find either of the following subkeys: + + HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework + HKEY_CURRENT_USER\SOFTWARE\Microsoft\.NETFramework + + Then, add the following: + + Value name: ZapDisable + Type: DWORD (32-bit) Value (also called REG_WORD) + Value: 1 + + **Note** Windows has both 32-bit and 64-bit registry sections. The addresses shown above use the 64-bit registry path, so are appropriate for troubleshooting RyuJIT and not affecting 32-bit .NET applications. On a 64-bit machine, the 32-bit registry path for the `HKEY_LOCAL_MACHINE` case is `HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\.NETFramework`. + +Disable Tail Call Optimization +============================== + +"Tail call" is a code pattern that the JIT compiler can sometimes optimize to improve code performance. You can see some discussion about JIT and tail call [here](http://blogs.msdn.com/b/clrcodegeneration/archive/2010/05/07/jit-etw-tail-call-event-fail-reasons.aspx). You can disable tail call optimization in RyuJIT with the following instructions. + +* Using Registry Editor (regedit.exe), find either of the following subkeys: + + HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework + HKEY_CURRENT_USER\SOFTWARE\Microsoft\.NETFramework + + Then, add the following value: + + Value name: TailCallOpt + Type: String Value (also known as REG_SZ) + Value: "0" (Double quotes are not required while entering the string value in Registry Editor) + +**Note** This will disable tail call optimization of a function when the JIT is invoked to compile it. Note that if your application is NGEN compiled, the JIT is not invoked after the NGEN compilation has completed. To affect the code compiled for NGEN, you must first remove your application from the NGEN native image cache using `ngen uninstall MyApp`. Then, set the registry key shown here. Finally, optionally, you can re-NGEN your app using `ngen install MyApp.exe`. + +Disabling all optimization of a function +======================================== + +If you determine that the JIT is incorrectly optimizing a particular function, you can selectively disable JIT optimization for that function by annotating that function with `MethodImplOptions.NoOptimization`. For example, in C#: + + using System.Runtime.CompilerServices; + ... + [MethodImplAttribute(MethodImplOptions.NoOptimization)] + static int add(int a, int b) + { + return a + b; + } + +In this case, the annotated `add` function will not be optimized. You can see more detail about `MethodImplAttribute` +[here](https://msdn.microsoft.com/library/system.runtime.compilerservices.methodimplattribute.aspx). + +This is only effective in solving a code generation problem if the incorrect code being generated by the JIT is due to optimization, as opposed to being due to unoptimized code generation. + +**Note** This method applies to all .NET JIT compilers. + +Disabling optimization of all functions +======================================= + +While troubleshooting, it might be useful to determine if *any* JIT optimization is causing problems. Instead of using the above `MethodImplAttribute` method above, you can set a single environment variable to disable all JIT optimization. Set this variable: + + COMPLUS_JitMinOpts=1 + +and run your application. + +Note that when you run your application under the Visual Studio debugger, it might disable JIT optimization to improve the debugging experience. In Visual Studio 2013 and before, JIT optimization is disabled by default. In Visual Studio 2015, it is not disabled by default. The option in Visual Studio is called "Suppress JIT optimization on module load". You can read about that [here](https://msdn.microsoft.com/library/ms241594.aspx). Note that the MSDN documentation is incorrect about the Visual Studio 2015 default. + +**Note** This method applies to all .NET JIT compilers. + +Additional Notes +================ + +If you are examining the registry, you might find the following registry value: + + HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\UseRyuJIT + +We urge you not to change this value. Instead, use the RyuJIT fallback mechanisms detailed above in this document. diff --git a/docs/testing-with-ryujit.md b/docs/testing-with-ryujit.md new file mode 100644 index 000000000..15ebd9ee9 --- /dev/null +++ b/docs/testing-with-ryujit.md @@ -0,0 +1 @@ +This document has been moved to [.NET Framework 4.6 - Troubleshooting RyuJIT](../Documentation/testing-with-ryujit.md) \ No newline at end of file From 04b09e9ac930299228b86f928ba3448e832dd519 Mon Sep 17 00:00:00 2001 From: Connie Yau Date: Mon, 17 Apr 2017 14:32:21 -0700 Subject: [PATCH 348/872] Fix System.Activities.CodeActivity docIds (#378) --- ...of-nullreferenceexception-in-some-cases.md | 22 +++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/Documentation/breaking-changes/workflow-now-throws-original-exception-instead-of-nullreferenceexception-in-some-cases.md b/Documentation/breaking-changes/workflow-now-throws-original-exception-instead-of-nullreferenceexception-in-some-cases.md index d2dcf73f8..693d12251 100644 --- a/Documentation/breaking-changes/workflow-now-throws-original-exception-instead-of-nullreferenceexception-in-some-cases.md +++ b/Documentation/breaking-changes/workflow-now-throws-original-exception-instead-of-nullreferenceexception-in-some-cases.md @@ -10,25 +10,25 @@ Minor NotPlanned ### Change Description -In the .NET Framework 4.6.2 and earlier versions, when the Execute method of a workflow activity -throws an exception with a `null` value for the `P:System.Exception.Message` property, the -System.Activities Workflow runtime throws a `NullReferenceException`, masking the original +In the .NET Framework 4.6.2 and earlier versions, when the Execute method of a workflow activity +throws an exception with a `null` value for the `P:System.Exception.Message` property, the +System.Activities Workflow runtime throws a `NullReferenceException`, masking the original exception. -In the .NET Framework 4.7, the previously masked exception is thrown. +In the .NET Framework 4.7, the previously masked exception is thrown. -- [ ] Quirked -- [ ] Build-time break +- [ ] Quirked +- [ ] Build-time break ### Recommended Action -If your code relies on handling the `NullReferenceException`, change it to catch the exceptions +If your code relies on handling the `NullReferenceException`, change it to catch the exceptions that could be thrown from your custom activities. ### Affected APIs -* `M:System.Activities.CodeActivity.Execute` -* `M:System.Activities.AsyncCodeActivity.BeginExecute` +* `M:System.Activities.CodeActivity.Execute(System.Activities.CodeActivityContext)` +* `M:System.Activities.AsyncCodeActivity.BeginExecute(System.Activities.AsyncCodeActivityContext,System.AsyncCallback,System.Object)` +* `M:System.Activities.AsyncCodeActivity`1.BeginExecute(System.Activities.AsyncCodeActivityContext,System.AsyncCallback,System.Object)` * `M:System.Activities.WorkflowInvoker.Invoke` ### Category -Windows Workflow Foundation (WF) - +Windows Workflow Foundation (WF) \ No newline at end of file From d3c75581851184c6732d06e340c4fb9526544327 Mon Sep 17 00:00:00 2001 From: Rich Lander Date: Mon, 17 Apr 2017 16:52:04 -0700 Subject: [PATCH 349/872] Update READMEs and compatibility docs (#379) * Update breaking change doc formatting * Update release and breaking change READMEs * Update Readme with BC Links 1 * Add BC changes for releases * Update TOC for BC README * Update 4.6.1 release * Move breaking-change to compatibility * Update compatiblity links * Update compatiblity links * Update breaking change wording * Add testing with RyuJIT doc * Update breaking change wording --- Documentation/README.md | 12 + .../! Template.md | 0 .../README.md | 342 ++++++++++-------- ...-be-deserialized-by-_net-4_5_1-or-4_5_2.md | 3 +- ...vent-can-cause-a-nullreferenceexception.md | 4 +- ...ically-reconnect-broken-sql-connections.md | 4 +- ...decryptor-provides-a-reusable-transform.md | 4 +- ...zed-by-userandomizedstringhashalgorithm.md | 3 +- ...ions-of-imessagefilter_prefiltermessage.md | 4 +- ...ng-certificate-may-fail-on-windows-2003.md | 4 +- ...-strings-passed-in-via-route-parameters.md | 3 +- ...letoassembly-breaks-between-4_0-and-4_5.md | 4 +- ...fail-to-find-type-from-loadfrom-context.md | 4 +- ...em')-to-a-static-property-does-not-work.md | 4 +- ...n_trytakefromany-does-not-throw-anymore.md | 4 +- ...-entitydeploysplit-or-entityclean-tasks.md | 3 +- ...o-longer-throws-ambiguousmatchexception.md | 6 +- ...ontext-with-a-null-argument-has-changed.md | 4 +- ...om-a-celleditending-handler-drops-focus.md | 6 +- ...uplicate-items-to-appear-in-the-element.md | 3 +- .../calls-to-claimsidentity-constructors.md | 4 +- ...waitall-methods-with-time-out-arguments.md | 4 +- ...-in-data-definition-language-(ddl)-apis.md | 4 +- .../changes-in-path-normalization.md | 4 +- ...lock-control-affects-any-child-controls.md | 4 +- ...e-supports-sha-256-on-4_0-targeted-apps.md | 3 +- .../coerceisselectionboxhighlighted.md | 4 +- ...orwarding-when-multi-targeting-mscorlib.md | 4 +- ...an-erroneous-null-via-its-out-parameter.md | 4 +- ...riod-for-azure-sql-databases-is-removed.md | 4 +- ...times-returns-slightly-different-string.md | 4 +- ...s-are-not-being-enumerated-by-profilers.md | 3 +- ...rentwindowhandle-now-expects-hwnd-value.md | 4 +- .../currentculture-flows-across-tasks.md | 4 +- ...served-across-wpf-dispatcher-operations.md | 4 +- ...view-throws-argumentoutofrangeexception.md | 4 +- ...ect_getdata-now-retrieves-data-as-utf-8.md | 4 +- ...er_scale-are-now-public-virtual-members.md | 3 +- ...n-of-objects-across-appdomains-can-fail.md | 4 +- ...providerservices_createdatabase-methods.md | 4 +- ...ueryviews-with-specific-characteristics.md | 4 +- .../ef-version-must-match-netfx-version.md | 4 +- .../encoderparameter-ctor-is-obsolete.md | 4 +- ...wly-in-apps-launched-from-visual-studio.md | 4 +- ...le_empty-always-returns-cached-instance.md | 4 +- ...or-maxreceivedmessagesize-are-different.md | 4 +- ...s-from-providers-with-explicit-keywords.md | 4 +- ...r-truncates-strings-with-embedded-nulls.md | 4 +- ...e-parameters-that-it-received-(plus-id).md | 4 +- ...erialization-in-case-of-an-unknown-type.md | 3 +- ...no-longer-propagate-on-finalizer-thread.md | 4 +- ...document-may-show-an-extra-line-of-text.md | 3 +- ...able-is-now-scoped-within-the-iteration.md | 4 +- ...-different-values-beginning-in-_net-4_5.md | 3 +- ...when-leaving-the-final-page-of-the-view.md | 3 +- ...horizontal-scrolling-and-virtualization.md | 5 +- ...er-does-not-render-br-element-correctly.md | 4 +- ...contentencoding-property-prohibits-utf7.md | 4 +- ...avascriptstringencode-escapes-ampersand.md | 4 +- ...rect-for-the-resulting-task-to-complete.md | 4 +- ...ged-event-behaviour-changed-in-_net-4_5.md | 4 +- .../il-ret-not-allowed-in-a-try-region.md | 4 +- ...plementation-of-memberdescriptor_equals.md | 4 +- ...trols-when-using-customer-datatemplates.md | 4 +- ...-because-it-is-now-a-browser-capability.md | 3 +- ...st-with-items-of-different-pixel-height.md | 4 +- ...ot-remove-duplicates-from-selecteditems.md | 4 +- ...join-throws-argumentoutofrangeexception.md | 4 +- ...hrow-exception-when-modifying-list-item.md | 4 +- .../list_sort-algorithm-changed.md | 4 +- ...ng-issue-with-observablecollection_move.md | 3 +- ...nged-to-match-sql-server-specifications.md | 4 +- .../long-path-support.md | 4 +- ...hinekey_decode-methods-are-now-obsolete.md | 4 +- ...-_net-framework-1_1-and-2_0-are-blocked.md | 4 +- ...ostructure-overloads-break-dynamic-code.md | 3 +- ...o-longer-be-used-to-create-a-serializer.md | 5 +- ...centagetoactiveservice-is-now-respected.md | 4 +- ...amework-moniker-results-in-4_0-behavior.md | 6 +- ...acing-changed-when-using-antixssencoder.md | 4 +- ...tablelayoutpanel-cell-may-be-rearranged.md | 4 +- ...erialized-with-a-different-_net-version.md | 3 +- ...oads-could-result-in-different-behavior.md | 4 +- ...enum-values-in-wpf's-pagerangeselection.md | 4 +- ...able-to-set-enableviewstatemac-to-false.md | 4 +- ...-leak-memory-if-not-explicitly-disposed.md | 4 +- ...isible-in-debugger-until-one-step-later.md | 4 +- ...executestorequery-now-support-enum-type.md | 4 +- ...sedexception-thrown-by-wpf-spellchecker.md | 4 +- ...-deprecatedattribute-in-winmd-scenarios.md | 4 +- ...nager-and-system_net_security_sslstream.md | 4 +- ...eneration-to-simpler-4_0-sql-generation.md | 6 +- ...tasource-control-to-invoke-data-binding.md | 4 +- .../path-colon-checks-are-stricter.md | 3 +- ...ndar-now-uses-the-hijri-solar-algorithm.md | 4 +- ...edly-if-its-handler-shows-a-message-box.md | 3 +- ...an-lead-to-fatal-execution-engine-error.md | 4 +- ...ged-code-to-out-of-process-dcom-clients.md | 4 +- ...ove-ssl3-from-the-wcf-transportdefaults.md | 8 +- ...ependencies-with-the-wrong-architecture.md | 4 +- ...-set-to-transparent-in-localized-builds.md | 6 +- ...w-header-changes-the-datagrid-selection.md | 3 +- ...-loads-rsa-keys-of-non-standard-keysize.md | 5 +- ...urns-false-for-any-verification-failure.md | 4 +- ...virtualizingstackpanel-can-cause-a-hang.md | 4 +- ...ow-compatible-with-ecmascript-v6-and-v8.md | 8 +- ...-to-use-the-same-_net-framework-version.md | 3 +- ...-and-similar-ordered-collection-objects.md | 4 +- ...-(handled)-entrypointnotfoundexceptions.md | 4 +- ...orkflow-drag-and-drop-apis-are-obsolete.md | 4 +- ...ollation-rather-than-database-collation.md | 4 +- ...destination-column-encoding-for-strings.md | 4 +- ...1997-or-databases-using-the-via-adapter.md | 4 +- ...with-non-ifs-winsock-bsp-or-lsp-present.md | 4 +- .../sslstream-support-for-tls-alerts.md | 5 +- .../system_activities-is-now-aptca.md | 4 +- ..._collaboration-unavailable-on-windows-8.md | 4 +- ...bject-no-longer-adds-a-default-endpoint.md | 4 +- ...posedexception-after-object-is-disposed.md | 4 +- ...stem_uri-escaping-now-supports-rfc-3986.md | 4 +- .../system_uri-parsing-adheres-to-rfc-3987.md | 4 +- ...uris-with-a-colon-char-in-first-segment.md | 3 +- ...n-no-longer-defaults-to-null-if-not-set.md | 4 +- ...when-registering-itself-in-the-registry.md | 6 +- ...od-in-odata-urls-is-disabled-by-default.md | 4 +- ...hrottle-concurrent-requests-per-session.md | 4 +- ...th-a-non-public-setter-is-not-supported.md | 4 +- ...-for-generic-variables-with-constraints.md | 4 +- ...ption-from-invokemethod-activity-in-wf4.md | 4 +- ...ta-now-support-standard-v8_0-categories.md | 4 +- ...e-qualification-for-system_windows-apis.md | 4 +- ...portwithmessagecredential-security-mode.md | 3 +- ...ecurity-unable-to-use-tls1_1-and-tls1_2.md | 6 +- ...-supports-certificates-stored-using-cng.md | 4 +- ...-longer-decodes-invalid-input-sequences.md | 4 +- ...ity_htmldecode-round-trip-bmp-correctly.md | 4 +- ...pressions_literal-datetimes-differently.md | 4 +- ...property-is-now-true-for-system_drawing.md | 4 +- ...-call-flushasync-automatically-on-close.md | 4 +- .../workflow-3_0-types-are-obsolete.md | 4 +- ...flow-checksums-changed-from-md5-to-sha1.md | 4 +- ...of-nullreferenceexception-in-some-cases.md | 6 +- ...d-disallows-null-values-in-some-columns.md | 3 +- ...ner_load-doesn't-remove-symbol-property.md | 4 +- ...es-toggle-button-doesn't-show-any-state.md | 4 +- ...emplate-elements-are-now-visible-to-uia.md | 4 +- ...ew-copy-instead-of-the-current-instance.md | 4 +- ...rid-allocation-of-space-to-star-columns.md | 4 +- ...-layout-rounding-of-margins-has-changed.md | 4 +- ...e-from-imagesourceconverter_convertfrom.md | 4 +- .../wpf-pointer-based-touch-stack.md | 4 +- .../wpf-printing-stack-update.md | 4 +- ..._exe-process-which-can-freeze-the-mouse.md | 4 +- ...-spell-checking-fail-in-unexpected-ways.md | 5 +- ...anguages-not-in-the-input-language-list.md | 4 +- ...f-textbox-defaults-to-undo-limit-of-100.md | 4 +- ...ent-color-when-the-text-box-is-inactive.md | 4 +- ...ext-can-be-out-of-sync-with-databinding.md | 4 +- ...viewitem-must-be-used-within-a-treeview.md | 6 +- ...when-extending-outside-a-single-monitor.md | 4 +- ...when-_net-cannot-handle-the-certificate.md | 4 +- ...set_findclaims-considers-all-claimtypes.md | 4 +- ...t-are-not-allowed-on-digital-signatures.md | 4 +- .../xml-schema-validation-is-stricter.md | 4 +- ...eption-now-sets-line-positions-properly.md | 4 +- ...essible-member-with-an-inaccessible-one.md | 4 +- ...er-serializes-fields-differently-in-4_5.md | 4 +- ...nsion-is-limited-to-10000000-characters.md | 4 +- ...riter-throws-on-invalid-surrogate-pairs.md | 4 +- ...ound-keys-are-used-and-one-key-is-empty.md | 6 +- .../xslt-forward-compat-now-works.md | 4 +- ...t-style-sheet-exception-message-changed.md | 4 +- README.md | 2 +- releases/README.md | 42 +-- releases/net45/README.md | 10 + releases/net451/README.md | 10 + releases/net452/README.md | 8 + releases/net46/README.md | 22 ++ releases/net46/dotnet46-changes.md | 264 +++++++------- releases/net461/README.md | 21 ++ releases/net461/dotnet461-changes.md | 155 ++++---- releases/net462/README.md | 12 +- releases/net47/README.md | 12 +- releases/net47/dotnet47-changes.md | 147 ++++---- src/bc-readme-gen/Program.cs | 128 +++++++ src/bc-readme-gen/README-template.md | 5 + src/bc-readme-gen/README.md | 5 + src/bc-readme-gen/bcreadgen.csproj | 8 + 188 files changed, 1195 insertions(+), 696 deletions(-) create mode 100644 Documentation/README.md rename Documentation/{breaking-changes => compatibility}/! Template.md (100%) rename Documentation/{breaking-changes => compatibility}/README.md (95%) rename Documentation/{breaking-changes => compatibility}/a-concurrentdictionary-serialized-in-_net-4_5-with-netdatacontractserializer-cannot-be-deserialized-by-_net-4_5_1-or-4_5_2.md (90%) rename Documentation/{breaking-changes => compatibility}/accessing-a-wpf-datagrid's-selected-items-from-a-handler-of-the-datagrid's-unloadingrow-event-can-cause-a-nullreferenceexception.md (81%) rename Documentation/{breaking-changes => compatibility}/ado_net-now-attempts-to-automatically-reconnect-broken-sql-connections.md (94%) rename Documentation/{breaking-changes => compatibility}/aescryptoserviceprovider-decryptor-provides-a-reusable-transform.md (94%) rename Documentation/{breaking-changes => compatibility}/appdomainsetup_dynamicbase-is-no-longer-randomized-by-userandomizedstringhashalgorithm.md (90%) rename Documentation/{breaking-changes => compatibility}/application_filtermessage-no-longer-throws-for-re-entrant-implementations-of-imessagefilter_prefiltermessage.md (92%) rename Documentation/{breaking-changes => compatibility}/apps-published-with-clickonce-that-use-a-sha-256-code-signing-certificate-may-fail-on-windows-2003.md (91%) rename Documentation/{breaking-changes => compatibility}/asp_net-mvc-now-escapes-spaces-in-strings-passed-in-via-route-parameters.md (89%) rename Documentation/{breaking-changes => compatibility}/assemblies-compiled-with-regex_compiletoassembly-breaks-between-4_0-and-4_5.md (92%) rename Documentation/{breaking-changes => compatibility}/binaryformatter-can-fail-to-find-type-from-loadfrom-context.md (94%) rename Documentation/{breaking-changes => compatibility}/binding-a-wpf-selector-property-(such-as-'selecteditem')-to-a-static-property-does-not-work.md (89%) rename Documentation/{breaking-changes => compatibility}/blockingcollection_trytakefromany-does-not-throw-anymore.md (94%) rename Documentation/{breaking-changes => compatibility}/building-an-entity-framework-edmx-with-visual-studio-2013-can-fail-with-error-msb4062-if-using-the-entitydeploysplit-or-entityclean-tasks.md (87%) rename Documentation/{breaking-changes => compatibility}/calling-attribute_getcustomattributes-on-an-indexer-property-no-longer-throws-ambiguousmatchexception.md (92%) rename Documentation/{breaking-changes => compatibility}/calling-createdefaultauthorizationcontext-with-a-null-argument-has-changed.md (92%) rename Documentation/{breaking-changes => compatibility}/calling-datagrid_commitedit-from-a-celleditending-handler-drops-focus.md (83%) rename Documentation/{breaking-changes => compatibility}/calling-items_refresh-on-a-wpf-listbox-or-listview-or-datagrid-with-items-selected-can-cause-duplicate-items-to-appear-in-the-element.md (86%) rename Documentation/{breaking-changes => compatibility}/calls-to-claimsidentity-constructors.md (97%) rename Documentation/{breaking-changes => compatibility}/change-in-behavior-for-task_waitall-methods-with-time-out-arguments.md (94%) rename Documentation/{breaking-changes => compatibility}/change-in-behavior-in-data-definition-language-(ddl)-apis.md (95%) rename Documentation/{breaking-changes => compatibility}/changes-in-path-normalization.md (97%) rename Documentation/{breaking-changes => compatibility}/changing-the-isenabled-property-of-the-parent-of-a-textblock-control-affects-any-child-controls.md (89%) rename Documentation/{breaking-changes => compatibility}/clickonce-supports-sha-256-on-4_0-targeted-apps.md (90%) rename Documentation/{breaking-changes => compatibility}/coerceisselectionboxhighlighted.md (88%) rename Documentation/{breaking-changes => compatibility}/compiler-support-for-type-forwarding-when-multi-targeting-mscorlib.md (88%) rename Documentation/{breaking-changes => compatibility}/concurrentqueue_trypeek-can-return-an-erroneous-null-via-its-out-parameter.md (86%) rename Documentation/{breaking-changes => compatibility}/connection-pool-blocking-period-for-azure-sql-databases-is-removed.md (96%) rename Documentation/{breaking-changes => compatibility}/contentdisposition-datetimes-returns-slightly-different-string.md (92%) rename Documentation/{breaking-changes => compatibility}/cor_prf_gc_root_handles-are-not-being-enumerated-by-profilers.md (90%) rename Documentation/{breaking-changes => compatibility}/cspparameters_parentwindowhandle-now-expects-hwnd-value.md (96%) rename Documentation/{breaking-changes => compatibility}/currentculture-flows-across-tasks.md (96%) rename Documentation/{breaking-changes => compatibility}/currentculture-not-preserved-across-wpf-dispatcher-operations.md (96%) rename Documentation/{breaking-changes => compatibility}/datagridcellspanel_bringintoview-throws-argumentoutofrangeexception.md (89%) rename Documentation/{breaking-changes => compatibility}/dataobject_getdata-now-retrieves-data-as-utf-8.md (94%) rename Documentation/{breaking-changes => compatibility}/dbparameter_precision-and-dbparameter_scale-are-now-public-virtual-members.md (88%) rename Documentation/{breaking-changes => compatibility}/deserialization-of-objects-across-appdomains-can-fail.md (87%) rename Documentation/{breaking-changes => compatibility}/different-exception-handling-for-objectcontext_createdatabase-and-dbproviderservices_createdatabase-methods.md (87%) rename Documentation/{breaking-changes => compatibility}/ef-no-longer-throws-for-queryviews-with-specific-characteristics.md (91%) rename Documentation/{breaking-changes => compatibility}/ef-version-must-match-netfx-version.md (90%) rename Documentation/{breaking-changes => compatibility}/encoderparameter-ctor-is-obsolete.md (93%) rename Documentation/{breaking-changes => compatibility}/entityframework-6_0-loads-very-slowly-in-apps-launched-from-visual-studio.md (82%) rename Documentation/{breaking-changes => compatibility}/enumerable_empty-always-returns-cached-instance.md (91%) rename Documentation/{breaking-changes => compatibility}/error-codes-for-maxrequestlength-or-maxreceivedmessagesize-are-different.md (90%) rename Documentation/{breaking-changes => compatibility}/etw-eventlisteners-do-not-capture-events-from-providers-with-explicit-keywords.md (89%) rename Documentation/{breaking-changes => compatibility}/eventlistener-truncates-strings-with-embedded-nulls.md (93%) rename Documentation/{breaking-changes => compatibility}/eventsource_writeevent-impls-must-pass-writeevent-the-same-parameters-that-it-received-(plus-id).md (85%) rename Documentation/{breaking-changes => compatibility}/exception-message-has-changed-for-failed-datacontract-serialization-in-case-of-an-unknown-type.md (97%) rename Documentation/{breaking-changes => compatibility}/exceptions-during-unobserved-processing-in-system_threading_tasks_task-no-longer-propagate-on-finalizer-thread.md (93%) rename Documentation/{breaking-changes => compatibility}/flowdocument-may-show-an-extra-line-of-text.md (93%) rename Documentation/{breaking-changes => compatibility}/foreach-iterator-variable-is-now-scoped-within-the-iteration.md (87%) rename Documentation/{breaking-changes => compatibility}/glyphrun_computeinkboundingbox()-and-formattedtext_extent-return-different-values-beginning-in-_net-4_5.md (88%) rename Documentation/{breaking-changes => compatibility}/gridviews-with-allowcustompaging-set-to-true-may-fire-the-pageindexchanging-event-when-leaving-the-final-page-of-the-view.md (87%) rename Documentation/{breaking-changes => compatibility}/horizontal-scrolling-and-virtualization.md (97%) rename Documentation/{breaking-changes => compatibility}/htmltextwriter-does-not-render-br-element-correctly.md (91%) rename Documentation/{breaking-changes => compatibility}/httprequest_contentencoding-property-prohibits-utf7.md (90%) rename Documentation/{breaking-changes => compatibility}/httputility_javascriptstringencode-escapes-ampersand.md (90%) rename Documentation/{breaking-changes => compatibility}/iasyncresult_completedsynchronously-property-must-be-correct-for-the-resulting-task-to-complete.md (97%) rename Documentation/{breaking-changes => compatibility}/icommand_canexecutechanged-event-behaviour-changed-in-_net-4_5.md (91%) rename Documentation/{breaking-changes => compatibility}/il-ret-not-allowed-in-a-try-region.md (93%) rename Documentation/{breaking-changes => compatibility}/incorrect-implementation-of-memberdescriptor_equals.md (94%) rename Documentation/{breaking-changes => compatibility}/intermittently-unable-to-scroll-to-bottom-item-in-itemscontrols-when-using-customer-datatemplates.md (87%) rename Documentation/{breaking-changes => compatibility}/ipad-should-not-be-used-in-custom-capabilities-file-because-it-is-now-a-browser-capability.md (84%) rename Documentation/{breaking-changes => compatibility}/item-scrolling-a-flat-list-with-items-of-different-pixel-height.md (94%) rename Documentation/{breaking-changes => compatibility}/items_clear-does-not-remove-duplicates-from-selecteditems.md (90%) rename Documentation/{breaking-changes => compatibility}/linq-to-ef-join-throws-argumentoutofrangeexception.md (96%) rename Documentation/{breaking-changes => compatibility}/list_foreach-can-throw-exception-when-modifying-list-item.md (88%) rename Documentation/{breaking-changes => compatibility}/list_sort-algorithm-changed.md (95%) rename Documentation/{breaking-changes => compatibility}/listboxitem-isselected-binding-issue-with-observablecollection_move.md (90%) rename Documentation/{breaking-changes => compatibility}/log-file-name-created-by-the-objectcontext_createdatabase-method-has-changed-to-match-sql-server-specifications.md (85%) rename Documentation/{breaking-changes => compatibility}/long-path-support.md (97%) rename Documentation/{breaking-changes => compatibility}/machinekey_encode-and-machinekey_decode-methods-are-now-obsolete.md (90%) rename Documentation/{breaking-changes => compatibility}/managed-browser-hosting-controls-from-the-_net-framework-1_1-and-2_0-are-blocked.md (88%) rename Documentation/{breaking-changes => compatibility}/marshal_sizeof-and-marshal_ptrtostructure-overloads-break-dynamic-code.md (92%) rename Documentation/{breaking-changes => compatibility}/mef-catalogs-implement-ienumerable-and-therefore-can-no-longer-be-used-to-create-a-serializer.md (82%) rename Documentation/{breaking-changes => compatibility}/minfreememorypercentagetoactiveservice-is-now-respected.md (90%) rename Documentation/{breaking-changes => compatibility}/missing-target-framework-moniker-results-in-4_0-behavior.md (93%) rename Documentation/{breaking-changes => compatibility}/multi-line-asp_net-textbox-spacing-changed-when-using-antixssencoder.md (90%) rename Documentation/{breaking-changes => compatibility}/multiple-items-in-a-single-tablelayoutpanel-cell-may-be-rearranged.md (90%) rename Documentation/{breaking-changes => compatibility}/netdatacontractserializer-fails-to-deserialize-a-concurrentdictionary-serialized-with-a-different-_net-version.md (90%) rename Documentation/{breaking-changes => compatibility}/new-(ambiguous)-dispatcher_invoke-overloads-could-result-in-different-behavior.md (94%) rename Documentation/{breaking-changes => compatibility}/new-enum-values-in-wpf's-pagerangeselection.md (92%) rename Documentation/{breaking-changes => compatibility}/no-longer-able-to-set-enableviewstatemac-to-false.md (91%) rename Documentation/{breaking-changes => compatibility}/non-pooled-sql-connections-will-leak-memory-if-not-explicitly-disposed.md (89%) rename Documentation/{breaking-changes => compatibility}/null-coalescer-values-are-not-visible-in-debugger-until-one-step-later.md (88%) rename Documentation/{breaking-changes => compatibility}/objectcontext_translate-and-objectcontext_executestorequery-now-support-enum-type.md (90%) rename Documentation/{breaking-changes => compatibility}/objectdisposedexception-thrown-by-wpf-spellchecker.md (89%) rename Documentation/{breaking-changes => compatibility}/obsoleteattribute-exports-as-both-obsoleteattribute-and-deprecatedattribute-in-winmd-scenarios.md (86%) rename Documentation/{breaking-changes => compatibility}/only-tls-1_0-1_1-and-1_2-protocols-supported-in-system_net_servicepointmanager-and-system_net_security_sslstream.md (89%) rename Documentation/{breaking-changes => compatibility}/opt-in-break-to-revert-from-different-4_5-sql-generation-to-simpler-4_0-sql-generation.md (85%) rename Documentation/{breaking-changes => compatibility}/page_loadcomplete-event-no-longer-causes-system_web_ui_webcontrols_entitydatasource-control-to-invoke-data-binding.md (88%) rename Documentation/{breaking-changes => compatibility}/path-colon-checks-are-stricter.md (93%) rename Documentation/{breaking-changes => compatibility}/persian-calendar-now-uses-the-hijri-solar-algorithm.md (92%) rename Documentation/{breaking-changes => compatibility}/previewlostkeyboardfocus-is-called-repeatedly-if-its-handler-shows-a-message-box.md (92%) rename Documentation/{breaking-changes => compatibility}/profiling-asp_net-mvc4-apps-can-lead-to-fatal-execution-engine-error.md (87%) rename Documentation/{breaking-changes => compatibility}/reflection-objects-can-no-longer-be-passed-from-managed-code-to-out-of-process-dcom-clients.md (84%) rename Documentation/{breaking-changes => compatibility}/remove-ssl3-from-the-wcf-transportdefaults.md (92%) rename Documentation/{breaking-changes => compatibility}/resolveassemblyreference-task-now-warns-on-dependencies-with-the-wrong-architecture.md (89%) rename Documentation/{breaking-changes => compatibility}/ribbongroup-background-is-set-to-transparent-in-localized-builds.md (85%) rename Documentation/{breaking-changes => compatibility}/right-clicking-on-a-wpf-datagrid-row-header-changes-the-datagrid-selection.md (86%) rename Documentation/{breaking-changes => compatibility}/rsacng-now-correctly-loads-rsa-keys-of-non-standard-keysize.md (93%) rename Documentation/{breaking-changes => compatibility}/rsacng_verifyhash-now-returns-false-for-any-verification-failure.md (90%) rename Documentation/{breaking-changes => compatibility}/scrolling-a-wpf-treeview-or-grouped-listbox-in-a-virtualizingstackpanel-can-cause-a-hang.md (90%) rename Documentation/{breaking-changes => compatibility}/serialization-of-control-characters-with-datacontractjsonserializer-is-now-compatible-with-ecmascript-v6-and-v8.md (87%) rename Documentation/{breaking-changes => compatibility}/sharing-session-state-with-asp_net-stateserver-requires-all-servers-in-the-web-farm-to-use-the-same-_net-framework-version.md (85%) rename Documentation/{breaking-changes => compatibility}/soapformatter-cannot-deserialize-hashtable-and-similar-ordered-collection-objects.md (92%) rename Documentation/{breaking-changes => compatibility}/some-_net-apis-cause-first-chance-(handled)-entrypointnotfoundexceptions.md (92%) rename Documentation/{breaking-changes => compatibility}/some-workflow-drag-and-drop-apis-are-obsolete.md (93%) rename Documentation/{breaking-changes => compatibility}/sql_variant-data-uses-sql_variant-collation-rather-than-database-collation.md (84%) rename Documentation/{breaking-changes => compatibility}/sqlbulkcopy-uses-destination-column-encoding-for-strings.md (92%) rename Documentation/{breaking-changes => compatibility}/sqlconnection-can-no-longer-connect-to-sql-server-1997-or-databases-using-the-via-adapter.md (91%) rename Documentation/{breaking-changes => compatibility}/sqlconnection_open-fails-on-windows-7-with-non-ifs-winsock-bsp-or-lsp-present.md (91%) rename Documentation/{breaking-changes => compatibility}/sslstream-support-for-tls-alerts.md (97%) rename Documentation/{breaking-changes => compatibility}/system_activities-is-now-aptca.md (90%) rename Documentation/{breaking-changes => compatibility}/system_net_peertopeer_collaboration-unavailable-on-windows-8.md (84%) rename Documentation/{breaking-changes => compatibility}/system_servicemodel_web_webservicehost-object-no-longer-adds-a-default-endpoint.md (95%) rename Documentation/{breaking-changes => compatibility}/system_threading_tasks_task-no-longer-throw-objectdisposedexception-after-object-is-disposed.md (90%) rename Documentation/{breaking-changes => compatibility}/system_uri-escaping-now-supports-rfc-3986.md (91%) rename Documentation/{breaking-changes => compatibility}/system_uri-parsing-adheres-to-rfc-3987.md (95%) rename Documentation/{breaking-changes => compatibility}/system_uri_iswellformeduristring-method-returns-false-for-relative-uris-with-a-colon-char-in-first-segment.md (88%) rename Documentation/{breaking-changes => compatibility}/targetframeworkname-for-default-app-domain-no-longer-defaults-to-null-if-not-set.md (89%) rename Documentation/{breaking-changes => compatibility}/the-_net-framework-4_6-does-not-use-a-4_5_x_x-version-when-registering-itself-in-the-registry.md (84%) rename Documentation/{breaking-changes => compatibility}/the-replace-method-in-odata-urls-is-disabled-by-default.md (91%) rename Documentation/{breaking-changes => compatibility}/throttle-concurrent-requests-per-session.md (93%) rename Documentation/{breaking-changes => compatibility}/two-way-data-binding-to-a-property-with-a-non-public-setter-is-not-supported.md (91%) rename Documentation/{breaking-changes => compatibility}/type_isassignablefrom-returns-wrong-result-for-generic-variables-with-constraints.md (88%) rename Documentation/{breaking-changes => compatibility}/unexpected-invalidcastexception-from-invokemethod-activity-in-wf4.md (90%) rename Documentation/{breaking-changes => compatibility}/unicode-data-now-support-standard-v8_0-categories.md (91%) rename Documentation/{breaking-changes => compatibility}/vb_net-no-longer-supports-partial-namespace-qualification-for-system_windows-apis.md (87%) rename Documentation/{breaking-changes => compatibility}/wcf-binding-with-the-transportwithmessagecredential-security-mode.md (93%) rename Documentation/{breaking-changes => compatibility}/wcf-message-security-unable-to-use-tls1_1-and-tls1_2.md (85%) rename Documentation/{breaking-changes => compatibility}/wcf-transport-security-supports-certificates-stored-using-cng.md (94%) rename Documentation/{breaking-changes => compatibility}/webutility_htmldecode-no-longer-decodes-invalid-input-sequences.md (92%) rename Documentation/{breaking-changes => compatibility}/webutility_htmlencode-and-webutility_htmldecode-round-trip-bmp-correctly.md (91%) rename Documentation/{breaking-changes => compatibility}/wf-serializes-expressions_literal-datetimes-differently.md (90%) rename Documentation/{breaking-changes => compatibility}/winform's-checkforoverflowunderflow-property-is-now-true-for-system_drawing.md (83%) rename Documentation/{breaking-changes => compatibility}/winrt-stream-adapters-no-long-call-flushasync-automatically-on-close.md (86%) rename Documentation/{breaking-changes => compatibility}/workflow-3_0-types-are-obsolete.md (93%) rename Documentation/{breaking-changes => compatibility}/workflow-checksums-changed-from-md5-to-sha1.md (93%) rename Documentation/{breaking-changes => compatibility}/workflow-now-throws-original-exception-instead-of-nullreferenceexception-in-some-cases.md (87%) rename Documentation/{breaking-changes => compatibility}/workflow-sql-persistence-adds-primary-key-clusters-and-disallows-null-values-in-some-columns.md (86%) rename Documentation/{breaking-changes => compatibility}/workflowdesigner_load-doesn't-remove-symbol-property.md (92%) rename Documentation/{breaking-changes => compatibility}/wpf-aero2-and-aerolite-themes-toggle-button-doesn't-show-any-state.md (89%) rename Documentation/{breaking-changes => compatibility}/wpf-datatemplate-elements-are-now-visible-to-uia.md (92%) rename Documentation/{breaking-changes => compatibility}/wpf-dispatchersynchronizationcontext_createcopy-now-returns-a-new-copy-instead-of-the-current-instance.md (91%) rename Documentation/{breaking-changes => compatibility}/wpf-grid-allocation-of-space-to-star-columns.md (98%) rename Documentation/{breaking-changes => compatibility}/wpf-layout-rounding-of-margins-has-changed.md (95%) rename Documentation/{breaking-changes => compatibility}/wpf-nullreferenceexception-in-exception-handling-code-from-imagesourceconverter_convertfrom.md (91%) rename Documentation/{breaking-changes => compatibility}/wpf-pointer-based-touch-stack.md (96%) rename Documentation/{breaking-changes => compatibility}/wpf-printing-stack-update.md (94%) rename Documentation/{breaking-changes => compatibility}/wpf-spawns-a-wisptis_exe-process-which-can-freeze-the-mouse.md (88%) rename Documentation/{breaking-changes => compatibility}/wpf-spell-checking-fail-in-unexpected-ways.md (93%) rename Documentation/{breaking-changes => compatibility}/wpf-spell-checking-in-text-enabled-controls-will-not-work-in-windows-10-for-languages-not-in-the-input-language-list.md (86%) rename Documentation/{breaking-changes => compatibility}/wpf-textbox-defaults-to-undo-limit-of-100.md (88%) rename Documentation/{breaking-changes => compatibility}/wpf-textbox-selected-text-appears-a-different-color-when-the-text-box-is-inactive.md (88%) rename Documentation/{breaking-changes => compatibility}/wpf-textbox_text-can-be-out-of-sync-with-databinding.md (90%) rename Documentation/{breaking-changes => compatibility}/wpf-treeviewitem-must-be-used-within-a-treeview.md (92%) rename Documentation/{breaking-changes => compatibility}/wpf-windows-are-rendered-without-clipping-when-extending-outside-a-single-monitor.md (88%) rename Documentation/{breaking-changes => compatibility}/x509certificate2_tostring(bool)-does-not-throw-now-when-_net-cannot-handle-the-certificate.md (87%) rename Documentation/{breaking-changes => compatibility}/x509certificateclaimset_findclaims-considers-all-claimtypes.md (91%) rename Documentation/{breaking-changes => compatibility}/xml-documents-are-now-consider-invalid-if-they-contains-transforms-that-are-not-allowed-on-digital-signatures.md (94%) rename Documentation/{breaking-changes => compatibility}/xml-schema-validation-is-stricter.md (93%) rename Documentation/{breaking-changes => compatibility}/xmlschemaexception-now-sets-line-positions-properly.md (89%) rename Documentation/{breaking-changes => compatibility}/xmlserializer-fails-while-serializing-a-type-that-hides-an-accessible-member-with-an-inaccessible-one.md (93%) rename Documentation/{breaking-changes => compatibility}/xmlserializer-serializes-fields-differently-in-4_5.md (95%) rename Documentation/{breaking-changes => compatibility}/xmltextreader-dtd-entity-expansion-is-limited-to-10000000-characters.md (95%) rename Documentation/{breaking-changes => compatibility}/xmlwriter-throws-on-invalid-surrogate-pairs.md (97%) rename Documentation/{breaking-changes => compatibility}/xsd-schema-validation-now-correctly-detects-violations-of-unique-constraints-if-compound-keys-are-used-and-one-key-is-empty.md (83%) rename Documentation/{breaking-changes => compatibility}/xslt-forward-compat-now-works.md (94%) rename Documentation/{breaking-changes => compatibility}/xslt-style-sheet-exception-message-changed.md (95%) create mode 100644 releases/net45/README.md create mode 100644 releases/net451/README.md create mode 100644 releases/net452/README.md create mode 100644 releases/net46/README.md create mode 100644 releases/net461/README.md create mode 100755 src/bc-readme-gen/Program.cs create mode 100644 src/bc-readme-gen/README-template.md create mode 100644 src/bc-readme-gen/README.md create mode 100755 src/bc-readme-gen/bcreadgen.csproj diff --git a/Documentation/README.md b/Documentation/README.md new file mode 100644 index 000000000..b68ac42a3 --- /dev/null +++ b/Documentation/README.md @@ -0,0 +1,12 @@ +# Documentation + +The following documents are available in this repo: + +- [.NET Framework Application Compatibility](compatibility/README.md) +- [.NET Framework Release Notes](../releases/README.md) +- [Testing with RyuJIT](testing-with-ryujit.md) + +The following .NET Framework documentation is available from Microsoft: + +- [.NET Framework Documentation](https://docs.microsoft.com/dotnet/articles/framework/) +- [.NET Core Documentation](https://docs.microsoft.com/dotnet/articles/core/) diff --git a/Documentation/breaking-changes/! Template.md b/Documentation/compatibility/! Template.md similarity index 100% rename from Documentation/breaking-changes/! Template.md rename to Documentation/compatibility/! Template.md diff --git a/Documentation/breaking-changes/README.md b/Documentation/compatibility/README.md similarity index 95% rename from Documentation/breaking-changes/README.md rename to Documentation/compatibility/README.md index 23d8a0fc0..3d47f4005 100644 --- a/Documentation/breaking-changes/README.md +++ b/Documentation/compatibility/README.md @@ -1,173 +1,205 @@ -# .NET Framework Breaking Changes +# .NET Framework Application Compatibility -The following documents provide information on .NET Framework breaking changes and changes in behavior, starting with .NET Framework 4.5. +The following documents provide information on .NET Framework application compatibility. They describe breaking changes and other changes in behavior in each .NET Framework release. -- [SoapFormatter cannot deserialize Hashtable and similar ordered collection objects](soapformatter-cannot-deserialize-hashtable-and-similar-ordered-collection-objects.md) -- [XML schema validation is stricter](xml-schema-validation-is-stricter.md) -- [WPF DataTemplate elements are now visible to UIA](wpf-datatemplate-elements-are-now-visible-to-uia.md) -- [WPF TextBox selected text appears a different color when the text box is inactive](wpf-textbox-selected-text-appears-a-different-color-when-the-text-box-is-inactive.md) -- [List<T>.ForEach can throw exception when modifying list item](list_foreach-can-throw-exception-when-modifying-list-item.md) -- [System.Uri parsing adheres to RFC 3987](system_uri-parsing-adheres-to-rfc-3987.md) -- [System.Uri escaping now supports RFC 3986 (http://tools.ietf.org/html/rfc3986)](system_uri-escaping-now-supports-rfc-3986.md) -- [System.Net.PeerToPeer.Collaboration unavailable on Windows 8](system_net_peertopeer_collaboration-unavailable-on-windows-8.md) -- [MEF catalogs implement IEnumerable and therefore can no longer be used to create a serializer](mef-catalogs-implement-ienumerable-and-therefore-can-no-longer-be-used-to-create-a-serializer.md) -- [Missing Target Framework Moniker results in 4.0 behavior](missing-target-framework-moniker-results-in-4_0-behavior.md) +Please help us improve the [.NET Framework Application Compatibility documents](https://github.com/Microsoft/dotnet/tree/master/Documentation/compatibility). In particular, better titles will improve the index below, both in content and the sort. + +- [.NET Framework 4.7](#net-framework-47) +- [.NET Framework 4.6.2](#net-framework-462) +- [.NET Framework 4.6.1](#net-framework-461) +- [.NET Framework 4.6](#net-framework-46) +- [.NET Framework 4.5.2](#net-framework-452) +- [.NET Framework 4.5.1](#net-framework-451) +- [.NET Framework 4.5](#net-framework-45) + +## .NET Framework 4.7 + +- [CspParameters.ParentWindowHandle now expects HWND value](cspparameters_parentwindowhandle-now-expects-hwnd-value.md) +- [NullReferenceException in exception handling code from ImageSourceConverter.ConvertFrom](wpf-nullreferenceexception-in-exception-handling-code-from-imagesourceconverter_convertfrom.md) +- [Serialization of control characters with DataContractJsonSerializer is now compatible with ECMAScript V6 and V8](serialization-of-control-characters-with-datacontractjsonserializer-is-now-compatible-with-ecmascript-v6-and-v8.md) +- [SslStream supports TLS Alerts](sslstream-support-for-tls-alerts.md) +- [Throttle concurrent requests per session](throttle-concurrent-requests-per-session.md) +- [WCF message security now is able to use TLS1.1 and TLS1.2](wcf-message-security-unable-to-use-tls1_1-and-tls1_2.md) +- [Workflow checksums changed from MD5 to SHA1](workflow-checksums-changed-from-md5-to-sha1.md) +- [Workflow now throws original exception instead of NullReferenceException in some cases](workflow-now-throws-original-exception-instead-of-nullreferenceexception-in-some-cases.md) +- [Workflow SQL persistence adds primary key clusters and disallows null values in some columns](workflow-sql-persistence-adds-primary-key-clusters-and-disallows-null-values-in-some-columns.md) +- [WPF Grid allocation of space to star-columns](wpf-grid-allocation-of-space-to-star-columns.md) +- [WPF Pointer-Based Touch Stack](wpf-pointer-based-touch-stack.md) +- [WPF Printing Stack Update](wpf-printing-stack-update.md) + +## .NET Framework 4.6.2 + +- [AesCrytpServiceProvider decryptor provides a reusable transform](aescryptoserviceprovider-decryptor-provides-a-reusable-transform.md) +- [Calls to ClaimsIdentity constructors](calls-to-claimsidentity-constructors.md) +- [Changes in path normalization](changes-in-path-normalization.md) +- [Changing the IsEnabled property of the parent of a TextBlock control affects any child controls](changing-the-isenabled-property-of-the-parent-of-a-textblock-control-affects-any-child-controls.md) +- [Connection pool blocking period for Azure SQL databases is removed](connection-pool-blocking-period-for-azure-sql-databases-is-removed.md) +- [DataGridCellsPanel.BringIndexIntoView throws ArgumentOutOfRangeException](datagridcellspanel_bringintoview-throws-argumentoutofrangeexception.md) +- [Horizontal scrolling and virtualization](horizontal-scrolling-and-virtualization.md) +- [Incorrect implementation of MemberDescriptor.Equals](incorrect-implementation-of-memberdescriptor_equals.md) +- [Long path support](long-path-support.md) +- [Path colon checks are stricter](path-colon-checks-are-stricter.md) +- [Remove Ssl3 from the WCF TransportDefaults](remove-ssl3-from-the-wcf-transportdefaults.md) +- [RibbonGroup background is set to transparent in localized builds](ribbongroup-background-is-set-to-transparent-in-localized-builds.md) +- [RSACng now correctly loads RSA keys of non-standard key size](rsacng-now-correctly-loads-rsa-keys-of-non-standard-keysize.md) +- [RSACng.VerifyHash now returns False for any verification failure](rsacng_verifyhash-now-returns-false-for-any-verification-failure.md) +- [SignedXml and EncryptedXml Breaking Changes](xml-documents-are-now-consider-invalid-if-they-contains-transforms-that-are-not-allowed-on-digital-signatures.md) +- [Unicode standard version 8.0 categories now supported](unicode-data-now-support-standard-v8_0-categories.md) +- [WCF transport security supports certificates stored using CNG](wcf-transport-security-supports-certificates-stored-using-cng.md) + +## .NET Framework 4.6.1 + +- [Application.FilterMessage no longer throws for re-entrant implementations of IMessageFilter.PreFilterMessage](application_filtermessage-no-longer-throws-for-re-entrant-implementations-of-imessagefilter_prefiltermessage.md) +- [Item-scrolling a flat list with items of different pixel-height](item-scrolling-a-flat-list-with-items-of-different-pixel-height.md) +- [ObjectDisposedException thrown by WPF spellchecker](objectdisposedexception-thrown-by-wpf-spellchecker.md) +- [WCF binding with the TransportWithMessageCredential security mode](wcf-binding-with-the-transportwithmessagecredential-security-mode.md) +- [WPF Spell Checking fails in unexpected ways](wpf-spell-checking-fail-in-unexpected-ways.md) +- [X509CertificateClaimSet.FindClaims Considers All claimTypes](x509certificateclaimset_findclaims-considers-all-claimtypes.md) + +## .NET Framework 4.6 + +- [AppDomainSetup.DynamicBase is no longer randomized by UseRandomizedStringHashAlgorithm](appdomainsetup_dynamicbase-is-no-longer-randomized-by-userandomizedstringhashalgorithm.md) +- [Calling Attribute.GetCustomAttributes on an indexer property no longer throws AmbiguousMatchException if the ambiguity can be resolved by index's type](calling-attribute_getcustomattributes-on-an-indexer-property-no-longer-throws-ambiguousmatchexception.md) +- [Calling CreateDefaultAuthorizationContext with a null argument has changed](calling-createdefaultauthorizationcontext-with-a-null-argument-has-changed.md) +- [ClickOnce supports SHA-256 on 4.0-targeted apps](clickonce-supports-sha-256-on-4_0-targeted-apps.md) +- [CoerceIsSelectionBoxHighlighted](coerceisselectionboxhighlighted.md) +- [ContentDisposition DateTimes returns slightly different string](contentdisposition-datetimes-returns-slightly-different-string.md) +- [CurrentCulture and CurrentUICulture flow across tasks](currentculture-flows-across-tasks.md) +- [CurrentCulture is not preserved across WPF Dispatcher operations](currentculture-not-preserved-across-wpf-dispatcher-operations.md) +- [Exception message has changed for failed DataContract serialization in case of an unknown type](exception-message-has-changed-for-failed-datacontract-serialization-in-case-of-an-unknown-type.md) +- [HtmlTextWriter does not render `
` element correctly](htmltextwriter-does-not-render-br-element-correctly.md) +- [IL ret not allowed in a try region](il-ret-not-allowed-in-a-try-region.md) +- [Only Tls 1.0, 1.1 and 1.2 protocols supported in System.Net.ServicePointManager and System.Net.Security.SslStream ](only-tls-1_0-1_1-and-1_2-protocols-supported-in-system_net_servicepointmanager-and-system_net_security_sslstream.md) +- [Persian calendar now uses the Hijri solar algorithm](persian-calendar-now-uses-the-hijri-solar-algorithm.md) +- [Reflection objects can no longer be passed from managed code to out-of-process DCOM clients](reflection-objects-can-no-longer-be-passed-from-managed-code-to-out-of-process-dcom-clients.md) +- [TargetFrameworkName for default app domain no longer defaults to null if not set](targetframeworkname-for-default-app-domain-no-longer-defaults-to-null-if-not-set.md) +- [The .NET Framework 4.6 does not use a 4.5.x.x version when registering itself in the registry](the-_net-framework-4_6-does-not-use-a-4_5_x_x-version-when-registering-itself-in-the-registry.md) +- [WPF layout rounding of margins has changed ](wpf-layout-rounding-of-margins-has-changed.md) +- [WPF spell checking in text-enabled controls will not work in Windows 10 for languages not in the OS's input language list](wpf-spell-checking-in-text-enabled-controls-will-not-work-in-windows-10-for-languages-not-in-the-input-language-list.md) +- [WPF windows are rendered without clipping when extending outside a single monitor](wpf-windows-are-rendered-without-clipping-when-extending-outside-a-single-monitor.md) +- [X509Certificate2.ToString(bool) does not throw now when .NET cannot handle the certificate](x509certificate2_tostring(bool)-does-not-throw-now-when-_net-cannot-handle-the-certificate.md) +- [XmlWriter throws on invalid surrogate pairs](xmlwriter-throws-on-invalid-surrogate-pairs.md) +- [XSD Schema validation now correctly detects violations of unique constraints if compound keys are used and one key is empty](xsd-schema-validation-now-correctly-detects-violations-of-unique-constraints-if-compound-keys-are-used-and-one-key-is-empty.md) + +## .NET Framework 4.5.2 + +- [ASP.NET MVC now escapes spaces in strings passed in via route parameters](asp_net-mvc-now-escapes-spaces-in-strings-passed-in-via-route-parameters.md) +- [DataObject.GetData now retrieves data as UTF-8](dataobject_getdata-now-retrieves-data-as-utf-8.md) +- [EF no longer throws for QueryViews with specific characteristics](ef-no-longer-throws-for-queryviews-with-specific-characteristics.md) - [No longer able to set EnableViewStateMac to false](no-longer-able-to-set-enableviewstatemac-to-false.md) -- [BlockingCollection<T>.TryTakeFromAny does not throw anymore](blockingcollection_trytakefromany-does-not-throw-anymore.md) -- [XmlSchemaException now sets line positions properly](xmlschemaexception-now-sets-line-positions-properly.md) -- [System.Activities is now APTCA](system_activities-is-now-aptca.md) -- [WorkFlow 3.0 types are obsolete](workflow-3_0-types-are-obsolete.md) -- [Some WorkFlow drag and drop APIs are obsolete](some-workflow-drag-and-drop-apis-are-obsolete.md) -- [New (ambiguous) Dispatcher.Invoke overloads could result in different behavior](new-(ambiguous)-dispatcher_invoke-overloads-could-result-in-different-behavior.md) -- [EncoderParameter ctor is obsolete](encoderparameter-ctor-is-obsolete.md) -- [EF version must match NetFX version](ef-version-must-match-netfx-version.md) -- [Change in behavior for Task.WaitAll methods with time-out arguments](change-in-behavior-for-task_waitall-methods-with-time-out-arguments.md) -- [Change in behavior in Data Definition Language (DDL) APIs](change-in-behavior-in-data-definition-language-(ddl)-apis.md) -- [MachineKey.Encode and MachineKey.Decode methods are now obsolete](machinekey_encode-and-machinekey_decode-methods-are-now-obsolete.md) -- [The Replace method in OData URLs is disabled by default](the-replace-method-in-odata-urls-is-disabled-by-default.md) -- [System.ServiceModel.Web.WebServiceHost object no longer adds a default endpoint](system_servicemodel_web_webservicehost-object-no-longer-adds-a-default-endpoint.md) +- [Opt-in break to revert from different 4.5 SQL generation to simpler 4.0 SQL generation](opt-in-break-to-revert-from-different-4_5-sql-generation-to-simpler-4_0-sql-generation.md) +- [VB.NET no longer supports partial namespace qualification for System.Windows APIs](vb_net-no-longer-supports-partial-namespace-qualification-for-system_windows-apis.md) +- [WPF spawns a wisptis.exe process which can freeze the mouse](wpf-spawns-a-wisptis_exe-process-which-can-freeze-the-mouse.md) + +## .NET Framework 4.5.1 + +- [A ConcurrentDictionary serialized in .NET 4.5 with NetDataContractSerializer cannot be deserialized by .NET 4.5.1 or 4.5.2](a-concurrentdictionary-serialized-in-_net-4_5-with-netdatacontractserializer-cannot-be-deserialized-by-_net-4_5_1-or-4_5_2.md) +- [ADO.NET now attempts to automatically reconnect broken SQL connections](ado_net-now-attempts-to-automatically-reconnect-broken-sql-connections.md) +- [Building an Entity Framework edmx with Visual Studio 2013 can fail with error MSB4062 if using the EntityDeploySplit or EntityClean tasks](building-an-entity-framework-edmx-with-visual-studio-2013-can-fail-with-error-msb4062-if-using-the-entitydeploysplit-or-entityclean-tasks.md) +- [COR_PRF_GC_ROOT_HANDLEs are not being enumerated by profilers](cor_prf_gc_root_handles-are-not-being-enumerated-by-profilers.md) +- [DbParameter.Precision and DbParameter.Scale are now public virtual members](dbparameter_precision-and-dbparameter_scale-are-now-public-virtual-members.md) +- [Deserialization of objects across appdomains can fail](deserialization-of-objects-across-appdomains-can-fail.md) +- [EventListener truncates strings with embedded nulls](eventlistener-truncates-strings-with-embedded-nulls.md) - [EventSource.WriteEvent impls must pass WriteEvent the same parameters that it received (plus ID)](eventsource_writeevent-impls-must-pass-writeevent-the-same-parameters-that-it-received-(plus-id).md) +- [Marshal.SizeOf and Marshal.PtrToStructure overloads break dynamic code](marshal_sizeof-and-marshal_ptrtostructure-overloads-break-dynamic-code.md) - [MinFreeMemoryPercentageToActiveService is now respected](minfreememorypercentagetoactiveservice-is-now-respected.md) -- [XmlTextReader DTD entity expansion is limited to 10,000,000 characters](xmltextreader-dtd-entity-expansion-is-limited-to-10000000-characters.md) -- [XSLT forward compat now works](xslt-forward-compat-now-works.md) -- [XSLT style sheet exception message changed](xslt-style-sheet-exception-message-changed.md) -- [WF serializes Expressions.Literal<T> DateTimes differently now (breaks custom XAML parsers)](wf-serializes-expressions_literal-datetimes-differently.md) -- [New enum values in WPF's PageRangeSelection](new-enum-values-in-wpf's-pagerangeselection.md) -- [WPF DispatcherSynchronizationContext.CreateCopy now returns a new copy instead of the current instance](wpf-dispatchersynchronizationcontext_createcopy-now-returns-a-new-copy-instead-of-the-current-instance.md) -- [System.Threading.Tasks.Task no longer throw ObjectDisposedException after object is disposed](system_threading_tasks_task-no-longer-throw-objectdisposedexception-after-object-is-disposed.md) -- [Different exception handling for ObjectContext.CreateDatabase and DbProviderServices.CreateDatabase methods](different-exception-handling-for-objectcontext_createdatabase-and-dbproviderservices_createdatabase-methods.md) -- [ObjectContext.Translate and ObjectContext.ExecuteStoreQuery now support enum type](objectcontext_translate-and-objectcontext_executestorequery-now-support-enum-type.md) -- [Enumerable.Empty<TResult> always returns cached instance](enumerable_empty-always-returns-cached-instance.md) -- [HttpRequest.ContentEncoding property prohibits UTF7](httprequest_contentencoding-property-prohibits-utf7.md) -- [HttpUtility.JavaScriptStringEncode escapes ampersand](httputility_javascriptstringencode-escapes-ampersand.md) -- [Error codes for maxRequestLength or maxReceivedMessageSize are different](error-codes-for-maxrequestlength-or-maxreceivedmessagesize-are-different.md) -- [EventListener truncates strings with embedded nulls](eventlistener-truncates-strings-with-embedded-nulls.md) -- [WinRT stream adapters no long call FlushAsync automatically on close](winrt-stream-adapters-no-long-call-flushasync-automatically-on-close.md) +- [NetDataContractSerializer fails to deserialize a ConcurrentDictionary serialized with a different .NET version](netdatacontractserializer-fails-to-deserialize-a-concurrentdictionary-serialized-with-a-different-_net-version.md) - [ObsoleteAttribute exports as both ObsoleteAttribute and DeprecatedAttribute in WinMD scenarios](obsoleteattribute-exports-as-both-obsoleteattribute-and-deprecatedattribute-in-winmd-scenarios.md) - [ResolveAssemblyReference task now warns on dependencies with the wrong architecture](resolveassemblyreference-task-now-warns-on-dependencies-with-the-wrong-architecture.md) -- [Opt-in break to revert from different 4.5 SQL generation to simpler 4.0 SQL generation](opt-in-break-to-revert-from-different-4_5-sql-generation-to-simpler-4_0-sql-generation.md) -- [WPF TextBox defaults to undo limit of 100](wpf-textbox-defaults-to-undo-limit-of-100.md) -- [WPF TextBox.Text can be out-of-sync with databinding](wpf-textbox_text-can-be-out-of-sync-with-databinding.md) -- [WinForm's CheckForOverflowUnderflow property is now true for System.Drawing](winform's-checkforoverflowunderflow-property-is-now-true-for-system_drawing.md) -- [List.Sort algorithm changed](list_sort-algorithm-changed.md) -- [Exceptions during unobserved processing in System.Threading.Tasks.Task no longer propagate on finalizer thread](exceptions-during-unobserved-processing-in-system_threading_tasks_task-no-longer-propagate-on-finalizer-thread.md) -- [Compiler support for type forwarding when multi-targeting mscorlib](compiler-support-for-type-forwarding-when-multi-targeting-mscorlib.md) -- [IAsyncResult.CompletedSynchronously property must be correct for the resulting task to complete](iasyncresult_completedsynchronously-property-must-be-correct-for-the-resulting-task-to-complete.md) -- [Log file name created by the ObjectContext.CreateDatabase method has changed to match SQL Server specifications](log-file-name-created-by-the-objectcontext_createdatabase-method-has-changed-to-match-sql-server-specifications.md) -- [Page.LoadComplete event no longer causes System.Web.UI.WebControls.EntityDataSource control to invoke data binding](page_loadcomplete-event-no-longer-causes-system_web_ui_webcontrols_entitydatasource-control-to-invoke-data-binding.md) -- [WebUtility.HtmlDecode no longer decodes invalid input sequences](webutility_htmldecode-no-longer-decodes-invalid-input-sequences.md) -- [WebUtility.HtmlEncode and WebUtility.HtmlDecode round-trip BMP correctly](webutility_htmlencode-and-webutility_htmldecode-round-trip-bmp-correctly.md) +- [Two-way data-binding to a property with a non-public setter is not supported](two-way-data-binding-to-a-property-with-a-non-public-setter-is-not-supported.md) +- [WinRT stream adapters no long call FlushAsync automatically on close](winrt-stream-adapters-no-long-call-flushasync-automatically-on-close.md) + +## .NET Framework 4.5 + +- [Accessing a WPF DataGrid's selected items from a handler of the DataGrid's UnloadingRow event can cause a NullReferenceException](accessing-a-wpf-datagrid's-selected-items-from-a-handler-of-the-datagrid's-unloadingrow-event-can-cause-a-nullreferenceexception.md) - [Apps published with ClickOnce that use a SHA-256 code-signing certificate may fail on Windows 2003](apps-published-with-clickonce-that-use-a-sha-256-code-signing-certificate-may-fail-on-windows-2003.md) -- [Managed browser hosting controls from the .NET Framework 1.1 and 2.0 are blocked](managed-browser-hosting-controls-from-the-_net-framework-1_1-and-2_0-are-blocked.md) -- [Deserialization of objects across appdomains can fail](deserialization-of-objects-across-appdomains-can-fail.md) -- [DbParameter.Precision and DbParameter.Scale are now public virtual members](dbparameter_precision-and-dbparameter_scale-are-now-public-virtual-members.md) -- [EF no longer throws for QueryViews with specific characteristics](ef-no-longer-throws-for-queryviews-with-specific-characteristics.md) -- [SqlConnection can no longer connect to SQL Server 1997 or databases using the VIA adapter](sqlconnection-can-no-longer-connect-to-sql-server-1997-or-databases-using-the-via-adapter.md) -- [SqlBulkCopy uses destination column encoding for strings](sqlbulkcopy-uses-destination-column-encoding-for-strings.md) -- [Sql_variant data uses sql_variant collation rather than database collation](sql_variant-data-uses-sql_variant-collation-rather-than-database-collation.md) -- [DataObject.GetData now retrieves data as UTF-8](dataobject_getdata-now-retrieves-data-as-utf-8.md) - [Assemblies compiled with Regex.CompileToAssembly breaks between 4.0 and 4.5](assemblies-compiled-with-regex_compiletoassembly-breaks-between-4_0-and-4_5.md) -- [TargetFrameworkName for default app domain no longer defaults to null if not set](targetframeworkname-for-default-app-domain-no-longer-defaults-to-null-if-not-set.md) -- [X509Certificate2.ToString(bool) does not throw now when .NET cannot handle the certificate](x509certificate2_tostring(bool)-does-not-throw-now-when-_net-cannot-handle-the-certificate.md) -- [Reflection objects can no longer be passed from managed code to out-of-process DCOM clients](reflection-objects-can-no-longer-be-passed-from-managed-code-to-out-of-process-dcom-clients.md) -- [ContentDisposition DateTimes returns slightly different string](contentdisposition-datetimes-returns-slightly-different-string.md) -- [ClickOnce supports SHA-256 on 4.0-targeted apps](clickonce-supports-sha-256-on-4_0-targeted-apps.md) -- [IL ret not allowed in a try region](il-ret-not-allowed-in-a-try-region.md) -- [XmlWriter throws on invalid surrogate pairs](xmlwriter-throws-on-invalid-surrogate-pairs.md) -- [WorkflowDesigner.Load doesn't remove symbol property](workflowdesigner_load-doesn't-remove-symbol-property.md) -- [SqlConnection.Open fails on Windows 7 with non-IFS Winsock BSP or LSP present](sqlconnection_open-fails-on-windows-7-with-non-ifs-winsock-bsp-or-lsp-present.md) -- [ICommand.CanExecuteChanged event behaviour changed in .NET 4.5](icommand_canexecutechanged-event-behaviour-changed-in-_net-4_5.md) -- [Some .NET APIs cause first chance (handled) EntryPointNotFoundExceptions](some-_net-apis-cause-first-chance-(handled)-entrypointnotfoundexceptions.md) -- [Scrolling a WPF TreeView or grouped ListBox in a VirtualizingStackPanel can cause a hang](scrolling-a-wpf-treeview-or-grouped-listbox-in-a-virtualizingstackpanel-can-cause-a-hang.md) -- [WPF spawns a wisptis.exe process which can freeze the mouse](wpf-spawns-a-wisptis_exe-process-which-can-freeze-the-mouse.md) -- [Unexpected InvalidCastException from InvokeMethod activity in WF4](unexpected-invalidcastexception-from-invokemethod-activity-in-wf4.md) -- [Type.IsAssignableFrom returns wrong result for generic variables with constraints](type_isassignablefrom-returns-wrong-result-for-generic-variables-with-constraints.md) -- [WPF Aero2 and AeroLite themes toggle button doesn't show any state](wpf-aero2-and-aerolite-themes-toggle-button-doesn't-show-any-state.md) -- [EntityFramework 6.0 loads very slowly in apps launched from Visual Studio](entityframework-6_0-loads-very-slowly-in-apps-launched-from-visual-studio.md) -- [Multi-line ASP.Net TextBox spacing changed when using AntiXSSEncoder](multi-line-asp_net-textbox-spacing-changed-when-using-antixssencoder.md) -- [Linq to EF Join throws ArgumentOutOfRangeException](linq-to-ef-join-throws-argumentoutofrangeexception.md) -- [XmlSerializer serializes fields differently in 4.5](xmlserializer-serializes-fields-differently-in-4_5.md) -- [ConcurrentQueue<T>.TryPeek can return an erroneous null via its out parameter](concurrentqueue_trypeek-can-return-an-erroneous-null-via-its-out-parameter.md) -- [Profiling ASP.Net MVC4 apps can lead to Fatal Execution Engine Error](profiling-asp_net-mvc4-apps-can-lead-to-fatal-execution-engine-error.md) -- [Non-pooled SQL connections will leak memory if not explicitly disposed](non-pooled-sql-connections-will-leak-memory-if-not-explicitly-disposed.md) -- [Multiple items in a single TableLayoutPanel cell may be rearranged](multiple-items-in-a-single-tablelayoutpanel-cell-may-be-rearranged.md) +- [BinaryFormatter can fail to find type from LoadFrom context](binaryformatter-can-fail-to-find-type-from-loadfrom-context.md) - [Binding a WPF selector property (such as 'SelectedItem') to a static property does not work](binding-a-wpf-selector-property-(such-as-'selecteditem')-to-a-static-property-does-not-work.md) -- [Foreach iterator variable is now scoped within the iteration, so closure capturing semantics are different (in C#5)](foreach-iterator-variable-is-now-scoped-within-the-iteration.md) -- [HtmlTextWriter does not render `
` element correctly](htmltextwriter-does-not-render-br-element-correctly.md) -- [ListBoxItem IsSelected binding issue with ObservableCollection<T>.Move](listboxitem-isselected-binding-issue-with-observablecollection_move.md) -- [Right clicking on a WPF DataGrid row header changes the DataGrid selection](right-clicking-on-a-wpf-datagrid-row-header-changes-the-datagrid-selection.md) +- [BlockingCollection<T>.TryTakeFromAny does not throw anymore](blockingcollection_trytakefromany-does-not-throw-anymore.md) +- [Calling DataGrid.CommitEdit from a CellEditEnding handler drops focus](calling-datagrid_commitedit-from-a-celleditending-handler-drops-focus.md) - [Calling Items.Refresh on a WPF ListBox, ListView, or DataGrid with items selected can cause duplicate items to appear in the element](calling-items_refresh-on-a-wpf-listbox-or-listview-or-datagrid-with-items-selected-can-cause-duplicate-items-to-appear-in-the-element.md) +- [Change in behavior for Task.WaitAll methods with time-out arguments](change-in-behavior-for-task_waitall-methods-with-time-out-arguments.md) +- [Change in behavior in Data Definition Language (DDL) APIs](change-in-behavior-in-data-definition-language-(ddl)-apis.md) +- [Compiler support for type forwarding when multi-targeting mscorlib](compiler-support-for-type-forwarding-when-multi-targeting-mscorlib.md) +- [ConcurrentQueue<T>.TryPeek can return an erroneous null via its out parameter](concurrentqueue_trypeek-can-return-an-erroneous-null-via-its-out-parameter.md) +- [Different exception handling for ObjectContext.CreateDatabase and DbProviderServices.CreateDatabase methods](different-exception-handling-for-objectcontext_createdatabase-and-dbproviderservices_createdatabase-methods.md) +- [EF version must match NetFX version](ef-version-must-match-netfx-version.md) +- [EncoderParameter ctor is obsolete](encoderparameter-ctor-is-obsolete.md) +- [EntityFramework 6.0 loads very slowly in apps launched from Visual Studio](entityframework-6_0-loads-very-slowly-in-apps-launched-from-visual-studio.md) +- [Enumerable.Empty<TResult> always returns cached instance](enumerable_empty-always-returns-cached-instance.md) +- [Error codes for maxRequestLength or maxReceivedMessageSize are different](error-codes-for-maxrequestlength-or-maxreceivedmessagesize-are-different.md) - [ETW EventListeners do not capture events from providers with explicit keywords (like the TPL provider)](etw-eventlisteners-do-not-capture-events-from-providers-with-explicit-keywords.md) -- [Exception message has changed for failed DataContract serialization in case of an unknown type](exception-message-has-changed-for-failed-datacontract-serialization-in-case-of-an-unknown-type.md) -- [Accessing a WPF DataGrid's selected items from a handler of the DataGrid's UnloadingRow event can cause a NullReferenceException](accessing-a-wpf-datagrid's-selected-items-from-a-handler-of-the-datagrid's-unloadingrow-event-can-cause-a-nullreferenceexception.md) -- [Building an Entity Framework edmx with Visual Studio 2013 can fail with error MSB4062 if using the EntityDeploySplit or EntityClean tasks](building-an-entity-framework-edmx-with-visual-studio-2013-can-fail-with-error-msb4062-if-using-the-entitydeploysplit-or-entityclean-tasks.md) -- [NetDataContractSerializer fails to deserialize a ConcurrentDictionary serialized with a different .NET version](netdatacontractserializer-fails-to-deserialize-a-concurrentdictionary-serialized-with-a-different-_net-version.md) -- [XSD Schema validation now correctly detects violations of unique constraints if compound keys are used and one key is empty](xsd-schema-validation-now-correctly-detects-violations-of-unique-constraints-if-compound-keys-are-used-and-one-key-is-empty.md) -- [Calling Attribute.GetCustomAttributes on an indexer property no longer throws AmbiguousMatchException if the ambiguity can be resolved by index's type](calling-attribute_getcustomattributes-on-an-indexer-property-no-longer-throws-ambiguousmatchexception.md) -- [Intermittently unable to scroll to bottom item in ItemsControls (like ListBox and DataGrid) when using custom DataTemplates](intermittently-unable-to-scroll-to-bottom-item-in-itemscontrols-when-using-customer-datatemplates.md) +- [Exceptions during unobserved processing in System.Threading.Tasks.Task no longer propagate on finalizer thread](exceptions-during-unobserved-processing-in-system_threading_tasks_task-no-longer-propagate-on-finalizer-thread.md) +- [FlowDocument may show an extra line of text](flowdocument-may-show-an-extra-line-of-text.md) +- [Foreach iterator variable is now scoped within the iteration, so closure capturing semantics are different (in C#5)](foreach-iterator-variable-is-now-scoped-within-the-iteration.md) - [GlyphRun.ComputeInkBoundingBox() and FormattedText.Extent return different values beginning in .NET 4.5](glyphrun_computeinkboundingbox()-and-formattedtext_extent-return-different-values-beginning-in-_net-4_5.md) -- [AppDomainSetup.DynamicBase is no longer randomized by UseRandomizedStringHashAlgorithm](appdomainsetup_dynamicbase-is-no-longer-randomized-by-userandomizedstringhashalgorithm.md) - [GridViews with AllowCustomPaging set to true may fire the PageIndexChanging event when leaving the final page of the view](gridviews-with-allowcustompaging-set-to-true-may-fire-the-pageindexchanging-event-when-leaving-the-final-page-of-the-view.md) -- [COR_PRF_GC_ROOT_HANDLEs are not being enumerated by profilers](cor_prf_gc_root_handles-are-not-being-enumerated-by-profilers.md) +- [HttpRequest.ContentEncoding property prohibits UTF7](httprequest_contentencoding-property-prohibits-utf7.md) +- [HttpUtility.JavaScriptStringEncode escapes ampersand](httputility_javascriptstringencode-escapes-ampersand.md) +- [IAsyncResult.CompletedSynchronously property must be correct for the resulting task to complete](iasyncresult_completedsynchronously-property-must-be-correct-for-the-resulting-task-to-complete.md) +- [ICommand.CanExecuteChanged event behaviour changed in .NET 4.5](icommand_canexecutechanged-event-behaviour-changed-in-_net-4_5.md) +- [Intermittently unable to scroll to bottom item in ItemsControls (like ListBox and DataGrid) when using custom DataTemplates](intermittently-unable-to-scroll-to-bottom-item-in-itemscontrols-when-using-customer-datatemplates.md) - [IPad should not be used in custom capabilities file because it is now a browser capability](ipad-should-not-be-used-in-custom-capabilities-file-because-it-is-now-a-browser-capability.md) -- [ADO.NET now attempts to automatically reconnect broken SQL connections](ado_net-now-attempts-to-automatically-reconnect-broken-sql-connections.md) -- [FlowDocument may show an extra line of text](flowdocument-may-show-an-extra-line-of-text.md) -- [System.Uri.IsWellFormedUriString method returns false for relative URIs with a colon char in first segment](system_uri_iswellformeduristring-method-returns-false-for-relative-uris-with-a-colon-char-in-first-segment.md) -- [The .NET Framework 4.6 does not use a 4.5.x.x version when registering itself in the registry](the-_net-framework-4_6-does-not-use-a-4_5_x_x-version-when-registering-itself-in-the-registry.md) +- [Items.Clear does not remove duplicates from SelectedItems](items_clear-does-not-remove-duplicates-from-selecteditems.md) +- [Linq to EF Join throws ArgumentOutOfRangeException](linq-to-ef-join-throws-argumentoutofrangeexception.md) +- [List.Sort algorithm changed](list_sort-algorithm-changed.md) +- [List<T>.ForEach can throw exception when modifying list item](list_foreach-can-throw-exception-when-modifying-list-item.md) +- [ListBoxItem IsSelected binding issue with ObservableCollection<T>.Move](listboxitem-isselected-binding-issue-with-observablecollection_move.md) +- [Log file name created by the ObjectContext.CreateDatabase method has changed to match SQL Server specifications](log-file-name-created-by-the-objectcontext_createdatabase-method-has-changed-to-match-sql-server-specifications.md) +- [MachineKey.Encode and MachineKey.Decode methods are now obsolete](machinekey_encode-and-machinekey_decode-methods-are-now-obsolete.md) +- [Managed browser hosting controls from the .NET Framework 1.1 and 2.0 are blocked](managed-browser-hosting-controls-from-the-_net-framework-1_1-and-2_0-are-blocked.md) +- [MEF catalogs implement IEnumerable and therefore can no longer be used to create a serializer](mef-catalogs-implement-ienumerable-and-therefore-can-no-longer-be-used-to-create-a-serializer.md) +- [Missing Target Framework Moniker results in 4.0 behavior](missing-target-framework-moniker-results-in-4_0-behavior.md) +- [Multi-line ASP.Net TextBox spacing changed when using AntiXSSEncoder](multi-line-asp_net-textbox-spacing-changed-when-using-antixssencoder.md) +- [Multiple items in a single TableLayoutPanel cell may be rearranged](multiple-items-in-a-single-tablelayoutpanel-cell-may-be-rearranged.md) +- [New (ambiguous) Dispatcher.Invoke overloads could result in different behavior](new-(ambiguous)-dispatcher_invoke-overloads-could-result-in-different-behavior.md) +- [New enum values in WPF's PageRangeSelection](new-enum-values-in-wpf's-pagerangeselection.md) +- [Non-pooled SQL connections will leak memory if not explicitly disposed](non-pooled-sql-connections-will-leak-memory-if-not-explicitly-disposed.md) - [Null coalescer values are not visible in debugger until one step later](null-coalescer-values-are-not-visible-in-debugger-until-one-step-later.md) -- [Calling DataGrid.CommitEdit from a CellEditEnding handler drops focus](calling-datagrid_commitedit-from-a-celleditending-handler-drops-focus.md) -- [ASP.NET MVC now escapes spaces in strings passed in via route parameters](asp_net-mvc-now-escapes-spaces-in-strings-passed-in-via-route-parameters.md) -- [VB.NET no longer supports partial namespace qualification for System.Windows APIs](vb_net-no-longer-supports-partial-namespace-qualification-for-system_windows-apis.md) -- [Sharing session state with Asp.Net StateServer requires all servers in the web farm to use the same .NET Framework version](sharing-session-state-with-asp_net-stateserver-requires-all-servers-in-the-web-farm-to-use-the-same-_net-framework-version.md) -- [Two-way data-binding to a property with a non-public setter is not supported](two-way-data-binding-to-a-property-with-a-non-public-setter-is-not-supported.md) -- [Marshal.SizeOf and Marshal.PtrToStructure overloads break dynamic code](marshal_sizeof-and-marshal_ptrtostructure-overloads-break-dynamic-code.md) +- [ObjectContext.Translate and ObjectContext.ExecuteStoreQuery now support enum type](objectcontext_translate-and-objectcontext_executestorequery-now-support-enum-type.md) +- [Page.LoadComplete event no longer causes System.Web.UI.WebControls.EntityDataSource control to invoke data binding](page_loadcomplete-event-no-longer-causes-system_web_ui_webcontrols_entitydatasource-control-to-invoke-data-binding.md) - [PreviewLostKeyboardFocus is called repeatedly if its handler shows a Windows Forms message box](previewlostkeyboardfocus-is-called-repeatedly-if-its-handler-shows-a-message-box.md) -- [A ConcurrentDictionary serialized in .NET 4.5 with NetDataContractSerializer cannot be deserialized by .NET 4.5.1 or 4.5.2](a-concurrentdictionary-serialized-in-_net-4_5-with-netdatacontractserializer-cannot-be-deserialized-by-_net-4_5_1-or-4_5_2.md) -- [Persian calendar now uses the Hijri solar algorithm](persian-calendar-now-uses-the-hijri-solar-algorithm.md) -- [WPF windows are rendered without clipping when extending outside a single monitor](wpf-windows-are-rendered-without-clipping-when-extending-outside-a-single-monitor.md) -- [WPF spell checking in text-enabled controls will not work in Windows 10 for languages not in the OS's input language list](wpf-spell-checking-in-text-enabled-controls-will-not-work-in-windows-10-for-languages-not-in-the-input-language-list.md) -- [Only Tls 1.0, 1.1 and 1.2 protocols supported in System.Net.ServicePointManager and System.Net.Security.SslStream ](only-tls-1_0-1_1-and-1_2-protocols-supported-in-system_net_servicepointmanager-and-system_net_security_sslstream.md) -- [Calling CreateDefaultAuthorizationContext with a null argument has changed](calling-createdefaultauthorizationcontext-with-a-null-argument-has-changed.md) -- [WPF layout rounding of margins has changed ](wpf-layout-rounding-of-margins-has-changed.md) -- [XmlSerializer fails while serializing a type that hides an accessible member with an inaccessible one](xmlserializer-fails-while-serializing-a-type-that-hides-an-accessible-member-with-an-inaccessible-one.md) +- [Profiling ASP.Net MVC4 apps can lead to Fatal Execution Engine Error](profiling-asp_net-mvc4-apps-can-lead-to-fatal-execution-engine-error.md) +- [Right clicking on a WPF DataGrid row header changes the DataGrid selection](right-clicking-on-a-wpf-datagrid-row-header-changes-the-datagrid-selection.md) +- [Scrolling a WPF TreeView or grouped ListBox in a VirtualizingStackPanel can cause a hang](scrolling-a-wpf-treeview-or-grouped-listbox-in-a-virtualizingstackpanel-can-cause-a-hang.md) +- [Sharing session state with Asp.Net StateServer requires all servers in the web farm to use the same .NET Framework version](sharing-session-state-with-asp_net-stateserver-requires-all-servers-in-the-web-farm-to-use-the-same-_net-framework-version.md) +- [SoapFormatter cannot deserialize Hashtable and similar ordered collection objects](soapformatter-cannot-deserialize-hashtable-and-similar-ordered-collection-objects.md) +- [Some .NET APIs cause first chance (handled) EntryPointNotFoundExceptions](some-_net-apis-cause-first-chance-(handled)-entrypointnotfoundexceptions.md) +- [Some WorkFlow drag and drop APIs are obsolete](some-workflow-drag-and-drop-apis-are-obsolete.md) +- [Sql_variant data uses sql_variant collation rather than database collation](sql_variant-data-uses-sql_variant-collation-rather-than-database-collation.md) +- [SqlBulkCopy uses destination column encoding for strings](sqlbulkcopy-uses-destination-column-encoding-for-strings.md) +- [SqlConnection can no longer connect to SQL Server 1997 or databases using the VIA adapter](sqlconnection-can-no-longer-connect-to-sql-server-1997-or-databases-using-the-via-adapter.md) +- [SqlConnection.Open fails on Windows 7 with non-IFS Winsock BSP or LSP present](sqlconnection_open-fails-on-windows-7-with-non-ifs-winsock-bsp-or-lsp-present.md) +- [System.Activities is now APTCA](system_activities-is-now-aptca.md) +- [System.Net.PeerToPeer.Collaboration unavailable on Windows 8](system_net_peertopeer_collaboration-unavailable-on-windows-8.md) +- [System.ServiceModel.Web.WebServiceHost object no longer adds a default endpoint](system_servicemodel_web_webservicehost-object-no-longer-adds-a-default-endpoint.md) +- [System.Threading.Tasks.Task no longer throw ObjectDisposedException after object is disposed](system_threading_tasks_task-no-longer-throw-objectdisposedexception-after-object-is-disposed.md) +- [System.Uri escaping now supports RFC 3986 (http://tools.ietf.org/html/rfc3986)](system_uri-escaping-now-supports-rfc-3986.md) +- [System.Uri parsing adheres to RFC 3987](system_uri-parsing-adheres-to-rfc-3987.md) +- [System.Uri.IsWellFormedUriString method returns false for relative URIs with a colon char in first segment](system_uri_iswellformeduristring-method-returns-false-for-relative-uris-with-a-colon-char-in-first-segment.md) +- [The Replace method in OData URLs is disabled by default](the-replace-method-in-odata-urls-is-disabled-by-default.md) +- [Type.IsAssignableFrom returns wrong result for generic variables with constraints](type_isassignablefrom-returns-wrong-result-for-generic-variables-with-constraints.md) +- [Unexpected InvalidCastException from InvokeMethod activity in WF4](unexpected-invalidcastexception-from-invokemethod-activity-in-wf4.md) +- [WebUtility.HtmlDecode no longer decodes invalid input sequences](webutility_htmldecode-no-longer-decodes-invalid-input-sequences.md) +- [WebUtility.HtmlEncode and WebUtility.HtmlDecode round-trip BMP correctly](webutility_htmlencode-and-webutility_htmldecode-round-trip-bmp-correctly.md) +- [WF serializes Expressions.Literal<T> DateTimes differently now (breaks custom XAML parsers)](wf-serializes-expressions_literal-datetimes-differently.md) +- [WinForm's CheckForOverflowUnderflow property is now true for System.Drawing](winform's-checkforoverflowunderflow-property-is-now-true-for-system_drawing.md) +- [WorkFlow 3.0 types are obsolete](workflow-3_0-types-are-obsolete.md) +- [WorkflowDesigner.Load doesn't remove symbol property](workflowdesigner_load-doesn't-remove-symbol-property.md) +- [WPF Aero2 and AeroLite themes toggle button doesn't show any state](wpf-aero2-and-aerolite-themes-toggle-button-doesn't-show-any-state.md) +- [WPF DataTemplate elements are now visible to UIA](wpf-datatemplate-elements-are-now-visible-to-uia.md) +- [WPF DispatcherSynchronizationContext.CreateCopy now returns a new copy instead of the current instance](wpf-dispatchersynchronizationcontext_createcopy-now-returns-a-new-copy-instead-of-the-current-instance.md) +- [WPF TextBox defaults to undo limit of 100](wpf-textbox-defaults-to-undo-limit-of-100.md) +- [WPF TextBox selected text appears a different color when the text box is inactive](wpf-textbox-selected-text-appears-a-different-color-when-the-text-box-is-inactive.md) +- [WPF TextBox.Text can be out-of-sync with databinding](wpf-textbox_text-can-be-out-of-sync-with-databinding.md) - [WPF TreeViewItem must be used within a TreeView](wpf-treeviewitem-must-be-used-within-a-treeview.md) -- [WCF binding with the TransportWithMessageCredential security mode](wcf-binding-with-the-transportwithmessagecredential-security-mode.md) -- [X509CertificateClaimSet.FindClaims Considers All claimTypes](x509certificateclaimset_findclaims-considers-all-claimtypes.md) -- [Application.FilterMessage no longer throws for re-entrant implementations of IMessageFilter.PreFilterMessage](application_filtermessage-no-longer-throws-for-re-entrant-implementations-of-imessagefilter_prefiltermessage.md) -- [CurrentCulture is not preserved across WPF Dispatcher operations](currentculture-not-preserved-across-wpf-dispatcher-operations.md) -- [CurrentCulture and CurrentUICulture flow across tasks](currentculture-flows-across-tasks.md) -- [BinaryFormatter can fail to find type from LoadFrom context](binaryformatter-can-fail-to-find-type-from-loadfrom-context.md) -- [RSACng now correctly loads RSA keys of non-standard key size](rsacng-now-correctly-loads-rsa-keys-of-non-standard-keysize.md) -- [Remove Ssl3 from the WCF TransportDefaults](remove-ssl3-from-the-wcf-transportdefaults.md) -- [Incorrect implementation of MemberDescriptor.Equals](incorrect-implementation-of-memberdescriptor_equals.md) -- [DataGridCellsPanel.BringIndexIntoView throws ArgumentOutOfRangeException](datagridcellspanel_bringintoview-throws-argumentoutofrangeexception.md) -- [Item-scrolling a flat list with items of different pixel-height](item-scrolling-a-flat-list-with-items-of-different-pixel-height.md) -- [Horizontal scrolling and virtualization](horizontal-scrolling-and-virtualization.md) -- [Items.Clear does not remove duplicates from SelectedItems](items_clear-does-not-remove-duplicates-from-selecteditems.md) -- [WPF Spell Checking fails in unexpected ways](wpf-spell-checking-fail-in-unexpected-ways.md) -- [SignedXml and EncryptedXml Breaking Changes](xml-documents-are-now-consider-invalid-if-they-contains-transforms-that-are-not-allowed-on-digital-signatures.md) -- [.Net Framework now supports Unicode standard version 8.0 categories](unicode-data-now-support-standard-v8_0-categories.md) -- [Path colon checks are stricter](path-colon-checks-are-stricter.md) -- [RSACng.VerifyHash now returns False for any verification failure](rsacng_verifyhash-now-returns-false-for-any-verification-failure.md) -- [Connection pool blocking period for Azure SQL databases is removed](connection-pool-blocking-period-for-azure-sql-databases-is-removed.md) -- [Changing the IsEnabled property of the parent of a TextBlock control affects any child controls](changing-the-isenabled-property-of-the-parent-of-a-textblock-control-affects-any-child-controls.md) -- [Long path support](long-path-support.md) -- [Changes in path normalization](changes-in-path-normalization.md) -- [Calls to ClaimsIdentity constructors](calls-to-claimsidentity-constructors.md) -- [AesCrytpServiceProvider decryptor provides a reusable transform](aescryptoserviceprovider-decryptor-provides-a-reusable-transform.md) -- [WCF transport security supports certificates stored using CNG](wcf-transport-security-supports-certificates-stored-using-cng.md) -- [WCF message security now is able to use TLS1.1 and TLS1.2](wcf-message-security-unable-to-use-tls1_1-and-tls1_2.md) -- [Serialization of control characters with DataContractJsonSerializer is now compatible with ECMAScript V6 and V8](serialization-of-control-characters-with-datacontractjsonserializer-is-now-compatible-with-ecmascript-v6-and-v8.md) -- [Throttle concurrent requests per session](throttle-concurrent-requests-per-session.md) -- [Workflow now throws original exception instead of NullReferenceException in some cases](workflow-now-throws-original-exception-instead-of-nullreferenceexception-in-some-cases.md) -- [WPF Grid allocation of space to star-columns](wpf-grid-allocation-of-space-to-star-columns.md) -- [WPF Pointer-Based Touch Stack](wpf-pointer-based-touch-stack.md) -- [WPF Printing Stack Update](wpf-printing-stack-update.md) -- [ObjectDisposedException thrown by WPF spellchecker](objectdisposedexception-thrown-by-wpf-spellchecker.md) -- [RibbonGroup background is set to transparent in localized builds](ribbongroup-background-is-set-to-transparent-in-localized-builds.md) -- [Workflow checksums changed from MD5 to SHA1](workflow-checksums-changed-from-md5-to-sha1.md) -- [NullReferenceException in exception handling code from ImageSourceConverter.ConvertFrom](wpf-nullreferenceexception-in-exception-handling-code-from-imagesourceconverter_convertfrom.md) -- [CspParameters.ParentWindowHandle now expects HWND value](cspparameters_parentwindowhandle-now-expects-hwnd-value.md) -- [CoerceIsSelectionBoxHighlighted](coerceisselectionboxhighlighted.md) -- [Workflow SQL persistence adds primary key clusters and disallows null values in some columns](workflow-sql-persistence-adds-primary-key-clusters-and-disallows-null-values-in-some-columns.md) -- [SslStream supports TLS Alerts](sslstream-support-for-tls-alerts.md) +- [XML schema validation is stricter](xml-schema-validation-is-stricter.md) +- [XmlSchemaException now sets line positions properly](xmlschemaexception-now-sets-line-positions-properly.md) +- [XmlSerializer fails while serializing a type that hides an accessible member with an inaccessible one](xmlserializer-fails-while-serializing-a-type-that-hides-an-accessible-member-with-an-inaccessible-one.md) +- [XmlSerializer serializes fields differently in 4.5](xmlserializer-serializes-fields-differently-in-4_5.md) +- [XmlTextReader DTD entity expansion is limited to 10,000,000 characters](xmltextreader-dtd-entity-expansion-is-limited-to-10000000-characters.md) +- [XSLT forward compat now works](xslt-forward-compat-now-works.md) +- [XSLT style sheet exception message changed](xslt-style-sheet-exception-message-changed.md) + +This file was generated by [Breaking Change Readme Generator](https://github.com/Microsoft/dotnet/blob/master/src/bc-readme-gen). diff --git a/Documentation/breaking-changes/a-concurrentdictionary-serialized-in-_net-4_5-with-netdatacontractserializer-cannot-be-deserialized-by-_net-4_5_1-or-4_5_2.md b/Documentation/compatibility/a-concurrentdictionary-serialized-in-_net-4_5-with-netdatacontractserializer-cannot-be-deserialized-by-_net-4_5_1-or-4_5_2.md similarity index 90% rename from Documentation/breaking-changes/a-concurrentdictionary-serialized-in-_net-4_5-with-netdatacontractserializer-cannot-be-deserialized-by-_net-4_5_1-or-4_5_2.md rename to Documentation/compatibility/a-concurrentdictionary-serialized-in-_net-4_5-with-netdatacontractserializer-cannot-be-deserialized-by-_net-4_5_1-or-4_5_2.md index de8513a0f..28fb21683 100644 --- a/Documentation/breaking-changes/a-concurrentdictionary-serialized-in-_net-4_5-with-netdatacontractserializer-cannot-be-deserialized-by-_net-4_5_1-or-4_5_2.md +++ b/Documentation/compatibility/a-concurrentdictionary-serialized-in-_net-4_5-with-netdatacontractserializer-cannot-be-deserialized-by-_net-4_5_1-or-4_5_2.md @@ -1,4 +1,4 @@ -## 133: A ConcurrentDictionary serialized in .NET 4.5 with NetDataContractSerializer cannot be deserialized by .NET 4.5.1 or 4.5.2 +## A ConcurrentDictionary serialized in .NET 4.5 with NetDataContractSerializer cannot be deserialized by .NET 4.5.1 or 4.5.2 ### Scope Minor @@ -43,3 +43,4 @@ Core Should be fairly easy to detect ConcurrentDictionary objects being serialized/deserialized by a NetDataContractSerializer. --> + diff --git a/Documentation/breaking-changes/accessing-a-wpf-datagrid's-selected-items-from-a-handler-of-the-datagrid's-unloadingrow-event-can-cause-a-nullreferenceexception.md b/Documentation/compatibility/accessing-a-wpf-datagrid's-selected-items-from-a-handler-of-the-datagrid's-unloadingrow-event-can-cause-a-nullreferenceexception.md similarity index 81% rename from Documentation/breaking-changes/accessing-a-wpf-datagrid's-selected-items-from-a-handler-of-the-datagrid's-unloadingrow-event-can-cause-a-nullreferenceexception.md rename to Documentation/compatibility/accessing-a-wpf-datagrid's-selected-items-from-a-handler-of-the-datagrid's-unloadingrow-event-can-cause-a-nullreferenceexception.md index 2b59d89f0..4862ffbfe 100644 --- a/Documentation/breaking-changes/accessing-a-wpf-datagrid's-selected-items-from-a-handler-of-the-datagrid's-unloadingrow-event-can-cause-a-nullreferenceexception.md +++ b/Documentation/compatibility/accessing-a-wpf-datagrid's-selected-items-from-a-handler-of-the-datagrid's-unloadingrow-event-can-cause-a-nullreferenceexception.md @@ -1,4 +1,4 @@ -## 107: Accessing a WPF DataGrid's selected items from a handler of the DataGrid's UnloadingRow event can cause a NullReferenceException +## Accessing a WPF DataGrid's selected items from a handler of the DataGrid's UnloadingRow event can cause a NullReferenceException ### Scope Minor @@ -27,3 +27,5 @@ This issue has been fixed in the .NET Framework 4.6 and may be addressed by upgr ### Category Windows Presentation Foundation (WPF) + + diff --git a/Documentation/breaking-changes/ado_net-now-attempts-to-automatically-reconnect-broken-sql-connections.md b/Documentation/compatibility/ado_net-now-attempts-to-automatically-reconnect-broken-sql-connections.md similarity index 94% rename from Documentation/breaking-changes/ado_net-now-attempts-to-automatically-reconnect-broken-sql-connections.md rename to Documentation/compatibility/ado_net-now-attempts-to-automatically-reconnect-broken-sql-connections.md index ea7425c8b..c8ff781ba 100644 --- a/Documentation/breaking-changes/ado_net-now-attempts-to-automatically-reconnect-broken-sql-connections.md +++ b/Documentation/compatibility/ado_net-now-attempts-to-automatically-reconnect-broken-sql-connections.md @@ -1,4 +1,4 @@ -## 119: ADO.NET now attempts to automatically reconnect broken SQL connections +## ADO.NET now attempts to automatically reconnect broken SQL connections ### Scope Edge @@ -42,4 +42,4 @@ Data Single-diagnostic compilation action analyzer --> - + diff --git a/Documentation/breaking-changes/aescryptoserviceprovider-decryptor-provides-a-reusable-transform.md b/Documentation/compatibility/aescryptoserviceprovider-decryptor-provides-a-reusable-transform.md similarity index 94% rename from Documentation/breaking-changes/aescryptoserviceprovider-decryptor-provides-a-reusable-transform.md rename to Documentation/compatibility/aescryptoserviceprovider-decryptor-provides-a-reusable-transform.md index ae10715f4..061fe7eff 100644 --- a/Documentation/breaking-changes/aescryptoserviceprovider-decryptor-provides-a-reusable-transform.md +++ b/Documentation/compatibility/aescryptoserviceprovider-decryptor-provides-a-reusable-transform.md @@ -1,4 +1,4 @@ -## 165: AesCrytpServiceProvider decryptor provides a reusable transform +## AesCrytpServiceProvider decryptor provides a reusable transform ### Scope Minor @@ -46,4 +46,4 @@ Core 205301 --> - + diff --git a/Documentation/breaking-changes/appdomainsetup_dynamicbase-is-no-longer-randomized-by-userandomizedstringhashalgorithm.md b/Documentation/compatibility/appdomainsetup_dynamicbase-is-no-longer-randomized-by-userandomizedstringhashalgorithm.md similarity index 90% rename from Documentation/breaking-changes/appdomainsetup_dynamicbase-is-no-longer-randomized-by-userandomizedstringhashalgorithm.md rename to Documentation/compatibility/appdomainsetup_dynamicbase-is-no-longer-randomized-by-userandomizedstringhashalgorithm.md index 2ed99af2c..6bb7f5d6d 100644 --- a/Documentation/breaking-changes/appdomainsetup_dynamicbase-is-no-longer-randomized-by-userandomizedstringhashalgorithm.md +++ b/Documentation/compatibility/appdomainsetup_dynamicbase-is-no-longer-randomized-by-userandomizedstringhashalgorithm.md @@ -1,4 +1,4 @@ -## 115: AppDomainSetup.DynamicBase is no longer randomized by UseRandomizedStringHashAlgorithm +## AppDomainSetup.DynamicBase is no longer randomized by UseRandomizedStringHashAlgorithm ### Scope Edge @@ -29,3 +29,4 @@ Core Should be easy to look for DynamicBase use while UseRandomizedStringHashAlgorithm is set --> + diff --git a/Documentation/breaking-changes/application_filtermessage-no-longer-throws-for-re-entrant-implementations-of-imessagefilter_prefiltermessage.md b/Documentation/compatibility/application_filtermessage-no-longer-throws-for-re-entrant-implementations-of-imessagefilter_prefiltermessage.md similarity index 92% rename from Documentation/breaking-changes/application_filtermessage-no-longer-throws-for-re-entrant-implementations-of-imessagefilter_prefiltermessage.md rename to Documentation/compatibility/application_filtermessage-no-longer-throws-for-re-entrant-implementations-of-imessagefilter_prefiltermessage.md index e0a0e968d..31cd68ed5 100644 --- a/Documentation/breaking-changes/application_filtermessage-no-longer-throws-for-re-entrant-implementations-of-imessagefilter_prefiltermessage.md +++ b/Documentation/compatibility/application_filtermessage-no-longer-throws-for-re-entrant-implementations-of-imessagefilter_prefiltermessage.md @@ -1,4 +1,4 @@ -## 144: Application.FilterMessage no longer throws for re-entrant implementations of IMessageFilter.PreFilterMessage +## Application.FilterMessage no longer throws for re-entrant implementations of IMessageFilter.PreFilterMessage ### Scope Edge @@ -37,4 +37,4 @@ Windows Forms more useful, even though it would be easier to be 'precise' if we analyzed the interface implementer. --> - + diff --git a/Documentation/breaking-changes/apps-published-with-clickonce-that-use-a-sha-256-code-signing-certificate-may-fail-on-windows-2003.md b/Documentation/compatibility/apps-published-with-clickonce-that-use-a-sha-256-code-signing-certificate-may-fail-on-windows-2003.md similarity index 91% rename from Documentation/breaking-changes/apps-published-with-clickonce-that-use-a-sha-256-code-signing-certificate-may-fail-on-windows-2003.md rename to Documentation/compatibility/apps-published-with-clickonce-that-use-a-sha-256-code-signing-certificate-may-fail-on-windows-2003.md index e0e3c91b0..6eaff92f2 100644 --- a/Documentation/breaking-changes/apps-published-with-clickonce-that-use-a-sha-256-code-signing-certificate-may-fail-on-windows-2003.md +++ b/Documentation/compatibility/apps-published-with-clickonce-that-use-a-sha-256-code-signing-certificate-may-fail-on-windows-2003.md @@ -1,4 +1,4 @@ -## 63: Apps published with ClickOnce that use a SHA-256 code-signing certificate may fail on Windows 2003 +## Apps published with ClickOnce that use a SHA-256 code-signing certificate may fail on Windows 2003 ### Scope Edge @@ -40,3 +40,5 @@ ClickOnce ### Notes Only affects WinServer 2003; there is a KB to address it. Could flag it if we detect click-once being used (especially if it has a SHA-1 code-signing cert) --> + + diff --git a/Documentation/breaking-changes/asp_net-mvc-now-escapes-spaces-in-strings-passed-in-via-route-parameters.md b/Documentation/compatibility/asp_net-mvc-now-escapes-spaces-in-strings-passed-in-via-route-parameters.md similarity index 89% rename from Documentation/breaking-changes/asp_net-mvc-now-escapes-spaces-in-strings-passed-in-via-route-parameters.md rename to Documentation/compatibility/asp_net-mvc-now-escapes-spaces-in-strings-passed-in-via-route-parameters.md index c208eb311..f2282f45d 100644 --- a/Documentation/breaking-changes/asp_net-mvc-now-escapes-spaces-in-strings-passed-in-via-route-parameters.md +++ b/Documentation/compatibility/asp_net-mvc-now-escapes-spaces-in-strings-passed-in-via-route-parameters.md @@ -1,4 +1,4 @@ -## 125: ASP.NET MVC now escapes spaces in strings passed in via route parameters +## ASP.NET MVC now escapes spaces in strings passed in via route parameters ### Scope Minor @@ -31,3 +31,4 @@ ASP.NET Single-diagnostic compilation action analyzer --> + diff --git a/Documentation/breaking-changes/assemblies-compiled-with-regex_compiletoassembly-breaks-between-4_0-and-4_5.md b/Documentation/compatibility/assemblies-compiled-with-regex_compiletoassembly-breaks-between-4_0-and-4_5.md similarity index 92% rename from Documentation/breaking-changes/assemblies-compiled-with-regex_compiletoassembly-breaks-between-4_0-and-4_5.md rename to Documentation/compatibility/assemblies-compiled-with-regex_compiletoassembly-breaks-between-4_0-and-4_5.md index 5275475cc..c236d86b8 100644 --- a/Documentation/breaking-changes/assemblies-compiled-with-regex_compiletoassembly-breaks-between-4_0-and-4_5.md +++ b/Documentation/compatibility/assemblies-compiled-with-regex_compiletoassembly-breaks-between-4_0-and-4_5.md @@ -1,4 +1,4 @@ -## 74: Assemblies compiled with Regex.CompileToAssembly breaks between 4.0 and 4.5 +## Assemblies compiled with Regex.CompileToAssembly breaks between 4.0 and 4.5 ### Scope Minor @@ -30,3 +30,5 @@ To work around this problem, you can do either of the following: Core [More information](https://msdn.microsoft.com/en-us/library/hh367887\(v=vs.110\).aspx#core) + + diff --git a/Documentation/breaking-changes/binaryformatter-can-fail-to-find-type-from-loadfrom-context.md b/Documentation/compatibility/binaryformatter-can-fail-to-find-type-from-loadfrom-context.md similarity index 94% rename from Documentation/breaking-changes/binaryformatter-can-fail-to-find-type-from-loadfrom-context.md rename to Documentation/compatibility/binaryformatter-can-fail-to-find-type-from-loadfrom-context.md index 48975a0c4..be22bdb6b 100644 --- a/Documentation/breaking-changes/binaryformatter-can-fail-to-find-type-from-loadfrom-context.md +++ b/Documentation/compatibility/binaryformatter-can-fail-to-find-type-from-loadfrom-context.md @@ -1,4 +1,4 @@ -## 147: BinaryFormatter can fail to find type from LoadFrom context +## BinaryFormatter can fail to find type from LoadFrom context ### Scope Edge @@ -45,3 +45,5 @@ public class TypeFinderBinder : SerializationBinder ### Category Serialization + + diff --git a/Documentation/breaking-changes/binding-a-wpf-selector-property-(such-as-'selecteditem')-to-a-static-property-does-not-work.md b/Documentation/compatibility/binding-a-wpf-selector-property-(such-as-'selecteditem')-to-a-static-property-does-not-work.md similarity index 89% rename from Documentation/breaking-changes/binding-a-wpf-selector-property-(such-as-'selecteditem')-to-a-static-property-does-not-work.md rename to Documentation/compatibility/binding-a-wpf-selector-property-(such-as-'selecteditem')-to-a-static-property-does-not-work.md index b18caa424..b1e3b3cad 100644 --- a/Documentation/breaking-changes/binding-a-wpf-selector-property-(such-as-'selecteditem')-to-a-static-property-does-not-work.md +++ b/Documentation/compatibility/binding-a-wpf-selector-property-(such-as-'selecteditem')-to-a-static-property-does-not-work.md @@ -1,4 +1,4 @@ -## 99: Binding a WPF selector property (such as 'SelectedItem') to a static property does not work +## Binding a WPF selector property (such as 'SelectedItem') to a static property does not work ### Scope Minor @@ -34,4 +34,4 @@ Windows Presentation Foundation (WPF) We could look for FrameworkElement.SetBinding calls, but this is such a corner case of that (selected properties and static properties) that it would probably be too noisy. A xaml analyzer is probably our best bet, and that's not even going to be perfect --> - + diff --git a/Documentation/breaking-changes/blockingcollection_trytakefromany-does-not-throw-anymore.md b/Documentation/compatibility/blockingcollection_trytakefromany-does-not-throw-anymore.md similarity index 94% rename from Documentation/breaking-changes/blockingcollection_trytakefromany-does-not-throw-anymore.md rename to Documentation/compatibility/blockingcollection_trytakefromany-does-not-throw-anymore.md index 06b96a84d..783632a30 100644 --- a/Documentation/breaking-changes/blockingcollection_trytakefromany-does-not-throw-anymore.md +++ b/Documentation/compatibility/blockingcollection_trytakefromany-does-not-throw-anymore.md @@ -1,4 +1,4 @@ -## 18: BlockingCollection<T>.TryTakeFromAny does not throw anymore +## BlockingCollection<T>.TryTakeFromAny does not throw anymore ### Scope Minor @@ -30,3 +30,5 @@ If TryTakeFromAny returning -1 or TakeFromAny throwing were used for control-flo Core [More information](https://msdn.microsoft.com/en-us/library/hh367887#core) + + diff --git a/Documentation/breaking-changes/building-an-entity-framework-edmx-with-visual-studio-2013-can-fail-with-error-msb4062-if-using-the-entitydeploysplit-or-entityclean-tasks.md b/Documentation/compatibility/building-an-entity-framework-edmx-with-visual-studio-2013-can-fail-with-error-msb4062-if-using-the-entitydeploysplit-or-entityclean-tasks.md similarity index 87% rename from Documentation/breaking-changes/building-an-entity-framework-edmx-with-visual-studio-2013-can-fail-with-error-msb4062-if-using-the-entitydeploysplit-or-entityclean-tasks.md rename to Documentation/compatibility/building-an-entity-framework-edmx-with-visual-studio-2013-can-fail-with-error-msb4062-if-using-the-entitydeploysplit-or-entityclean-tasks.md index f99f77b90..71b340d40 100644 --- a/Documentation/breaking-changes/building-an-entity-framework-edmx-with-visual-studio-2013-can-fail-with-error-msb4062-if-using-the-entitydeploysplit-or-entityclean-tasks.md +++ b/Documentation/compatibility/building-an-entity-framework-edmx-with-visual-studio-2013-can-fail-with-error-msb4062-if-using-the-entitydeploysplit-or-entityclean-tasks.md @@ -1,4 +1,4 @@ -## 109: Building an Entity Framework edmx with Visual Studio 2013 can fail with error MSB4062 if using the EntityDeploySplit or EntityClean tasks +## Building an Entity Framework edmx with Visual Studio 2013 can fail with error MSB4062 if using the EntityDeploySplit or EntityClean tasks ### Scope Major @@ -29,3 +29,4 @@ Entity Framework [More information](http://stackoverflow.com/questions/20400054/entitydeploysplit-error-microsoft-data-entity-build-tasks-dll-missing/24249247#24249247) + diff --git a/Documentation/breaking-changes/calling-attribute_getcustomattributes-on-an-indexer-property-no-longer-throws-ambiguousmatchexception.md b/Documentation/compatibility/calling-attribute_getcustomattributes-on-an-indexer-property-no-longer-throws-ambiguousmatchexception.md similarity index 92% rename from Documentation/breaking-changes/calling-attribute_getcustomattributes-on-an-indexer-property-no-longer-throws-ambiguousmatchexception.md rename to Documentation/compatibility/calling-attribute_getcustomattributes-on-an-indexer-property-no-longer-throws-ambiguousmatchexception.md index 125615e17..9c550d4a8 100644 --- a/Documentation/breaking-changes/calling-attribute_getcustomattributes-on-an-indexer-property-no-longer-throws-ambiguousmatchexception.md +++ b/Documentation/compatibility/calling-attribute_getcustomattributes-on-an-indexer-property-no-longer-throws-ambiguousmatchexception.md @@ -1,4 +1,4 @@ -## 112: Calling Attribute.GetCustomAttributes on an indexer property no longer throws AmbiguousMatchException if the ambiguity can be resolved by index's type +## Calling Attribute.GetCustomAttributes on an indexer property no longer throws AmbiguousMatchException if the ambiguity can be resolved by index's type ### Scope Edge @@ -37,4 +37,6 @@ Be aware that GetCustomAttribute(s) will work more frequently now. If an app was * `M:System.Reflection.CustomAttributeExtensions.GetCustomAttributes``1(System.Reflection.MemberInfo,System.Boolean)` ### Category -Core \ No newline at end of file +Core + + diff --git a/Documentation/breaking-changes/calling-createdefaultauthorizationcontext-with-a-null-argument-has-changed.md b/Documentation/compatibility/calling-createdefaultauthorizationcontext-with-a-null-argument-has-changed.md similarity index 92% rename from Documentation/breaking-changes/calling-createdefaultauthorizationcontext-with-a-null-argument-has-changed.md rename to Documentation/compatibility/calling-createdefaultauthorizationcontext-with-a-null-argument-has-changed.md index 6a8581cef..39414ce6d 100644 --- a/Documentation/breaking-changes/calling-createdefaultauthorizationcontext-with-a-null-argument-has-changed.md +++ b/Documentation/compatibility/calling-createdefaultauthorizationcontext-with-a-null-argument-has-changed.md @@ -1,4 +1,4 @@ -## 138: Calling CreateDefaultAuthorizationContext with a null argument has changed +## Calling CreateDefaultAuthorizationContext with a null argument has changed ### Scope Minor @@ -28,3 +28,5 @@ In rare cases, WCF apps that use custom authentication may see behavioral differ Windows Communication Foundation (WCF) [More information](https://msdn.microsoft.com/en-us/library/dn833123%28v=vs.110%29.aspx#WCF) + + diff --git a/Documentation/breaking-changes/calling-datagrid_commitedit-from-a-celleditending-handler-drops-focus.md b/Documentation/compatibility/calling-datagrid_commitedit-from-a-celleditending-handler-drops-focus.md similarity index 83% rename from Documentation/breaking-changes/calling-datagrid_commitedit-from-a-celleditending-handler-drops-focus.md rename to Documentation/compatibility/calling-datagrid_commitedit-from-a-celleditending-handler-drops-focus.md index 5ca4258c2..d25ddac8c 100644 --- a/Documentation/breaking-changes/calling-datagrid_commitedit-from-a-celleditending-handler-drops-focus.md +++ b/Documentation/compatibility/calling-datagrid_commitedit-from-a-celleditending-handler-drops-focus.md @@ -1,4 +1,4 @@ -## 124: Calling DataGrid.CommitEdit from a CellEditEnding handler drops focus +## Calling DataGrid.CommitEdit from a CellEditEnding handler drops focus ### Scope Edge @@ -26,4 +26,6 @@ This bug has been fixed in the .NET Framework 4.5.2, so it can be avoided by upg * `M:System.Windows.Controls.DataGrid.CommitEdit(System.Windows.Controls.DataGridEditingUnit,System.Boolean)` ### Category -Windows Presentation Foundation (WPF) \ No newline at end of file +Windows Presentation Foundation (WPF) + + diff --git a/Documentation/breaking-changes/calling-items_refresh-on-a-wpf-listbox-or-listview-or-datagrid-with-items-selected-can-cause-duplicate-items-to-appear-in-the-element.md b/Documentation/compatibility/calling-items_refresh-on-a-wpf-listbox-or-listview-or-datagrid-with-items-selected-can-cause-duplicate-items-to-appear-in-the-element.md similarity index 86% rename from Documentation/breaking-changes/calling-items_refresh-on-a-wpf-listbox-or-listview-or-datagrid-with-items-selected-can-cause-duplicate-items-to-appear-in-the-element.md rename to Documentation/compatibility/calling-items_refresh-on-a-wpf-listbox-or-listview-or-datagrid-with-items-selected-can-cause-duplicate-items-to-appear-in-the-element.md index ca4ad3bc6..e0367d433 100644 --- a/Documentation/breaking-changes/calling-items_refresh-on-a-wpf-listbox-or-listview-or-datagrid-with-items-selected-can-cause-duplicate-items-to-appear-in-the-element.md +++ b/Documentation/compatibility/calling-items_refresh-on-a-wpf-listbox-or-listview-or-datagrid-with-items-selected-can-cause-duplicate-items-to-appear-in-the-element.md @@ -1,4 +1,4 @@ -## 104: Calling Items.Refresh on a WPF ListBox, ListView, or DataGrid with items selected can cause duplicate items to appear in the element +## Calling Items.Refresh on a WPF ListBox, ListView, or DataGrid with items selected can cause duplicate items to appear in the element ### Scope Minor @@ -29,3 +29,4 @@ Windows Presentation Foundation (WPF) [More information](http://connect.microsoft.com/VisualStudio/feedback/details/873075/on-net-4-5-the-selected-items-in-a-wpf-listbox-listview-control-are-incorrect-when-items-refresh-is-called-from-code-behind) + diff --git a/Documentation/breaking-changes/calls-to-claimsidentity-constructors.md b/Documentation/compatibility/calls-to-claimsidentity-constructors.md similarity index 97% rename from Documentation/breaking-changes/calls-to-claimsidentity-constructors.md rename to Documentation/compatibility/calls-to-claimsidentity-constructors.md index 5c925a954..0cc9c6a21 100644 --- a/Documentation/breaking-changes/calls-to-claimsidentity-constructors.md +++ b/Documentation/compatibility/calls-to-claimsidentity-constructors.md @@ -1,4 +1,4 @@ -## 164: Calls to ClaimsIdentity constructors +## Calls to ClaimsIdentity constructors ### Scope Edge @@ -40,3 +40,5 @@ Core ### Original Bug 227024 --> + + diff --git a/Documentation/breaking-changes/change-in-behavior-for-task_waitall-methods-with-time-out-arguments.md b/Documentation/compatibility/change-in-behavior-for-task_waitall-methods-with-time-out-arguments.md similarity index 94% rename from Documentation/breaking-changes/change-in-behavior-for-task_waitall-methods-with-time-out-arguments.md rename to Documentation/compatibility/change-in-behavior-for-task_waitall-methods-with-time-out-arguments.md index a9c1aeffd..bea632b36 100644 --- a/Documentation/breaking-changes/change-in-behavior-for-task_waitall-methods-with-time-out-arguments.md +++ b/Documentation/compatibility/change-in-behavior-for-task_waitall-methods-with-time-out-arguments.md @@ -1,4 +1,4 @@ -## 26: Change in behavior for Task.WaitAll methods with time-out arguments +## Change in behavior for Task.WaitAll methods with time-out arguments ### Scope Minor @@ -29,3 +29,5 @@ If an AggregateException was being caught as a means of detecting a task that wa Core [More information](https://msdn.microsoft.com/en-us/library/hh367887\(v=vs.110\).aspx#core) + + diff --git a/Documentation/breaking-changes/change-in-behavior-in-data-definition-language-(ddl)-apis.md b/Documentation/compatibility/change-in-behavior-in-data-definition-language-(ddl)-apis.md similarity index 95% rename from Documentation/breaking-changes/change-in-behavior-in-data-definition-language-(ddl)-apis.md rename to Documentation/compatibility/change-in-behavior-in-data-definition-language-(ddl)-apis.md index 562d23d7d..ac1ce0b8f 100644 --- a/Documentation/breaking-changes/change-in-behavior-in-data-definition-language-(ddl)-apis.md +++ b/Documentation/compatibility/change-in-behavior-in-data-definition-language-(ddl)-apis.md @@ -1,4 +1,4 @@ -## 27: Change in behavior in Data Definition Language (DDL) APIs +## Change in behavior in Data Definition Language (DDL) APIs ### Scope Minor @@ -31,3 +31,5 @@ These changes make it easier to build tools and applications that use the DDL AP Entity Framework [More information](https://msdn.microsoft.com/en-us/library/hh367887(v=vs.110).aspx#sql) + + diff --git a/Documentation/breaking-changes/changes-in-path-normalization.md b/Documentation/compatibility/changes-in-path-normalization.md similarity index 97% rename from Documentation/breaking-changes/changes-in-path-normalization.md rename to Documentation/compatibility/changes-in-path-normalization.md index ffb05e573..f53036992 100644 --- a/Documentation/breaking-changes/changes-in-path-normalization.md +++ b/Documentation/compatibility/changes-in-path-normalization.md @@ -1,4 +1,4 @@ -## 163: Changes in path normalization +## Changes in path normalization ### Scope Minor @@ -61,4 +61,4 @@ Core 195340 --> - + diff --git a/Documentation/breaking-changes/changing-the-isenabled-property-of-the-parent-of-a-textblock-control-affects-any-child-controls.md b/Documentation/compatibility/changing-the-isenabled-property-of-the-parent-of-a-textblock-control-affects-any-child-controls.md similarity index 89% rename from Documentation/breaking-changes/changing-the-isenabled-property-of-the-parent-of-a-textblock-control-affects-any-child-controls.md rename to Documentation/compatibility/changing-the-isenabled-property-of-the-parent-of-a-textblock-control-affects-any-child-controls.md index 2e5c49839..11a95f7c6 100644 --- a/Documentation/breaking-changes/changing-the-isenabled-property-of-the-parent-of-a-textblock-control-affects-any-child-controls.md +++ b/Documentation/compatibility/changing-the-isenabled-property-of-the-parent-of-a-textblock-control-affects-any-child-controls.md @@ -1,4 +1,4 @@ -## 161: Changing the IsEnabled property of the parent of a TextBlock control affects any child controls +## Changing the IsEnabled property of the parent of a TextBlock control affects any child controls ### Scope Minor @@ -31,4 +31,4 @@ Windows Presentation Foundation (WPF) 213267 --> - + diff --git a/Documentation/breaking-changes/clickonce-supports-sha-256-on-4_0-targeted-apps.md b/Documentation/compatibility/clickonce-supports-sha-256-on-4_0-targeted-apps.md similarity index 90% rename from Documentation/breaking-changes/clickonce-supports-sha-256-on-4_0-targeted-apps.md rename to Documentation/compatibility/clickonce-supports-sha-256-on-4_0-targeted-apps.md index ce380ff58..317561bc2 100644 --- a/Documentation/breaking-changes/clickonce-supports-sha-256-on-4_0-targeted-apps.md +++ b/Documentation/compatibility/clickonce-supports-sha-256-on-4_0-targeted-apps.md @@ -1,4 +1,4 @@ -## 79: ClickOnce supports SHA-256 on 4.0-targeted apps +## ClickOnce supports SHA-256 on 4.0-targeted apps ### Scope Minor @@ -31,3 +31,4 @@ ClickOnce We could possibly detect this by analyzing ClickOnce manifests and looking for SHA-256 certs. --> + diff --git a/Documentation/breaking-changes/coerceisselectionboxhighlighted.md b/Documentation/compatibility/coerceisselectionboxhighlighted.md similarity index 88% rename from Documentation/breaking-changes/coerceisselectionboxhighlighted.md rename to Documentation/compatibility/coerceisselectionboxhighlighted.md index 6f3418bb9..4e3a22e74 100644 --- a/Documentation/breaking-changes/coerceisselectionboxhighlighted.md +++ b/Documentation/compatibility/coerceisselectionboxhighlighted.md @@ -1,4 +1,4 @@ -## 179: CoerceIsSelectionBoxHighlighted +## CoerceIsSelectionBoxHighlighted ### Scope Minor @@ -32,4 +32,4 @@ Windows Presentation Foundation (WPF) 125219 --> - + diff --git a/Documentation/breaking-changes/compiler-support-for-type-forwarding-when-multi-targeting-mscorlib.md b/Documentation/compatibility/compiler-support-for-type-forwarding-when-multi-targeting-mscorlib.md similarity index 88% rename from Documentation/breaking-changes/compiler-support-for-type-forwarding-when-multi-targeting-mscorlib.md rename to Documentation/compatibility/compiler-support-for-type-forwarding-when-multi-targeting-mscorlib.md index f21c14cb9..57316d8f4 100644 --- a/Documentation/breaking-changes/compiler-support-for-type-forwarding-when-multi-targeting-mscorlib.md +++ b/Documentation/compatibility/compiler-support-for-type-forwarding-when-multi-targeting-mscorlib.md @@ -1,4 +1,4 @@ -## 56: Compiler support for type forwarding when multi-targeting mscorlib +## Compiler support for type forwarding when multi-targeting mscorlib ### Scope Edge @@ -25,3 +25,5 @@ This change prevents compiler warnings (and compilation failure in cases where w Core [More information](https://msdn.microsoft.com/en-us/library/hh367887(v=vs.110).aspx#core) + + diff --git a/Documentation/breaking-changes/concurrentqueue_trypeek-can-return-an-erroneous-null-via-its-out-parameter.md b/Documentation/compatibility/concurrentqueue_trypeek-can-return-an-erroneous-null-via-its-out-parameter.md similarity index 86% rename from Documentation/breaking-changes/concurrentqueue_trypeek-can-return-an-erroneous-null-via-its-out-parameter.md rename to Documentation/compatibility/concurrentqueue_trypeek-can-return-an-erroneous-null-via-its-out-parameter.md index 44dc3330d..dfe3a7f93 100644 --- a/Documentation/breaking-changes/concurrentqueue_trypeek-can-return-an-erroneous-null-via-its-out-parameter.md +++ b/Documentation/compatibility/concurrentqueue_trypeek-can-return-an-erroneous-null-via-its-out-parameter.md @@ -1,4 +1,4 @@ -## 95: ConcurrentQueue<T>.TryPeek can return an erroneous null via its out parameter +## ConcurrentQueue<T>.TryPeek can return an erroneous null via its out parameter ### Scope Major @@ -28,3 +28,5 @@ This issue is fixed in the .NET Framework 4.5.1. Upgrading to that Framework wil Core [More information](http://connect.microsoft.com/VisualStudio/feedback/details/762273/bug-in-concurrentqueue-in-net-4-5-trypeek-returns-true-but-no-real-object-returned) + + diff --git a/Documentation/breaking-changes/connection-pool-blocking-period-for-azure-sql-databases-is-removed.md b/Documentation/compatibility/connection-pool-blocking-period-for-azure-sql-databases-is-removed.md similarity index 96% rename from Documentation/breaking-changes/connection-pool-blocking-period-for-azure-sql-databases-is-removed.md rename to Documentation/compatibility/connection-pool-blocking-period-for-azure-sql-databases-is-removed.md index 94aaa49e6..0c6035f55 100644 --- a/Documentation/breaking-changes/connection-pool-blocking-period-for-azure-sql-databases-is-removed.md +++ b/Documentation/compatibility/connection-pool-blocking-period-for-azure-sql-databases-is-removed.md @@ -1,4 +1,4 @@ -## 160: Connection pool blocking period for Azure SQL databases is removed +## Connection pool blocking period for Azure SQL databases is removed ### Scope Minor @@ -39,4 +39,4 @@ Data 213479 --> - + diff --git a/Documentation/breaking-changes/contentdisposition-datetimes-returns-slightly-different-string.md b/Documentation/compatibility/contentdisposition-datetimes-returns-slightly-different-string.md similarity index 92% rename from Documentation/breaking-changes/contentdisposition-datetimes-returns-slightly-different-string.md rename to Documentation/compatibility/contentdisposition-datetimes-returns-slightly-different-string.md index 48059c151..7df330e37 100644 --- a/Documentation/breaking-changes/contentdisposition-datetimes-returns-slightly-different-string.md +++ b/Documentation/compatibility/contentdisposition-datetimes-returns-slightly-different-string.md @@ -1,4 +1,4 @@ -## 78: ContentDisposition DateTimes returns slightly different string +## ContentDisposition DateTimes returns slightly different string ### Scope Minor @@ -26,3 +26,5 @@ Do not expect that string representations of ContentDispositions from different Networking [More information](https://msdn.microsoft.com/en-us/library/dn833125(v=vs.110).aspx#Networking) + + diff --git a/Documentation/breaking-changes/cor_prf_gc_root_handles-are-not-being-enumerated-by-profilers.md b/Documentation/compatibility/cor_prf_gc_root_handles-are-not-being-enumerated-by-profilers.md similarity index 90% rename from Documentation/breaking-changes/cor_prf_gc_root_handles-are-not-being-enumerated-by-profilers.md rename to Documentation/compatibility/cor_prf_gc_root_handles-are-not-being-enumerated-by-profilers.md index d3b82b6b1..1bbd0a286 100644 --- a/Documentation/breaking-changes/cor_prf_gc_root_handles-are-not-being-enumerated-by-profilers.md +++ b/Documentation/compatibility/cor_prf_gc_root_handles-are-not-being-enumerated-by-profilers.md @@ -1,4 +1,4 @@ -## 117: COR_PRF_GC_ROOT_HANDLEs are not being enumerated by profilers +## COR_PRF_GC_ROOT_HANDLEs are not being enumerated by profilers ### Scope Minor @@ -32,3 +32,4 @@ Core Native code analysis needed. Also, this could be categorized as 'profiling' but I chose to call it 'core' because there are no other profiling issues. We can add that category in the future if enough issues crop up to justify it. --> + diff --git a/Documentation/breaking-changes/cspparameters_parentwindowhandle-now-expects-hwnd-value.md b/Documentation/compatibility/cspparameters_parentwindowhandle-now-expects-hwnd-value.md similarity index 96% rename from Documentation/breaking-changes/cspparameters_parentwindowhandle-now-expects-hwnd-value.md rename to Documentation/compatibility/cspparameters_parentwindowhandle-now-expects-hwnd-value.md index 94adaf7a5..305f58971 100644 --- a/Documentation/breaking-changes/cspparameters_parentwindowhandle-now-expects-hwnd-value.md +++ b/Documentation/compatibility/cspparameters_parentwindowhandle-now-expects-hwnd-value.md @@ -1,4 +1,4 @@ -## 178: CspParameters.ParentWindowHandle now expects HWND value +## CspParameters.ParentWindowHandle now expects HWND value ### Scope Minor @@ -53,3 +53,5 @@ can set the AppContext switch to `false`. ### Category Security + + diff --git a/Documentation/breaking-changes/currentculture-flows-across-tasks.md b/Documentation/compatibility/currentculture-flows-across-tasks.md similarity index 96% rename from Documentation/breaking-changes/currentculture-flows-across-tasks.md rename to Documentation/compatibility/currentculture-flows-across-tasks.md index e5278ba9d..2dd4d38f5 100644 --- a/Documentation/breaking-changes/currentculture-flows-across-tasks.md +++ b/Documentation/compatibility/currentculture-flows-across-tasks.md @@ -1,4 +1,4 @@ -## 146: CurrentCulture and CurrentUICulture flow across tasks +## CurrentCulture and CurrentUICulture flow across tasks ### Scope Minor @@ -39,3 +39,5 @@ Applications targeting .NET 4.6 or later will automatically get the right behavi Core [More information](https://msdn.microsoft.com/en-us/library/system.globalization.cultureinfo%28v=vs.110%29.aspx#Async) + + diff --git a/Documentation/breaking-changes/currentculture-not-preserved-across-wpf-dispatcher-operations.md b/Documentation/compatibility/currentculture-not-preserved-across-wpf-dispatcher-operations.md similarity index 96% rename from Documentation/breaking-changes/currentculture-not-preserved-across-wpf-dispatcher-operations.md rename to Documentation/compatibility/currentculture-not-preserved-across-wpf-dispatcher-operations.md index 2999059db..6bed35ce3 100644 --- a/Documentation/breaking-changes/currentculture-not-preserved-across-wpf-dispatcher-operations.md +++ b/Documentation/compatibility/currentculture-not-preserved-across-wpf-dispatcher-operations.md @@ -1,4 +1,4 @@ -## 145: CurrentCulture is not preserved across WPF Dispatcher operations +## CurrentCulture is not preserved across WPF Dispatcher operations ### Scope Minor @@ -45,3 +45,5 @@ Windows Presentation Foundation (WPF) This issue is not marked as detectable via API analysis because simply looking for CurrentCulture or CurrentUICulture being set is insufficient in most cases - it must be done in a WPF app. Also, looking for WPF Dispatcher invocations is insufficient because many dispatcher invocations are automatic and, besides that, there is no way to know if CurrentCulture or CurrentUICulture matters for those dispatchers. --> + + diff --git a/Documentation/breaking-changes/datagridcellspanel_bringintoview-throws-argumentoutofrangeexception.md b/Documentation/compatibility/datagridcellspanel_bringintoview-throws-argumentoutofrangeexception.md similarity index 89% rename from Documentation/breaking-changes/datagridcellspanel_bringintoview-throws-argumentoutofrangeexception.md rename to Documentation/compatibility/datagridcellspanel_bringintoview-throws-argumentoutofrangeexception.md index b93ba1411..4ae280b52 100644 --- a/Documentation/breaking-changes/datagridcellspanel_bringintoview-throws-argumentoutofrangeexception.md +++ b/Documentation/compatibility/datagridcellspanel_bringintoview-throws-argumentoutofrangeexception.md @@ -1,4 +1,4 @@ -## 151: DataGridCellsPanel.BringIndexIntoView throws ArgumentOutOfRangeException +## DataGridCellsPanel.BringIndexIntoView throws ArgumentOutOfRangeException ### Scope Edge @@ -35,3 +35,5 @@ Windows Presentation Foundation (WPF) + + diff --git a/Documentation/breaking-changes/dataobject_getdata-now-retrieves-data-as-utf-8.md b/Documentation/compatibility/dataobject_getdata-now-retrieves-data-as-utf-8.md similarity index 94% rename from Documentation/breaking-changes/dataobject_getdata-now-retrieves-data-as-utf-8.md rename to Documentation/compatibility/dataobject_getdata-now-retrieves-data-as-utf-8.md index cc0c3e31f..ae496043e 100644 --- a/Documentation/breaking-changes/dataobject_getdata-now-retrieves-data-as-utf-8.md +++ b/Documentation/compatibility/dataobject_getdata-now-retrieves-data-as-utf-8.md @@ -1,4 +1,4 @@ -## 73: DataObject.GetData now retrieves data as UTF-8 +## DataObject.GetData now retrieves data as UTF-8 ### Scope Edge @@ -36,3 +36,5 @@ Windows Forms ### Notes Don't know what data they're getting. Can give an informational diagnostic if we see the GetData APIs called, though. --> + + diff --git a/Documentation/breaking-changes/dbparameter_precision-and-dbparameter_scale-are-now-public-virtual-members.md b/Documentation/compatibility/dbparameter_precision-and-dbparameter_scale-are-now-public-virtual-members.md similarity index 88% rename from Documentation/breaking-changes/dbparameter_precision-and-dbparameter_scale-are-now-public-virtual-members.md rename to Documentation/compatibility/dbparameter_precision-and-dbparameter_scale-are-now-public-virtual-members.md index 2423a68c9..60de604e7 100644 --- a/Documentation/breaking-changes/dbparameter_precision-and-dbparameter_scale-are-now-public-virtual-members.md +++ b/Documentation/compatibility/dbparameter_precision-and-dbparameter_scale-are-now-public-virtual-members.md @@ -1,4 +1,4 @@ -## 68: DbParameter.Precision and DbParameter.Scale are now public virtual members +## DbParameter.Precision and DbParameter.Scale are now public virtual members ### Scope Minor @@ -27,3 +27,4 @@ ADO.NET [More information](https://msdn.microsoft.com/en-us/library/dn458356(v=vs.110).aspx#ADO) + diff --git a/Documentation/breaking-changes/deserialization-of-objects-across-appdomains-can-fail.md b/Documentation/compatibility/deserialization-of-objects-across-appdomains-can-fail.md similarity index 87% rename from Documentation/breaking-changes/deserialization-of-objects-across-appdomains-can-fail.md rename to Documentation/compatibility/deserialization-of-objects-across-appdomains-can-fail.md index a5da4b747..abc459d78 100644 --- a/Documentation/breaking-changes/deserialization-of-objects-across-appdomains-can-fail.md +++ b/Documentation/compatibility/deserialization-of-objects-across-appdomains-can-fail.md @@ -1,4 +1,4 @@ -## 67: Deserialization of objects across appdomains can fail +## Deserialization of objects across appdomains can fail ### Scope Edge @@ -25,3 +25,5 @@ See [Mitigation: Deserialization of Objects Across App Domains](https://msdn.mic Core [More information](https://msdn.microsoft.com/en-us/library/dn458360(v=vs.110).aspx) + + diff --git a/Documentation/breaking-changes/different-exception-handling-for-objectcontext_createdatabase-and-dbproviderservices_createdatabase-methods.md b/Documentation/compatibility/different-exception-handling-for-objectcontext_createdatabase-and-dbproviderservices_createdatabase-methods.md similarity index 87% rename from Documentation/breaking-changes/different-exception-handling-for-objectcontext_createdatabase-and-dbproviderservices_createdatabase-methods.md rename to Documentation/compatibility/different-exception-handling-for-objectcontext_createdatabase-and-dbproviderservices_createdatabase-methods.md index 3e98c20bd..1e2f47aa8 100644 --- a/Documentation/breaking-changes/different-exception-handling-for-objectcontext_createdatabase-and-dbproviderservices_createdatabase-methods.md +++ b/Documentation/compatibility/different-exception-handling-for-objectcontext_createdatabase-and-dbproviderservices_createdatabase-methods.md @@ -1,4 +1,4 @@ -## 40: Different exception handling for ObjectContext.CreateDatabase and DbProviderServices.CreateDatabase methods +## Different exception handling for ObjectContext.CreateDatabase and DbProviderServices.CreateDatabase methods ### Scope Minor @@ -26,3 +26,5 @@ When catching an InvalidOperationException while executing ObjectContext.CreateD Entity Framework [More information](https://msdn.microsoft.com/en-us/library/hh367887(v=vs.110).aspx#sql) + + diff --git a/Documentation/breaking-changes/ef-no-longer-throws-for-queryviews-with-specific-characteristics.md b/Documentation/compatibility/ef-no-longer-throws-for-queryviews-with-specific-characteristics.md similarity index 91% rename from Documentation/breaking-changes/ef-no-longer-throws-for-queryviews-with-specific-characteristics.md rename to Documentation/compatibility/ef-no-longer-throws-for-queryviews-with-specific-characteristics.md index bd95aa9d9..e243fe620 100644 --- a/Documentation/breaking-changes/ef-no-longer-throws-for-queryviews-with-specific-characteristics.md +++ b/Documentation/compatibility/ef-no-longer-throws-for-queryviews-with-specific-characteristics.md @@ -1,4 +1,4 @@ -## 69: EF no longer throws for QueryViews with specific characteristics +## EF no longer throws for QueryViews with specific characteristics ### Scope Edge @@ -29,3 +29,5 @@ This change only affects code that uses QueryViews with 1-0..1 relationships whe Entity Framework [More information](https://msdn.microsoft.com/en-us/library/dn720774(v=vs.110).aspx) + + diff --git a/Documentation/breaking-changes/ef-version-must-match-netfx-version.md b/Documentation/compatibility/ef-version-must-match-netfx-version.md similarity index 90% rename from Documentation/breaking-changes/ef-version-must-match-netfx-version.md rename to Documentation/compatibility/ef-version-must-match-netfx-version.md index d42107102..b58157d0c 100644 --- a/Documentation/breaking-changes/ef-version-must-match-netfx-version.md +++ b/Documentation/compatibility/ef-version-must-match-netfx-version.md @@ -1,4 +1,4 @@ -## 25: EF version must match NetFX version +## EF version must match NetFX version ### Scope Major @@ -25,3 +25,5 @@ Upgrade to EF 5 for .NET 4.5 Entity Framework [More information](http://forums.asp.net/t/1779042.aspx) + + diff --git a/Documentation/breaking-changes/encoderparameter-ctor-is-obsolete.md b/Documentation/compatibility/encoderparameter-ctor-is-obsolete.md similarity index 93% rename from Documentation/breaking-changes/encoderparameter-ctor-is-obsolete.md rename to Documentation/compatibility/encoderparameter-ctor-is-obsolete.md index f4f55eecb..9519d169b 100644 --- a/Documentation/breaking-changes/encoderparameter-ctor-is-obsolete.md +++ b/Documentation/compatibility/encoderparameter-ctor-is-obsolete.md @@ -1,4 +1,4 @@ -## 24: EncoderParameter ctor is obsolete +## EncoderParameter ctor is obsolete ### Scope Minor @@ -25,3 +25,5 @@ Although the `EncoderParameter.EncoderParameter(Encoder, Int32, Int32, Int32)` Windows Forms [More information](https://msdn.microsoft.com/en-us/library/hh367887(v=vs.110).aspx#winForms) + + diff --git a/Documentation/breaking-changes/entityframework-6_0-loads-very-slowly-in-apps-launched-from-visual-studio.md b/Documentation/compatibility/entityframework-6_0-loads-very-slowly-in-apps-launched-from-visual-studio.md similarity index 82% rename from Documentation/breaking-changes/entityframework-6_0-loads-very-slowly-in-apps-launched-from-visual-studio.md rename to Documentation/compatibility/entityframework-6_0-loads-very-slowly-in-apps-launched-from-visual-studio.md index 136482d9d..a77ac5f08 100644 --- a/Documentation/breaking-changes/entityframework-6_0-loads-very-slowly-in-apps-launched-from-visual-studio.md +++ b/Documentation/compatibility/entityframework-6_0-loads-very-slowly-in-apps-launched-from-visual-studio.md @@ -1,4 +1,4 @@ -## 91: EntityFramework 6.0 loads very slowly in apps launched from Visual Studio +## EntityFramework 6.0 loads very slowly in apps launched from Visual Studio ### Scope Edge @@ -25,3 +25,5 @@ This issue is fixed in EntityFramework 6.0.2. Please update EntityFramework to a Entity Framework [More information](https://entityframework.codeplex.com/workitem/1749) + + diff --git a/Documentation/breaking-changes/enumerable_empty-always-returns-cached-instance.md b/Documentation/compatibility/enumerable_empty-always-returns-cached-instance.md similarity index 91% rename from Documentation/breaking-changes/enumerable_empty-always-returns-cached-instance.md rename to Documentation/compatibility/enumerable_empty-always-returns-cached-instance.md index 7695a6cf0..73a72d20f 100644 --- a/Documentation/breaking-changes/enumerable_empty-always-returns-cached-instance.md +++ b/Documentation/compatibility/enumerable_empty-always-returns-cached-instance.md @@ -1,4 +1,4 @@ -## 42: Enumerable.Empty<TResult> always returns cached instance +## Enumerable.Empty<TResult> always returns cached instance ### Scope Edge @@ -27,3 +27,5 @@ Because the previous behavior was non-deterministic, code is unlikely to depend LINQ [More information](https://msdn.microsoft.com/en-us/library/hh367887(v=vs.110).aspx#sql) + + diff --git a/Documentation/breaking-changes/error-codes-for-maxrequestlength-or-maxreceivedmessagesize-are-different.md b/Documentation/compatibility/error-codes-for-maxrequestlength-or-maxreceivedmessagesize-are-different.md similarity index 90% rename from Documentation/breaking-changes/error-codes-for-maxrequestlength-or-maxreceivedmessagesize-are-different.md rename to Documentation/compatibility/error-codes-for-maxrequestlength-or-maxreceivedmessagesize-are-different.md index d0765e57d..9ea913fab 100644 --- a/Documentation/breaking-changes/error-codes-for-maxrequestlength-or-maxreceivedmessagesize-are-different.md +++ b/Documentation/compatibility/error-codes-for-maxrequestlength-or-maxreceivedmessagesize-are-different.md @@ -1,4 +1,4 @@ -## 45: Error codes for maxRequestLength or maxReceivedMessageSize are different +## Error codes for maxRequestLength or maxReceivedMessageSize are different ### Scope Edge @@ -29,3 +29,5 @@ You must modify any code that performs processing based on an HTTP 400 status co Windows Communication Foundation (WCF) [More information](https://msdn.microsoft.com/en-us/library/hh367887(v=vs.110).aspx#wcf) + + diff --git a/Documentation/breaking-changes/etw-eventlisteners-do-not-capture-events-from-providers-with-explicit-keywords.md b/Documentation/compatibility/etw-eventlisteners-do-not-capture-events-from-providers-with-explicit-keywords.md similarity index 89% rename from Documentation/breaking-changes/etw-eventlisteners-do-not-capture-events-from-providers-with-explicit-keywords.md rename to Documentation/compatibility/etw-eventlisteners-do-not-capture-events-from-providers-with-explicit-keywords.md index 2525c22f5..b4b35d0f8 100644 --- a/Documentation/breaking-changes/etw-eventlisteners-do-not-capture-events-from-providers-with-explicit-keywords.md +++ b/Documentation/compatibility/etw-eventlisteners-do-not-capture-events-from-providers-with-explicit-keywords.md @@ -1,4 +1,4 @@ -## 105: ETW EventListeners do not capture events from providers with explicit keywords (like the TPL provider) +## ETW EventListeners do not capture events from providers with explicit keywords (like the TPL provider) ### Scope Edge @@ -30,3 +30,5 @@ Alternatively, this issue has been fixed in the .NET Framework 4.6 and may be ad Core [More information](http://connect.microsoft.com/VisualStudio/feedback/details/816989/tpl-etw-events-for-task-not-captured-by-eventlistener-anymore) + + diff --git a/Documentation/breaking-changes/eventlistener-truncates-strings-with-embedded-nulls.md b/Documentation/compatibility/eventlistener-truncates-strings-with-embedded-nulls.md similarity index 93% rename from Documentation/breaking-changes/eventlistener-truncates-strings-with-embedded-nulls.md rename to Documentation/compatibility/eventlistener-truncates-strings-with-embedded-nulls.md index 7c8c2b185..e8b6a682d 100644 --- a/Documentation/breaking-changes/eventlistener-truncates-strings-with-embedded-nulls.md +++ b/Documentation/compatibility/eventlistener-truncates-strings-with-embedded-nulls.md @@ -1,4 +1,4 @@ -## 46: EventListener truncates strings with embedded nulls +## EventListener truncates strings with embedded nulls ### Scope Edge @@ -28,3 +28,5 @@ EventSource data should be updated, if possible, to not use embedded null charac Core [More information](https://msdn.microsoft.com/en-us/library/dn458360%28v=vs.110%29.aspx#Core) + + diff --git a/Documentation/breaking-changes/eventsource_writeevent-impls-must-pass-writeevent-the-same-parameters-that-it-received-(plus-id).md b/Documentation/compatibility/eventsource_writeevent-impls-must-pass-writeevent-the-same-parameters-that-it-received-(plus-id).md similarity index 85% rename from Documentation/breaking-changes/eventsource_writeevent-impls-must-pass-writeevent-the-same-parameters-that-it-received-(plus-id).md rename to Documentation/compatibility/eventsource_writeevent-impls-must-pass-writeevent-the-same-parameters-that-it-received-(plus-id).md index 7b23c1fe5..4f835a00a 100644 --- a/Documentation/breaking-changes/eventsource_writeevent-impls-must-pass-writeevent-the-same-parameters-that-it-received-(plus-id).md +++ b/Documentation/compatibility/eventsource_writeevent-impls-must-pass-writeevent-the-same-parameters-that-it-received-(plus-id).md @@ -1,4 +1,4 @@ -## 31: EventSource.WriteEvent impls must pass WriteEvent the same parameters that it received (plus ID) +## EventSource.WriteEvent impls must pass WriteEvent the same parameters that it received (plus ID) ### Scope Minor @@ -25,3 +25,5 @@ An IndexOutOfRangeException exception is thrown if an EventListener reads EventS Core [More information](https://msdn.microsoft.com/en-us/library/dn458360(v=vs.110).aspx) + + diff --git a/Documentation/breaking-changes/exception-message-has-changed-for-failed-datacontract-serialization-in-case-of-an-unknown-type.md b/Documentation/compatibility/exception-message-has-changed-for-failed-datacontract-serialization-in-case-of-an-unknown-type.md similarity index 97% rename from Documentation/breaking-changes/exception-message-has-changed-for-failed-datacontract-serialization-in-case-of-an-unknown-type.md rename to Documentation/compatibility/exception-message-has-changed-for-failed-datacontract-serialization-in-case-of-an-unknown-type.md index 4f3110ad1..bc80e35a4 100644 --- a/Documentation/breaking-changes/exception-message-has-changed-for-failed-datacontract-serialization-in-case-of-an-unknown-type.md +++ b/Documentation/compatibility/exception-message-has-changed-for-failed-datacontract-serialization-in-case-of-an-unknown-type.md @@ -1,4 +1,4 @@ -## 106: Exception message has changed for failed DataContract serialization in case of an unknown type +## Exception message has changed for failed DataContract serialization in case of an unknown type ### Scope Edge @@ -48,3 +48,4 @@ Serialization [More information](http://connect.microsoft.com/VisualStudio/feedback/details/806395/misleading-exception-with-datacontractjsonserializer) + diff --git a/Documentation/breaking-changes/exceptions-during-unobserved-processing-in-system_threading_tasks_task-no-longer-propagate-on-finalizer-thread.md b/Documentation/compatibility/exceptions-during-unobserved-processing-in-system_threading_tasks_task-no-longer-propagate-on-finalizer-thread.md similarity index 93% rename from Documentation/breaking-changes/exceptions-during-unobserved-processing-in-system_threading_tasks_task-no-longer-propagate-on-finalizer-thread.md rename to Documentation/compatibility/exceptions-during-unobserved-processing-in-system_threading_tasks_task-no-longer-propagate-on-finalizer-thread.md index 4c0c7653d..3ae84713b 100644 --- a/Documentation/breaking-changes/exceptions-during-unobserved-processing-in-system_threading_tasks_task-no-longer-propagate-on-finalizer-thread.md +++ b/Documentation/compatibility/exceptions-during-unobserved-processing-in-system_threading_tasks_task-no-longer-propagate-on-finalizer-thread.md @@ -1,4 +1,4 @@ -## 55: Exceptions during unobserved processing in System.Threading.Tasks.Task no longer propagate on finalizer thread +## Exceptions during unobserved processing in System.Threading.Tasks.Task no longer propagate on finalizer thread ### Scope Edge @@ -34,3 +34,5 @@ If an app depends on unobserved asynchronous exceptions propagating to the final Core [More information](https://msdn.microsoft.com/en-us/library/hh367887(v=vs.110).aspx#core) + + diff --git a/Documentation/breaking-changes/flowdocument-may-show-an-extra-line-of-text.md b/Documentation/compatibility/flowdocument-may-show-an-extra-line-of-text.md similarity index 93% rename from Documentation/breaking-changes/flowdocument-may-show-an-extra-line-of-text.md rename to Documentation/compatibility/flowdocument-may-show-an-extra-line-of-text.md index 27d598551..e3bd2a834 100644 --- a/Documentation/breaking-changes/flowdocument-may-show-an-extra-line-of-text.md +++ b/Documentation/compatibility/flowdocument-may-show-an-extra-line-of-text.md @@ -1,4 +1,4 @@ -## 120: FlowDocument may show an extra line of text +## FlowDocument may show an extra line of text ### Scope Edge @@ -33,3 +33,4 @@ Windows Presentation Foundation (WPF) Analyzer would just look for FlowDocument/FlowDocunmentReader/FlowDocumentPageViewer/DocumentPageView usage in xaml --> + diff --git a/Documentation/breaking-changes/foreach-iterator-variable-is-now-scoped-within-the-iteration.md b/Documentation/compatibility/foreach-iterator-variable-is-now-scoped-within-the-iteration.md similarity index 87% rename from Documentation/breaking-changes/foreach-iterator-variable-is-now-scoped-within-the-iteration.md rename to Documentation/compatibility/foreach-iterator-variable-is-now-scoped-within-the-iteration.md index 3e93121c4..999892b1e 100644 --- a/Documentation/breaking-changes/foreach-iterator-variable-is-now-scoped-within-the-iteration.md +++ b/Documentation/compatibility/foreach-iterator-variable-is-now-scoped-within-the-iteration.md @@ -1,4 +1,4 @@ -## 100: Foreach iterator variable is now scoped within the iteration, so closure capturing semantics are different (in C#5) +## Foreach iterator variable is now scoped within the iteration, so closure capturing semantics are different (in C#5) ### Scope Major @@ -26,3 +26,5 @@ Core C# [More information](http://blogs.msdn.com/b/ericlippert/archive/2009/11/12/closing-over-the-loop-variable-considered-harmful.aspx) + + diff --git a/Documentation/breaking-changes/glyphrun_computeinkboundingbox()-and-formattedtext_extent-return-different-values-beginning-in-_net-4_5.md b/Documentation/compatibility/glyphrun_computeinkboundingbox()-and-formattedtext_extent-return-different-values-beginning-in-_net-4_5.md similarity index 88% rename from Documentation/breaking-changes/glyphrun_computeinkboundingbox()-and-formattedtext_extent-return-different-values-beginning-in-_net-4_5.md rename to Documentation/compatibility/glyphrun_computeinkboundingbox()-and-formattedtext_extent-return-different-values-beginning-in-_net-4_5.md index fd2de1681..1ccb45a47 100644 --- a/Documentation/breaking-changes/glyphrun_computeinkboundingbox()-and-formattedtext_extent-return-different-values-beginning-in-_net-4_5.md +++ b/Documentation/compatibility/glyphrun_computeinkboundingbox()-and-formattedtext_extent-return-different-values-beginning-in-_net-4_5.md @@ -1,4 +1,4 @@ -## 114: GlyphRun.ComputeInkBoundingBox() and FormattedText.Extent return different values beginning in .NET 4.5 +## GlyphRun.ComputeInkBoundingBox() and FormattedText.Extent return different values beginning in .NET 4.5 ### Scope Edge @@ -33,3 +33,4 @@ Windows Presentation Foundation (WPF) [More information](http://support.microsoft.com/en-us/kb/3009678) + diff --git a/Documentation/breaking-changes/gridviews-with-allowcustompaging-set-to-true-may-fire-the-pageindexchanging-event-when-leaving-the-final-page-of-the-view.md b/Documentation/compatibility/gridviews-with-allowcustompaging-set-to-true-may-fire-the-pageindexchanging-event-when-leaving-the-final-page-of-the-view.md similarity index 87% rename from Documentation/breaking-changes/gridviews-with-allowcustompaging-set-to-true-may-fire-the-pageindexchanging-event-when-leaving-the-final-page-of-the-view.md rename to Documentation/compatibility/gridviews-with-allowcustompaging-set-to-true-may-fire-the-pageindexchanging-event-when-leaving-the-final-page-of-the-view.md index 834ef9811..49b54dfe8 100644 --- a/Documentation/breaking-changes/gridviews-with-allowcustompaging-set-to-true-may-fire-the-pageindexchanging-event-when-leaving-the-final-page-of-the-view.md +++ b/Documentation/compatibility/gridviews-with-allowcustompaging-set-to-true-may-fire-the-pageindexchanging-event-when-leaving-the-final-page-of-the-view.md @@ -1,4 +1,4 @@ -## 116: GridViews with AllowCustomPaging set to true may fire the PageIndexChanging event when leaving the final page of the view +## GridViews with AllowCustomPaging set to true may fire the PageIndexChanging event when leaving the final page of the view ### Scope Minor @@ -34,3 +34,4 @@ ASP.NET An analyzer could usefully scan XAML (where custom paging is more likely to be enabled) --> + diff --git a/Documentation/breaking-changes/horizontal-scrolling-and-virtualization.md b/Documentation/compatibility/horizontal-scrolling-and-virtualization.md similarity index 97% rename from Documentation/breaking-changes/horizontal-scrolling-and-virtualization.md rename to Documentation/compatibility/horizontal-scrolling-and-virtualization.md index c01940a47..90bd3bd68 100644 --- a/Documentation/breaking-changes/horizontal-scrolling-and-virtualization.md +++ b/Documentation/compatibility/horizontal-scrolling-and-virtualization.md @@ -1,4 +1,4 @@ -## 153: Horizontal scrolling and virtualization +## Horizontal scrolling and virtualization ### Scope Minor @@ -50,7 +50,6 @@ scroll that could change ExtentWidth due to de-virtualization. ### Affected APIs * `T:System.Windows.Controls.Primitives.IScrollInfo` - ### Category Windows Presentation Foundation (WPF) @@ -59,4 +58,4 @@ Windows Presentation Foundation (WPF) 123992 --> - + diff --git a/Documentation/breaking-changes/htmltextwriter-does-not-render-br-element-correctly.md b/Documentation/compatibility/htmltextwriter-does-not-render-br-element-correctly.md similarity index 91% rename from Documentation/breaking-changes/htmltextwriter-does-not-render-br-element-correctly.md rename to Documentation/compatibility/htmltextwriter-does-not-render-br-element-correctly.md index cc86060b7..94fc9ecc3 100644 --- a/Documentation/breaking-changes/htmltextwriter-does-not-render-br-element-correctly.md +++ b/Documentation/compatibility/htmltextwriter-does-not-render-br-element-correctly.md @@ -1,4 +1,4 @@ -## 101: HtmlTextWriter does not render `
` element correctly +## HtmlTextWriter does not render `
` element correctly ### Scope Edge @@ -26,3 +26,5 @@ If an app depended on the extra `
` tag, `HtmlTextWriter.RenderBeginTag()` ASP.NET [More information](http://connect.microsoft.com/VisualStudio/feedback/details/813061/htmltextwriter-does-not-render-br-element-correctly) + + diff --git a/Documentation/breaking-changes/httprequest_contentencoding-property-prohibits-utf7.md b/Documentation/compatibility/httprequest_contentencoding-property-prohibits-utf7.md similarity index 90% rename from Documentation/breaking-changes/httprequest_contentencoding-property-prohibits-utf7.md rename to Documentation/compatibility/httprequest_contentencoding-property-prohibits-utf7.md index 14778adbb..9db98c743 100644 --- a/Documentation/breaking-changes/httprequest_contentencoding-property-prohibits-utf7.md +++ b/Documentation/compatibility/httprequest_contentencoding-property-prohibits-utf7.md @@ -1,4 +1,4 @@ -## 43: HttpRequest.ContentEncoding property prohibits UTF7 +## HttpRequest.ContentEncoding property prohibits UTF7 ### Scope Edge @@ -25,3 +25,5 @@ Ideally, applications should be updated to not use UTF-7 encoding in HttpRequest ASP.NET [More information](https://msdn.microsoft.com/en-us/library/hh367887(v=vs.110).aspx#asp) + + diff --git a/Documentation/breaking-changes/httputility_javascriptstringencode-escapes-ampersand.md b/Documentation/compatibility/httputility_javascriptstringencode-escapes-ampersand.md similarity index 90% rename from Documentation/breaking-changes/httputility_javascriptstringencode-escapes-ampersand.md rename to Documentation/compatibility/httputility_javascriptstringencode-escapes-ampersand.md index ba9bc1c5a..c2ddd0fcb 100644 --- a/Documentation/breaking-changes/httputility_javascriptstringencode-escapes-ampersand.md +++ b/Documentation/compatibility/httputility_javascriptstringencode-escapes-ampersand.md @@ -1,4 +1,4 @@ -## 44: HttpUtility.JavaScriptStringEncode escapes ampersand +## HttpUtility.JavaScriptStringEncode escapes ampersand ### Scope Minor @@ -26,3 +26,5 @@ If your app depends on the previous behavior of this method, you can add an aspn ASP.NET [More information](https://msdn.microsoft.com/en-us/library/hh367887(v=vs.110).aspx#asp) + + diff --git a/Documentation/breaking-changes/iasyncresult_completedsynchronously-property-must-be-correct-for-the-resulting-task-to-complete.md b/Documentation/compatibility/iasyncresult_completedsynchronously-property-must-be-correct-for-the-resulting-task-to-complete.md similarity index 97% rename from Documentation/breaking-changes/iasyncresult_completedsynchronously-property-must-be-correct-for-the-resulting-task-to-complete.md rename to Documentation/compatibility/iasyncresult_completedsynchronously-property-must-be-correct-for-the-resulting-task-to-complete.md index 56534dfe6..3a2902ede 100644 --- a/Documentation/breaking-changes/iasyncresult_completedsynchronously-property-must-be-correct-for-the-resulting-task-to-complete.md +++ b/Documentation/compatibility/iasyncresult_completedsynchronously-property-must-be-correct-for-the-resulting-task-to-complete.md @@ -1,4 +1,4 @@ -## 58: IAsyncResult.CompletedSynchronously property must be correct for the resulting task to complete +## IAsyncResult.CompletedSynchronously property must be correct for the resulting task to complete ### Scope Edge @@ -46,3 +46,5 @@ If IAsyncResult implementations correctly return true for the CompletedSynchronu Core [More information](https://msdn.microsoft.com/en-us/library/hh367887(v=vs.110).aspx#core) + + diff --git a/Documentation/breaking-changes/icommand_canexecutechanged-event-behaviour-changed-in-_net-4_5.md b/Documentation/compatibility/icommand_canexecutechanged-event-behaviour-changed-in-_net-4_5.md similarity index 91% rename from Documentation/breaking-changes/icommand_canexecutechanged-event-behaviour-changed-in-_net-4_5.md rename to Documentation/compatibility/icommand_canexecutechanged-event-behaviour-changed-in-_net-4_5.md index d098e92f7..a6ff0980e 100644 --- a/Documentation/breaking-changes/icommand_canexecutechanged-event-behaviour-changed-in-_net-4_5.md +++ b/Documentation/compatibility/icommand_canexecutechanged-event-behaviour-changed-in-_net-4_5.md @@ -1,4 +1,4 @@ -## 84: ICommand.CanExecuteChanged event behaviour changed in .NET 4.5 +## ICommand.CanExecuteChanged event behaviour changed in .NET 4.5 ### Scope Minor @@ -28,3 +28,5 @@ This bug has been fixed in the .NET Framework 4.5 servicing releases, so it can Windows Presentation Foundation (WPF) [More information](http://connect.microsoft.com/VisualStudio/feedback/details/751429/wpf-icommand-canexecutechanged-behaviour-change-in-net-4-5) + + diff --git a/Documentation/breaking-changes/il-ret-not-allowed-in-a-try-region.md b/Documentation/compatibility/il-ret-not-allowed-in-a-try-region.md similarity index 93% rename from Documentation/breaking-changes/il-ret-not-allowed-in-a-try-region.md rename to Documentation/compatibility/il-ret-not-allowed-in-a-try-region.md index 5cb318029..1cb812880 100644 --- a/Documentation/breaking-changes/il-ret-not-allowed-in-a-try-region.md +++ b/Documentation/compatibility/il-ret-not-allowed-in-a-try-region.md @@ -1,4 +1,4 @@ -## 80: IL ret not allowed in a try region +## IL ret not allowed in a try region ### Scope Edge @@ -31,4 +31,4 @@ JIT We could maybe detect this by looking for apps that emit ret opcodes, but we'd have to also know whether they were emitted into a try block. --> - + diff --git a/Documentation/breaking-changes/incorrect-implementation-of-memberdescriptor_equals.md b/Documentation/compatibility/incorrect-implementation-of-memberdescriptor_equals.md similarity index 94% rename from Documentation/breaking-changes/incorrect-implementation-of-memberdescriptor_equals.md rename to Documentation/compatibility/incorrect-implementation-of-memberdescriptor_equals.md index 2ca02aa8e..4ced9ff6f 100644 --- a/Documentation/breaking-changes/incorrect-implementation-of-memberdescriptor_equals.md +++ b/Documentation/compatibility/incorrect-implementation-of-memberdescriptor_equals.md @@ -1,4 +1,4 @@ -## 150: Incorrect implementation of MemberDescriptor.Equals +## Incorrect implementation of MemberDescriptor.Equals ### Scope Edge @@ -49,3 +49,5 @@ app.config file: ### Category Windows Forms + + diff --git a/Documentation/breaking-changes/intermittently-unable-to-scroll-to-bottom-item-in-itemscontrols-when-using-customer-datatemplates.md b/Documentation/compatibility/intermittently-unable-to-scroll-to-bottom-item-in-itemscontrols-when-using-customer-datatemplates.md similarity index 87% rename from Documentation/breaking-changes/intermittently-unable-to-scroll-to-bottom-item-in-itemscontrols-when-using-customer-datatemplates.md rename to Documentation/compatibility/intermittently-unable-to-scroll-to-bottom-item-in-itemscontrols-when-using-customer-datatemplates.md index 294d3e9ad..d0a4e85ca 100644 --- a/Documentation/breaking-changes/intermittently-unable-to-scroll-to-bottom-item-in-itemscontrols-when-using-customer-datatemplates.md +++ b/Documentation/compatibility/intermittently-unable-to-scroll-to-bottom-item-in-itemscontrols-when-using-customer-datatemplates.md @@ -1,4 +1,4 @@ -## 113: Intermittently unable to scroll to bottom item in ItemsControls (like ListBox and DataGrid) when using custom DataTemplates +## Intermittently unable to scroll to bottom item in ItemsControls (like ListBox and DataGrid) when using custom DataTemplates ### Scope Minor @@ -32,4 +32,4 @@ Windows Presentation Foundation (WPF) This is difficult to detect with ApiPort because we can't know which of all ItemsControl instances have custom data templates that would make them susceptible to this. We should learn more about the issue to understand whether or not an analyzer could do a better job. --> - + diff --git a/Documentation/breaking-changes/ipad-should-not-be-used-in-custom-capabilities-file-because-it-is-now-a-browser-capability.md b/Documentation/compatibility/ipad-should-not-be-used-in-custom-capabilities-file-because-it-is-now-a-browser-capability.md similarity index 84% rename from Documentation/breaking-changes/ipad-should-not-be-used-in-custom-capabilities-file-because-it-is-now-a-browser-capability.md rename to Documentation/compatibility/ipad-should-not-be-used-in-custom-capabilities-file-because-it-is-now-a-browser-capability.md index 6746a1f85..212b3a00b 100644 --- a/Documentation/breaking-changes/ipad-should-not-be-used-in-custom-capabilities-file-because-it-is-now-a-browser-capability.md +++ b/Documentation/compatibility/ipad-should-not-be-used-in-custom-capabilities-file-because-it-is-now-a-browser-capability.md @@ -1,4 +1,4 @@ -## 118: IPad should not be used in custom capabilities file because it is now a browser capability +## IPad should not be used in custom capabilities file because it is now a browser capability ### Scope Edge @@ -29,3 +29,4 @@ ASP.NET For analyzer, can look for 'iPad' in .browser capability files --> + diff --git a/Documentation/breaking-changes/item-scrolling-a-flat-list-with-items-of-different-pixel-height.md b/Documentation/compatibility/item-scrolling-a-flat-list-with-items-of-different-pixel-height.md similarity index 94% rename from Documentation/breaking-changes/item-scrolling-a-flat-list-with-items-of-different-pixel-height.md rename to Documentation/compatibility/item-scrolling-a-flat-list-with-items-of-different-pixel-height.md index 9071027ab..8d47ab12f 100644 --- a/Documentation/breaking-changes/item-scrolling-a-flat-list-with-items-of-different-pixel-height.md +++ b/Documentation/compatibility/item-scrolling-a-flat-list-with-items-of-different-pixel-height.md @@ -1,4 +1,4 @@ -## 152: Item-scrolling a flat list with items of different pixel-height +## Item-scrolling a flat list with items of different pixel-height ### Scope Minor @@ -47,4 +47,4 @@ Windows Presentation Foundation (WPF) 202599 --> - + diff --git a/Documentation/breaking-changes/items_clear-does-not-remove-duplicates-from-selecteditems.md b/Documentation/compatibility/items_clear-does-not-remove-duplicates-from-selecteditems.md similarity index 90% rename from Documentation/breaking-changes/items_clear-does-not-remove-duplicates-from-selecteditems.md rename to Documentation/compatibility/items_clear-does-not-remove-duplicates-from-selecteditems.md index 7875ebd43..de76526b6 100644 --- a/Documentation/breaking-changes/items_clear-does-not-remove-duplicates-from-selecteditems.md +++ b/Documentation/compatibility/items_clear-does-not-remove-duplicates-from-selecteditems.md @@ -1,4 +1,4 @@ -## 154: Items.Clear does not remove duplicates from SelectedItems +## Items.Clear does not remove duplicates from SelectedItems ### Scope Minor @@ -37,4 +37,4 @@ Windows Presentation Foundation (WPF) 154627 --> - + diff --git a/Documentation/breaking-changes/linq-to-ef-join-throws-argumentoutofrangeexception.md b/Documentation/compatibility/linq-to-ef-join-throws-argumentoutofrangeexception.md similarity index 96% rename from Documentation/breaking-changes/linq-to-ef-join-throws-argumentoutofrangeexception.md rename to Documentation/compatibility/linq-to-ef-join-throws-argumentoutofrangeexception.md index 4e1419fe1..a9114d6c2 100644 --- a/Documentation/breaking-changes/linq-to-ef-join-throws-argumentoutofrangeexception.md +++ b/Documentation/compatibility/linq-to-ef-join-throws-argumentoutofrangeexception.md @@ -1,4 +1,4 @@ -## 93: Linq to EF Join throws ArgumentOutOfRangeException +## Linq to EF Join throws ArgumentOutOfRangeException ### Scope Minor @@ -35,3 +35,5 @@ This issue was fixed in a servicing update. Please update the .NET Framework 4.5 LINQ [More information](http://connect.microsoft.com/VisualStudio/feedback/details/763986/linq-to-ef-join-throws-index-was-out-of-range-after-upgrade-from-vs2010-to-vs2012) + + diff --git a/Documentation/breaking-changes/list_foreach-can-throw-exception-when-modifying-list-item.md b/Documentation/compatibility/list_foreach-can-throw-exception-when-modifying-list-item.md similarity index 88% rename from Documentation/breaking-changes/list_foreach-can-throw-exception-when-modifying-list-item.md rename to Documentation/compatibility/list_foreach-can-throw-exception-when-modifying-list-item.md index 1310c7a8e..57b9e0bb9 100644 --- a/Documentation/breaking-changes/list_foreach-can-throw-exception-when-modifying-list-item.md +++ b/Documentation/compatibility/list_foreach-can-throw-exception-when-modifying-list-item.md @@ -1,4 +1,4 @@ -## 5: List<T>.ForEach can throw exception when modifying list item +## List<T>.ForEach can throw exception when modifying list item ### Scope Edge @@ -25,3 +25,5 @@ Ideally, code should be fixed to not modify lists while enumerating their elemen Core [More information](https://msdn.microsoft.com/en-us/library/hh367887\(v=vs.110\).aspx#core) + + diff --git a/Documentation/breaking-changes/list_sort-algorithm-changed.md b/Documentation/compatibility/list_sort-algorithm-changed.md similarity index 95% rename from Documentation/breaking-changes/list_sort-algorithm-changed.md rename to Documentation/compatibility/list_sort-algorithm-changed.md index 302b537dd..a229f3fa3 100644 --- a/Documentation/breaking-changes/list_sort-algorithm-changed.md +++ b/Documentation/compatibility/list_sort-algorithm-changed.md @@ -1,4 +1,4 @@ -## 54: List.Sort algorithm changed +## List.Sort algorithm changed ### Scope Transparent @@ -28,3 +28,5 @@ Because the old sort algorithm was also unstable (though in slightly different w Core [More information](http://stackoverflow.com/questions/12461328/behaviour-of-listt-sort-in-net-4-5-changed-from-net-4-0?rq=1) + + diff --git a/Documentation/breaking-changes/listboxitem-isselected-binding-issue-with-observablecollection_move.md b/Documentation/compatibility/listboxitem-isselected-binding-issue-with-observablecollection_move.md similarity index 90% rename from Documentation/breaking-changes/listboxitem-isselected-binding-issue-with-observablecollection_move.md rename to Documentation/compatibility/listboxitem-isselected-binding-issue-with-observablecollection_move.md index 397557574..dfd49e0b9 100644 --- a/Documentation/breaking-changes/listboxitem-isselected-binding-issue-with-observablecollection_move.md +++ b/Documentation/compatibility/listboxitem-isselected-binding-issue-with-observablecollection_move.md @@ -1,4 +1,4 @@ -## 102: ListBoxItem IsSelected binding issue with ObservableCollection<T>.Move +## ListBoxItem IsSelected binding issue with ObservableCollection<T>.Move ### Scope Minor @@ -30,3 +30,4 @@ Windows Presentation Foundation (WPF) [More information](http://social.msdn.microsoft.com/Forums/en-US/afcbc8b3-a2f2-41e4-b402-2efc9eab1ffe/listboxitem-isselected-binding-issue-with-observablecollectiontmove?forum=wpf) + diff --git a/Documentation/breaking-changes/log-file-name-created-by-the-objectcontext_createdatabase-method-has-changed-to-match-sql-server-specifications.md b/Documentation/compatibility/log-file-name-created-by-the-objectcontext_createdatabase-method-has-changed-to-match-sql-server-specifications.md similarity index 85% rename from Documentation/breaking-changes/log-file-name-created-by-the-objectcontext_createdatabase-method-has-changed-to-match-sql-server-specifications.md rename to Documentation/compatibility/log-file-name-created-by-the-objectcontext_createdatabase-method-has-changed-to-match-sql-server-specifications.md index b0e6200f5..79f624ca4 100644 --- a/Documentation/breaking-changes/log-file-name-created-by-the-objectcontext_createdatabase-method-has-changed-to-match-sql-server-specifications.md +++ b/Documentation/compatibility/log-file-name-created-by-the-objectcontext_createdatabase-method-has-changed-to-match-sql-server-specifications.md @@ -1,4 +1,4 @@ -## 59: Log file name created by the ObjectContext.CreateDatabase method has changed to match SQL Server specifications +## Log file name created by the ObjectContext.CreateDatabase method has changed to match SQL Server specifications ### Scope Edge @@ -25,3 +25,5 @@ If the log file name is important for an app, the app should be updated to expec Entity Framework [More information](https://msdn.microsoft.com/en-us/library/hh367887(v=vs.110).aspx#sql) + + diff --git a/Documentation/breaking-changes/long-path-support.md b/Documentation/compatibility/long-path-support.md similarity index 97% rename from Documentation/breaking-changes/long-path-support.md rename to Documentation/compatibility/long-path-support.md index 7d6ace1f9..31887b916 100644 --- a/Documentation/breaking-changes/long-path-support.md +++ b/Documentation/compatibility/long-path-support.md @@ -1,4 +1,4 @@ -## 162: Long path support +## Long path support ### Scope Minor @@ -48,4 +48,4 @@ Core 195340 --> - + diff --git a/Documentation/breaking-changes/machinekey_encode-and-machinekey_decode-methods-are-now-obsolete.md b/Documentation/compatibility/machinekey_encode-and-machinekey_decode-methods-are-now-obsolete.md similarity index 90% rename from Documentation/breaking-changes/machinekey_encode-and-machinekey_decode-methods-are-now-obsolete.md rename to Documentation/compatibility/machinekey_encode-and-machinekey_decode-methods-are-now-obsolete.md index 1288de05f..19042748f 100644 --- a/Documentation/breaking-changes/machinekey_encode-and-machinekey_decode-methods-are-now-obsolete.md +++ b/Documentation/compatibility/machinekey_encode-and-machinekey_decode-methods-are-now-obsolete.md @@ -1,4 +1,4 @@ -## 28: MachineKey.Encode and MachineKey.Decode methods are now obsolete +## MachineKey.Encode and MachineKey.Decode methods are now obsolete ### Scope Minor @@ -26,3 +26,5 @@ The recommended alternatives are [MachineKey.Protect](https://msdn.microsoft.com ASP.NET [More information](https://msdn.microsoft.com/en-us/library/hh367887(v=vs.110).aspx#asp) + + diff --git a/Documentation/breaking-changes/managed-browser-hosting-controls-from-the-_net-framework-1_1-and-2_0-are-blocked.md b/Documentation/compatibility/managed-browser-hosting-controls-from-the-_net-framework-1_1-and-2_0-are-blocked.md similarity index 88% rename from Documentation/breaking-changes/managed-browser-hosting-controls-from-the-_net-framework-1_1-and-2_0-are-blocked.md rename to Documentation/compatibility/managed-browser-hosting-controls-from-the-_net-framework-1_1-and-2_0-are-blocked.md index 8742d28ec..ba0d62f04 100644 --- a/Documentation/breaking-changes/managed-browser-hosting-controls-from-the-_net-framework-1_1-and-2_0-are-blocked.md +++ b/Documentation/compatibility/managed-browser-hosting-controls-from-the-_net-framework-1_1-and-2_0-are-blocked.md @@ -1,4 +1,4 @@ -## 64: Managed browser hosting controls from the .NET Framework 1.1 and 2.0 are blocked +## Managed browser hosting controls from the .NET Framework 1.1 and 2.0 are blocked ### Scope Minor @@ -25,3 +25,5 @@ Internet Explorer will fail to launch an application that uses managed browser h Web Applications [More information](https://msdn.microsoft.com/en-us/library/hh367887(v=vs.110).aspx#web) + + diff --git a/Documentation/breaking-changes/marshal_sizeof-and-marshal_ptrtostructure-overloads-break-dynamic-code.md b/Documentation/compatibility/marshal_sizeof-and-marshal_ptrtostructure-overloads-break-dynamic-code.md similarity index 92% rename from Documentation/breaking-changes/marshal_sizeof-and-marshal_ptrtostructure-overloads-break-dynamic-code.md rename to Documentation/compatibility/marshal_sizeof-and-marshal_ptrtostructure-overloads-break-dynamic-code.md index d7ca41599..bacaae159 100644 --- a/Documentation/breaking-changes/marshal_sizeof-and-marshal_ptrtostructure-overloads-break-dynamic-code.md +++ b/Documentation/compatibility/marshal_sizeof-and-marshal_ptrtostructure-overloads-break-dynamic-code.md @@ -1,4 +1,4 @@ -## 130: Marshal.SizeOf and Marshal.PtrToStructure overloads break dynamic code +## Marshal.SizeOf and Marshal.PtrToStructure overloads break dynamic code ### Scope Minor @@ -37,3 +37,4 @@ Core since the broken cases are so narrow that the rules would likely add more noise than they're worth. --> + diff --git a/Documentation/breaking-changes/mef-catalogs-implement-ienumerable-and-therefore-can-no-longer-be-used-to-create-a-serializer.md b/Documentation/compatibility/mef-catalogs-implement-ienumerable-and-therefore-can-no-longer-be-used-to-create-a-serializer.md similarity index 82% rename from Documentation/breaking-changes/mef-catalogs-implement-ienumerable-and-therefore-can-no-longer-be-used-to-create-a-serializer.md rename to Documentation/compatibility/mef-catalogs-implement-ienumerable-and-therefore-can-no-longer-be-used-to-create-a-serializer.md index 78a645ad2..550d90211 100644 --- a/Documentation/breaking-changes/mef-catalogs-implement-ienumerable-and-therefore-can-no-longer-be-used-to-create-a-serializer.md +++ b/Documentation/compatibility/mef-catalogs-implement-ienumerable-and-therefore-can-no-longer-be-used-to-create-a-serializer.md @@ -1,5 +1,4 @@ -## 12: MEF catalogs implement IEnumerable and therefore can no longer be used to create a serializer - +## MEF catalogs implement IEnumerable and therefore can no longer be used to create a serializer ### Scope Major @@ -26,3 +25,5 @@ Can no longer use MEF to create a serializer Managed Extensibility Framework (MEF) [More information](https://msdn.microsoft.com/en-us/library/hh367887#MEF) + + diff --git a/Documentation/breaking-changes/minfreememorypercentagetoactiveservice-is-now-respected.md b/Documentation/compatibility/minfreememorypercentagetoactiveservice-is-now-respected.md similarity index 90% rename from Documentation/breaking-changes/minfreememorypercentagetoactiveservice-is-now-respected.md rename to Documentation/compatibility/minfreememorypercentagetoactiveservice-is-now-respected.md index 76263e73a..141bda90d 100644 --- a/Documentation/breaking-changes/minfreememorypercentagetoactiveservice-is-now-respected.md +++ b/Documentation/compatibility/minfreememorypercentagetoactiveservice-is-now-respected.md @@ -1,4 +1,4 @@ -## 32: MinFreeMemoryPercentageToActiveService is now respected +## MinFreeMemoryPercentageToActiveService is now respected ### Scope Minor @@ -25,3 +25,5 @@ An exception occurs if the free memory available on the web server is less than Windows Communication Foundation (WCF) [More information](https://msdn.microsoft.com/en-us/library/dn458360(v=vs.110).aspx) + + diff --git a/Documentation/breaking-changes/missing-target-framework-moniker-results-in-4_0-behavior.md b/Documentation/compatibility/missing-target-framework-moniker-results-in-4_0-behavior.md similarity index 93% rename from Documentation/breaking-changes/missing-target-framework-moniker-results-in-4_0-behavior.md rename to Documentation/compatibility/missing-target-framework-moniker-results-in-4_0-behavior.md index d2e2beac4..713e53cd2 100644 --- a/Documentation/breaking-changes/missing-target-framework-moniker-results-in-4_0-behavior.md +++ b/Documentation/compatibility/missing-target-framework-moniker-results-in-4_0-behavior.md @@ -1,4 +1,4 @@ -## 13: Missing Target Framework Moniker results in 4.0 behavior +## Missing Target Framework Moniker results in 4.0 behavior ### Scope Major @@ -22,4 +22,6 @@ A [target framework attribute](https://msdn.microsoft.com/en-us/library/system.r * Not detectable via API analysis ### Category -Core \ No newline at end of file +Core + + diff --git a/Documentation/breaking-changes/multi-line-asp_net-textbox-spacing-changed-when-using-antixssencoder.md b/Documentation/compatibility/multi-line-asp_net-textbox-spacing-changed-when-using-antixssencoder.md similarity index 90% rename from Documentation/breaking-changes/multi-line-asp_net-textbox-spacing-changed-when-using-antixssencoder.md rename to Documentation/compatibility/multi-line-asp_net-textbox-spacing-changed-when-using-antixssencoder.md index 3fe9605ca..7c77b9522 100644 --- a/Documentation/breaking-changes/multi-line-asp_net-textbox-spacing-changed-when-using-antixssencoder.md +++ b/Documentation/compatibility/multi-line-asp_net-textbox-spacing-changed-when-using-antixssencoder.md @@ -1,4 +1,4 @@ -## 92: Multi-line ASP.Net TextBox spacing changed when using AntiXSSEncoder +## Multi-line ASP.Net TextBox spacing changed when using AntiXSSEncoder ### Scope Minor @@ -30,3 +30,5 @@ ASP.NET ### Notes Encoder is set in a config file. See bug repro for example. --> + + diff --git a/Documentation/breaking-changes/multiple-items-in-a-single-tablelayoutpanel-cell-may-be-rearranged.md b/Documentation/compatibility/multiple-items-in-a-single-tablelayoutpanel-cell-may-be-rearranged.md similarity index 90% rename from Documentation/breaking-changes/multiple-items-in-a-single-tablelayoutpanel-cell-may-be-rearranged.md rename to Documentation/compatibility/multiple-items-in-a-single-tablelayoutpanel-cell-may-be-rearranged.md index 78f53d9cb..c1193001b 100644 --- a/Documentation/breaking-changes/multiple-items-in-a-single-tablelayoutpanel-cell-may-be-rearranged.md +++ b/Documentation/compatibility/multiple-items-in-a-single-tablelayoutpanel-cell-may-be-rearranged.md @@ -1,4 +1,4 @@ -## 98: Multiple items in a single TableLayoutPanel cell may be rearranged +## Multiple items in a single TableLayoutPanel cell may be rearranged ### Scope Minor @@ -32,3 +32,5 @@ Windows Forms Although we're looking for TableLayoutPanel APIs, what's really needed here is an analyzer that can look for XAML with multiple items in a single TableLayoutPanel cell Source analyzer status: Pri 1 --> + + diff --git a/Documentation/breaking-changes/netdatacontractserializer-fails-to-deserialize-a-concurrentdictionary-serialized-with-a-different-_net-version.md b/Documentation/compatibility/netdatacontractserializer-fails-to-deserialize-a-concurrentdictionary-serialized-with-a-different-_net-version.md similarity index 90% rename from Documentation/breaking-changes/netdatacontractserializer-fails-to-deserialize-a-concurrentdictionary-serialized-with-a-different-_net-version.md rename to Documentation/compatibility/netdatacontractserializer-fails-to-deserialize-a-concurrentdictionary-serialized-with-a-different-_net-version.md index 12e632b77..8673b5db7 100644 --- a/Documentation/breaking-changes/netdatacontractserializer-fails-to-deserialize-a-concurrentdictionary-serialized-with-a-different-_net-version.md +++ b/Documentation/compatibility/netdatacontractserializer-fails-to-deserialize-a-concurrentdictionary-serialized-with-a-different-_net-version.md @@ -1,4 +1,4 @@ -## 110: NetDataContractSerializer fails to deserialize a ConcurrentDictionary serialized with a different .NET version +## NetDataContractSerializer fails to deserialize a ConcurrentDictionary serialized with a different .NET version ### Scope Minor @@ -32,3 +32,4 @@ Serialization [More information](http://stackoverflow.com/questions/19585791/net-4-5-1-wcf-serialization-exception) + diff --git a/Documentation/breaking-changes/new-(ambiguous)-dispatcher_invoke-overloads-could-result-in-different-behavior.md b/Documentation/compatibility/new-(ambiguous)-dispatcher_invoke-overloads-could-result-in-different-behavior.md similarity index 94% rename from Documentation/breaking-changes/new-(ambiguous)-dispatcher_invoke-overloads-could-result-in-different-behavior.md rename to Documentation/compatibility/new-(ambiguous)-dispatcher_invoke-overloads-could-result-in-different-behavior.md index 2110a989b..77ef6a01f 100644 --- a/Documentation/breaking-changes/new-(ambiguous)-dispatcher_invoke-overloads-could-result-in-different-behavior.md +++ b/Documentation/compatibility/new-(ambiguous)-dispatcher_invoke-overloads-could-result-in-different-behavior.md @@ -1,4 +1,4 @@ -## 23: New (ambiguous) Dispatcher.Invoke overloads could result in different behavior +## New (ambiguous) Dispatcher.Invoke overloads could result in different behavior ### Scope Minor @@ -31,3 +31,5 @@ To avoid ambiguity (and potential differences in exception handling or blocking Windows Workflow Foundation (WF) [More information](https://msdn.microsoft.com/en-us/library/hh367887(v=vs.110).aspx#wwf) + + diff --git a/Documentation/breaking-changes/new-enum-values-in-wpf's-pagerangeselection.md b/Documentation/compatibility/new-enum-values-in-wpf's-pagerangeselection.md similarity index 92% rename from Documentation/breaking-changes/new-enum-values-in-wpf's-pagerangeselection.md rename to Documentation/compatibility/new-enum-values-in-wpf's-pagerangeselection.md index ff232fea1..67cf84b94 100644 --- a/Documentation/breaking-changes/new-enum-values-in-wpf's-pagerangeselection.md +++ b/Documentation/compatibility/new-enum-values-in-wpf's-pagerangeselection.md @@ -1,4 +1,4 @@ -## 37: New enum values in WPF's PageRangeSelection +## New enum values in WPF's PageRangeSelection ### Scope Edge @@ -30,3 +30,5 @@ Windows Presentation Foundation (WPF) ### Notes Look for cast to PageRangeSelection, or Enum.GetNames or Enum.GetValues calls taking this type as input --> + + diff --git a/Documentation/breaking-changes/no-longer-able-to-set-enableviewstatemac-to-false.md b/Documentation/compatibility/no-longer-able-to-set-enableviewstatemac-to-false.md similarity index 91% rename from Documentation/breaking-changes/no-longer-able-to-set-enableviewstatemac-to-false.md rename to Documentation/compatibility/no-longer-able-to-set-enableviewstatemac-to-false.md index b87546208..0d42cbf5c 100644 --- a/Documentation/breaking-changes/no-longer-able-to-set-enableviewstatemac-to-false.md +++ b/Documentation/compatibility/no-longer-able-to-set-enableviewstatemac-to-false.md @@ -1,4 +1,4 @@ -## 14: No longer able to set EnableViewStateMac to false +## No longer able to set EnableViewStateMac to false ### Scope Major @@ -25,3 +25,5 @@ EnableViewStateMac must be assumed to be true, and any resulting MAC errors must ASP.NET [More information](https://msdn.microsoft.com/en-us/library/dn720774#ASP_NET) + + diff --git a/Documentation/breaking-changes/non-pooled-sql-connections-will-leak-memory-if-not-explicitly-disposed.md b/Documentation/compatibility/non-pooled-sql-connections-will-leak-memory-if-not-explicitly-disposed.md similarity index 89% rename from Documentation/breaking-changes/non-pooled-sql-connections-will-leak-memory-if-not-explicitly-disposed.md rename to Documentation/compatibility/non-pooled-sql-connections-will-leak-memory-if-not-explicitly-disposed.md index ad76e5c61..793223bfb 100644 --- a/Documentation/breaking-changes/non-pooled-sql-connections-will-leak-memory-if-not-explicitly-disposed.md +++ b/Documentation/compatibility/non-pooled-sql-connections-will-leak-memory-if-not-explicitly-disposed.md @@ -1,4 +1,4 @@ -## 97: Non-pooled SQL connections will leak memory if not explicitly disposed +## Non-pooled SQL connections will leak memory if not explicitly disposed ### Scope Edge @@ -29,3 +29,5 @@ This issue is fixed in a .NET Framework 4.5 servicing update. Please update the Data [More information](https://support.microsoft.com/kb/2748720) + + diff --git a/Documentation/breaking-changes/null-coalescer-values-are-not-visible-in-debugger-until-one-step-later.md b/Documentation/compatibility/null-coalescer-values-are-not-visible-in-debugger-until-one-step-later.md similarity index 88% rename from Documentation/breaking-changes/null-coalescer-values-are-not-visible-in-debugger-until-one-step-later.md rename to Documentation/compatibility/null-coalescer-values-are-not-visible-in-debugger-until-one-step-later.md index affa6dde4..2acf7b15a 100644 --- a/Documentation/breaking-changes/null-coalescer-values-are-not-visible-in-debugger-until-one-step-later.md +++ b/Documentation/compatibility/null-coalescer-values-are-not-visible-in-debugger-until-one-step-later.md @@ -1,4 +1,4 @@ -## 123: Null coalescer values are not visible in debugger until one step later +## Null coalescer values are not visible in debugger until one step later ### Scope Edge @@ -28,3 +28,5 @@ Stepping one additional time in the debugger will cause the local/field's value Debugger [More information](http://stackoverflow.com/questions/19352130/why-doesnt-the-null-coalescing-operator-work-in-this-situation) + + diff --git a/Documentation/breaking-changes/objectcontext_translate-and-objectcontext_executestorequery-now-support-enum-type.md b/Documentation/compatibility/objectcontext_translate-and-objectcontext_executestorequery-now-support-enum-type.md similarity index 90% rename from Documentation/breaking-changes/objectcontext_translate-and-objectcontext_executestorequery-now-support-enum-type.md rename to Documentation/compatibility/objectcontext_translate-and-objectcontext_executestorequery-now-support-enum-type.md index 549e96ff1..091c4da11 100644 --- a/Documentation/breaking-changes/objectcontext_translate-and-objectcontext_executestorequery-now-support-enum-type.md +++ b/Documentation/compatibility/objectcontext_translate-and-objectcontext_executestorequery-now-support-enum-type.md @@ -1,4 +1,4 @@ -## 41: ObjectContext.Translate and ObjectContext.ExecuteStoreQuery now support enum type +## ObjectContext.Translate and ObjectContext.ExecuteStoreQuery now support enum type ### Scope Edge @@ -28,3 +28,5 @@ If Translate or ExecuteStoreQuery was called on an enum type in .NET 4.0, '0' wa Entity Framework [More information](https://msdn.microsoft.com/en-us/library/hh367887\(v=vs.110\).aspx#sql) + + diff --git a/Documentation/breaking-changes/objectdisposedexception-thrown-by-wpf-spellchecker.md b/Documentation/compatibility/objectdisposedexception-thrown-by-wpf-spellchecker.md similarity index 89% rename from Documentation/breaking-changes/objectdisposedexception-thrown-by-wpf-spellchecker.md rename to Documentation/compatibility/objectdisposedexception-thrown-by-wpf-spellchecker.md index 88d912e99..fb56990fb 100644 --- a/Documentation/breaking-changes/objectdisposedexception-thrown-by-wpf-spellchecker.md +++ b/Documentation/compatibility/objectdisposedexception-thrown-by-wpf-spellchecker.md @@ -1,4 +1,4 @@ -## 174: ObjectDisposedException thrown by WPF spellchecker +## ObjectDisposedException thrown by WPF spellchecker ### Scope Edge @@ -31,3 +31,5 @@ Windows Presentation Foundation (WPF) ### Original Bug 231772 --> + + diff --git a/Documentation/breaking-changes/obsoleteattribute-exports-as-both-obsoleteattribute-and-deprecatedattribute-in-winmd-scenarios.md b/Documentation/compatibility/obsoleteattribute-exports-as-both-obsoleteattribute-and-deprecatedattribute-in-winmd-scenarios.md similarity index 86% rename from Documentation/breaking-changes/obsoleteattribute-exports-as-both-obsoleteattribute-and-deprecatedattribute-in-winmd-scenarios.md rename to Documentation/compatibility/obsoleteattribute-exports-as-both-obsoleteattribute-and-deprecatedattribute-in-winmd-scenarios.md index 3149ca0e2..1b40dcaf4 100644 --- a/Documentation/breaking-changes/obsoleteattribute-exports-as-both-obsoleteattribute-and-deprecatedattribute-in-winmd-scenarios.md +++ b/Documentation/compatibility/obsoleteattribute-exports-as-both-obsoleteattribute-and-deprecatedattribute-in-winmd-scenarios.md @@ -1,4 +1,4 @@ -## 48: ObsoleteAttribute exports as both ObsoleteAttribute and DeprecatedAttribute in WinMD scenarios +## ObsoleteAttribute exports as both ObsoleteAttribute and DeprecatedAttribute in WinMD scenarios ### Scope Edge @@ -27,3 +27,5 @@ We do not recommend applying both ObsoleteAttribute and Windows.Foundation.Depre Core [More information](https://msdn.microsoft.com/en-us/library/dn458356(v=vs.110).aspx) + + diff --git a/Documentation/breaking-changes/only-tls-1_0-1_1-and-1_2-protocols-supported-in-system_net_servicepointmanager-and-system_net_security_sslstream.md b/Documentation/compatibility/only-tls-1_0-1_1-and-1_2-protocols-supported-in-system_net_servicepointmanager-and-system_net_security_sslstream.md similarity index 89% rename from Documentation/breaking-changes/only-tls-1_0-1_1-and-1_2-protocols-supported-in-system_net_servicepointmanager-and-system_net_security_sslstream.md rename to Documentation/compatibility/only-tls-1_0-1_1-and-1_2-protocols-supported-in-system_net_servicepointmanager-and-system_net_security_sslstream.md index e92cd875a..8f02c9962 100644 --- a/Documentation/breaking-changes/only-tls-1_0-1_1-and-1_2-protocols-supported-in-system_net_servicepointmanager-and-system_net_security_sslstream.md +++ b/Documentation/compatibility/only-tls-1_0-1_1-and-1_2-protocols-supported-in-system_net_servicepointmanager-and-system_net_security_sslstream.md @@ -1,4 +1,4 @@ -## 137: Only Tls 1.0, 1.1 and 1.2 protocols supported in System.Net.ServicePointManager and System.Net.Security.SslStream +## Only Tls 1.0, 1.1 and 1.2 protocols supported in System.Net.ServicePointManager and System.Net.Security.SslStream ### Scope Minor @@ -31,3 +31,5 @@ The recommended mitigation is to upgrade the sever-side app to Tls1.0, Tls1.1, o Networking [More information](https://msdn.microsoft.com/en-us/library/dn833123(v=vs.110).aspx#Net) + + diff --git a/Documentation/breaking-changes/opt-in-break-to-revert-from-different-4_5-sql-generation-to-simpler-4_0-sql-generation.md b/Documentation/compatibility/opt-in-break-to-revert-from-different-4_5-sql-generation-to-simpler-4_0-sql-generation.md similarity index 85% rename from Documentation/breaking-changes/opt-in-break-to-revert-from-different-4_5-sql-generation-to-simpler-4_0-sql-generation.md rename to Documentation/compatibility/opt-in-break-to-revert-from-different-4_5-sql-generation-to-simpler-4_0-sql-generation.md index d35f5fb63..cf9a3a90b 100644 --- a/Documentation/breaking-changes/opt-in-break-to-revert-from-different-4_5-sql-generation-to-simpler-4_0-sql-generation.md +++ b/Documentation/compatibility/opt-in-break-to-revert-from-different-4_5-sql-generation-to-simpler-4_0-sql-generation.md @@ -1,4 +1,4 @@ -## 50: Opt-in break to revert from different 4.5 SQL generation to simpler 4.0 SQL generation +## Opt-in break to revert from different 4.5 SQL generation to simpler 4.0 SQL generation ### Scope Transparent @@ -31,4 +31,6 @@ Entity Framework [More information](https://msdn.microsoft.com/en-us/library/dn720772(v=vs.110).aspx) - \ No newline at end of file + + + diff --git a/Documentation/breaking-changes/page_loadcomplete-event-no-longer-causes-system_web_ui_webcontrols_entitydatasource-control-to-invoke-data-binding.md b/Documentation/compatibility/page_loadcomplete-event-no-longer-causes-system_web_ui_webcontrols_entitydatasource-control-to-invoke-data-binding.md similarity index 88% rename from Documentation/breaking-changes/page_loadcomplete-event-no-longer-causes-system_web_ui_webcontrols_entitydatasource-control-to-invoke-data-binding.md rename to Documentation/compatibility/page_loadcomplete-event-no-longer-causes-system_web_ui_webcontrols_entitydatasource-control-to-invoke-data-binding.md index 02e7acf75..fea990994 100644 --- a/Documentation/breaking-changes/page_loadcomplete-event-no-longer-causes-system_web_ui_webcontrols_entitydatasource-control-to-invoke-data-binding.md +++ b/Documentation/compatibility/page_loadcomplete-event-no-longer-causes-system_web_ui_webcontrols_entitydatasource-control-to-invoke-data-binding.md @@ -1,4 +1,4 @@ -## 60: Page.LoadComplete event no longer causes System.Web.UI.WebControls.EntityDataSource control to invoke data binding +## Page.LoadComplete event no longer causes System.Web.UI.WebControls.EntityDataSource control to invoke data binding ### Scope Edge @@ -33,4 +33,4 @@ ASP.NET This change produces different behavior in the unlikely event that applications rely on invoking data binding in the Page.LoadComplete event. --> - + diff --git a/Documentation/breaking-changes/path-colon-checks-are-stricter.md b/Documentation/compatibility/path-colon-checks-are-stricter.md similarity index 93% rename from Documentation/breaking-changes/path-colon-checks-are-stricter.md rename to Documentation/compatibility/path-colon-checks-are-stricter.md index 24bfd4041..14023ae31 100644 --- a/Documentation/breaking-changes/path-colon-checks-are-stricter.md +++ b/Documentation/compatibility/path-colon-checks-are-stricter.md @@ -1,4 +1,4 @@ -## 158: Path colon checks are stricter +## Path colon checks are stricter ### Scope Edge @@ -34,3 +34,4 @@ Alternatively, you can opt out of the new path normalization by setting the `Swi ### Category Core + diff --git a/Documentation/breaking-changes/persian-calendar-now-uses-the-hijri-solar-algorithm.md b/Documentation/compatibility/persian-calendar-now-uses-the-hijri-solar-algorithm.md similarity index 92% rename from Documentation/breaking-changes/persian-calendar-now-uses-the-hijri-solar-algorithm.md rename to Documentation/compatibility/persian-calendar-now-uses-the-hijri-solar-algorithm.md index 5650cef3f..3bf175c7d 100644 --- a/Documentation/breaking-changes/persian-calendar-now-uses-the-hijri-solar-algorithm.md +++ b/Documentation/compatibility/persian-calendar-now-uses-the-hijri-solar-algorithm.md @@ -1,4 +1,4 @@ -## 134: Persian calendar now uses the Hijri solar algorithm +## Persian calendar now uses the Hijri solar algorithm ### Scope Minor @@ -27,3 +27,5 @@ Be aware that some early or late dates may be slightly different when using the Core [More information](https://msdn.microsoft.com/en-us/library/dn833125%28v=vs.110%29.aspx#Core) + + diff --git a/Documentation/breaking-changes/previewlostkeyboardfocus-is-called-repeatedly-if-its-handler-shows-a-message-box.md b/Documentation/compatibility/previewlostkeyboardfocus-is-called-repeatedly-if-its-handler-shows-a-message-box.md similarity index 92% rename from Documentation/breaking-changes/previewlostkeyboardfocus-is-called-repeatedly-if-its-handler-shows-a-message-box.md rename to Documentation/compatibility/previewlostkeyboardfocus-is-called-repeatedly-if-its-handler-shows-a-message-box.md index c8b41587d..bbaabd158 100644 --- a/Documentation/breaking-changes/previewlostkeyboardfocus-is-called-repeatedly-if-its-handler-shows-a-message-box.md +++ b/Documentation/compatibility/previewlostkeyboardfocus-is-called-repeatedly-if-its-handler-shows-a-message-box.md @@ -1,4 +1,4 @@ -## 131: PreviewLostKeyboardFocus is called repeatedly if its handler shows a Windows Forms message box +## PreviewLostKeyboardFocus is called repeatedly if its handler shows a Windows Forms message box ### Scope Edge @@ -40,3 +40,4 @@ Windows Presentation Foundation (WPF) Scan XAML for PreviewLostKeyboardFocus use and then examine the handlers --> + diff --git a/Documentation/breaking-changes/profiling-asp_net-mvc4-apps-can-lead-to-fatal-execution-engine-error.md b/Documentation/compatibility/profiling-asp_net-mvc4-apps-can-lead-to-fatal-execution-engine-error.md similarity index 87% rename from Documentation/breaking-changes/profiling-asp_net-mvc4-apps-can-lead-to-fatal-execution-engine-error.md rename to Documentation/compatibility/profiling-asp_net-mvc4-apps-can-lead-to-fatal-execution-engine-error.md index 1a8f20cf4..321550a71 100644 --- a/Documentation/breaking-changes/profiling-asp_net-mvc4-apps-can-lead-to-fatal-execution-engine-error.md +++ b/Documentation/compatibility/profiling-asp_net-mvc4-apps-can-lead-to-fatal-execution-engine-error.md @@ -1,4 +1,4 @@ -## 96: Profiling ASP.Net MVC4 apps can lead to Fatal Execution Engine Error +## Profiling ASP.Net MVC4 apps can lead to Fatal Execution Engine Error ### Scope Edge @@ -28,3 +28,5 @@ This issue is fixed in the .NET Framework 4.5.2. Alternatively, the profiler may ASP.NET [More information](http://connect.microsoft.com/VisualStudio/feedback/details/793730/clr-profiler-crashes-any-asp-net-mvc4-app-on-startup-due-to-ngen-profile-images) + + diff --git a/Documentation/breaking-changes/reflection-objects-can-no-longer-be-passed-from-managed-code-to-out-of-process-dcom-clients.md b/Documentation/compatibility/reflection-objects-can-no-longer-be-passed-from-managed-code-to-out-of-process-dcom-clients.md similarity index 84% rename from Documentation/breaking-changes/reflection-objects-can-no-longer-be-passed-from-managed-code-to-out-of-process-dcom-clients.md rename to Documentation/compatibility/reflection-objects-can-no-longer-be-passed-from-managed-code-to-out-of-process-dcom-clients.md index b6936734e..5196d17e6 100644 --- a/Documentation/breaking-changes/reflection-objects-can-no-longer-be-passed-from-managed-code-to-out-of-process-dcom-clients.md +++ b/Documentation/compatibility/reflection-objects-can-no-longer-be-passed-from-managed-code-to-out-of-process-dcom-clients.md @@ -1,4 +1,4 @@ -## 77: Reflection objects can no longer be passed from managed code to out-of-process DCOM clients +## Reflection objects can no longer be passed from managed code to out-of-process DCOM clients ### Scope Minor @@ -33,3 +33,5 @@ Update marshaling code to work with non-reflection objects Core [More information](https://msdn.microsoft.com/en-us/library/dn833125(v=vs.110).aspx#Core) + + diff --git a/Documentation/breaking-changes/remove-ssl3-from-the-wcf-transportdefaults.md b/Documentation/compatibility/remove-ssl3-from-the-wcf-transportdefaults.md similarity index 92% rename from Documentation/breaking-changes/remove-ssl3-from-the-wcf-transportdefaults.md rename to Documentation/compatibility/remove-ssl3-from-the-wcf-transportdefaults.md index 33a8c29a4..62c0b706d 100644 --- a/Documentation/breaking-changes/remove-ssl3-from-the-wcf-transportdefaults.md +++ b/Documentation/compatibility/remove-ssl3-from-the-wcf-transportdefaults.md @@ -1,4 +1,4 @@ -## 149: Remove Ssl3 from the WCF TransportDefaults +## Remove Ssl3 from the WCF TransportDefaults ### Scope Edge @@ -23,11 +23,11 @@ If Ssl3 is required, use one of the following configuration mechanisms to add Ss * [\ section of \](https://msdn.microsoft.com/en-us/library/ms731331%28v=vs.110%29.aspx) * [\ section of \](https://msdn.microsoft.com/en-us/library/ms731328%28v=vs.110%29.aspx) - ### Affected APIs * `P:System.ServiceModel.Channels.SslStreamSecurityBindingElement.SslProtocols` * `P:System.ServiceModel.TcpTransportSecurity.SslProtocols` - ### Category -* Windows Communication Foundation (WCF) \ No newline at end of file +* Windows Communication Foundation (WCF) + + diff --git a/Documentation/breaking-changes/resolveassemblyreference-task-now-warns-on-dependencies-with-the-wrong-architecture.md b/Documentation/compatibility/resolveassemblyreference-task-now-warns-on-dependencies-with-the-wrong-architecture.md similarity index 89% rename from Documentation/breaking-changes/resolveassemblyreference-task-now-warns-on-dependencies-with-the-wrong-architecture.md rename to Documentation/compatibility/resolveassemblyreference-task-now-warns-on-dependencies-with-the-wrong-architecture.md index 3cf86fd9a..489bf0152 100644 --- a/Documentation/breaking-changes/resolveassemblyreference-task-now-warns-on-dependencies-with-the-wrong-architecture.md +++ b/Documentation/compatibility/resolveassemblyreference-task-now-warns-on-dependencies-with-the-wrong-architecture.md @@ -1,4 +1,4 @@ -## 49: ResolveAssemblyReference task now warns on dependencies with the wrong architecture +## ResolveAssemblyReference task now warns on dependencies with the wrong architecture ### Scope Minor @@ -28,3 +28,5 @@ There are two areas of impact: MSBuild [More information](https://msdn.microsoft.com/en-us/library/dn458356(v=vs.110).aspx) + + diff --git a/Documentation/breaking-changes/ribbongroup-background-is-set-to-transparent-in-localized-builds.md b/Documentation/compatibility/ribbongroup-background-is-set-to-transparent-in-localized-builds.md similarity index 85% rename from Documentation/breaking-changes/ribbongroup-background-is-set-to-transparent-in-localized-builds.md rename to Documentation/compatibility/ribbongroup-background-is-set-to-transparent-in-localized-builds.md index efe78714e..aabfb77b3 100644 --- a/Documentation/breaking-changes/ribbongroup-background-is-set-to-transparent-in-localized-builds.md +++ b/Documentation/compatibility/ribbongroup-background-is-set-to-transparent-in-localized-builds.md @@ -1,4 +1,4 @@ -## 175: RibbonGroup background is set to transparent in localized builds +## RibbonGroup background is set to transparent in localized builds ### Scope Edge @@ -30,4 +30,6 @@ Windows Presentation Foundation (WPF) \ No newline at end of file +--> + + diff --git a/Documentation/breaking-changes/right-clicking-on-a-wpf-datagrid-row-header-changes-the-datagrid-selection.md b/Documentation/compatibility/right-clicking-on-a-wpf-datagrid-row-header-changes-the-datagrid-selection.md similarity index 86% rename from Documentation/breaking-changes/right-clicking-on-a-wpf-datagrid-row-header-changes-the-datagrid-selection.md rename to Documentation/compatibility/right-clicking-on-a-wpf-datagrid-row-header-changes-the-datagrid-selection.md index d3817e155..587a3698e 100644 --- a/Documentation/breaking-changes/right-clicking-on-a-wpf-datagrid-row-header-changes-the-datagrid-selection.md +++ b/Documentation/compatibility/right-clicking-on-a-wpf-datagrid-row-header-changes-the-datagrid-selection.md @@ -1,4 +1,4 @@ -## 103: Right clicking on a WPF DataGrid row header changes the DataGrid selection +## Right clicking on a WPF DataGrid row header changes the DataGrid selection ### Scope Edge @@ -29,3 +29,4 @@ Windows Presentation Foundation (WPF) [More information](http://connect.microsoft.com/VisualStudio/feedback/details/1001771/right-clicking-on-wpf-data-grid-row-header-changes-selection) + diff --git a/Documentation/breaking-changes/rsacng-now-correctly-loads-rsa-keys-of-non-standard-keysize.md b/Documentation/compatibility/rsacng-now-correctly-loads-rsa-keys-of-non-standard-keysize.md similarity index 93% rename from Documentation/breaking-changes/rsacng-now-correctly-loads-rsa-keys-of-non-standard-keysize.md rename to Documentation/compatibility/rsacng-now-correctly-loads-rsa-keys-of-non-standard-keysize.md index a0956b853..e9ed88226 100644 --- a/Documentation/breaking-changes/rsacng-now-correctly-loads-rsa-keys-of-non-standard-keysize.md +++ b/Documentation/compatibility/rsacng-now-correctly-loads-rsa-keys-of-non-standard-keysize.md @@ -1,4 +1,4 @@ -## 148: RSACng now correctly loads RSA keys of non-standard key size +## RSACng now correctly loads RSA keys of non-standard key size ### Scope Edge @@ -27,7 +27,6 @@ If there is any exception handling logic that relies on the previous behavior where a `CryptographicException` is thrown when non-standard key sizes are used, consider removing the logic. - ### Affected APIs * `M:System.Security.Cryptography.RSA.ImportParameters(System.Security.Cryptography.RSAParameters)` * `M:System.Security.Cryptography.RSACng.ImportParameters(System.Security.Cryptography.RSAParameters)` @@ -36,3 +35,5 @@ key sizes are used, consider removing the logic. ### Category Security + + diff --git a/Documentation/breaking-changes/rsacng_verifyhash-now-returns-false-for-any-verification-failure.md b/Documentation/compatibility/rsacng_verifyhash-now-returns-false-for-any-verification-failure.md similarity index 90% rename from Documentation/breaking-changes/rsacng_verifyhash-now-returns-false-for-any-verification-failure.md rename to Documentation/compatibility/rsacng_verifyhash-now-returns-false-for-any-verification-failure.md index 088e4f797..63bad060a 100644 --- a/Documentation/breaking-changes/rsacng_verifyhash-now-returns-false-for-any-verification-failure.md +++ b/Documentation/compatibility/rsacng_verifyhash-now-returns-false-for-any-verification-failure.md @@ -1,4 +1,4 @@ -## 159: RSACng.VerifyHash now returns False for any verification failure +## RSACng.VerifyHash now returns False for any verification failure ### Scope Minor @@ -32,4 +32,4 @@ Security 164390 --> - + diff --git a/Documentation/breaking-changes/scrolling-a-wpf-treeview-or-grouped-listbox-in-a-virtualizingstackpanel-can-cause-a-hang.md b/Documentation/compatibility/scrolling-a-wpf-treeview-or-grouped-listbox-in-a-virtualizingstackpanel-can-cause-a-hang.md similarity index 90% rename from Documentation/breaking-changes/scrolling-a-wpf-treeview-or-grouped-listbox-in-a-virtualizingstackpanel-can-cause-a-hang.md rename to Documentation/compatibility/scrolling-a-wpf-treeview-or-grouped-listbox-in-a-virtualizingstackpanel-can-cause-a-hang.md index 049813535..d03fbc238 100644 --- a/Documentation/breaking-changes/scrolling-a-wpf-treeview-or-grouped-listbox-in-a-virtualizingstackpanel-can-cause-a-hang.md +++ b/Documentation/compatibility/scrolling-a-wpf-treeview-or-grouped-listbox-in-a-virtualizingstackpanel-can-cause-a-hang.md @@ -1,4 +1,4 @@ -## 86: Scrolling a WPF TreeView or grouped ListBox in a VirtualizingStackPanel can cause a hang +## Scrolling a WPF TreeView or grouped ListBox in a VirtualizingStackPanel can cause a hang ### Scope Major @@ -28,3 +28,5 @@ This bug can be avoided by upgrading to .NET Framework 4.5.1. Alternatively, mar Windows Presentation Foundation (WPF) [More information](http://connect.microsoft.com/VisualStudio/feedback/details/763639/wpf-application-built-on-net-4-0-freezes-under-system-with-net-4-5-while-scrolling-the-treeview-under-specific-conditions) + + diff --git a/Documentation/breaking-changes/serialization-of-control-characters-with-datacontractjsonserializer-is-now-compatible-with-ecmascript-v6-and-v8.md b/Documentation/compatibility/serialization-of-control-characters-with-datacontractjsonserializer-is-now-compatible-with-ecmascript-v6-and-v8.md similarity index 87% rename from Documentation/breaking-changes/serialization-of-control-characters-with-datacontractjsonserializer-is-now-compatible-with-ecmascript-v6-and-v8.md rename to Documentation/compatibility/serialization-of-control-characters-with-datacontractjsonserializer-is-now-compatible-with-ecmascript-v6-and-v8.md index c551dfcf5..0cc815a0b 100644 --- a/Documentation/breaking-changes/serialization-of-control-characters-with-datacontractjsonserializer-is-now-compatible-with-ecmascript-v6-and-v8.md +++ b/Documentation/compatibility/serialization-of-control-characters-with-datacontractjsonserializer-is-now-compatible-with-ecmascript-v6-and-v8.md @@ -1,4 +1,4 @@ -## 168: Serialization of control characters with DataContractJsonSerializer is now compatible with ECMAScript V6 and V8 +## Serialization of control characters with DataContractJsonSerializer is now compatible with ECMAScript V6 and V8 ### Scope Edge @@ -24,12 +24,12 @@ For apps that target the .NET Framework 4.7, this feature is enabled by default.
``` - ### Affected APIs * `M:System.Runtime.Serialization.Json.DataContractJsonSerializer.WriteObject(System.IO.Stream,System.Object)` * `M:System.Runtime.Serialization.Json.DataContractJsonSerializer.WriteObject(System.Xml.XmlDictionaryWriter,System.Object)` * `M:System.Runtime.Serialization.Json.DataContractJsonSerializer.WriteObject(System.Xml.XmlWriter,System.Object)` - ### Category -* Windows Communication Foundation (WCF) \ No newline at end of file +* Windows Communication Foundation (WCF) + + diff --git a/Documentation/breaking-changes/sharing-session-state-with-asp_net-stateserver-requires-all-servers-in-the-web-farm-to-use-the-same-_net-framework-version.md b/Documentation/compatibility/sharing-session-state-with-asp_net-stateserver-requires-all-servers-in-the-web-farm-to-use-the-same-_net-framework-version.md similarity index 85% rename from Documentation/breaking-changes/sharing-session-state-with-asp_net-stateserver-requires-all-servers-in-the-web-farm-to-use-the-same-_net-framework-version.md rename to Documentation/compatibility/sharing-session-state-with-asp_net-stateserver-requires-all-servers-in-the-web-farm-to-use-the-same-_net-framework-version.md index 1aae2c074..11bee4d06 100644 --- a/Documentation/breaking-changes/sharing-session-state-with-asp_net-stateserver-requires-all-servers-in-the-web-farm-to-use-the-same-_net-framework-version.md +++ b/Documentation/compatibility/sharing-session-state-with-asp_net-stateserver-requires-all-servers-in-the-web-farm-to-use-the-same-_net-framework-version.md @@ -1,4 +1,4 @@ -## 128: Sharing session state with Asp.Net StateServer requires all servers in the web farm to use the same .NET Framework version +## Sharing session state with Asp.Net StateServer requires all servers in the web farm to use the same .NET Framework version ### Scope Edge @@ -31,3 +31,4 @@ ASP.NET Source analysis will be more useful than binary here; we'll want to look in the web.config for StateServer usage (https://msdn.microsoft.com/en-us/subscriptions/downloads/h6bb9cz9(v=vs.71).aspx) --> + diff --git a/Documentation/breaking-changes/soapformatter-cannot-deserialize-hashtable-and-similar-ordered-collection-objects.md b/Documentation/compatibility/soapformatter-cannot-deserialize-hashtable-and-similar-ordered-collection-objects.md similarity index 92% rename from Documentation/breaking-changes/soapformatter-cannot-deserialize-hashtable-and-similar-ordered-collection-objects.md rename to Documentation/compatibility/soapformatter-cannot-deserialize-hashtable-and-similar-ordered-collection-objects.md index 9def1d2ef..8dfe00bc8 100644 --- a/Documentation/breaking-changes/soapformatter-cannot-deserialize-hashtable-and-similar-ordered-collection-objects.md +++ b/Documentation/compatibility/soapformatter-cannot-deserialize-hashtable-and-similar-ordered-collection-objects.md @@ -1,4 +1,4 @@ -## 1: SoapFormatter cannot deserialize Hashtable and similar ordered collection objects +## SoapFormatter cannot deserialize Hashtable and similar ordered collection objects ### Scope Minor @@ -29,3 +29,5 @@ SoapFormatter serialization should be replaced with BinaryFormatter serializatio Serialization [More information](https://msdn.microsoft.com/en-us/library/hh367887\(v=vs.110\).aspx#core) + + diff --git a/Documentation/breaking-changes/some-_net-apis-cause-first-chance-(handled)-entrypointnotfoundexceptions.md b/Documentation/compatibility/some-_net-apis-cause-first-chance-(handled)-entrypointnotfoundexceptions.md similarity index 92% rename from Documentation/breaking-changes/some-_net-apis-cause-first-chance-(handled)-entrypointnotfoundexceptions.md rename to Documentation/compatibility/some-_net-apis-cause-first-chance-(handled)-entrypointnotfoundexceptions.md index 29d174aa0..807ec18dd 100644 --- a/Documentation/breaking-changes/some-_net-apis-cause-first-chance-(handled)-entrypointnotfoundexceptions.md +++ b/Documentation/compatibility/some-_net-apis-cause-first-chance-(handled)-entrypointnotfoundexceptions.md @@ -1,4 +1,4 @@ -## 85: Some .NET APIs cause first chance (handled) EntryPointNotFoundExceptions +## Some .NET APIs cause first chance (handled) EntryPointNotFoundExceptions ### Scope Edge @@ -33,3 +33,5 @@ This bug can be avoided by upgrading to .NET Framework 4.5.1. Alternatively, tes Core [More information](https://connect.microsoft.com/VisualStudio/feedback/details/732334/unable-to-find-an-entry-point-named-getcurrentpackageid-in-dll-kernel32-dll) + + diff --git a/Documentation/breaking-changes/some-workflow-drag-and-drop-apis-are-obsolete.md b/Documentation/compatibility/some-workflow-drag-and-drop-apis-are-obsolete.md similarity index 93% rename from Documentation/breaking-changes/some-workflow-drag-and-drop-apis-are-obsolete.md rename to Documentation/compatibility/some-workflow-drag-and-drop-apis-are-obsolete.md index 6b8a19172..60e279370 100644 --- a/Documentation/breaking-changes/some-workflow-drag-and-drop-apis-are-obsolete.md +++ b/Documentation/compatibility/some-workflow-drag-and-drop-apis-are-obsolete.md @@ -1,4 +1,4 @@ -## 22: Some WorkFlow drag and drop APIs are obsolete +## Some WorkFlow drag and drop APIs are obsolete ### Scope Minor @@ -28,3 +28,5 @@ New [DragDropHelper](https://msdn.microsoft.com/en-us/library/system.activities. Windows Workflow Foundation (WF) [More information](https://msdn.microsoft.com/en-us/library/hh367887#wwf) + + diff --git a/Documentation/breaking-changes/sql_variant-data-uses-sql_variant-collation-rather-than-database-collation.md b/Documentation/compatibility/sql_variant-data-uses-sql_variant-collation-rather-than-database-collation.md similarity index 84% rename from Documentation/breaking-changes/sql_variant-data-uses-sql_variant-collation-rather-than-database-collation.md rename to Documentation/compatibility/sql_variant-data-uses-sql_variant-collation-rather-than-database-collation.md index 73283cac0..a854a5df5 100644 --- a/Documentation/breaking-changes/sql_variant-data-uses-sql_variant-collation-rather-than-database-collation.md +++ b/Documentation/compatibility/sql_variant-data-uses-sql_variant-collation-rather-than-database-collation.md @@ -1,4 +1,4 @@ -## 72: Sql_variant data uses sql_variant collation rather than database collation +## Sql_variant data uses sql_variant collation rather than database collation ### Scope Transparent @@ -25,3 +25,5 @@ This change addresses possible data corruption if the database collation differs Data [More information](https://msdn.microsoft.com/en-us/library/hh367887(v=vs.110).aspx#xml) + + diff --git a/Documentation/breaking-changes/sqlbulkcopy-uses-destination-column-encoding-for-strings.md b/Documentation/compatibility/sqlbulkcopy-uses-destination-column-encoding-for-strings.md similarity index 92% rename from Documentation/breaking-changes/sqlbulkcopy-uses-destination-column-encoding-for-strings.md rename to Documentation/compatibility/sqlbulkcopy-uses-destination-column-encoding-for-strings.md index 0db5c9021..71cb6b33d 100644 --- a/Documentation/breaking-changes/sqlbulkcopy-uses-destination-column-encoding-for-strings.md +++ b/Documentation/compatibility/sqlbulkcopy-uses-destination-column-encoding-for-strings.md @@ -1,4 +1,4 @@ -## 71: SqlBulkCopy uses destination column encoding for strings +## SqlBulkCopy uses destination column encoding for strings ### Scope Edge @@ -26,3 +26,5 @@ Expect that SqlBulkCopy will no longer corrupt data due to encoding differences. Data [More information](https://msdn.microsoft.com/en-us/library/hh367887(v=vs.110).aspx#xml) + + diff --git a/Documentation/breaking-changes/sqlconnection-can-no-longer-connect-to-sql-server-1997-or-databases-using-the-via-adapter.md b/Documentation/compatibility/sqlconnection-can-no-longer-connect-to-sql-server-1997-or-databases-using-the-via-adapter.md similarity index 91% rename from Documentation/breaking-changes/sqlconnection-can-no-longer-connect-to-sql-server-1997-or-databases-using-the-via-adapter.md rename to Documentation/compatibility/sqlconnection-can-no-longer-connect-to-sql-server-1997-or-databases-using-the-via-adapter.md index 1f375a846..fef2384f2 100644 --- a/Documentation/breaking-changes/sqlconnection-can-no-longer-connect-to-sql-server-1997-or-databases-using-the-via-adapter.md +++ b/Documentation/compatibility/sqlconnection-can-no-longer-connect-to-sql-server-1997-or-databases-using-the-via-adapter.md @@ -1,4 +1,4 @@ -## 70: SqlConnection can no longer connect to SQL Server 1997 or databases using the VIA adapter +## SqlConnection can no longer connect to SQL Server 1997 or databases using the VIA adapter ### Scope Edge @@ -30,3 +30,5 @@ The VIA protocol is deprecated, so an alternative protocol should be used to con Data [More information](https://msdn.microsoft.com/en-us/library/hh367887%28v=vs.110%29.aspx#sql) + + diff --git a/Documentation/breaking-changes/sqlconnection_open-fails-on-windows-7-with-non-ifs-winsock-bsp-or-lsp-present.md b/Documentation/compatibility/sqlconnection_open-fails-on-windows-7-with-non-ifs-winsock-bsp-or-lsp-present.md similarity index 91% rename from Documentation/breaking-changes/sqlconnection_open-fails-on-windows-7-with-non-ifs-winsock-bsp-or-lsp-present.md rename to Documentation/compatibility/sqlconnection_open-fails-on-windows-7-with-non-ifs-winsock-bsp-or-lsp-present.md index f418acfec..466af8011 100644 --- a/Documentation/breaking-changes/sqlconnection_open-fails-on-windows-7-with-non-ifs-winsock-bsp-or-lsp-present.md +++ b/Documentation/compatibility/sqlconnection_open-fails-on-windows-7-with-non-ifs-winsock-bsp-or-lsp-present.md @@ -1,4 +1,4 @@ -## 83: SqlConnection.Open fails on Windows 7 with non-IFS Winsock BSP or LSP present +## SqlConnection.Open fails on Windows 7 with non-IFS Winsock BSP or LSP present ### Scope Minor @@ -31,3 +31,5 @@ This bug has been fixed in the .NET Framework 4.5.2, so it can be avoided by upg Data [More information](https://connect.microsoft.com/VisualStudio/feedback/details/729323) + + diff --git a/Documentation/breaking-changes/sslstream-support-for-tls-alerts.md b/Documentation/compatibility/sslstream-support-for-tls-alerts.md similarity index 97% rename from Documentation/breaking-changes/sslstream-support-for-tls-alerts.md rename to Documentation/compatibility/sslstream-support-for-tls-alerts.md index 237ce8e19..7767af3e8 100644 --- a/Documentation/breaking-changes/sslstream-support-for-tls-alerts.md +++ b/Documentation/compatibility/sslstream-support-for-tls-alerts.md @@ -1,4 +1,4 @@ -## 181: SslStream supports TLS Alerts +## SslStream supports TLS Alerts ### Scope Edge @@ -54,7 +54,6 @@ The following configuration API is available to enable or disable the feature fo Value = "true" ``` - ### Affected APIs * `T:System.Net.Security.SslStream` * `T:System.Net.WebRequest` @@ -69,3 +68,5 @@ Networking, Security + + diff --git a/Documentation/breaking-changes/system_activities-is-now-aptca.md b/Documentation/compatibility/system_activities-is-now-aptca.md similarity index 90% rename from Documentation/breaking-changes/system_activities-is-now-aptca.md rename to Documentation/compatibility/system_activities-is-now-aptca.md index 47b7e49f4..b4b13bb81 100644 --- a/Documentation/breaking-changes/system_activities-is-now-aptca.md +++ b/Documentation/compatibility/system_activities-is-now-aptca.md @@ -1,4 +1,4 @@ -## 20: System.Activities is now APTCA +## System.Activities is now APTCA ### Scope Edge @@ -25,3 +25,5 @@ Derived classes cannot be marked with the SecurityCriticalAttribute. Previously, Windows Workflow Foundation (WF) [More information](https://msdn.microsoft.com/en-us/library/hh367887) + + diff --git a/Documentation/breaking-changes/system_net_peertopeer_collaboration-unavailable-on-windows-8.md b/Documentation/compatibility/system_net_peertopeer_collaboration-unavailable-on-windows-8.md similarity index 84% rename from Documentation/breaking-changes/system_net_peertopeer_collaboration-unavailable-on-windows-8.md rename to Documentation/compatibility/system_net_peertopeer_collaboration-unavailable-on-windows-8.md index 09785f930..855fbb2b4 100644 --- a/Documentation/breaking-changes/system_net_peertopeer_collaboration-unavailable-on-windows-8.md +++ b/Documentation/compatibility/system_net_peertopeer_collaboration-unavailable-on-windows-8.md @@ -1,4 +1,4 @@ -## 11: System.Net.PeerToPeer.Collaboration unavailable on Windows 8 +## System.Net.PeerToPeer.Collaboration unavailable on Windows 8 ### Scope Major @@ -25,3 +25,5 @@ Apps that support Windows 8 or above must be updated to not depend on this names Networking [More information](https://msdn.microsoft.com/en-us/library/hh367887#network) + + diff --git a/Documentation/breaking-changes/system_servicemodel_web_webservicehost-object-no-longer-adds-a-default-endpoint.md b/Documentation/compatibility/system_servicemodel_web_webservicehost-object-no-longer-adds-a-default-endpoint.md similarity index 95% rename from Documentation/breaking-changes/system_servicemodel_web_webservicehost-object-no-longer-adds-a-default-endpoint.md rename to Documentation/compatibility/system_servicemodel_web_webservicehost-object-no-longer-adds-a-default-endpoint.md index 2d1cf7d60..c7d03dcb3 100644 --- a/Documentation/breaking-changes/system_servicemodel_web_webservicehost-object-no-longer-adds-a-default-endpoint.md +++ b/Documentation/compatibility/system_servicemodel_web_webservicehost-object-no-longer-adds-a-default-endpoint.md @@ -1,4 +1,4 @@ -## 30: System.ServiceModel.Web.WebServiceHost object no longer adds a default endpoint +## System.ServiceModel.Web.WebServiceHost object no longer adds a default endpoint ### Scope Minor @@ -41,3 +41,5 @@ Windows Communication Foundation (WCF) Source analyzer status: Pri 2, Planned --> + + diff --git a/Documentation/breaking-changes/system_threading_tasks_task-no-longer-throw-objectdisposedexception-after-object-is-disposed.md b/Documentation/compatibility/system_threading_tasks_task-no-longer-throw-objectdisposedexception-after-object-is-disposed.md similarity index 90% rename from Documentation/breaking-changes/system_threading_tasks_task-no-longer-throw-objectdisposedexception-after-object-is-disposed.md rename to Documentation/compatibility/system_threading_tasks_task-no-longer-throw-objectdisposedexception-after-object-is-disposed.md index fcdafa711..772c275ff 100644 --- a/Documentation/breaking-changes/system_threading_tasks_task-no-longer-throw-objectdisposedexception-after-object-is-disposed.md +++ b/Documentation/compatibility/system_threading_tasks_task-no-longer-throw-objectdisposedexception-after-object-is-disposed.md @@ -1,4 +1,4 @@ -## 39: System.Threading.Tasks.Task no longer throw ObjectDisposedException after object is disposed +## System.Threading.Tasks.Task no longer throw ObjectDisposedException after object is disposed ### Scope Minor @@ -25,3 +25,5 @@ Be aware that Task methods may no longer throw ObjectDisposedExceptions in cases Core [More information](https://msdn.microsoft.com/en-us/library/hh367887(v=vs.110).aspx#core) + + diff --git a/Documentation/breaking-changes/system_uri-escaping-now-supports-rfc-3986.md b/Documentation/compatibility/system_uri-escaping-now-supports-rfc-3986.md similarity index 91% rename from Documentation/breaking-changes/system_uri-escaping-now-supports-rfc-3986.md rename to Documentation/compatibility/system_uri-escaping-now-supports-rfc-3986.md index 8a4842d63..5ac19e202 100644 --- a/Documentation/breaking-changes/system_uri-escaping-now-supports-rfc-3986.md +++ b/Documentation/compatibility/system_uri-escaping-now-supports-rfc-3986.md @@ -1,4 +1,4 @@ -## 10: System.Uri escaping now supports RFC 3986 (http://tools.ietf.org/html/rfc3986) +## System.Uri escaping now supports RFC 3986 (http://tools.ietf.org/html/rfc3986) ### Scope Minor @@ -33,3 +33,5 @@ URI escaping has changed in .NET 4.5 to support [RFC 3986](http://tools.ietf.org Core [More information](https://msdn.microsoft.com/en-us/library/hh367887\(v=vs.110\).aspx#core) + + diff --git a/Documentation/breaking-changes/system_uri-parsing-adheres-to-rfc-3987.md b/Documentation/compatibility/system_uri-parsing-adheres-to-rfc-3987.md similarity index 95% rename from Documentation/breaking-changes/system_uri-parsing-adheres-to-rfc-3987.md rename to Documentation/compatibility/system_uri-parsing-adheres-to-rfc-3987.md index cf137ae56..f8feef0fe 100644 --- a/Documentation/breaking-changes/system_uri-parsing-adheres-to-rfc-3987.md +++ b/Documentation/compatibility/system_uri-parsing-adheres-to-rfc-3987.md @@ -1,4 +1,4 @@ -## 6: System.Uri parsing adheres to RFC 3987 +## System.Uri parsing adheres to RFC 3987 ### Scope Major @@ -40,3 +40,5 @@ If the old .NET 4.0 URI parsing semantics are necessary (they often aren't), the Core [More information](https://msdn.microsoft.com/en-us/library/hh367887\(v=vs.110\).aspx#core) + + diff --git a/Documentation/breaking-changes/system_uri_iswellformeduristring-method-returns-false-for-relative-uris-with-a-colon-char-in-first-segment.md b/Documentation/compatibility/system_uri_iswellformeduristring-method-returns-false-for-relative-uris-with-a-colon-char-in-first-segment.md similarity index 88% rename from Documentation/breaking-changes/system_uri_iswellformeduristring-method-returns-false-for-relative-uris-with-a-colon-char-in-first-segment.md rename to Documentation/compatibility/system_uri_iswellformeduristring-method-returns-false-for-relative-uris-with-a-colon-char-in-first-segment.md index 8eff62695..eb3b7b24d 100644 --- a/Documentation/breaking-changes/system_uri_iswellformeduristring-method-returns-false-for-relative-uris-with-a-colon-char-in-first-segment.md +++ b/Documentation/compatibility/system_uri_iswellformeduristring-method-returns-false-for-relative-uris-with-a-colon-char-in-first-segment.md @@ -1,4 +1,4 @@ -## 121: System.Uri.IsWellFormedUriString method returns false for relative URIs with a colon char in first segment +## System.Uri.IsWellFormedUriString method returns false for relative URIs with a colon char in first segment ### Scope Minor @@ -26,3 +26,4 @@ Core [More information](http://connect.microsoft.com/VisualStudio/feedback/details/788841/net-4-5-system-uri-iswellformeduristring-method-returns-false-for-relative-uris-with-a-colon-char-in-first-segment) + diff --git a/Documentation/breaking-changes/targetframeworkname-for-default-app-domain-no-longer-defaults-to-null-if-not-set.md b/Documentation/compatibility/targetframeworkname-for-default-app-domain-no-longer-defaults-to-null-if-not-set.md similarity index 89% rename from Documentation/breaking-changes/targetframeworkname-for-default-app-domain-no-longer-defaults-to-null-if-not-set.md rename to Documentation/compatibility/targetframeworkname-for-default-app-domain-no-longer-defaults-to-null-if-not-set.md index 756ad8d07..e0f0f2e73 100644 --- a/Documentation/breaking-changes/targetframeworkname-for-default-app-domain-no-longer-defaults-to-null-if-not-set.md +++ b/Documentation/compatibility/targetframeworkname-for-default-app-domain-no-longer-defaults-to-null-if-not-set.md @@ -1,4 +1,4 @@ -## 75: TargetFrameworkName for default app domain no longer defaults to null if not set +## TargetFrameworkName for default app domain no longer defaults to null if not set ### Scope Edge @@ -25,3 +25,5 @@ Code should be updated to not depend on `AppDomainSetup.TargetFrameworkName` def Core [More information](https://msdn.microsoft.com/en-us/library/dn833125(v=vs.110).aspx#Core) + + diff --git a/Documentation/breaking-changes/the-_net-framework-4_6-does-not-use-a-4_5_x_x-version-when-registering-itself-in-the-registry.md b/Documentation/compatibility/the-_net-framework-4_6-does-not-use-a-4_5_x_x-version-when-registering-itself-in-the-registry.md similarity index 84% rename from Documentation/breaking-changes/the-_net-framework-4_6-does-not-use-a-4_5_x_x-version-when-registering-itself-in-the-registry.md rename to Documentation/compatibility/the-_net-framework-4_6-does-not-use-a-4_5_x_x-version-when-registering-itself-in-the-registry.md index 90ab6b5f8..b418fba25 100644 --- a/Documentation/breaking-changes/the-_net-framework-4_6-does-not-use-a-4_5_x_x-version-when-registering-itself-in-the-registry.md +++ b/Documentation/compatibility/the-_net-framework-4_6-does-not-use-a-4_5_x_x-version-when-registering-itself-in-the-registry.md @@ -1,4 +1,4 @@ -## 122: The .NET Framework 4.6 does not use a 4.5.x.x version when registering itself in the registry +## The .NET Framework 4.6 does not use a 4.5.x.x version when registering itself in the registry ### Scope Edge @@ -24,4 +24,6 @@ Update apps probing for a .NET Framework 4.5 install by looking for 4.5 registry ### Category Setup and Deployment -[More information](https://msdn.microsoft.com/en-us/library/mt125490%28v=vs.110%29.aspx) \ No newline at end of file +[More information](https://msdn.microsoft.com/en-us/library/mt125490%28v=vs.110%29.aspx) + + diff --git a/Documentation/breaking-changes/the-replace-method-in-odata-urls-is-disabled-by-default.md b/Documentation/compatibility/the-replace-method-in-odata-urls-is-disabled-by-default.md similarity index 91% rename from Documentation/breaking-changes/the-replace-method-in-odata-urls-is-disabled-by-default.md rename to Documentation/compatibility/the-replace-method-in-odata-urls-is-disabled-by-default.md index 36d33fcb8..cd8a89b5a 100644 --- a/Documentation/breaking-changes/the-replace-method-in-odata-urls-is-disabled-by-default.md +++ b/Documentation/compatibility/the-replace-method-in-odata-urls-is-disabled-by-default.md @@ -1,4 +1,4 @@ -## 29: The Replace method in OData URLs is disabled by default +## The Replace method in OData URLs is disabled by default ### Scope Edge @@ -25,3 +25,5 @@ If the replace method is required (which is uncommon), it can be re-enabled thro Windows Communication Foundation (WCF) [More information](https://msdn.microsoft.com/en-us/library/hh367887(v=vs.110).aspx#wcf) + + diff --git a/Documentation/breaking-changes/throttle-concurrent-requests-per-session.md b/Documentation/compatibility/throttle-concurrent-requests-per-session.md similarity index 93% rename from Documentation/breaking-changes/throttle-concurrent-requests-per-session.md rename to Documentation/compatibility/throttle-concurrent-requests-per-session.md index a01c6c748..4d02a8cfe 100644 --- a/Documentation/breaking-changes/throttle-concurrent-requests-per-session.md +++ b/Documentation/compatibility/throttle-concurrent-requests-per-session.md @@ -1,4 +1,4 @@ -## 169: Throttle concurrent requests per session +## Throttle concurrent requests per session ### Scope Edge @@ -29,3 +29,5 @@ To restore the old behavior, you can add the following setting to your web.confi ### Category ASP.NET + + diff --git a/Documentation/breaking-changes/two-way-data-binding-to-a-property-with-a-non-public-setter-is-not-supported.md b/Documentation/compatibility/two-way-data-binding-to-a-property-with-a-non-public-setter-is-not-supported.md similarity index 91% rename from Documentation/breaking-changes/two-way-data-binding-to-a-property-with-a-non-public-setter-is-not-supported.md rename to Documentation/compatibility/two-way-data-binding-to-a-property-with-a-non-public-setter-is-not-supported.md index 4a8bfcd3f..fea52cb5e 100644 --- a/Documentation/breaking-changes/two-way-data-binding-to-a-property-with-a-non-public-setter-is-not-supported.md +++ b/Documentation/compatibility/two-way-data-binding-to-a-property-with-a-non-public-setter-is-not-supported.md @@ -1,4 +1,4 @@ -## 129: Two-way data-binding to a property with a non-public setter is not supported +## Two-way data-binding to a property with a non-public setter is not supported ### Scope Minor @@ -31,4 +31,4 @@ Windows Presentation Foundation (WPF) This is a good candidate for a non-code source analyzer since most cases of two-way binding will be defined in XAML --> - + diff --git a/Documentation/breaking-changes/type_isassignablefrom-returns-wrong-result-for-generic-variables-with-constraints.md b/Documentation/compatibility/type_isassignablefrom-returns-wrong-result-for-generic-variables-with-constraints.md similarity index 88% rename from Documentation/breaking-changes/type_isassignablefrom-returns-wrong-result-for-generic-variables-with-constraints.md rename to Documentation/compatibility/type_isassignablefrom-returns-wrong-result-for-generic-variables-with-constraints.md index dbf782e34..ed118fb9d 100644 --- a/Documentation/breaking-changes/type_isassignablefrom-returns-wrong-result-for-generic-variables-with-constraints.md +++ b/Documentation/compatibility/type_isassignablefrom-returns-wrong-result-for-generic-variables-with-constraints.md @@ -1,4 +1,4 @@ -## 89: Type.IsAssignableFrom returns wrong result for generic variables with constraints +## Type.IsAssignableFrom returns wrong result for generic variables with constraints ### Scope Minor @@ -33,3 +33,5 @@ Core ### Notes Can be added to a single-compilation API analyzer --> + + diff --git a/Documentation/breaking-changes/unexpected-invalidcastexception-from-invokemethod-activity-in-wf4.md b/Documentation/compatibility/unexpected-invalidcastexception-from-invokemethod-activity-in-wf4.md similarity index 90% rename from Documentation/breaking-changes/unexpected-invalidcastexception-from-invokemethod-activity-in-wf4.md rename to Documentation/compatibility/unexpected-invalidcastexception-from-invokemethod-activity-in-wf4.md index 36bb24ff3..f58e08b6f 100644 --- a/Documentation/breaking-changes/unexpected-invalidcastexception-from-invokemethod-activity-in-wf4.md +++ b/Documentation/compatibility/unexpected-invalidcastexception-from-invokemethod-activity-in-wf4.md @@ -1,4 +1,4 @@ -## 88: Unexpected InvalidCastException from InvokeMethod activity in WF4 +## Unexpected InvalidCastException from InvokeMethod activity in WF4 ### Scope Minor @@ -34,4 +34,4 @@ Windows Workflow Foundation (WF) Activities can be defined in xaml (as well as programmatically), so it will be good to create a non-code analyzer to identify those. See the repro in the linked bug for an example. --> - + diff --git a/Documentation/breaking-changes/unicode-data-now-support-standard-v8_0-categories.md b/Documentation/compatibility/unicode-data-now-support-standard-v8_0-categories.md similarity index 91% rename from Documentation/breaking-changes/unicode-data-now-support-standard-v8_0-categories.md rename to Documentation/compatibility/unicode-data-now-support-standard-v8_0-categories.md index 98bf86bd0..dded95d96 100644 --- a/Documentation/breaking-changes/unicode-data-now-support-standard-v8_0-categories.md +++ b/Documentation/compatibility/unicode-data-now-support-standard-v8_0-categories.md @@ -1,4 +1,4 @@ -## 157: .Net Framework now supports Unicode standard version 8.0 categories +## Unicode standard version 8.0 categories now supported ### Scope Minor @@ -33,3 +33,5 @@ character categories. Globalization [More information](https://github.com/Microsoft/dotnet/blob/master/releases/net462/dotnet462-changes.md) + + diff --git a/Documentation/breaking-changes/vb_net-no-longer-supports-partial-namespace-qualification-for-system_windows-apis.md b/Documentation/compatibility/vb_net-no-longer-supports-partial-namespace-qualification-for-system_windows-apis.md similarity index 87% rename from Documentation/breaking-changes/vb_net-no-longer-supports-partial-namespace-qualification-for-system_windows-apis.md rename to Documentation/compatibility/vb_net-no-longer-supports-partial-namespace-qualification-for-system_windows-apis.md index fb371e2b1..dbf800b8b 100644 --- a/Documentation/breaking-changes/vb_net-no-longer-supports-partial-namespace-qualification-for-system_windows-apis.md +++ b/Documentation/compatibility/vb_net-no-longer-supports-partial-namespace-qualification-for-system_windows-apis.md @@ -1,4 +1,4 @@ -## 127: VB.NET no longer supports partial namespace qualification for System.Windows APIs +## VB.NET no longer supports partial namespace qualification for System.Windows APIs ### Scope Minor @@ -25,3 +25,5 @@ Code should be updated to refer to `System.Windows` APIs either with simple name Visual Basic .NET [More information](http://stackoverflow.com/questions/23573659/forms-is-not-a-member-of-windows) + + diff --git a/Documentation/breaking-changes/wcf-binding-with-the-transportwithmessagecredential-security-mode.md b/Documentation/compatibility/wcf-binding-with-the-transportwithmessagecredential-security-mode.md similarity index 93% rename from Documentation/breaking-changes/wcf-binding-with-the-transportwithmessagecredential-security-mode.md rename to Documentation/compatibility/wcf-binding-with-the-transportwithmessagecredential-security-mode.md index b4fe132a5..2228a2b83 100644 --- a/Documentation/breaking-changes/wcf-binding-with-the-transportwithmessagecredential-security-mode.md +++ b/Documentation/compatibility/wcf-binding-with-the-transportwithmessagecredential-security-mode.md @@ -1,4 +1,4 @@ -## 142: WCF binding with the TransportWithMessageCredential security mode +## WCF binding with the TransportWithMessageCredential security mode ### Scope Transparent @@ -38,3 +38,4 @@ Windows Communication Foundation (WCF) [More information](https://msdn.microsoft.com/en-US/library/mt592686%28v=vs.110%29.aspx) + diff --git a/Documentation/breaking-changes/wcf-message-security-unable-to-use-tls1_1-and-tls1_2.md b/Documentation/compatibility/wcf-message-security-unable-to-use-tls1_1-and-tls1_2.md similarity index 85% rename from Documentation/breaking-changes/wcf-message-security-unable-to-use-tls1_1-and-tls1_2.md rename to Documentation/compatibility/wcf-message-security-unable-to-use-tls1_1-and-tls1_2.md index 79457a9e0..94ee93f8a 100644 --- a/Documentation/breaking-changes/wcf-message-security-unable-to-use-tls1_1-and-tls1_2.md +++ b/Documentation/compatibility/wcf-message-security-unable-to-use-tls1_1-and-tls1_2.md @@ -1,4 +1,4 @@ -## 167: WCF message security now is able to use TLS1.1 and TLS1.2 +## WCF message security now is able to use TLS1.1 and TLS1.2 ### Scope Edge @@ -25,4 +25,6 @@ In the .NET Framework 4.7, support for TLS1.1 and TLS1.2 in WCF message security ``` ### Category -* Windows Communication Foundation (WCF) \ No newline at end of file +* Windows Communication Foundation (WCF) + + diff --git a/Documentation/breaking-changes/wcf-transport-security-supports-certificates-stored-using-cng.md b/Documentation/compatibility/wcf-transport-security-supports-certificates-stored-using-cng.md similarity index 94% rename from Documentation/breaking-changes/wcf-transport-security-supports-certificates-stored-using-cng.md rename to Documentation/compatibility/wcf-transport-security-supports-certificates-stored-using-cng.md index b7a233b40..e01ef72e2 100644 --- a/Documentation/breaking-changes/wcf-transport-security-supports-certificates-stored-using-cng.md +++ b/Documentation/compatibility/wcf-transport-security-supports-certificates-stored-using-cng.md @@ -1,4 +1,4 @@ -## 166: WCF transport security supports certificates stored using CNG +## WCF transport security supports certificates stored using CNG ### Scope Minor @@ -47,4 +47,4 @@ Windows Communication Foundation (WCF) 182182 --> - + diff --git a/Documentation/breaking-changes/webutility_htmldecode-no-longer-decodes-invalid-input-sequences.md b/Documentation/compatibility/webutility_htmldecode-no-longer-decodes-invalid-input-sequences.md similarity index 92% rename from Documentation/breaking-changes/webutility_htmldecode-no-longer-decodes-invalid-input-sequences.md rename to Documentation/compatibility/webutility_htmldecode-no-longer-decodes-invalid-input-sequences.md index e0f92c0e2..d75439e1a 100644 --- a/Documentation/breaking-changes/webutility_htmldecode-no-longer-decodes-invalid-input-sequences.md +++ b/Documentation/compatibility/webutility_htmldecode-no-longer-decodes-invalid-input-sequences.md @@ -1,4 +1,4 @@ -## 61: WebUtility.HtmlDecode no longer decodes invalid input sequences +## WebUtility.HtmlDecode no longer decodes invalid input sequences ### Scope Minor @@ -32,3 +32,5 @@ ASP.NET ### Notes This only matters if you store binary data instead of UTF-16 data in string. An analyzer may not add much beyond ApiPort, but we could do basic parameter analysis and potentially implement a code fix --> + + diff --git a/Documentation/breaking-changes/webutility_htmlencode-and-webutility_htmldecode-round-trip-bmp-correctly.md b/Documentation/compatibility/webutility_htmlencode-and-webutility_htmldecode-round-trip-bmp-correctly.md similarity index 91% rename from Documentation/breaking-changes/webutility_htmlencode-and-webutility_htmldecode-round-trip-bmp-correctly.md rename to Documentation/compatibility/webutility_htmlencode-and-webutility_htmldecode-round-trip-bmp-correctly.md index d96be25d2..06067ebbd 100644 --- a/Documentation/breaking-changes/webutility_htmlencode-and-webutility_htmldecode-round-trip-bmp-correctly.md +++ b/Documentation/compatibility/webutility_htmlencode-and-webutility_htmldecode-round-trip-bmp-correctly.md @@ -1,4 +1,4 @@ -## 62: WebUtility.HtmlEncode and WebUtility.HtmlDecode round-trip BMP correctly +## WebUtility.HtmlEncode and WebUtility.HtmlDecode round-trip BMP correctly ### Scope Edge @@ -31,3 +31,5 @@ ASP.NET ### Notes This shouldn't affect anything. An analyzer may not add much beyond ApiPort, but we could do basic parameter analysis and potentially implement a code fix --> + + diff --git a/Documentation/breaking-changes/wf-serializes-expressions_literal-datetimes-differently.md b/Documentation/compatibility/wf-serializes-expressions_literal-datetimes-differently.md similarity index 90% rename from Documentation/breaking-changes/wf-serializes-expressions_literal-datetimes-differently.md rename to Documentation/compatibility/wf-serializes-expressions_literal-datetimes-differently.md index 2b7cc1865..d7ada3641 100644 --- a/Documentation/breaking-changes/wf-serializes-expressions_literal-datetimes-differently.md +++ b/Documentation/compatibility/wf-serializes-expressions_literal-datetimes-differently.md @@ -1,4 +1,4 @@ -## 36: WF serializes Expressions.Literal<T> DateTimes differently now (breaks custom XAML parsers) +## WF serializes Expressions.Literal<T> DateTimes differently now (breaks custom XAML parsers) ### Scope Edge @@ -30,3 +30,5 @@ Windows Workflow Foundation (WF) ### Notes Will need to dig in a bit to figure out exactly what a repro for this looks like. Probably, identifying Literal/Literal usage will be sufficient to give an informational diagnostic. --> + + diff --git a/Documentation/breaking-changes/winform's-checkforoverflowunderflow-property-is-now-true-for-system_drawing.md b/Documentation/compatibility/winform's-checkforoverflowunderflow-property-is-now-true-for-system_drawing.md similarity index 83% rename from Documentation/breaking-changes/winform's-checkforoverflowunderflow-property-is-now-true-for-system_drawing.md rename to Documentation/compatibility/winform's-checkforoverflowunderflow-property-is-now-true-for-system_drawing.md index 5dafeaba3..2cc3a1572 100644 --- a/Documentation/breaking-changes/winform's-checkforoverflowunderflow-property-is-now-true-for-system_drawing.md +++ b/Documentation/compatibility/winform's-checkforoverflowunderflow-property-is-now-true-for-system_drawing.md @@ -1,4 +1,4 @@ -## 53: WinForm's CheckForOverflowUnderflow property is now true for System.Drawing +## WinForm's CheckForOverflowUnderflow property is now true for System.Drawing ### Scope Edge @@ -25,3 +25,5 @@ Previously when overflows occurred, the result would be silently truncated. Now Windows Forms [More information](https://msdn.microsoft.com/en-us/library/hh367887(v=vs.110).aspx) + + diff --git a/Documentation/breaking-changes/winrt-stream-adapters-no-long-call-flushasync-automatically-on-close.md b/Documentation/compatibility/winrt-stream-adapters-no-long-call-flushasync-automatically-on-close.md similarity index 86% rename from Documentation/breaking-changes/winrt-stream-adapters-no-long-call-flushasync-automatically-on-close.md rename to Documentation/compatibility/winrt-stream-adapters-no-long-call-flushasync-automatically-on-close.md index 4556816ac..85052a3e5 100644 --- a/Documentation/breaking-changes/winrt-stream-adapters-no-long-call-flushasync-automatically-on-close.md +++ b/Documentation/compatibility/winrt-stream-adapters-no-long-call-flushasync-automatically-on-close.md @@ -1,4 +1,4 @@ -## 47: WinRT stream adapters no long call FlushAsync automatically on close +## WinRT stream adapters no long call FlushAsync automatically on close ### Scope Transparent @@ -33,3 +33,5 @@ using (var stream = GetWindowsRuntimeStream() as Stream) Core [More information](https://msdn.microsoft.com/en-us/library/dn458360(v=vs.110).aspx) + + diff --git a/Documentation/breaking-changes/workflow-3_0-types-are-obsolete.md b/Documentation/compatibility/workflow-3_0-types-are-obsolete.md similarity index 93% rename from Documentation/breaking-changes/workflow-3_0-types-are-obsolete.md rename to Documentation/compatibility/workflow-3_0-types-are-obsolete.md index 7df5d2128..fdafc8c40 100644 --- a/Documentation/breaking-changes/workflow-3_0-types-are-obsolete.md +++ b/Documentation/compatibility/workflow-3_0-types-are-obsolete.md @@ -1,4 +1,4 @@ -## 21: WorkFlow 3.0 types are obsolete +## WorkFlow 3.0 types are obsolete ### Scope Major @@ -25,3 +25,5 @@ New WWF 4.0 APIs (in System.Activities) should be used instead. An example of us Windows Workflow Foundation (WF) [More information](https://msdn.microsoft.com/en-us/library/hh367887#wwf) + + diff --git a/Documentation/breaking-changes/workflow-checksums-changed-from-md5-to-sha1.md b/Documentation/compatibility/workflow-checksums-changed-from-md5-to-sha1.md similarity index 93% rename from Documentation/breaking-changes/workflow-checksums-changed-from-md5-to-sha1.md rename to Documentation/compatibility/workflow-checksums-changed-from-md5-to-sha1.md index 7dd883354..da89ac570 100644 --- a/Documentation/breaking-changes/workflow-checksums-changed-from-md5-to-sha1.md +++ b/Documentation/compatibility/workflow-checksums-changed-from-md5-to-sha1.md @@ -1,4 +1,4 @@ -## 176: Workflow checksums changed from MD5 to SHA1 +## Workflow checksums changed from MD5 to SHA1 ### Scope Minor @@ -37,10 +37,10 @@ Or in configuration: ``` - ### Affected APIs * Not detectable via API analysis ### Category Windows Workflow Foundation (WF) + diff --git a/Documentation/breaking-changes/workflow-now-throws-original-exception-instead-of-nullreferenceexception-in-some-cases.md b/Documentation/compatibility/workflow-now-throws-original-exception-instead-of-nullreferenceexception-in-some-cases.md similarity index 87% rename from Documentation/breaking-changes/workflow-now-throws-original-exception-instead-of-nullreferenceexception-in-some-cases.md rename to Documentation/compatibility/workflow-now-throws-original-exception-instead-of-nullreferenceexception-in-some-cases.md index 693d12251..ce384825c 100644 --- a/Documentation/breaking-changes/workflow-now-throws-original-exception-instead-of-nullreferenceexception-in-some-cases.md +++ b/Documentation/compatibility/workflow-now-throws-original-exception-instead-of-nullreferenceexception-in-some-cases.md @@ -1,4 +1,4 @@ -## 170: Workflow now throws original exception instead of NullReferenceException in some cases +## Workflow now throws original exception instead of NullReferenceException in some cases ### Scope Minor @@ -31,4 +31,6 @@ that could be thrown from your custom activities. * `M:System.Activities.WorkflowInvoker.Invoke` ### Category -Windows Workflow Foundation (WF) \ No newline at end of file +Windows Workflow Foundation (WF) + + diff --git a/Documentation/breaking-changes/workflow-sql-persistence-adds-primary-key-clusters-and-disallows-null-values-in-some-columns.md b/Documentation/compatibility/workflow-sql-persistence-adds-primary-key-clusters-and-disallows-null-values-in-some-columns.md similarity index 86% rename from Documentation/breaking-changes/workflow-sql-persistence-adds-primary-key-clusters-and-disallows-null-values-in-some-columns.md rename to Documentation/compatibility/workflow-sql-persistence-adds-primary-key-clusters-and-disallows-null-values-in-some-columns.md index 7aa95c004..a5a0a6498 100644 --- a/Documentation/breaking-changes/workflow-sql-persistence-adds-primary-key-clusters-and-disallows-null-values-in-some-columns.md +++ b/Documentation/compatibility/workflow-sql-persistence-adds-primary-key-clusters-and-disallows-null-values-in-some-columns.md @@ -1,4 +1,4 @@ -## 180: Workflow SQL persistence adds primary key clusters and disallows null values in some columns +## Workflow SQL persistence adds primary key clusters and disallows null values in some columns ### Scope Edge @@ -28,3 +28,4 @@ in order to experience this change. New database installations will automaticall ### Category Windows Workflow Foundation (WF) + diff --git a/Documentation/breaking-changes/workflowdesigner_load-doesn't-remove-symbol-property.md b/Documentation/compatibility/workflowdesigner_load-doesn't-remove-symbol-property.md similarity index 92% rename from Documentation/breaking-changes/workflowdesigner_load-doesn't-remove-symbol-property.md rename to Documentation/compatibility/workflowdesigner_load-doesn't-remove-symbol-property.md index 64b9a7106..76c4950dc 100644 --- a/Documentation/breaking-changes/workflowdesigner_load-doesn't-remove-symbol-property.md +++ b/Documentation/compatibility/workflowdesigner_load-doesn't-remove-symbol-property.md @@ -1,4 +1,4 @@ -## 82: WorkflowDesigner.Load doesn't remove symbol property +## WorkflowDesigner.Load doesn't remove symbol property ### Scope Major @@ -30,3 +30,5 @@ Alternatively, the issue may be avoided by using the [WorkflowContext.Load(strin Windows Workflow Foundation (WF) [More information](https://connect.microsoft.com/VisualStudio/feedback/details/786503/) + + diff --git a/Documentation/breaking-changes/wpf-aero2-and-aerolite-themes-toggle-button-doesn't-show-any-state.md b/Documentation/compatibility/wpf-aero2-and-aerolite-themes-toggle-button-doesn't-show-any-state.md similarity index 89% rename from Documentation/breaking-changes/wpf-aero2-and-aerolite-themes-toggle-button-doesn't-show-any-state.md rename to Documentation/compatibility/wpf-aero2-and-aerolite-themes-toggle-button-doesn't-show-any-state.md index 21ab6fba6..2118d7d87 100644 --- a/Documentation/breaking-changes/wpf-aero2-and-aerolite-themes-toggle-button-doesn't-show-any-state.md +++ b/Documentation/compatibility/wpf-aero2-and-aerolite-themes-toggle-button-doesn't-show-any-state.md @@ -1,4 +1,4 @@ -## 90: WPF Aero2 and AeroLite themes toggle button doesn't show any state +## WPF Aero2 and AeroLite themes toggle button doesn't show any state ### Scope Major @@ -35,4 +35,4 @@ Windows Presentation Foundation (WPF) Analyzer can check xaml --> - + diff --git a/Documentation/breaking-changes/wpf-datatemplate-elements-are-now-visible-to-uia.md b/Documentation/compatibility/wpf-datatemplate-elements-are-now-visible-to-uia.md similarity index 92% rename from Documentation/breaking-changes/wpf-datatemplate-elements-are-now-visible-to-uia.md rename to Documentation/compatibility/wpf-datatemplate-elements-are-now-visible-to-uia.md index 6154db625..97b03f88f 100644 --- a/Documentation/breaking-changes/wpf-datatemplate-elements-are-now-visible-to-uia.md +++ b/Documentation/compatibility/wpf-datatemplate-elements-are-now-visible-to-uia.md @@ -1,4 +1,4 @@ -## 3: WPF DataTemplate elements are now visible to UIA +## WPF DataTemplate elements are now visible to UIA ### Scope Edge @@ -26,3 +26,5 @@ UI Auomation tests for this app may need updated to account for the UIA tree now Windows Presentation Foundation (WPF) [More information](https://msdn.microsoft.com/en-us/library/hh367887\(v=vs.110\).aspx#wpf) + + diff --git a/Documentation/breaking-changes/wpf-dispatchersynchronizationcontext_createcopy-now-returns-a-new-copy-instead-of-the-current-instance.md b/Documentation/compatibility/wpf-dispatchersynchronizationcontext_createcopy-now-returns-a-new-copy-instead-of-the-current-instance.md similarity index 91% rename from Documentation/breaking-changes/wpf-dispatchersynchronizationcontext_createcopy-now-returns-a-new-copy-instead-of-the-current-instance.md rename to Documentation/compatibility/wpf-dispatchersynchronizationcontext_createcopy-now-returns-a-new-copy-instead-of-the-current-instance.md index caf9e65a4..8beda13ae 100644 --- a/Documentation/breaking-changes/wpf-dispatchersynchronizationcontext_createcopy-now-returns-a-new-copy-instead-of-the-current-instance.md +++ b/Documentation/compatibility/wpf-dispatchersynchronizationcontext_createcopy-now-returns-a-new-copy-instead-of-the-current-instance.md @@ -1,4 +1,4 @@ -## 38: WPF DispatcherSynchronizationContext.CreateCopy now returns a new copy instead of the current instance +## WPF DispatcherSynchronizationContext.CreateCopy now returns a new copy instead of the current instance ### Scope Minor @@ -25,3 +25,5 @@ Be aware that DispatcherSynchronizationContext.CreateCopy() will now return a ne Windows Presentation Foundation (WPF) [More information](https://msdn.microsoft.com/en-us/library/hh367887(v=vs.110).aspx#wpf) + + diff --git a/Documentation/breaking-changes/wpf-grid-allocation-of-space-to-star-columns.md b/Documentation/compatibility/wpf-grid-allocation-of-space-to-star-columns.md similarity index 98% rename from Documentation/breaking-changes/wpf-grid-allocation-of-space-to-star-columns.md rename to Documentation/compatibility/wpf-grid-allocation-of-space-to-star-columns.md index 6258613b8..ebbc8a809 100644 --- a/Documentation/breaking-changes/wpf-grid-allocation-of-space-to-star-columns.md +++ b/Documentation/compatibility/wpf-grid-allocation-of-space-to-star-columns.md @@ -1,4 +1,4 @@ -## 171: WPF Grid allocation of space to star-columns +## WPF Grid allocation of space to star-columns ### Scope Minor @@ -81,4 +81,4 @@ Windows Presentation Foundation (WPF) 245278 --> - + diff --git a/Documentation/breaking-changes/wpf-layout-rounding-of-margins-has-changed.md b/Documentation/compatibility/wpf-layout-rounding-of-margins-has-changed.md similarity index 95% rename from Documentation/breaking-changes/wpf-layout-rounding-of-margins-has-changed.md rename to Documentation/compatibility/wpf-layout-rounding-of-margins-has-changed.md index 2bb5851bf..5cdf15de9 100644 --- a/Documentation/breaking-changes/wpf-layout-rounding-of-margins-has-changed.md +++ b/Documentation/compatibility/wpf-layout-rounding-of-margins-has-changed.md @@ -1,4 +1,4 @@ -## 139: WPF layout rounding of margins has changed +## WPF layout rounding of margins has changed ### Scope Minor @@ -33,3 +33,5 @@ Apps that target the .NET Framework 4.6 but want WPF controls to render using th Windows Presentation Foundation (WPF) [More information](https://msdn.microsoft.com/en-us/library/mt298997(v=vs.110).aspx) + + diff --git a/Documentation/breaking-changes/wpf-nullreferenceexception-in-exception-handling-code-from-imagesourceconverter_convertfrom.md b/Documentation/compatibility/wpf-nullreferenceexception-in-exception-handling-code-from-imagesourceconverter_convertfrom.md similarity index 91% rename from Documentation/breaking-changes/wpf-nullreferenceexception-in-exception-handling-code-from-imagesourceconverter_convertfrom.md rename to Documentation/compatibility/wpf-nullreferenceexception-in-exception-handling-code-from-imagesourceconverter_convertfrom.md index 9c9d20996..b1921a59e 100644 --- a/Documentation/breaking-changes/wpf-nullreferenceexception-in-exception-handling-code-from-imagesourceconverter_convertfrom.md +++ b/Documentation/compatibility/wpf-nullreferenceexception-in-exception-handling-code-from-imagesourceconverter_convertfrom.md @@ -1,4 +1,4 @@ -## 177: NullReferenceException in exception handling code from ImageSourceConverter.ConvertFrom +## NullReferenceException in exception handling code from ImageSourceConverter.ConvertFrom ### Scope Edge @@ -38,3 +38,5 @@ Windows Presentation Foundation (WPF) ### Original Bug 223209 --> + + diff --git a/Documentation/breaking-changes/wpf-pointer-based-touch-stack.md b/Documentation/compatibility/wpf-pointer-based-touch-stack.md similarity index 96% rename from Documentation/breaking-changes/wpf-pointer-based-touch-stack.md rename to Documentation/compatibility/wpf-pointer-based-touch-stack.md index 78265d482..bc788aa28 100644 --- a/Documentation/breaking-changes/wpf-pointer-based-touch-stack.md +++ b/Documentation/compatibility/wpf-pointer-based-touch-stack.md @@ -1,4 +1,4 @@ -## 172: WPF Pointer-Based Touch Stack +## WPF Pointer-Based Touch Stack ### Scope Edge @@ -52,3 +52,5 @@ Windows Presentation Foundation (WPF) # Original bug 197685 --> + + diff --git a/Documentation/breaking-changes/wpf-printing-stack-update.md b/Documentation/compatibility/wpf-printing-stack-update.md similarity index 94% rename from Documentation/breaking-changes/wpf-printing-stack-update.md rename to Documentation/compatibility/wpf-printing-stack-update.md index da141d37c..0120c2ec5 100644 --- a/Documentation/breaking-changes/wpf-printing-stack-update.md +++ b/Documentation/compatibility/wpf-printing-stack-update.md @@ -1,4 +1,4 @@ -## 173: WPF Printing Stack Update +## WPF Printing Stack Update ### Scope Edge @@ -29,4 +29,4 @@ Windows Presentation Foundation (WPF) ### Original Bug https://devdiv.visualstudio.com/DevDiv/_workitems?id=113979 - + diff --git a/Documentation/breaking-changes/wpf-spawns-a-wisptis_exe-process-which-can-freeze-the-mouse.md b/Documentation/compatibility/wpf-spawns-a-wisptis_exe-process-which-can-freeze-the-mouse.md similarity index 88% rename from Documentation/breaking-changes/wpf-spawns-a-wisptis_exe-process-which-can-freeze-the-mouse.md rename to Documentation/compatibility/wpf-spawns-a-wisptis_exe-process-which-can-freeze-the-mouse.md index 346b5c565..d3433d553 100644 --- a/Documentation/breaking-changes/wpf-spawns-a-wisptis_exe-process-which-can-freeze-the-mouse.md +++ b/Documentation/compatibility/wpf-spawns-a-wisptis_exe-process-which-can-freeze-the-mouse.md @@ -1,4 +1,4 @@ -## 87: WPF spawns a wisptis.exe process which can freeze the mouse +## WPF spawns a wisptis.exe process which can freeze the mouse ### Scope Major @@ -28,3 +28,5 @@ A fix for this issue is available in a servicing release of the .NET Framework 4 Windows Presentation Foundation (WPF) [More information](http://connect.microsoft.com/VisualStudio/feedback/details/927119/net-framework-4-5-2-causes-applications-using-wpf-to-spawn-a-wisptis-exe-process-which-can-freeze-the-mouse) + + diff --git a/Documentation/breaking-changes/wpf-spell-checking-fail-in-unexpected-ways.md b/Documentation/compatibility/wpf-spell-checking-fail-in-unexpected-ways.md similarity index 93% rename from Documentation/breaking-changes/wpf-spell-checking-fail-in-unexpected-ways.md rename to Documentation/compatibility/wpf-spell-checking-fail-in-unexpected-ways.md index 34a749940..7ccccb34f 100644 --- a/Documentation/breaking-changes/wpf-spell-checking-fail-in-unexpected-ways.md +++ b/Documentation/compatibility/wpf-spell-checking-fail-in-unexpected-ways.md @@ -1,4 +1,4 @@ -## 155: WPF Spell Checking fails in unexpected ways +## WPF Spell Checking fails in unexpected ways ### Scope Edge @@ -28,7 +28,6 @@ Issue #1 - This has been fixed in .NET Framework 4.6.2 Issue #2 - WPF Spell Checker is no longer supported when applications are launched using 'run as different user'. Starting .NET Framework 4.6.2, applications launched in this manner will no longer crash unexpectedly - instead the Spell Checker will be silently disabled. Issue #3 - This has been fixed in .NET Framework 4.6.2. - ### Affected APIs * Not detectable via API analysis @@ -42,4 +41,4 @@ Windows Presentation Foundation (WPF) 180203 --> - + diff --git a/Documentation/breaking-changes/wpf-spell-checking-in-text-enabled-controls-will-not-work-in-windows-10-for-languages-not-in-the-input-language-list.md b/Documentation/compatibility/wpf-spell-checking-in-text-enabled-controls-will-not-work-in-windows-10-for-languages-not-in-the-input-language-list.md similarity index 86% rename from Documentation/breaking-changes/wpf-spell-checking-in-text-enabled-controls-will-not-work-in-windows-10-for-languages-not-in-the-input-language-list.md rename to Documentation/compatibility/wpf-spell-checking-in-text-enabled-controls-will-not-work-in-windows-10-for-languages-not-in-the-input-language-list.md index 2009f69be..ef379a5b1 100644 --- a/Documentation/breaking-changes/wpf-spell-checking-in-text-enabled-controls-will-not-work-in-windows-10-for-languages-not-in-the-input-language-list.md +++ b/Documentation/compatibility/wpf-spell-checking-in-text-enabled-controls-will-not-work-in-windows-10-for-languages-not-in-the-input-language-list.md @@ -1,4 +1,4 @@ -## 136: WPF spell checking in text-enabled controls will not work in Windows 10 for languages not in the OS's input language list +## WPF spell checking in text-enabled controls will not work in Windows 10 for languages not in the OS's input language list ### Scope Edge @@ -27,3 +27,5 @@ Be aware that the language or text to be spell-checked must be added as an input Windows Presentation Foundation (WPF) [More information](https://msdn.microsoft.com/en-us/library/dn833125(v=vs.110).aspx#WPF) + + diff --git a/Documentation/breaking-changes/wpf-textbox-defaults-to-undo-limit-of-100.md b/Documentation/compatibility/wpf-textbox-defaults-to-undo-limit-of-100.md similarity index 88% rename from Documentation/breaking-changes/wpf-textbox-defaults-to-undo-limit-of-100.md rename to Documentation/compatibility/wpf-textbox-defaults-to-undo-limit-of-100.md index 12de55271..d1ca57151 100644 --- a/Documentation/breaking-changes/wpf-textbox-defaults-to-undo-limit-of-100.md +++ b/Documentation/compatibility/wpf-textbox-defaults-to-undo-limit-of-100.md @@ -1,4 +1,4 @@ -## 51: WPF TextBox defaults to undo limit of 100 +## WPF TextBox defaults to undo limit of 100 ### Scope Edge @@ -25,3 +25,5 @@ If an undo limit of 100 is too low, the limit can be set explicitly with the Tex Windows Presentation Foundation (WPF) [More information](https://msdn.microsoft.com/en-us/library/hh367887(v=vs.110).aspx) + + diff --git a/Documentation/breaking-changes/wpf-textbox-selected-text-appears-a-different-color-when-the-text-box-is-inactive.md b/Documentation/compatibility/wpf-textbox-selected-text-appears-a-different-color-when-the-text-box-is-inactive.md similarity index 88% rename from Documentation/breaking-changes/wpf-textbox-selected-text-appears-a-different-color-when-the-text-box-is-inactive.md rename to Documentation/compatibility/wpf-textbox-selected-text-appears-a-different-color-when-the-text-box-is-inactive.md index 11af843dd..f036a066c 100644 --- a/Documentation/breaking-changes/wpf-textbox-selected-text-appears-a-different-color-when-the-text-box-is-inactive.md +++ b/Documentation/compatibility/wpf-textbox-selected-text-appears-a-different-color-when-the-text-box-is-inactive.md @@ -1,4 +1,4 @@ -## 4: WPF TextBox selected text appears a different color when the text box is inactive +## WPF TextBox selected text appears a different color when the text box is inactive ### Scope Edge @@ -25,3 +25,5 @@ Previous (.NET 4.0) behavior may be restored by setting the [FrameworkCompatibil Windows Presentation Foundation (WPF) [More information](https://msdn.microsoft.com/en-us/library/hh367887(v=vs.110).aspx#wpf) + + diff --git a/Documentation/breaking-changes/wpf-textbox_text-can-be-out-of-sync-with-databinding.md b/Documentation/compatibility/wpf-textbox_text-can-be-out-of-sync-with-databinding.md similarity index 90% rename from Documentation/breaking-changes/wpf-textbox_text-can-be-out-of-sync-with-databinding.md rename to Documentation/compatibility/wpf-textbox_text-can-be-out-of-sync-with-databinding.md index 4c30f5970..a79c7e81f 100644 --- a/Documentation/breaking-changes/wpf-textbox_text-can-be-out-of-sync-with-databinding.md +++ b/Documentation/compatibility/wpf-textbox_text-can-be-out-of-sync-with-databinding.md @@ -1,4 +1,4 @@ -## 52: WPF TextBox.Text can be out-of-sync with databinding +## WPF TextBox.Text can be out-of-sync with databinding ### Scope Edge @@ -25,3 +25,5 @@ This should have no negative impact. However, you can restore the previous behav Windows Presentation Foundation (WPF) [More information](https://msdn.microsoft.com/en-us/library/hh367887(v=vs.110).aspx#wpf) + + diff --git a/Documentation/breaking-changes/wpf-treeviewitem-must-be-used-within-a-treeview.md b/Documentation/compatibility/wpf-treeviewitem-must-be-used-within-a-treeview.md similarity index 92% rename from Documentation/breaking-changes/wpf-treeviewitem-must-be-used-within-a-treeview.md rename to Documentation/compatibility/wpf-treeviewitem-must-be-used-within-a-treeview.md index 06528728e..aab1ff8ea 100644 --- a/Documentation/breaking-changes/wpf-treeviewitem-must-be-used-within-a-treeview.md +++ b/Documentation/compatibility/wpf-treeviewitem-must-be-used-within-a-treeview.md @@ -1,4 +1,4 @@ -## 141: WPF TreeViewItem must be used within a TreeView +## WPF TreeViewItem must be used within a TreeView ### Scope Minor @@ -32,4 +32,6 @@ A hotfix will be made available for this. * Not detectable via API analysis ### Category -Windows Presentation Foundation (WPF) \ No newline at end of file +Windows Presentation Foundation (WPF) + + diff --git a/Documentation/breaking-changes/wpf-windows-are-rendered-without-clipping-when-extending-outside-a-single-monitor.md b/Documentation/compatibility/wpf-windows-are-rendered-without-clipping-when-extending-outside-a-single-monitor.md similarity index 88% rename from Documentation/breaking-changes/wpf-windows-are-rendered-without-clipping-when-extending-outside-a-single-monitor.md rename to Documentation/compatibility/wpf-windows-are-rendered-without-clipping-when-extending-outside-a-single-monitor.md index 8797e9128..c541b808b 100644 --- a/Documentation/breaking-changes/wpf-windows-are-rendered-without-clipping-when-extending-outside-a-single-monitor.md +++ b/Documentation/compatibility/wpf-windows-are-rendered-without-clipping-when-extending-outside-a-single-monitor.md @@ -1,4 +1,4 @@ -## 135: WPF windows are rendered without clipping when extending outside a single monitor +## WPF windows are rendered without clipping when extending outside a single monitor ### Scope Minor @@ -25,3 +25,5 @@ This behavior (whether to clip or not) can be explicitly set using the ` diff --git a/Documentation/breaking-changes/x509certificate2_tostring(bool)-does-not-throw-now-when-_net-cannot-handle-the-certificate.md b/Documentation/compatibility/x509certificate2_tostring(bool)-does-not-throw-now-when-_net-cannot-handle-the-certificate.md similarity index 87% rename from Documentation/breaking-changes/x509certificate2_tostring(bool)-does-not-throw-now-when-_net-cannot-handle-the-certificate.md rename to Documentation/compatibility/x509certificate2_tostring(bool)-does-not-throw-now-when-_net-cannot-handle-the-certificate.md index 2534a7288..1970f53fb 100644 --- a/Documentation/breaking-changes/x509certificate2_tostring(bool)-does-not-throw-now-when-_net-cannot-handle-the-certificate.md +++ b/Documentation/compatibility/x509certificate2_tostring(bool)-does-not-throw-now-when-_net-cannot-handle-the-certificate.md @@ -1,4 +1,4 @@ -## 76: X509Certificate2.ToString(bool) does not throw now when .NET cannot handle the certificate +## X509Certificate2.ToString(bool) does not throw now when .NET cannot handle the certificate ### Scope Edge @@ -25,3 +25,5 @@ Any code depending on X509Certificate2.ToString(bool) should be updated to expec Core [More information](https://msdn.microsoft.com/en-us/library/dn833125\(v=vs.110\).aspx#Core) + + diff --git a/Documentation/breaking-changes/x509certificateclaimset_findclaims-considers-all-claimtypes.md b/Documentation/compatibility/x509certificateclaimset_findclaims-considers-all-claimtypes.md similarity index 91% rename from Documentation/breaking-changes/x509certificateclaimset_findclaims-considers-all-claimtypes.md rename to Documentation/compatibility/x509certificateclaimset_findclaims-considers-all-claimtypes.md index d0a08e6ba..7e5942c2b 100644 --- a/Documentation/breaking-changes/x509certificateclaimset_findclaims-considers-all-claimtypes.md +++ b/Documentation/compatibility/x509certificateclaimset_findclaims-considers-all-claimtypes.md @@ -1,4 +1,4 @@ -## 143: X509CertificateClaimSet.FindClaims Considers All claimTypes +## X509CertificateClaimSet.FindClaims Considers All claimTypes ### Scope Minor @@ -27,3 +27,5 @@ This change only affects applications targeting the .NET Framework 4.6.1. This c Windows Communication Foundation (WCF) [More information](https://msdn.microsoft.com/en-us/library/mt620031%28v=vs.110%29.aspx#WCF) + + diff --git a/Documentation/breaking-changes/xml-documents-are-now-consider-invalid-if-they-contains-transforms-that-are-not-allowed-on-digital-signatures.md b/Documentation/compatibility/xml-documents-are-now-consider-invalid-if-they-contains-transforms-that-are-not-allowed-on-digital-signatures.md similarity index 94% rename from Documentation/breaking-changes/xml-documents-are-now-consider-invalid-if-they-contains-transforms-that-are-not-allowed-on-digital-signatures.md rename to Documentation/compatibility/xml-documents-are-now-consider-invalid-if-they-contains-transforms-that-are-not-allowed-on-digital-signatures.md index e14769a99..3e2e08958 100644 --- a/Documentation/breaking-changes/xml-documents-are-now-consider-invalid-if-they-contains-transforms-that-are-not-allowed-on-digital-signatures.md +++ b/Documentation/compatibility/xml-documents-are-now-consider-invalid-if-they-contains-transforms-that-are-not-allowed-on-digital-signatures.md @@ -1,4 +1,4 @@ -## 156: SignedXml and EncryptedXml Breaking Changes +## SignedXml and EncryptedXml Breaking Changes ### Scope Minor @@ -45,3 +45,5 @@ receiver may not be able to process it. Security [More information](https://github.com/Microsoft/dotnet/blob/master/releases/net462/dotnet462-changes.md) + + diff --git a/Documentation/breaking-changes/xml-schema-validation-is-stricter.md b/Documentation/compatibility/xml-schema-validation-is-stricter.md similarity index 93% rename from Documentation/breaking-changes/xml-schema-validation-is-stricter.md rename to Documentation/compatibility/xml-schema-validation-is-stricter.md index f5a6a15d4..764ff6856 100644 --- a/Documentation/breaking-changes/xml-schema-validation-is-stricter.md +++ b/Documentation/compatibility/xml-schema-validation-is-stricter.md @@ -1,4 +1,4 @@ -## 2: XML schema validation is stricter +## XML schema validation is stricter ### Scope Minor @@ -25,3 +25,5 @@ If looser .NET Framework 4.0 validation is needed, the validating application ca XML, XSLT [More information](https://msdn.microsoft.com/en-us/library/hh367887\(v=vs.110\).aspx) + + diff --git a/Documentation/breaking-changes/xmlschemaexception-now-sets-line-positions-properly.md b/Documentation/compatibility/xmlschemaexception-now-sets-line-positions-properly.md similarity index 89% rename from Documentation/breaking-changes/xmlschemaexception-now-sets-line-positions-properly.md rename to Documentation/compatibility/xmlschemaexception-now-sets-line-positions-properly.md index d6878ab3d..911e06e41 100644 --- a/Documentation/breaking-changes/xmlschemaexception-now-sets-line-positions-properly.md +++ b/Documentation/compatibility/xmlschemaexception-now-sets-line-positions-properly.md @@ -1,4 +1,4 @@ -## 19: XmlSchemaException now sets line positions properly +## XmlSchemaException now sets line positions properly ### Scope Edge @@ -25,3 +25,5 @@ Exception-handling code that assumes XmlSchemaException.LineNumber and XmlSchema XML, XSLT [More information](https://msdn.microsoft.com/en-us/library/hh367887#xml) + + diff --git a/Documentation/breaking-changes/xmlserializer-fails-while-serializing-a-type-that-hides-an-accessible-member-with-an-inaccessible-one.md b/Documentation/compatibility/xmlserializer-fails-while-serializing-a-type-that-hides-an-accessible-member-with-an-inaccessible-one.md similarity index 93% rename from Documentation/breaking-changes/xmlserializer-fails-while-serializing-a-type-that-hides-an-accessible-member-with-an-inaccessible-one.md rename to Documentation/compatibility/xmlserializer-fails-while-serializing-a-type-that-hides-an-accessible-member-with-an-inaccessible-one.md index 8c737f26b..99dfac021 100644 --- a/Documentation/breaking-changes/xmlserializer-fails-while-serializing-a-type-that-hides-an-accessible-member-with-an-inaccessible-one.md +++ b/Documentation/compatibility/xmlserializer-fails-while-serializing-a-type-that-hides-an-accessible-member-with-an-inaccessible-one.md @@ -1,4 +1,4 @@ -## 140: XmlSerializer fails while serializing a type that hides an accessible member with an inaccessible one +## XmlSerializer fails while serializing a type that hides an accessible member with an inaccessible one ### Scope Minor @@ -41,3 +41,5 @@ Alternatively, the following config setting will revert to 4.0 XmlSerializer beh Serialization [More information](http://stackoverflow.com/questions/14689305/serialization-breaks-in-net-4-5) + + diff --git a/Documentation/breaking-changes/xmlserializer-serializes-fields-differently-in-4_5.md b/Documentation/compatibility/xmlserializer-serializes-fields-differently-in-4_5.md similarity index 95% rename from Documentation/breaking-changes/xmlserializer-serializes-fields-differently-in-4_5.md rename to Documentation/compatibility/xmlserializer-serializes-fields-differently-in-4_5.md index 3d239bed9..ffa60b619 100644 --- a/Documentation/breaking-changes/xmlserializer-serializes-fields-differently-in-4_5.md +++ b/Documentation/compatibility/xmlserializer-serializes-fields-differently-in-4_5.md @@ -1,4 +1,4 @@ -## 94: XmlSerializer serializes fields differently in 4.5 +## XmlSerializer serializes fields differently in 4.5 ### Scope Major @@ -43,3 +43,5 @@ Serialization XML, XSLT [More information](http://connect.microsoft.com/VisualStudio/feedback/details/761786/net-4-5-xmlserializer-produces-different-output-from-4-0) + + diff --git a/Documentation/breaking-changes/xmltextreader-dtd-entity-expansion-is-limited-to-10000000-characters.md b/Documentation/compatibility/xmltextreader-dtd-entity-expansion-is-limited-to-10000000-characters.md similarity index 95% rename from Documentation/breaking-changes/xmltextreader-dtd-entity-expansion-is-limited-to-10000000-characters.md rename to Documentation/compatibility/xmltextreader-dtd-entity-expansion-is-limited-to-10000000-characters.md index feaca6791..eda919c68 100644 --- a/Documentation/breaking-changes/xmltextreader-dtd-entity-expansion-is-limited-to-10000000-characters.md +++ b/Documentation/compatibility/xmltextreader-dtd-entity-expansion-is-limited-to-10000000-characters.md @@ -1,4 +1,4 @@ -## 33: XmlTextReader DTD entity expansion is limited to 10,000,000 characters +## XmlTextReader DTD entity expansion is limited to 10,000,000 characters ### Scope Edge @@ -39,3 +39,5 @@ If the limit of DTD entity expansion is too low 10,000,000, the value can be ove XML, XSLT [More information](https://msdn.microsoft.com/en-us/library/hh367887(v=vs.110).aspx) + + diff --git a/Documentation/breaking-changes/xmlwriter-throws-on-invalid-surrogate-pairs.md b/Documentation/compatibility/xmlwriter-throws-on-invalid-surrogate-pairs.md similarity index 97% rename from Documentation/breaking-changes/xmlwriter-throws-on-invalid-surrogate-pairs.md rename to Documentation/compatibility/xmlwriter-throws-on-invalid-surrogate-pairs.md index 4edbd0663..3a0e6502e 100644 --- a/Documentation/breaking-changes/xmlwriter-throws-on-invalid-surrogate-pairs.md +++ b/Documentation/compatibility/xmlwriter-throws-on-invalid-surrogate-pairs.md @@ -1,4 +1,4 @@ -## 81: XmlWriter throws on invalid surrogate pairs +## XmlWriter throws on invalid surrogate pairs ### Scope Edge @@ -54,4 +54,4 @@ XML, XSLT Single-diagnostic compilation action analyzer?? Depends on how likely it is we think we could usefully analyze arguments to these methods (and whether they contained invalid surrogate pairs) --> - + diff --git a/Documentation/breaking-changes/xsd-schema-validation-now-correctly-detects-violations-of-unique-constraints-if-compound-keys-are-used-and-one-key-is-empty.md b/Documentation/compatibility/xsd-schema-validation-now-correctly-detects-violations-of-unique-constraints-if-compound-keys-are-used-and-one-key-is-empty.md similarity index 83% rename from Documentation/breaking-changes/xsd-schema-validation-now-correctly-detects-violations-of-unique-constraints-if-compound-keys-are-used-and-one-key-is-empty.md rename to Documentation/compatibility/xsd-schema-validation-now-correctly-detects-violations-of-unique-constraints-if-compound-keys-are-used-and-one-key-is-empty.md index a04512624..9847ffc50 100644 --- a/Documentation/breaking-changes/xsd-schema-validation-now-correctly-detects-violations-of-unique-constraints-if-compound-keys-are-used-and-one-key-is-empty.md +++ b/Documentation/compatibility/xsd-schema-validation-now-correctly-detects-violations-of-unique-constraints-if-compound-keys-are-used-and-one-key-is-empty.md @@ -1,4 +1,4 @@ -## 111: XSD Schema validation now correctly detects violations of unique constraints if compound keys are used and one key is empty +## XSD Schema validation now correctly detects violations of unique constraints if compound keys are used and one key is empty ### Scope Edge @@ -22,4 +22,6 @@ If looser, .NET Framework 4.0 validation is needed, the validating application c * Not detectable via API analysis ### Category -XML, XSLT \ No newline at end of file +XML, XSLT + + diff --git a/Documentation/breaking-changes/xslt-forward-compat-now-works.md b/Documentation/compatibility/xslt-forward-compat-now-works.md similarity index 94% rename from Documentation/breaking-changes/xslt-forward-compat-now-works.md rename to Documentation/compatibility/xslt-forward-compat-now-works.md index 365bc0522..8f39b6ffa 100644 --- a/Documentation/breaking-changes/xslt-forward-compat-now-works.md +++ b/Documentation/compatibility/xslt-forward-compat-now-works.md @@ -1,4 +1,4 @@ -## 34: XSLT forward compat now works +## XSLT forward compat now works ### Scope Edge @@ -30,3 +30,5 @@ Most apps should be unaffected, however data will be sorted differently in some XML, XSLT [More information](https://msdn.microsoft.com/en-us/library/hh367887(v=vs.110).aspx#xml) + + diff --git a/Documentation/breaking-changes/xslt-style-sheet-exception-message-changed.md b/Documentation/compatibility/xslt-style-sheet-exception-message-changed.md similarity index 95% rename from Documentation/breaking-changes/xslt-style-sheet-exception-message-changed.md rename to Documentation/compatibility/xslt-style-sheet-exception-message-changed.md index 5d5805d53..f632ac4f5 100644 --- a/Documentation/breaking-changes/xslt-style-sheet-exception-message-changed.md +++ b/Documentation/compatibility/xslt-style-sheet-exception-message-changed.md @@ -1,4 +1,4 @@ -## 35: XSLT style sheet exception message changed +## XSLT style sheet exception message changed ### Scope Edge @@ -32,3 +32,5 @@ Update any app code depending on the excepton message from this error condition XML, XSLT [More information](https://msdn.microsoft.com/en-us/library/hh367887(v=vs.110).aspx#xml) + + diff --git a/README.md b/README.md index 41a9d1d56..3351b7ace 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ This repo is not an official .NET Framework support location, however, we will r ## In this repository - [.NET Framework Release Notes](releases/README.md) -- [.NET Framework Breaking Changes](Documentation/breaking-changes/README.md) +- [.NET Framework Documentation](Documentation/README.md) - [.NET Open Source Developer Projects](dotnet-developer-projects.md) - [.NET Open Source Consumer Projects](dotnet-consumer-projects.md) - [Free Services & Tools for Open Source .NET Projects](dotnet-free-oss-services.md) diff --git a/releases/README.md b/releases/README.md index e7a2aa8ad..03f04047d 100644 --- a/releases/README.md +++ b/releases/README.md @@ -4,42 +4,26 @@ You can learn about .NET Framework [releases](#releases), below. See [resources] To get up-to-date with the latest versions of .NET Framework and Visual Studio, see [Install the .NET Framework](https://www.microsoft.com/net/framework/versions) and [Install Visual Studio](https://www.visualstudio.com/vs/). See [Targeting .NET Platforms](https://www.microsoft.com/net/targeting) to find additional tools. -## Releases +## Release Notes You can see what was included in each .NET Framework release. Some releases are now unsupported, as called out. -- .NET Framework 4.7 - - [Announcement blog post](https://go.microsoft.com/fwlink/?linkid=845636) - - [Release notes](net47/README.md) -- .NET Framework 4.6.2 - - [Announcement blog post](https://blogs.msdn.microsoft.com/dotnet/2016/08/02/announcing-net-framework-4-6-2/) - - [Release notes](net462/README.md) -- .NET Framework 4.6.1 - - [Announcement blog post](https://blogs.msdn.microsoft.com/dotnet/2015/11/30/net-framework-4-6-1-is-now-available/) - - [Release notes](net461) - - [Known issues](https://support.microsoft.com/en-us/help/3102432/known-issues-for-the-.net-framework-4.6.1) -- .NET Framework 4.6 - - [Announcement blog post](https://blogs.msdn.microsoft.com/dotnet/2015/07/20/announcing-net-framework-4-6/) - - [Release notes](net46) - - [Known issues](https://support.microsoft.com/en-us/help/3047761/known-issues-for-the-.net-framework-4.6) -- .NET Framework 4.5.2 - - [Announcement blog post](https://blogs.msdn.microsoft.com/dotnet/2014/05/05/announcing-the-net-framework-4-5-2/) - - [Known issues](https://support.microsoft.com/en-us/help/2962547/known-issues-for-the-.net-framework-4.5.2) -- .NET Framework 4.5.1 (unsupported) - - [Announcement blog post](https://blogs.msdn.microsoft.com/dotnet/2013/10/17/net-framework-4-5-1-rtm-start-coding/) - - [Known issues](https://support.microsoft.com/en-us/help/2890857/known-issues-for-the-.net-framework-4.5.1) -- .NET Framework 4.5 (unsupported) - - [Announcement blog post](https://blogs.msdn.microsoft.com/dotnet/2012/08/15/announcing-the-release-of-net-framework-4-5-rtm-product-and-source-code/) -- .NET Framework 4.0.3 (unsupported) - - [Announcement blog post](https://blogs.msdn.microsoft.com/dotnet/2012/03/05/update-4-0-3-for-the-microsoft-net-framework-4/) -- .NET Framework 4.0.2 (unsupported) - - [Announcement blog post](https://blogs.msdn.microsoft.com/dotnet/2011/10/27/update-4-0-2-for-the-microsoft-net-framework-4/) + +- [.NET Framework 4.7](net47/README.md) +- [.NET Framework 4.6.2](net462/README.md) +- [.NET Framework 4.6.1](net461/README.md) +- [.NET Framework 4.6](net46/README.md) +- [.NET Framework 4.5.2](net452/README.md) +- [.NET Framework 4.5.1](net451/README.md) (unsupported) +- [.NET Framework 4.5](https://blogs.msdn.microsoft.com/dotnet/2012/08/15/announcing-the-release-of-net-framework-4-5-rtm-product-and-source-code/) (unsupported) +- [.NET Framework 4.0.3](https://blogs.msdn.microsoft.com/dotnet/2012/03/05/update-4-0-3-for-the-microsoft-net-framework-4/) (unsupported) +- [.NET Framework 4.0.2](https://blogs.msdn.microsoft.com/dotnet/2011/10/27/update-4-0-2-for-the-microsoft-net-framework-4/) (unsupported) ## Resources -- [.NET Framework Breaking Changes](../Documentation/breaking-changes/README.md) +- [.NET Framework Breaking Changes](../Documentation/compatibility/README.md) - [.NET Framework Docs](https://docs.microsoft.com/dotnet) - [.NET Framework Docs Source (dotnet/docs)](https://github.com/dotnet/docs) - [.NET Framework Reference Source](https://referencesource.microsoft.com/) - [.NET Framework reference source on GitHub (microsoft/referencesource)](https://github.com/microsoft/referencesource) - [.NET Core Releases (dotnet/core)](https://github.com/dotnet/core/blob/master/release-notes/README.md) -- [ASP.NET Core Releases (aspnet/home)](https://github.com/aspnet/Home/releases) \ No newline at end of file +- [ASP.NET Core Releases (aspnet/home)](https://github.com/aspnet/Home/releases) diff --git a/releases/net45/README.md b/releases/net45/README.md new file mode 100644 index 000000000..a62f06539 --- /dev/null +++ b/releases/net45/README.md @@ -0,0 +1,10 @@ +# .NET Framework 4.5 Release Notes + +You can learn about the changes made in the .NET Framework 4.5. + +The .NET Framework 4.5 is no longer supported by Microsoft. + +- [.NET Framework 4.5 announcement blog post](https://blogs.msdn.microsoft.com/dotnet/2013/10/17/net-framework-4-5-1-rtm-start-coding/) +- [What's new in the .NET Framework 4.5](https://docs.microsoft.com/dotnet/articles/framework/whats-new/index#v45) +- [Application compatibility](../../Documentation/compatibility/README.md#net-framework-45) +- [Known issues](https://support.microsoft.com/en-us/help/2890857/known-issues-for-the-.net-framework-4.5) diff --git a/releases/net451/README.md b/releases/net451/README.md new file mode 100644 index 000000000..c7235ef31 --- /dev/null +++ b/releases/net451/README.md @@ -0,0 +1,10 @@ +# .NET Framework 4.5.1 Release Notes + +You can learn about the changes made in the .NET Framework 4.5.1. + +The .NET Framework 4.5.1 is no longer supported by Microsoft. + +- [.NET Framework 4.5.1 announcement blog post](https://blogs.msdn.microsoft.com/dotnet/2013/10/17/net-framework-4-5-1-rtm-start-coding/) +- [What's new in the .NET Framework 4.5.1](https://docs.microsoft.com/dotnet/articles/framework/whats-new/index#v451) +- [Application compatibility](../../Documentation/compatibility/README.md#net-framework-451) +- [Known issues](https://support.microsoft.com/en-us/help/2890857/known-issues-for-the-.net-framework-4.5.1) diff --git a/releases/net452/README.md b/releases/net452/README.md new file mode 100644 index 000000000..8f97274b6 --- /dev/null +++ b/releases/net452/README.md @@ -0,0 +1,8 @@ +# .NET Framework 4.5.2 Release Notes + +You can learn about the changes made in the .NET Framework 4.5.2. + +- [.NET Framework 4.5.2 announcement blog post](https://blogs.msdn.microsoft.com/dotnet/2014/05/05/announcing-the-net-framework-4-5-2/) +- [What's new in the .NET Framework 4.5.2](https://docs.microsoft.com/dotnet/articles/framework/whats-new/index#v452) +- [Application compatibility](../../Documentation/compatibility/README.md#net-framework-452) +- [Known issues](https://support.microsoft.com/en-us/help/2962547/known-issues-for-the-.net-framework-4.5.2) diff --git a/releases/net46/README.md b/releases/net46/README.md new file mode 100644 index 000000000..a064069b9 --- /dev/null +++ b/releases/net46/README.md @@ -0,0 +1,22 @@ +# .NET Framework 4.6 Release Notes + +You can learn about the changes made in the .NET Framework 4.6. + +- [.NET Framework 4.6 announcement blog post](https://blogs.msdn.microsoft.com/dotnet/2015/07/20/announcing-net-framework-4-6/) +- [What's new in the .NET Framework 4.6](https://docs.microsoft.com/dotnet/articles/framework/whats-new/index#v46) +- [Release notes](dotnet46-changes.md) +- [Application compatibility](../../Documentation/compatibility/README.md#net-framework-46) +- [API changes](dotnet46-api-changes.md) +- [Reference Source](https://github.com/Microsoft/referencesource/commit/ec178a5e7deb87a9cc7e0982ee32b7d965735b16) +- [Known issues](https://support.microsoft.com/en-us/help/3047761/known-issues-for-the-.net-framework-4.6) + +# Release Notes by Product Area + +- [ASP.NET](dotnet46-changes.md#aspnet) +- [BCL](dotnet46-changes.md#bcl) +- [CLR](dotnet46-changes.md#clr) +- [Entity Framework](dotnet46-changes.md#entity-framework) +- [WCF](dotnet46-changes.md#wcf) +- [Windows Forms](dotnet46-changes.md#windows-forms) +- [Workflow](dotnet46-changes.md#workflow) +- [WPF](dotnet46-changes.md#wpf) diff --git a/releases/net46/dotnet46-changes.md b/releases/net46/dotnet46-changes.md index 6f13b1bd1..3462918b8 100644 --- a/releases/net46/dotnet46-changes.md +++ b/releases/net46/dotnet46-changes.md @@ -6,57 +6,44 @@ This list details those changes, grouped by feature area. Each change includes our TFS bug numbers at the end of the line. Please include those numbers in your communication if you wish to contact us to obtain more information. -CLR ---- +ASP.NET +------- -* AppContext values can be overridden by registry settings. [1076165] -* Asmx service references can be added to store apps. [1078198] -* CrossGen and NGen create identical System.Core native images. [1033601] -* ICorProfilerCallback6 doesn't leak reference count. [1038285] -* Loading design-time metadata at debug time for universal Windows apps is supported. [1038300] -* Multi-core JIT doesn't deadlock from loop of structs and hang Visual Studio. [1043199] -* ICorDebug heap enumeration doesn't skip objects. [1063297] -* WinMDExp/CCI allow reading record kind 0x5/0x6. [1073349] -* ETW tracing for WebRequest works reliably when garbage collection happens. [1136690] -* Fixed a deadlock in case of StackOverflow. [1138065] -* Improved performance reading from the redirected output stream. [997190] -* Product version is correct in binaries' properties. [997577] -* RyuJIT is on by default. [10175592], [1020209] -* Only one GC/Start ETW event is triggered for each GC. [1020142] -* Fixed issue with wrong processor architecture being recorded on non-GAC assemblies, causing them to fail loading. [1020167] -* No opportunistic tail calls when there are pinned variables. [1020867] -* RyuJIT correctly handles edit and continue on instance synchronized methods. [1020967] -* Fixed x64 JIT assignment to struct, where LHS also appears on RHS. [1021056] -* CLR checks assembly architecture when skip IL loading feature is enabled. [1024293] -* Native images generated by CrossGen for .NET Framework have processor architecture data. [1028975] -* CLR emits all versions of the ModuleLoad/ModuleUnload ETW events. [1029164] -* Future DFL and FFL handled. [1030154] -* Unresolvable SID in SDSAM handled. [1030161] -* Crossgen / ReadyToRun images are treated as IL by CLR. [1084749] -* Fixed a RyuJIT regression causing System.Web.HttpApplication.ExecuteStep to incorrectly handle exceptions associated with redirections. [1088278] -* Setup doesn't disable CAPI2 event logs. [1090378] -* WindowsBase uses C# exception filters. [1090886] -* Libraries can define switches without modifying mscorlib. [1092007] -* No GC regions can be specified. [1096946] -* Fixed lock ordering violation between rejit lock and ETW rundown. [1104691] -* NGen compresses native images on devices with limited amount of disk space. [1107517] -* TargetFrameworkAttribute is not always null for non-default AppDomains. [430136] -* Sos.dll dumpheap reports correct TotalSize. [484532] -* Lc.exe can handle response files. [621761] -* MixedMode debugging a Windows Store C# application that calls a C++/CX WinRT component doesn't cause and access violation. [764121] -* Fixed access violation caused by WinRT class names without namespace. [738932] -* Fixed breaking change in COR_PRF_GC_ROOT_HANDLE values. [800872] -* Improved free list efficiency in Gen2 garbage collection. [841334] -* Made heap_of less expensive for server GC. [896400] -* GC datastructure isn't made unreasonably large when the new segment's address is far from the existing ones (64-bit). [897049] -* Win32Native.MEMORYSTATUSEX is a struct, not a class. [899371] -* Eliminated a deadlock condition in RuntimeResourceSet. [905813] -* _Delegate* also has IDispatch vtable entries for non-generic delegates. [922080] -* Module rundown events are generated before method rundown events, improving performance. [939400] -* CLR returns rejit info after first rejit. [952954] -* Fixed the performance for enums based on primitive integral types other than int while maintaining the roundtrip between 4.0 and 4.5. [965865] -* .NET Framework Setup UI correctly scales controls in high DPI. [968115] -* SIMD types in System.Numerics.dll are recognized by the JIT. [1168471] +* State Service startup type is correctly persisted. [1038077] +* Registry settings preserved during upgrade. [1038147] +* Medium trust in ASP.NET 4.5 application doesn't cause execution permission exception. [1038337] +* WebForm_DoCallback XHR doesn't break IDN support. [1040710] +* .NET quirks and compatibility switches can be specified in ASP.NET configuration file. [1041102] +* SignalR memory leak fixed. [1042247] +* Quirks can be activated from ASP.NET even when a TFM is not specified. [1068433] +* Membership UpdateUser and UpdateUserInfo don't cause SQL deadlock. [1131099] +* Handles aborted XmlHttpRequest correctly. [983362] +* ASP.NET allows config settings changes to affect CLR initialization. [994276] +* HttpEncoder.UrlPathEncode doesn't encode the IDN part of the URL. [995259] +* WebUIValidation.js correctly mapped on WebDev.WebServer 4.5.3. [998958] +* Background flushes don't cause pipeline corruptions when using the TAP-friendly synchronization context. [1020085] +* ASP.NET recognizes Edge browser. [1031688] +* Databinding methods can be used in async binding. [1082492] +* Removed a contention in System.Web.BufferAllocator. [1084913] +* Setting request headers doesn't initialize ServerVariables. [1085748] +* Fixed a crash in IIS Manager when opening content view. [1093488] +* New web site template doesn't cause warnings. [1099514] +* Browsing to an asmx file or wsdl with an IDN binding set in IIS doesn't cause a URI parsing exception. [110223] +* Request validation can be completely disabled in an application. [412689] +* EmailAddress attribute can load error message from resource. [468241] +* GridView.CreateChildControl returns the correct CreatedRowCount when CustomPaging is enabled. [782891] +* Custom output cache providers don't cause exception on cache policy settings serialization when more than one invalidation handler is present. [789904] +* VaryByContentEncoding is now case-insensitive. [830641] +* HttpContextWrapper.IsPostNotification returns the correct value based on pipeline event. [839206] +* HtmlTextWriter renders
element as self-closing tag. [852940] +* Posting invalid payload to ASP.NET with trace and 4.0 request validation enabled doesn't crash the worker process. [867196] +* MemoryCache doesn't throw null reference expression when CacheItemPolicy.UpdateCallback is defined. [879799] +* DiskBuildResultCache.CacheBuildResult has a null check for CompiledResult.ResultAssembly. [880034] +* ContentDisposition constructor doesn't modify date values of the provided disposition string. [884362] +* Calling MachineKey.Decode on ASP.NET application start or on first request doesn't throw null reference exception. [896595] +* MemoryCache Trim method evicts all items. [902234] +* Overloads of HttpUtility.UrlEncode and UrlEncodeToBytes taking (byte[] bytes, int offset, int count) respects the offset and count parameter values. [912606] +* Setting culture to auto:* in web.config doesn't cause CultureNotFoundException. [714999] BCL --- @@ -164,44 +151,102 @@ BCL * System.Drawing.Icon.ToBitmap() supports PNG framed icons. [1084802] * Uri constructor doesn't throw ArgumentOutOfRangeException when parsing certain URIs with escaped international characters. [1173958] -ASP.NET -------- +CLR +--- -* State Service startup type is correctly persisted. [1038077] -* Registry settings preserved during upgrade. [1038147] -* Medium trust in ASP.NET 4.5 application doesn't cause execution permission exception. [1038337] -* WebForm_DoCallback XHR doesn't break IDN support. [1040710] -* .NET quirks and compatibility switches can be specified in ASP.NET configuration file. [1041102] -* SignalR memory leak fixed. [1042247] -* Quirks can be activated from ASP.NET even when a TFM is not specified. [1068433] -* Membership UpdateUser and UpdateUserInfo don't cause SQL deadlock. [1131099] -* Handles aborted XmlHttpRequest correctly. [983362] -* ASP.NET allows config settings changes to affect CLR initialization. [994276] -* HttpEncoder.UrlPathEncode doesn't encode the IDN part of the URL. [995259] -* WebUIValidation.js correctly mapped on WebDev.WebServer 4.5.3. [998958] -* Background flushes don't cause pipeline corruptions when using the TAP-friendly synchronization context. [1020085] -* ASP.NET recognizes Edge browser. [1031688] -* Databinding methods can be used in async binding. [1082492] -* Removed a contention in System.Web.BufferAllocator. [1084913] -* Setting request headers doesn't initialize ServerVariables. [1085748] -* Fixed a crash in IIS Manager when opening content view. [1093488] -* New web site template doesn't cause warnings. [1099514] -* Browsing to an asmx file or wsdl with an IDN binding set in IIS doesn't cause a URI parsing exception. [110223] -* Request validation can be completely disabled in an application. [412689] -* EmailAddress attribute can load error message from resource. [468241] -* GridView.CreateChildControl returns the correct CreatedRowCount when CustomPaging is enabled. [782891] -* Custom output cache providers don't cause exception on cache policy settings serialization when more than one invalidation handler is present. [789904] -* VaryByContentEncoding is now case-insensitive. [830641] -* HttpContextWrapper.IsPostNotification returns the correct value based on pipeline event. [839206] -* HtmlTextWriter renders
element as self-closing tag. [852940] -* Posting invalid payload to ASP.NET with trace and 4.0 request validation enabled doesn't crash the worker process. [867196] -* MemoryCache doesn't throw null reference expression when CacheItemPolicy.UpdateCallback is defined. [879799] -* DiskBuildResultCache.CacheBuildResult has a null check for CompiledResult.ResultAssembly. [880034] -* ContentDisposition constructor doesn't modify date values of the provided disposition string. [884362] -* Calling MachineKey.Decode on ASP.NET application start or on first request doesn't throw null reference exception. [896595] -* MemoryCache Trim method evicts all items. [902234] -* Overloads of HttpUtility.UrlEncode and UrlEncodeToBytes taking (byte[] bytes, int offset, int count) respects the offset and count parameter values. [912606] -* Setting culture to auto:* in web.config doesn't cause CultureNotFoundException. [714999] +* AppContext values can be overridden by registry settings. [1076165] +* Asmx service references can be added to store apps. [1078198] +* CrossGen and NGen create identical System.Core native images. [1033601] +* ICorProfilerCallback6 doesn't leak reference count. [1038285] +* Loading design-time metadata at debug time for universal Windows apps is supported. [1038300] +* Multi-core JIT doesn't deadlock from loop of structs and hang Visual Studio. [1043199] +* ICorDebug heap enumeration doesn't skip objects. [1063297] +* WinMDExp/CCI allow reading record kind 0x5/0x6. [1073349] +* ETW tracing for WebRequest works reliably when garbage collection happens. [1136690] +* Fixed a deadlock in case of StackOverflow. [1138065] +* Improved performance reading from the redirected output stream. [997190] +* Product version is correct in binaries' properties. [997577] +* RyuJIT is on by default. [10175592], [1020209] +* Only one GC/Start ETW event is triggered for each GC. [1020142] +* Fixed issue with wrong processor architecture being recorded on non-GAC assemblies, causing them to fail loading. [1020167] +* No opportunistic tail calls when there are pinned variables. [1020867] +* RyuJIT correctly handles edit and continue on instance synchronized methods. [1020967] +* Fixed x64 JIT assignment to struct, where LHS also appears on RHS. [1021056] +* CLR checks assembly architecture when skip IL loading feature is enabled. [1024293] +* Native images generated by CrossGen for .NET Framework have processor architecture data. [1028975] +* CLR emits all versions of the ModuleLoad/ModuleUnload ETW events. [1029164] +* Future DFL and FFL handled. [1030154] +* Unresolvable SID in SDSAM handled. [1030161] +* Crossgen / ReadyToRun images are treated as IL by CLR. [1084749] +* Fixed a RyuJIT regression causing System.Web.HttpApplication.ExecuteStep to incorrectly handle exceptions associated with redirections. [1088278] +* Setup doesn't disable CAPI2 event logs. [1090378] +* WindowsBase uses C# exception filters. [1090886] +* Libraries can define switches without modifying mscorlib. [1092007] +* No GC regions can be specified. [1096946] +* Fixed lock ordering violation between rejit lock and ETW rundown. [1104691] +* NGen compresses native images on devices with limited amount of disk space. [1107517] +* TargetFrameworkAttribute is not always null for non-default AppDomains. [430136] +* Sos.dll dumpheap reports correct TotalSize. [484532] +* Lc.exe can handle response files. [621761] +* MixedMode debugging a Windows Store C# application that calls a C++/CX WinRT component doesn't cause and access violation. [764121] +* Fixed access violation caused by WinRT class names without namespace. [738932] +* Fixed breaking change in COR_PRF_GC_ROOT_HANDLE values. [800872] +* Improved free list efficiency in Gen2 garbage collection. [841334] +* Made heap_of less expensive for server GC. [896400] +* GC datastructure isn't made unreasonably large when the new segment's address is far from the existing ones (64-bit). [897049] +* Win32Native.MEMORYSTATUSEX is a struct, not a class. [899371] +* Eliminated a deadlock condition in RuntimeResourceSet. [905813] +* _Delegate* also has IDispatch vtable entries for non-generic delegates. [922080] +* Module rundown events are generated before method rundown events, improving performance. [939400] +* CLR returns rejit info after first rejit. [952954] +* Fixed the performance for enums based on primitive integral types other than int while maintaining the roundtrip between 4.0 and 4.5. [965865] +* .NET Framework Setup UI correctly scales controls in high DPI. [968115] +* SIMD types in System.Numerics.dll are recognized by the JIT. [1168471] + +Entity Framework +---------------- + +* Entity data source can be configured without causing an exception about the provider not returning a ProviderManifest instance. [810937] + +WCF +--- + +* Adding a service reference to a class library doesn't cause compilation errors. [1063611] +* CustomBinding honors security header layout mode of Lax / LaxTimeStampLast. [1136398] +* DataContractSerializer doesn't throw InvalidCastException on StringDictionary serialization. [1008489] +* Fixed that WCF friendly instance names limited to 64 characters could cause false duplicates as instance names support up to 128 characters. [1022700] +* Roles.GetRolesForUser() doesn't throw NullReferenceException in a WCF service hosted in ASP.NET with the AspNetCompatibilityEnabled flag set to false. [1022754] +* ProcessMessage31 uses cached delegate for ProcessMessage4. [1030713] +* System.ServiceModel.Syndication.SyndicationFeed can parse . [1088425] +* Client certificate information is added as claim by default. [1103426] +* Warning message added if users enable "wcf:ensureUniquePerformanceCounterInstanceNames" app setting without the user hosting the service having the proper permissions. [1108004] +* Fixed null reference and access violation exceptions in System.ServiceModel.Channels.MessageHeaders.GetBufferedMessageHeaderReaderAtHeaderContents. [1116949] +* WebResponseInputStream doesn't swallow the exception stating that the stream doesn't support read timeouts. [288814] +* Auto-generated help produces correct links. [852865] +* Added a keep-alive timeout on WCF ServiceHost. [948289] +* Fixed a null reference exception in System.Runtime.Serialization when ETW is enabled. [1137758] + +Windows Forms +------------- + +* Icon.ToBitmap() supports PNG framed icons. [1074253] +* Adding large image to resource file doesn't cause error in 300% high DPI mode. [1096726] +* System.Windows.Input.Cursor supports multi-image cursor files. [673619] +* Closing a parent form in MDI applications doesn't throw System.ComponentModel.Win32Exception (Error creating window handle) [847648] +* Fixed a null reference exception when messages continue arriving after a native tooltip window has been disposed. [933930] +* Using custom MessageFilter doesn't cause sporadic IndexOutOfRangeException in ThreadContext. [1072924] +* WIT grid's sorting arrows scale for high DPI. [745286] +* NumericUpDown scroll buttons scale for high DPI. [906184] + +Workflow +-------- + +* WorkflowService design-time validation can be cancelled. [1162560] +* ActivityExecutor.OnExecuteWorkItem has improved performance on RyuJIT. [1136333], [1136377] +* Improvements to out-of-sequence calls in WF State Machine [1018947] +* Added synchronization to DynamicModuleManager to prevent debugger from crashing the debugged application. [1112002] +* Default TransactionException extended to include the distributed transaction ID in error message. [954268] +* Workflow Foundation implementation for SQL better handles transient database errors. [1152472] WPF --- @@ -246,48 +291,3 @@ WPF * Window chrome doesn't turn black on maximize with GlassFrameThickness -1. [1176703] * Improved RichTextBox typing performance on low-end GPUs. [1177602] * Applications continue to promote touch events to click after digitizer is removed and reconnected while touching the digitizer. [1186170] - -WCF ---- - -* Adding a service reference to a class library doesn't cause compilation errors. [1063611] -* CustomBinding honors security header layout mode of Lax / LaxTimeStampLast. [1136398] -* DataContractSerializer doesn't throw InvalidCastException on StringDictionary serialization. [1008489] -* Fixed that WCF friendly instance names limited to 64 characters could cause false duplicates as instance names support up to 128 characters. [1022700] -* Roles.GetRolesForUser() doesn't throw NullReferenceException in a WCF service hosted in ASP.NET with the AspNetCompatibilityEnabled flag set to false. [1022754] -* ProcessMessage31 uses cached delegate for ProcessMessage4. [1030713] -* System.ServiceModel.Syndication.SyndicationFeed can parse . [1088425] -* Client certificate information is added as claim by default. [1103426] -* Warning message added if users enable "wcf:ensureUniquePerformanceCounterInstanceNames" app setting without the user hosting the service having the proper permissions. [1108004] -* Fixed null reference and access violation exceptions in System.ServiceModel.Channels.MessageHeaders.GetBufferedMessageHeaderReaderAtHeaderContents. [1116949] -* WebResponseInputStream doesn't swallow the exception stating that the stream doesn't support read timeouts. [288814] -* Auto-generated help produces correct links. [852865] -* Added a keep-alive timeout on WCF ServiceHost. [948289] -* Fixed a null reference exception in System.Runtime.Serialization when ETW is enabled. [1137758] - -Entity Framework ----------------- - -* Entity data source can be configured without causing an exception about the provider not returning a ProviderManifest instance. [810937] - -Workflow --------- - -* WorkflowService design-time validation can be cancelled. [1162560] -* ActivityExecutor.OnExecuteWorkItem has improved performance on RyuJIT. [1136333], [1136377] -* Improvements to out-of-sequence calls in WF State Machine [1018947] -* Added synchronization to DynamicModuleManager to prevent debugger from crashing the debugged application. [1112002] -* Default TransactionException extended to include the distributed transaction ID in error message. [954268] -* Workflow Foundation implementation for SQL better handles transient database errors. [1152472] - -Windows Forms -------------- - -* Icon.ToBitmap() supports PNG framed icons. [1074253] -* Adding large image to resource file doesn't cause error in 300% high DPI mode. [1096726] -* System.Windows.Input.Cursor supports multi-image cursor files. [673619] -* Closing a parent form in MDI applications doesn't throw System.ComponentModel.Win32Exception (Error creating window handle) [847648] -* Fixed a null reference exception when messages continue arriving after a native tooltip window has been disposed. [933930] -* Using custom MessageFilter doesn't cause sporadic IndexOutOfRangeException in ThreadContext. [1072924] -* WIT grid's sorting arrows scale for high DPI. [745286] -* NumericUpDown scroll buttons scale for high DPI. [906184] diff --git a/releases/net461/README.md b/releases/net461/README.md new file mode 100644 index 000000000..066e52725 --- /dev/null +++ b/releases/net461/README.md @@ -0,0 +1,21 @@ +# .NET Framework 4.6.1 Release Notes + +You can learn about the changes made in the .NET Framework 4.6.1. + +- [.NET Framework 4.6.1 announcement blog post](https://blogs.msdn.microsoft.com/dotnet/2015/11/30/net-framework-4-6-1-is-now-available/) +- [What's new in the .NET Framework 4.6.1](https://docs.microsoft.com/dotnet/articles/framework/whats-new/index#v461) +- [Release notes](dotnet461-changes.md) +- [Application compatibility](../../Documentation/compatibility/README.md#net-framework-461) +- [API changes](dotnet461-api-changes.md) +- [Reference Source](https://github.com/Microsoft/referencesource/commit/e458f8df6ded689323d4bd1a2a725ad32668aaec) +- [Known issues](https://support.microsoft.com/en-us/help/3102432/known-issues-for-the-.net-framework-4.6.1) + +# Release Notes by Product Area + +- [ASP.NET](dotnet461-changes.md#aspnet) +- [BCL](dotnet461-changes.md#bcl) +- [CLR](dotnet461-changes.md#clr) +- [WCF](dotnet461-changes.md#wcf) +- [Windows Forms](dotnet461-changes.md#windows-forms) +- [Workflow](dotnet461-changes.md#workflow) +- [WPF](dotnet461-changes.md#wpf) diff --git a/releases/net461/dotnet461-changes.md b/releases/net461/dotnet461-changes.md index ba612d723..acbfa7e42 100644 --- a/releases/net461/dotnet461-changes.md +++ b/releases/net461/dotnet461-changes.md @@ -6,6 +6,52 @@ This list details those changes, grouped by feature area. Each change includes our TFS bug numbers at the end of the line. Please include those numbers in your communication if you wish to contact us to obtain more information. +ASP.NET +------- + +* TreeNode.ImageTooltip is rendered as title attribute [101518] +* Access to WebAdminFiles re-enabled [144513] +* Fixed 4.6 regression in DataBoundControl.PerformSelect() [145931] +* MaintainScrollPositionOnPostBack works with zoom on Chrome [120243] +* RegEx can be opted out for EmailAddresses, Phone, and URL attributes [142685] +* Added a MatchTimeout property to RegularExpressionAttribute [142685] + +BCL +--- + +* System.Diagnostics.Process v4.1.0.0 supported in desktop implementation assemblies [142838] +* System.ServiceProcess.ServiceController exposes a StartType property [145866] +* SqlClient has retry logic for cloud service connection opening [145878] +* SqlClient has improved multi-subnet failover connection behavior for AlwaysOn [117760] +* HttpListener API exposes TlsUnique to support token-binding [141263] +* Enhanced the ECDsa RedZone API [142405] +* No overflow exception when using Level in an EventSourceListener on a Write<T> [94974] +* No null reference exception when calling EventSource.GenerateManifest(Type, string) when an event method name ends with "Stop" [129244] +* Added a timeout to HttpOutput when sending a message [130240] +* More reliable connection of TCP local host with named SQL instance [130340] +* Vector2/3/4.CopyTo throws the right exception when a null array is passed in [131600] +* Vector2/3/4.CopyTo doesn't cause access violation when used with a negative startIndex parameter [142102] +* Vector.CopyTo throws consistent exceptions when running with JIT intrinsics [142413] +* Fixed access violation in Vector.CopyTo on an AVX2 machine [146428] +* Fixed SIMD Vector.Equals on AVX [133633] +* Vector3.Dot doesn't cause access violation when value is not stored [142555] +* Vector4 constructor evaluates argument list left to right [142843] +* Optimized memory usage by HttpListenerAsyncEventArgs [109754] +* Fixed a null reference exception in XML validation [111660] +* AppContext.BaseDirectory is configurable [142857] +* Fixed Serbian culture date parsing issue [144893] +* Fixed Norwegian culture date parsing issue [145872] +* TransparentNetworkIPResolution works with more than 64 IPs in DNS [147652] +* SqlBulkCopy works for data movement from encrypted to plain text nchar columns [149383] +* Transparent network IP resolution works if TCP protocol isn't explicitly defined [149824] +* Enumerating cultures yields both Persian languages [145823] +* An archive created with System.IO.Compression.ZipFile.CreateFromDirectory preserves directory structure when unpacked on OSX [142220] +* SqlClient always encrypted supports hardware-protected keys [116442] +* Added support for Token Binding for server-side usage of HttpListener [119817] +* Uri constructor doesn't throw ArgumentOutOfRangeException when parsing certain URIs with escaped international characters [123235] +* Fixed a bug that prevented some localized text from displaying properly [145634] +* Fixed a bug that caused the Exception Catch event to get the incorrect source line [142525] + CLR --- @@ -58,52 +104,41 @@ CLR * X509Certificates now support Elliptic Curve Digital Signature Algorithm (ECDSA) [145702] * Fixed an issue that caused local variables not to show up in X++ Debugging [145571] * Fixed RyuJIT optimizer causing incorrect result [110557] - -BCL + +WCF --- -* System.Diagnostics.Process v4.1.0.0 supported in desktop implementation assemblies [142838] -* System.ServiceProcess.ServiceController exposes a StartType property [145866] -* SqlClient has retry logic for cloud service connection opening [145878] -* SqlClient has improved multi-subnet failover connection behavior for AlwaysOn [117760] -* HttpListener API exposes TlsUnique to support token-binding [141263] -* Enhanced the ECDsa RedZone API [142405] -* No overflow exception when using Level in an EventSourceListener on a Write<T> [94974] -* No null reference exception when calling EventSource.GenerateManifest(Type, string) when an event method name ends with "Stop" [129244] -* Added a timeout to HttpOutput when sending a message [130240] -* More reliable connection of TCP local host with named SQL instance [130340] -* Vector2/3/4.CopyTo throws the right exception when a null array is passed in [131600] -* Vector2/3/4.CopyTo doesn't cause access violation when used with a negative startIndex parameter [142102] -* Vector.CopyTo throws consistent exceptions when running with JIT intrinsics [142413] -* Fixed access violation in Vector.CopyTo on an AVX2 machine [146428] -* Fixed SIMD Vector.Equals on AVX [133633] -* Vector3.Dot doesn't cause access violation when value is not stored [142555] -* Vector4 constructor evaluates argument list left to right [142843] -* Optimized memory usage by HttpListenerAsyncEventArgs [109754] -* Fixed a null reference exception in XML validation [111660] -* AppContext.BaseDirectory is configurable [142857] -* Fixed Serbian culture date parsing issue [144893] -* Fixed Norwegian culture date parsing issue [145872] -* TransparentNetworkIPResolution works with more than 64 IPs in DNS [147652] -* SqlBulkCopy works for data movement from encrypted to plain text nchar columns [149383] -* Transparent network IP resolution works if TCP protocol isn't explicitly defined [149824] -* Enumerating cultures yields both Persian languages [145823] -* An archive created with System.IO.Compression.ZipFile.CreateFromDirectory preserves directory structure when unpacked on OSX [142220] -* SqlClient always encrypted supports hardware-protected keys [116442] -* Added support for Token Binding for server-side usage of HttpListener [119817] -* Uri constructor doesn't throw ArgumentOutOfRangeException when parsing certain URIs with escaped international characters [123235] -* Fixed a bug that prevented some localized text from displaying properly [145634] -* Fixed a bug that caused the Exception Catch event to get the incorrect source line [142525] +* ServiceThrottle uses double-checked locking pattern for calls, sessions, and dynamic properties [96934] +* MessageLogger.LogInternal doesn't call TraceXPathNavigator.ToString() [127642] +* ProtocolException RoutingService to net.tcp doesn't reject all requests after end service recycles [142828] +* Better performance on base64 strings with spaces [143785] +* NetHttpBinding handles synchronous callback from WCF service correctly when called via WPF or WinForms app [145832] +* Fixed a w3wp.exe crash when an exception occurs with WCF activity tracing enabled [145636] +* Fixed a performance regression in selected large object variations [141815] +* Binding including message credential over transport allows for messages where the To header is not signed [140756] +* Fixed a null reference exception in System.Runtime.Serialization when ETW is enabled [105266] +* Fixed IdentityModel.Claims to support multiple DNS entries [140718] -ASP.NET -------- +Windows Forms +------------- -* TreeNode.ImageTooltip is rendered as title attribute [101518] -* Access to WebAdminFiles re-enabled [144513] -* Fixed 4.6 regression in DataBoundControl.PerformSelect() [145931] -* MaintainScrollPositionOnPostBack works with zoom on Chrome [120243] -* RegEx can be opted out for EmailAddresses, Phone, and URL attributes [142685] -* Added a MatchTimeout property to RegularExpressionAttribute [142685] +* CTRL+A works in multiline text boxes [145670] +* Vertical scrollbar's Maximum is in sync with DataGridView's total height if the grid is populated while disabled [127329] +* CancelButton or mnemonics respect Control.CausesValidation [144357] +* Fixed a possible index out of range exception in ThreadContext when using custom MessageFilter [145665] +* Fixed a null reference exception in System.Windows.Forms.ToolTip [145763] +* Fixed the Categories name visibility in the Table/Columns Collection Editor when using high contrast scheme [145631] +* Fixed several VisualStudio Designer Crashes [145639], [145710], [145652] +* Fixed the size of the text for the Generating Previews dialog of the PrintPreviewControl from being cropped when scaling up to 500% in HDPI mode [145775] +* Fixed the icons in the toolbox when scaling above 100% [145824] + +Workflow +-------- + +* Sys.Tx APIs enable distributed transactions with a non-MSDTC coordinator [145813] +* A user of EnlistPromotableSinglePhase can promote transactions to a non-MSDTC distributed transaction coordinator [145770, 142891, 142992] +* System.Transaction allows for snapshot isolation for non-MSDTC promoter types [146607] +* Sql implementation handles transient faults properly [113390] WPF --- @@ -153,39 +188,3 @@ WPF * Fixed an issue with partial trust applications running on a machine with a touch device [151160] * Fixed a bug caused by loading multiple Microsoft Visual Studio Tools for Office (VSTO) addins on touch enabled devices [142484] * Fixed a bug that caused Visual Studio to hang when saving a XAML file [110669] - -WCF ---- - -* ServiceThrottle uses double-checked locking pattern for calls, sessions, and dynamic properties [96934] -* MessageLogger.LogInternal doesn't call TraceXPathNavigator.ToString() [127642] -* ProtocolException RoutingService to net.tcp doesn't reject all requests after end service recycles [142828] -* Better performance on base64 strings with spaces [143785] -* NetHttpBinding handles synchronous callback from WCF service correctly when called via WPF or WinForms app [145832] -* Fixed a w3wp.exe crash when an exception occurs with WCF activity tracing enabled [145636] -* Fixed a performance regression in selected large object variations [141815] -* Binding including message credential over transport allows for messages where the To header is not signed [140756] -* Fixed a null reference exception in System.Runtime.Serialization when ETW is enabled [105266] -* Fixed IdentityModel.Claims to support multiple DNS entries [140718] - -Workflow --------- - -* Sys.Tx APIs enable distributed transactions with a non-MSDTC coordinator [145813] -* A user of EnlistPromotableSinglePhase can promote transactions to a non-MSDTC distributed transaction coordinator [145770, 142891, 142992] -* System.Transaction allows for snapshot isolation for non-MSDTC promoter types [146607] -* Sql implementation handles transient faults properly [113390] - -Windows Forms -------------- - -* CTRL+A works in multiline text boxes [145670] -* Vertical scrollbar's Maximum is in sync with DataGridView's total height if the grid is populated while disabled [127329] -* CancelButton or mnemonics respect Control.CausesValidation [144357] -* Fixed a possible index out of range exception in ThreadContext when using custom MessageFilter [145665] -* Fixed a null reference exception in System.Windows.Forms.ToolTip [145763] -* Fixed the Categories name visibility in the Table/Columns Collection Editor when using high contrast scheme [145631] -* Fixed several VisualStudio Designer Crashes [145639], [145710], [145652] -* Fixed the size of the text for the Generating Previews dialog of the PrintPreviewControl from being cropped when scaling up to 500% in HDPI mode [145775] -* Fixed the icons in the toolbox when scaling above 100% [145824] - diff --git a/releases/net462/README.md b/releases/net462/README.md index 84b0d8720..f7bfe023d 100644 --- a/releases/net462/README.md +++ b/releases/net462/README.md @@ -1,14 +1,16 @@ # .NET Framework 4.6.2 Release Notes -The following information describes the changes made in the .NET Framework 4.6.2 release. +You can learn about the changes made in the .NET Framework 4.6.2. -- [Announcement blog post](https://blogs.msdn.microsoft.com/dotnet/2016/08/02/announcing-net-framework-4-6-2/) +- [.NET Framework 4.6.2 announcement blog post](https://blogs.msdn.microsoft.com/dotnet/2016/08/02/announcing-net-framework-4-6-2/) +- [What's new in the .NET Framework 4.6.2](https://docs.microsoft.com/dotnet/articles/framework/whats-new/index#v462) - [Release notes](dotnet462-changes.md) -- [Known issues](https://support.microsoft.com/en-us/help/3151796/known-issues-for-the-.net-framework-4.6.2) +- [Application compatibility](../../Documentation/compatibility/README.md#net-framework-462) - [API changes](dotnet462-api-changes.md) -- [referencesource](https://github.com/Microsoft/referencesource/commit/1acafe20a789a55daa17aac6bb47d1b0ec04519f) +- [Reference Source](https://github.com/Microsoft/referencesource/commit/1acafe20a789a55daa17aac6bb47d1b0ec04519f) +- [Known issues](https://support.microsoft.com/en-us/help/3151796/known-issues-for-the-.net-framework-4.6.2) -# Product Areas +# Release Notes by Product Area - [Active Directory Services](dotnet462-changes.md#active-directory-services) - [ASP.NET](dotnet462-changes.md#aspnet) diff --git a/releases/net47/README.md b/releases/net47/README.md index e17d66789..e614afecd 100644 --- a/releases/net47/README.md +++ b/releases/net47/README.md @@ -1,14 +1,16 @@ # .NET Framework 4.7 Release Notes -The following information describes the changes made in the .NET Framework 4.7 release. +You can learn about the changes made in the .NET Framework 4.7. -- [Announcement blog post](https://go.microsoft.com/fwlink/?linkid=845636) +- [.NET Framework 4.7 announcement blog post](https://blogs.msdn.microsoft.com/dotnet/2017/04/05/announcing-the-net-framework-4-7/) +- [What's new in the .NET Framework 4.7](https://docs.microsoft.com/dotnet/articles/framework/whats-new/index#v47) - [Release notes](dotnet47-changes.md) -- [Known issues](https://support.microsoft.com/en-us/help/4015088/known-issues-for-the-net-framework-4-7) +- [Application compatibility](../../Documentation/compatibility/README.md#net-framework-47) - [API changes](dotnet47-api-changes.md) -- [referencesource](https://github.com/Microsoft/referencesource/commit/4251daa76e0aae7330139978648fc04f5c7b8ccb) +- [Reference Source](https://github.com/Microsoft/referencesource/commit/4251daa76e0aae7330139978648fc04f5c7b8ccb) +- [Known issues](https://support.microsoft.com/en-us/help/4015088/known-issues-for-the-net-framework-4-7) -# Product Areas +# Release Notes by Product Area - [ASP.NET](dotnet47-changes.md#aspnet) - [BCL](dotnet47-changes.md#bcl) diff --git a/releases/net47/dotnet47-changes.md b/releases/net47/dotnet47-changes.md index c30ebd008..a33ad4e9b 100644 --- a/releases/net47/dotnet47-changes.md +++ b/releases/net47/dotnet47-changes.md @@ -5,7 +5,30 @@ This list details those changes, grouped by feature area. Each change includes our TFS bug numbers at the end of the line. Please include those numbers in your communication if you wish to contact us to obtain more information. -## [CLR](#clr) +## ASP.NET + +* Allows for extensibility of the cache providers that could allow them to operate on new services with less overhead from memory usage. [180994] +* Introduced a new config parameter 'timeoutUnit' for [ActiveDirectoryMembershipProvider](https://docs.microsoft.com/dotnet/api/System.Web.Security.ActiveDirectoryMembershipProvider?view=netframework-4.7) that can be used to indicate the 'clientSearchTimeout' and 'serverSearchTimeout' values. These should be interpreted as Days/Hours/Minutes/Seconds/Milliseconds. If not specified, the default is Minutes, as was the previous behavior. [212045] +* Customer will see a warning in the windows event log if they have specified to use unsecured password formats in their web application. [265267] +* Fixed assignment issue with max-age value for OutputCache. [288337] +* Fixed an issue with exception handling for custom membership provider scenario. [294931] + +## BCL + +* Opening a cryptographic key with CspParameters.ParentWindowHandle set to this.Handle will now correctly make any PIN or password prompt be modal to the current window [208813] +* Added [ValueTuple](https://docs.microsoft.com/dotnet/api/System.ValueTuple?view=netframework-4.7) types to support C# 7.0 and VB 15 tuples [257122] +* Added [Name](https://docs.microsoft.com/dotnet/api/system.text.regularexpressions.group.name?view=netframework-4.7) property to Regex.Group. [234526] +* Fixed InvalidPath exception when using FileIOPermissions with device syntax (\\?\), [245244] +* [ECDsa](https://docs.microsoft.com/dotnet/api/System.Security.Cryptography.ECDsa?view=netframework-4.7) and [ECDiffieHellman](https://docs.microsoft.com/dotnet/api/System.Security.Cryptography.ECDiffieHellman?view=netframework-4.7) can now import and export key parameters (all OSes) as well as represent points over an expanded set of curves (Win10). [266138] +* Fixed an issue in SerialPort where unplugging the device during execution could cause a memory leak in the SerialStream class. [288363] +* Improved support of RSA decryption with hardware keys [298923] + +## ClickOnce + +* Fixed store corruption in ClickOnce application. [260868] +* Added the ability to sign a manifest file via a Hardware-Security Module (HSM) to Mage.exe and MageUI.exe [166355] + +## CLR * Fixed buffer overflows with large manifests in EventSource. [199198] * If a COM interface contain setter only indexed property, Tlbimp will generate incorrect setter property metadata. [220918] @@ -19,18 +42,7 @@ Each change includes our TFS bug numbers at the end of the line. Please include * Added the case of Wrong machine code generated by RyuJIT on AVX2-capable CPU to the list of instructions that have this characteristic. [258520] * Implemented flexibility in specifying Server GC resource consumption. [271883] [[dotnet/coreclr #6104](https://github.com/dotnet/coreclr/pull/6104)] - -## [BCL](#bcl) - -* Opening a cryptographic key with CspParameters.ParentWindowHandle set to this.Handle will now correctly make any PIN or password prompt be modal to the current window [208813] -* Added [ValueTuple](https://docs.microsoft.com/dotnet/api/System.ValueTuple?view=netframework-4.7) types to support C# 7.0 and VB 15 tuples [257122] -* Added [Name](https://docs.microsoft.com/dotnet/api/system.text.regularexpressions.group.name?view=netframework-4.7) property to Regex.Group. [234526] -* Fixed InvalidPath exception when using FileIOPermissions with device syntax (\\?\), [245244] -* [ECDsa](https://docs.microsoft.com/dotnet/api/System.Security.Cryptography.ECDsa?view=netframework-4.7) and [ECDiffieHellman](https://docs.microsoft.com/dotnet/api/System.Security.Cryptography.ECDiffieHellman?view=netframework-4.7) can now import and export key parameters (all OSes) as well as represent points over an expanded set of curves (Win10). [266138] -* Fixed an issue in SerialPort where unplugging the device during execution could cause a memory leak in the SerialStream class. [288363] -* Improved support of RSA decryption with hardware keys [298923] - -## [Networking](#networking) +## Networking * [ServicePointManager.SecurityProtocol](https://docs.microsoft.com/dotnet/api/system.net.servicepointmanager.securityprotocol?view=netframework-4.7) will default to a new value: SystemDefault which allows applications to use the underlying operating system TLS version selection defaults. New [SslStream*AuthenticateAs*](https://docs.microsoft.com/dotnet/api/System.Net.Security.SslStream?view=netframework-4.7) APIs allow applications to omit the SslProtocols parameter and use the system default. @@ -39,50 +51,12 @@ New [HashAlgorithmType](https://docs.microsoft.com/dotnet/api/System.Security.Au * Updated HttpListener to handle improvements to the token binding protocol. [365993], [377357] * Fixed pointer offset calculation in HttpListener for token binding struct. [262268] +## SQL -## [ASP.NET](#aspnet) - -* Allows for extensibility of the cache providers that could allow them to operate on new services with less overhead from memory usage. [180994] -* Introduced a new config parameter 'timeoutUnit' for [ActiveDirectoryMembershipProvider](https://docs.microsoft.com/dotnet/api/System.Web.Security.ActiveDirectoryMembershipProvider?view=netframework-4.7) that can be used to indicate the 'clientSearchTimeout' and 'serverSearchTimeout' values. These should be interpreted as Days/Hours/Minutes/Seconds/Milliseconds. If not specified, the default is Minutes, as was the previous behavior. [212045] -* Customer will see a warning in the windows event log if they have specified to use unsecured password formats in their web application. [265267] -* Fixed assignment issue with max-age value for OutputCache. [288337] -* Fixed an issue with exception handling for custom membership provider scenario. [294931] - -## [WPF](#wpf) - -* WPF now uses [PrintDocumentPackageTarget](https://msdn.microsoft.com/en-us/library/mt800103(v=vs.110).aspx) instead of the deprecated XpsPrint API. [113979] -* Fixed crash in WPF when typing in text with specific language input [121579] -* The escape sequences have been unescaped in the URLs while converting from XAML to RTF. [132397] -* Fixed crash in DocumentView when receiving input from IMEs. [133072] -* Fixed ribbon crash when Alt + accelerator key is pressed to display the submenu. [170982] -* Previously, large amounts of connects and disconnects of tablet/stylus devices could result in WPF losing all touch support except for promoted mouse messages. This was due to a reference counting issue within WPF and its Windows side touch component (WISP). This change, along with the associated WISP change available in RS2, fixes this situation allowing large numbers of connects and disconnects. [174153] -* Conversion of BaselineOffset property has been added while converting from XAML to RTF and vice versa. [181850] -* Modernize touch stack [197685] -* Fixed crashes in Combobox [208379] -* Added support for alternative delimiter characters in markup. [210368] -* Fixed textbox focus issues [215639] -* Fixed out of memory issues with custom textbox. [216018] -* In some scenarios, shutting down input for a stylus/touch device (program shutdown or device disconnection) could result in a deadlock. This change alleviates that issue by fixing a timing problem with the WPF stylus/tablet initialization and shutdown code. [220285] -* In order to disable the WPF stylus/touch stack developers were previously using a private reflection mechanism. This provides a new mechanism in the form of an AppContext switch. Switch.System.Windows.Input.Stylus.DisableStylusAndTouchSupport set to true will fully disable the stylus/touch stack without requiring any private reflection or other workarounds. [221075] -* Inheritable properties propagate through a new link in the visual tree, including properties declared in a Style newly enabled by the link because a DynamicResource reference now resolves. [221837] -* [ImageSourceConverter.ConvertFromString](https://msdn.microsoft.com/en-us/library/mt800102(v=vs.110).aspx) now throws the correct DirectoryNotFoundException instead of NullReferenceException if called with an invalid path (only on apps targeting .NET Framework 4.7 and above) [223209] -* Fixed IOException crashes arising from Cursor.LoadFromStream, that could happen on application start. [227517] -* Fixed a deadlock arising from re-entrant COM requests while waiting for the lock protecting WPF's weak-event component. [234423] -* Scroll tracing now supports scenarios involving multiple instances of an ItemsControl with the same name, that enter and leave the visual tree dynamically. [234612] -* Some ItemsControls allow null to appear in the ItemsSource. If so, the automation for the control should allow null as well. An app that works in a normal environment should not crash in when automation is present. [239479] -* Fixed an ArgumentException arising from bindings on a non-Visual element declared in a DataGrid cell template. [240237] -* Improved Grid algorithm usages to allocate space to columns declared with *-width. For details refer to [Application compatibility changes](https://msdn.microsoft.com/en-us/library/mt800102(v=vs.110).aspx). [245278] -* Fixed crash arising from displaying certain sequences of Unicode characters deemed (by the font and by DWrite) to have negative advance width. [252835] -* Fixed a crash arising when running two instances of a process that creates multiple large packages when using System.IO.Packaging. [259773] -* When an exception interrupts a PropertyChanged or CollectionChanged notification raised on a worker thread, other such notifications continue to be processed normally. [260469] -* Fixed D3DImage memory leak. [261139] -* Fixed crashes in DataGrid with column virtualization enabled scenario. [274127] -* Improved reliability of anchored scroll scenarios. [282666] -* Support for Async and AddJob scenarios in printing. [292567] -* The content of the selected item in a TabControl is visible to UI Automation, even after changing IsEnabled (or other properties) on the TabItems. [365337] - +* Fixed TransparentNetworkIPResolution (TNIR) Connectivity issues. [222375] +* SQL Client now uses TCP as the default protocol for connections to Azure SQL Database. Previously, SQL Client tried every protocol including viz, Shared Memory, TCP, and Named Pipes to establish a connection to Azure SQL Database, which only supports TCP connections. [276556] -## [WCF](#wcf) +## WCF * Fixed a bug in SocketConnection.Read which caused the operation to hang when mixing synchronous and asynchronous calls. [171322] * Support for CNG certificates. For details refer to [Application compatibility changes](https://msdn.microsoft.com/en-us/library/mt800102(v=vs.110).aspx). [194808] @@ -93,21 +67,7 @@ New [HashAlgorithmType](https://docs.microsoft.com/dotnet/api/System.Security.Au * Fixed a bug in OperationContext.Current which caused it to return null when called inside an OperationContextScope [249750] * Ensure no deadlock occurs when two threads try to abort the channel. [257126] - -## [Workflow](#workflow) - -* Support for propagating an activity exception as-is instead of throwing a Null Reference Exception. For details refer to [Application compatibility changes](https://msdn.microsoft.com/en-us/library/mt800102(v=vs.110).aspx). [155469] -* Previously when trying to use Visual Studio to debug XAML-based workflows on a machine with FIPS enabled, one would encounter a NullReferenceException. This has been resolved. However, in order to take advantage of this change, you will need to add the following to the App.Config file for the workflow application: -``` - - - -``` -For details refer to [Application compatibility changes](https://msdn.microsoft.com/en-us/library/mt800102(v=vs.110).aspx). [193017] -* SqlWorkflowInstanceStore database now defines Primary Key columns, allowing transactional replication. [206271] - - -## [Windows Forms](#windows-forms) +## Windows Forms * Fixed dialog layout for High DPI scenarios [123539] * Enabled ClickOnce signing scenarios where certificate is identified by a cryptographic provider and private key container names. [146775] @@ -130,12 +90,47 @@ For details refer to [Application compatibility changes](https://msdn.microsoft. * Fixed control text truncations issue in a Visual Studio dialog. [280675] * Enable [per-monitor scaling](https://msdn.microsoft.com/en-us/library/ms171868(v=vs.110).aspx#wf47) in DPI mode [292303] -## [SQL](#sql) +## Workflow -* Fixed TransparentNetworkIPResolution (TNIR) Connectivity issues. [222375] -* SQL Client now uses TCP as the default protocol for connections to Azure SQL Database. Previously, SQL Client tried every protocol including viz, Shared Memory, TCP, and Named Pipes to establish a connection to Azure SQL Database, which only supports TCP connections. [276556] +* Support for propagating an activity exception as-is instead of throwing a Null Reference Exception. For details refer to [Application compatibility changes](https://msdn.microsoft.com/en-us/library/mt800102(v=vs.110).aspx). [155469] +* Previously when trying to use Visual Studio to debug XAML-based workflows on a machine with FIPS enabled, one would encounter a NullReferenceException. This has been resolved. However, in order to take advantage of this change, you will need to add the following to the App.Config file for the workflow application: +``` + + + +``` +For details refer to [Application compatibility changes](https://msdn.microsoft.com/en-us/library/mt800102(v=vs.110).aspx). [193017] +* SqlWorkflowInstanceStore database now defines Primary Key columns, allowing transactional replication. [206271] -## [ClickOnce](#clickonce) +## WPF -* Fixed store corruption in ClickOnce application. [260868] -* Added the ability to sign a manifest file via a Hardware-Security Module (HSM) to Mage.exe and MageUI.exe [166355] +* WPF now uses [PrintDocumentPackageTarget](https://msdn.microsoft.com/en-us/library/mt800103(v=vs.110).aspx) instead of the deprecated XpsPrint API. [113979] +* Fixed crash in WPF when typing in text with specific language input [121579] +* The escape sequences have been unescaped in the URLs while converting from XAML to RTF. [132397] +* Fixed crash in DocumentView when receiving input from IMEs. [133072] +* Fixed ribbon crash when Alt + accelerator key is pressed to display the submenu. [170982] +* Previously, large amounts of connects and disconnects of tablet/stylus devices could result in WPF losing all touch support except for promoted mouse messages. This was due to a reference counting issue within WPF and its Windows side touch component (WISP). This change, along with the associated WISP change available in RS2, fixes this situation allowing large numbers of connects and disconnects. [174153] +* Conversion of BaselineOffset property has been added while converting from XAML to RTF and vice versa. [181850] +* Modernize touch stack [197685] +* Fixed crashes in Combobox [208379] +* Added support for alternative delimiter characters in markup. [210368] +* Fixed textbox focus issues [215639] +* Fixed out of memory issues with custom textbox. [216018] +* In some scenarios, shutting down input for a stylus/touch device (program shutdown or device disconnection) could result in a deadlock. This change alleviates that issue by fixing a timing problem with the WPF stylus/tablet initialization and shutdown code. [220285] +* In order to disable the WPF stylus/touch stack developers were previously using a private reflection mechanism. This provides a new mechanism in the form of an AppContext switch. Switch.System.Windows.Input.Stylus.DisableStylusAndTouchSupport set to true will fully disable the stylus/touch stack without requiring any private reflection or other workarounds. [221075] +* Inheritable properties propagate through a new link in the visual tree, including properties declared in a Style newly enabled by the link because a DynamicResource reference now resolves. [221837] +* [ImageSourceConverter.ConvertFromString](https://msdn.microsoft.com/en-us/library/mt800102(v=vs.110).aspx) now throws the correct DirectoryNotFoundException instead of NullReferenceException if called with an invalid path (only on apps targeting .NET Framework 4.7 and above) [223209] +* Fixed IOException crashes arising from Cursor.LoadFromStream, that could happen on application start. [227517] +* Fixed a deadlock arising from re-entrant COM requests while waiting for the lock protecting WPF's weak-event component. [234423] +* Scroll tracing now supports scenarios involving multiple instances of an ItemsControl with the same name, that enter and leave the visual tree dynamically. [234612] +* Some ItemsControls allow null to appear in the ItemsSource. If so, the automation for the control should allow null as well. An app that works in a normal environment should not crash in when automation is present. [239479] +* Fixed an ArgumentException arising from bindings on a non-Visual element declared in a DataGrid cell template. [240237] +* Improved Grid algorithm usages to allocate space to columns declared with *-width. For details refer to [Application compatibility changes](https://msdn.microsoft.com/en-us/library/mt800102(v=vs.110).aspx). [245278] +* Fixed crash arising from displaying certain sequences of Unicode characters deemed (by the font and by DWrite) to have negative advance width. [252835] +* Fixed a crash arising when running two instances of a process that creates multiple large packages when using System.IO.Packaging. [259773] +* When an exception interrupts a PropertyChanged or CollectionChanged notification raised on a worker thread, other such notifications continue to be processed normally. [260469] +* Fixed D3DImage memory leak. [261139] +* Fixed crashes in DataGrid with column virtualization enabled scenario. [274127] +* Improved reliability of anchored scroll scenarios. [282666] +* Support for Async and AddJob scenarios in printing. [292567] +* The content of the selected item in a TabControl is visible to UI Automation, even after changing IsEnabled (or other properties) on the TabItems. [365337] diff --git a/src/bc-readme-gen/Program.cs b/src/bc-readme-gen/Program.cs new file mode 100755 index 000000000..dd80032fa --- /dev/null +++ b/src/bc-readme-gen/Program.cs @@ -0,0 +1,128 @@ +using System; +using System.IO; +using System.Collections.Generic; +using System.Text; + +namespace bc_readme_gen +{ + class Program + { + static void Main(string[] args) + { + if (args == null || args.Length == 0) + { + Console.WriteLine("Bad argument."); + Console.WriteLine("You need to specify location of breaking change documents."); + } + + string bcpath = args[0]; + + var bcList = new Dictionary>(); + var template = "README-template.md"; + string templateText = null; + string bcpathREADME = Path.Combine(bcpath, "README.md"); + var bcdir = new DirectoryInfo(bcpath); + const string versionIntroduced = "### Version Introduced"; + + + foreach(var changeFile in bcdir.GetFiles("*.md")) + { + if (changeFile.Name == "! Template.md" || changeFile.Name == "README.md") + { + continue; + } + + var change = new BreakingChange(); + + using (var reader = changeFile.OpenText()) + { + var titleLine = reader.ReadLine(); + var title = titleLine.Substring(3); + change.Title = title; + change.Path = changeFile.Name; + + string versionLine = null; + while ((versionLine = reader.ReadLine()) != null) + { + if (versionLine != versionIntroduced) + { + continue; + } + + var version = reader.ReadLine(); + change.Version = version; + break; + } + + if (!bcList.ContainsKey(change.Version)) + { + bcList.Add(change.Version,new List()); + } + + var versionChanges = bcList[change.Version]; + versionChanges.Add(change); + } + } + + using (var templateReader = File.OpenText(template)) + { + templateText = templateReader.ReadToEnd(); + } + + var keysArrayLength = bcList.Keys.Count; + var keysArray = new string[keysArrayLength]; + bcList.Keys.CopyTo(keysArray,0); + + Array.Sort(keysArray); + Array.Reverse(keysArray); + + using (var writer = File.CreateText(bcpathREADME)) + { + writer.Write(templateText); + writer.WriteLine(); + + foreach(var ver in keysArray) + { + var hashVersion = new StringBuilder(); + foreach (var c in ver) + { + if (c != '.') + { + hashVersion.Append(c); + } + } + + var hashLink = $"net-framework-{hashVersion.ToString()}"; + writer.WriteLine($"- [.NET Framework {ver}](#{hashLink})"); + } + + foreach(var ver in keysArray) + { + writer.WriteLine(); + writer.WriteLine($"## .NET Framework {ver}"); + writer.WriteLine(); + + var breaks = bcList[ver]; + + breaks.Sort((break1,break2)=>break1.Title.CompareTo(break2.Title)); + + foreach (var b in breaks) + { + writer.WriteLine($"- [{b.Title}]({b.Path})"); + } + } + + writer.WriteLine(); + writer.WriteLine("This file was generated by [Breaking Change Readme Generator](https://github.com/Microsoft/dotnet/blob/master/src/bc-readme-gen)."); + } + } + + } +} + +public class BreakingChange +{ + public string Title; + public string Path; + public string Version; +} diff --git a/src/bc-readme-gen/README-template.md b/src/bc-readme-gen/README-template.md new file mode 100644 index 000000000..a9dbd9073 --- /dev/null +++ b/src/bc-readme-gen/README-template.md @@ -0,0 +1,5 @@ +# .NET Framework Application Compatibility + +The following documents provide information on .NET Framework application compatibility. They describe breaking changes and other changes in behavior in each .NET Framework release. + +Please help us improve the [.NET Framework Application Compatibility documents](https://github.com/Microsoft/dotnet/tree/master/Documentation/compatibility). In particular, better titles will improve the index below, both in content and the sort. diff --git a/src/bc-readme-gen/README.md b/src/bc-readme-gen/README.md new file mode 100644 index 000000000..fc98fb738 --- /dev/null +++ b/src/bc-readme-gen/README.md @@ -0,0 +1,5 @@ +# Breaking Change README Generator + +This tool generates the [.NET Framework Breaking Change README](https://github.com/Microsoft/dotnet/blob/master/Documentation/compatibility/README.md). It should be run when the [breaking change documents](https://github.com/Microsoft/dotnet/blob/master/Documentation/compatibility) are updated to ensure that the README is still correct. + +The tool uses a [README template](README-template.md) for the boiler plate part of the README. diff --git a/src/bc-readme-gen/bcreadgen.csproj b/src/bc-readme-gen/bcreadgen.csproj new file mode 100755 index 000000000..abb9969a5 --- /dev/null +++ b/src/bc-readme-gen/bcreadgen.csproj @@ -0,0 +1,8 @@ + + + + Exe + netcoreapp1.1 + + + From 5cf61e9e14867bde8715483ea55ad43a1bb35e6d Mon Sep 17 00:00:00 2001 From: Jan Karger Date: Thu, 20 Apr 2017 04:40:22 +0200 Subject: [PATCH 350/872] Add MahApps.Metro.IconPacks to libraries section (#381) --- dotnet-developer-projects.md | 1 + 1 file changed, 1 insertion(+) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 447f3f527..46d4f364b 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -139,6 +139,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [LibGit2Sharp](https://github.com/libgit2/libgit2sharp) - C# language bindings for the [LibGit2](https://github.com/libgit2/libgit2) implementation of Git. * [Localization.SqlLocalizer]( https://github.com/damienbod/AspNet5Localization) - SQL Localizer for ASP.NET Core, dotnet * [Lucene.Net](https://github.com/apache/lucene.net) + * [MahApps.Metro.IconPacks](https://github.com/MahApps/MahApps.Metro.IconPacks) - Some awesome icons for `WPF` and `UWP` all together. The library contains controls to use icons from [Material Design](https://materialdesignicons.com/), [Material Design Icons Light](https://github.com/Templarian/MaterialDesignLight), [Font Awesome](http://fontawesome.io/icons/), [GitHub Octicons](https://octicons.github.com/), [Modern](http://modernuiicons.com/), [Entypo+](http://www.entypo.com/) and [Simple Icons](https://simpleicons.org/). * [Math.NET Numerics](https://github.com/mathnet/mathnet-numerics) - Provides methods and algorithms for numerical computations in science, engineering and every day use. * [Mathos Core Libary](http://mathos.codeplex.com/) - A library with algorithms for numerical calcultations in finance, statistics, pattern recognition, and more. * [Mathos Parser](https://github.com/MathosProject/Mathos-Project) - A simple parser for mathematical expressions before and at runtime. From 9a26e5ba586c5677ef3ccf2a2f85621acfac13b9 Mon Sep 17 00:00:00 2001 From: Bill Zissimopoulos Date: Thu, 20 Apr 2017 21:41:37 -0700 Subject: [PATCH 351/872] Add WinFsp to developer projects (#383) --- dotnet-developer-projects.md | 1 + 1 file changed, 1 insertion(+) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 46d4f364b..082d9d09e 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -174,6 +174,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [WampSharp](https://github.com/Code-Sharp/WampSharp) - A C# implementation of [The Web Application Messaging Protocol](http://wamp.ws) - a protocol that provides messaging patterns of Remote Procedure Calls and Publish/Subscribe over WebSockets. * [WebApiProxy](https://github.com/faniereynders/WebApiProxy) - An automatic proxy provider for RESTful services built on ASP.NET Web API. Includes JavaScript & C# client generation. * [WebSocket4Net](https://websocket4net.codeplex.com/) - A C# websocket client for .NET, Mono and Xamarin + * [WinFsp](https://github.com/billziss-gh/winfsp) - FUSE for Windows - Develop file systems in .NET * [WpfToolkit](https://github.com/dotnetprojects/wpftoolkit) - Fork of the MS WPF Toolkit * [XamlEssentials](https://github.com/AdvancedREI/XamlEssentials) - Collection of helpers for Microsoft's XAML platforms. * [Zlib.Portable](https://github.com/AdvancedREI/Zlib.Portable) - A Portable Class Library port of the Zlib library from http://dotnetzip.codeplex.com. From e0d6634fad3f12d37786fa976e329d5a7ec16e31 Mon Sep 17 00:00:00 2001 From: Sayed Ibrahim Hashimi Date: Wed, 26 Apr 2017 08:58:26 -0700 Subject: [PATCH 352/872] Update README.md (#385) Adding a link to additional `dotnet new` templates in Community section --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 3351b7ace..35d769775 100644 --- a/README.md +++ b/README.md @@ -57,6 +57,8 @@ Here is a short list of projects to check out: * [MVVM Cross](https://github.com/MvvmCross/MvvmCross) * [ReactiveUI](https://github.com/reactiveui/ReactiveUI) +There are additional templates available for `dotnet new`. For more info see [Available templates for dotnet new](https://github.com/dotnet/templating/wiki/Available-templates-for-dotnet-new) + ## .NET Foundation Many .NET open source projects are part of the From b5d10c8861e739bca9f3d26a58d77c7e54f6a8db Mon Sep 17 00:00:00 2001 From: Bruce Forstall Date: Wed, 26 Apr 2017 08:59:12 -0700 Subject: [PATCH 353/872] Clarify casing requirement for useLegacyJit fallback name (#386) --- Documentation/testing-with-ryujit.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Documentation/testing-with-ryujit.md b/Documentation/testing-with-ryujit.md index 7144b0ce2..8e584404f 100644 --- a/Documentation/testing-with-ryujit.md +++ b/Documentation/testing-with-ryujit.md @@ -38,6 +38,8 @@ Add the following text to the `.exe.config` file. Create This method is preferable as it is scoped to just one application. + The string "useLegacyJit" is case-sensitive. + ### Method 2: environment variable Set the following environment variable: @@ -47,6 +49,8 @@ Set the following environment variable: This method affects any environment that inherits this environment variable. This might be just a single console session, or it might affect the entire machine, if you set the environment variable globally. + The environment variable name is not case-sensitive. + ### Method 3: registry Using Registry Editor (regedit.exe), find either of the following subkeys: @@ -66,6 +70,8 @@ Using Registry Editor (regedit.exe), find either of the following subkeys: In this case, `HKLM` is used instead of `HKEY_LOCAL_MACHINE`. Use `reg add /?` to see help on this syntax. + The registry value name is not case-sensitive. + Disable loading NGEN Images =========================== From 3bc280dda27a3fcacb3c350428ef073de8859309 Mon Sep 17 00:00:00 2001 From: Connie Yau Date: Thu, 20 Apr 2017 11:19:05 -0700 Subject: [PATCH 354/872] Updating change description and recommended actions to use UIDs that can be mapped in docs.microsoft.com --- Documentation/compatibility/! Template.md | 8 +- Documentation/compatibility/README.md | 2 +- ...-be-deserialized-by-_net-4_5_1-or-4_5_2.md | 10 +-- ...vent-can-cause-a-nullreferenceexception.md | 10 ++- ...ically-reconnect-broken-sql-connections.md | 14 +++- ...decryptor-provides-a-reusable-transform.md | 16 +++- ...zed-by-userandomizedstringhashalgorithm.md | 18 ++++- ...ions-of-imessagefilter_prefiltermessage.md | 27 ++++++- ...-strings-passed-in-via-route-parameters.md | 2 +- ...fail-to-find-type-from-loadfrom-context.md | 20 +++-- ...em')-to-a-static-property-does-not-work.md | 2 +- ...n_trytakefromany-does-not-throw-anymore.md | 8 +- ...-entitydeploysplit-or-entityclean-tasks.md | 8 +- ...o-longer-throws-ambiguousmatchexception.md | 8 +- ...ontext-with-a-null-argument-has-changed.md | 8 +- ...om-a-celleditending-handler-drops-focus.md | 11 ++- ...uplicate-items-to-appear-in-the-element.md | 13 +++- .../calls-to-claimsidentity-constructors.md | 27 ++++++- ...waitall-methods-with-time-out-arguments.md | 18 ++++- ...-in-data-definition-language-(ddl)-apis.md | 6 +- .../changes-in-path-normalization.md | 12 ++- ...lock-control-affects-any-child-controls.md | 16 +++- ...e-supports-sha-256-on-4_0-targeted-apps.md | 7 +- .../coerceisselectionboxhighlighted.md | 3 +- ...orwarding-when-multi-targeting-mscorlib.md | 10 ++- ...an-erroneous-null-via-its-out-parameter.md | 5 +- ...riod-for-azure-sql-databases-is-removed.md | 41 ++++++++-- ...times-returns-slightly-different-string.md | 20 ++++- ...s-are-not-being-enumerated-by-profilers.md | 1 + ...rentwindowhandle-now-expects-hwnd-value.md | 18 +++-- .../currentculture-flows-across-tasks.md | 31 ++++++-- ...served-across-wpf-dispatcher-operations.md | 55 ++++++++++++-- ...view-throws-argumentoutofrangeexception.md | 11 ++- ...ect_getdata-now-retrieves-data-as-utf-8.md | 18 ++++- ...er_scale-are-now-public-virtual-members.md | 13 +++- ...providerservices_createdatabase-methods.md | 13 +++- ...ueryviews-with-specific-characteristics.md | 16 +++- .../ef-version-must-match-netfx-version.md | 8 +- .../encoderparameter-ctor-is-obsolete.md | 11 ++- ...le_empty-always-returns-cached-instance.md | 21 +++++- ...or-maxreceivedmessagesize-are-different.md | 15 +++- ...s-from-providers-with-explicit-keywords.md | 15 +++- ...r-truncates-strings-with-embedded-nulls.md | 13 +++- ...e-parameters-that-it-received-(plus-id).md | 13 +++- ...erialization-in-case-of-an-unknown-type.md | 11 ++- ...no-longer-propagate-on-finalizer-thread.md | 17 ++++- ...document-may-show-an-extra-line-of-text.md | 14 +++- ...-different-values-beginning-in-_net-4_5.md | 16 +++- ...when-leaving-the-final-page-of-the-view.md | 19 ++++- ...horizontal-scrolling-and-virtualization.md | 75 ++++++++++++------- ...er-does-not-render-br-element-correctly.md | 14 +++- ...contentencoding-property-prohibits-utf7.md | 14 +++- ...avascriptstringencode-escapes-ampersand.md | 10 ++- ...rect-for-the-resulting-task-to-complete.md | 16 +++- ...ged-event-behaviour-changed-in-_net-4_5.md | 15 +++- ...trols-when-using-customer-datatemplates.md | 15 +++- ...st-with-items-of-different-pixel-height.md | 44 +++++++---- ...ot-remove-duplicates-from-selecteditems.md | 16 ++-- ...join-throws-argumentoutofrangeexception.md | 9 ++- ...hrow-exception-when-modifying-list-item.md | 13 +++- .../list_sort-algorithm-changed.md | 16 +++- ...ng-issue-with-observablecollection_move.md | 19 ++++- ...nged-to-match-sql-server-specifications.md | 13 +++- .../compatibility/long-path-support.md | 28 +++++-- ...hinekey_decode-methods-are-now-obsolete.md | 12 ++- ...ostructure-overloads-break-dynamic-code.md | 26 +++++-- ...o-longer-be-used-to-create-a-serializer.md | 7 +- ...centagetoactiveservice-is-now-respected.md | 12 ++- ...amework-moniker-results-in-4_0-behavior.md | 18 ++++- ...acing-changed-when-using-antixssencoder.md | 13 +++- ...tablelayoutpanel-cell-may-be-rearranged.md | 16 +++- ...erialized-with-a-different-_net-version.md | 16 +++- ...oads-could-result-in-different-behavior.md | 19 ++++- ...enum-values-in-wpf's-pagerangeselection.md | 17 ++++- ...-leak-memory-if-not-explicitly-disposed.md | 8 +- ...sedexception-thrown-by-wpf-spellchecker.md | 8 +- ...-deprecatedattribute-in-winmd-scenarios.md | 16 +++- ...nager-and-system_net_security_sslstream.md | 17 ++++- ...tasource-control-to-invoke-data-binding.md | 20 ++++- .../path-colon-checks-are-stricter.md | 10 ++- ...ndar-now-uses-the-hijri-solar-algorithm.md | 12 ++- ...edly-if-its-handler-shows-a-message-box.md | 13 ++-- ...ged-code-to-out-of-process-dcom-clients.md | 14 ++-- ...ove-ssl3-from-the-wcf-transportdefaults.md | 19 +++-- ...pendencies-with-the-wrong-architecture.md} | 0 ...-set-to-transparent-in-localized-builds.md | 8 +- ...w-header-changes-the-datagrid-selection.md | 10 ++- ...-loads-rsa-keys-of-non-standard-keysize.md | 31 +++++--- ...urns-false-for-any-verification-failure.md | 13 +++- ...virtualizingstackpanel-can-cause-a-hang.md | 17 ++++- ...ow-compatible-with-ecmascript-v6-and-v8.md | 15 +++- ...-to-use-the-same-_net-framework-version.md | 10 ++- ...-and-similar-ordered-collection-objects.md | 18 ++++- ...-(handled)-entrypointnotfoundexceptions.md | 12 ++- ...orkflow-drag-and-drop-apis-are-obsolete.md | 6 +- ...destination-column-encoding-for-strings.md | 17 ++++- ...with-non-ifs-winsock-bsp-or-lsp-present.md | 17 ++++- .../sslstream-support-for-tls-alerts.md | 31 ++++++-- .../system_activities-is-now-aptca.md | 10 ++- ..._collaboration-unavailable-on-windows-8.md | 1 + ...bject-no-longer-adds-a-default-endpoint.md | 27 ++++--- ...posedexception-after-object-is-disposed.md | 19 ++++- ...stem_uri-escaping-now-supports-rfc-3986.md | 12 +-- .../system_uri-parsing-adheres-to-rfc-3987.md | 13 +++- ...uris-with-a-colon-char-in-first-segment.md | 17 ++++- ...n-no-longer-defaults-to-null-if-not-set.md | 18 ++++- ...od-in-odata-urls-is-disabled-by-default.md | 12 ++- ...th-a-non-public-setter-is-not-supported.md | 14 +++- ...-for-generic-variables-with-constraints.md | 12 ++- ...ption-from-invokemethod-activity-in-wf4.md | 13 +++- ...e-qualification-for-system_windows-apis.md | 2 +- ...-supports-certificates-stored-using-cng.md | 9 ++- ...ity_htmldecode-round-trip-bmp-correctly.md | 14 +++- ...pressions_literal-datetimes-differently.md | 20 ++++- ...property-is-now-true-for-system_drawing.md | 4 +- .../workflow-3_0-types-are-obsolete.md | 2 +- ...of-nullreferenceexception-in-some-cases.md | 15 ++-- ...ner_load-doesn't-remove-symbol-property.md | 13 +++- ...emplate-elements-are-now-visible-to-uia.md | 15 +++- ...ew-copy-instead-of-the-current-instance.md | 22 +++++- ...rid-allocation-of-space-to-star-columns.md | 31 ++++---- ...e-from-imagesourceconverter_convertfrom.md | 25 +++++-- .../wpf-printing-stack-update.md | 18 +++-- ...-spell-checking-fail-in-unexpected-ways.md | 10 +-- ...f-textbox-defaults-to-undo-limit-of-100.md | 2 +- ...ent-color-when-the-text-box-is-inactive.md | 10 ++- ...ext-can-be-out-of-sync-with-databinding.md | 12 ++- ...viewitem-must-be-used-within-a-treeview.md | 31 +++++--- ...when-_net-cannot-handle-the-certificate.md | 13 +++- ...set_findclaims-considers-all-claimtypes.md | 16 +++- ...t-are-not-allowed-on-digital-signatures.md | 10 ++- ...eption-now-sets-line-positions-properly.md | 14 +++- ...essible-member-with-an-inaccessible-one.md | 16 +++- ...er-serializes-fields-differently-in-4_5.md | 11 ++- ...nsion-is-limited-to-10000000-characters.md | 10 ++- ...riter-throws-on-invalid-surrogate-pairs.md | 12 ++- ...ound-keys-are-used-and-one-key-is-empty.md | 13 +++- ...t-style-sheet-exception-message-changed.md | 13 +++- 138 files changed, 1618 insertions(+), 447 deletions(-) rename Documentation/compatibility/{resolveassemblyreference-task-now-warns-on-dependencies-with-the-wrong-architecture.md => resolveassemblyreference-task-now-warns-of-dependencies-with-the-wrong-architecture.md} (100%) diff --git a/Documentation/compatibility/! Template.md b/Documentation/compatibility/! Template.md index ec4668bbf..953c3142b 100644 --- a/Documentation/compatibility/! Template.md +++ b/Documentation/compatibility/! Template.md @@ -6,7 +6,7 @@ ### Scope [|Major|Minor|Edge|Transparent|] -//A description of the Scopes can be found at https://msdn.microsoft.com/en-us/library/mt661864(v=vs.110).aspx +//A description of the Scope values can be found at https://docs.microsoft.com/en-us/dotnet/articles/framework/migration-guide/net-compatibility-diagnostics ### Version Introduced [|Version in which the breaking change first occured|] @@ -29,7 +29,7 @@ ### Recommended Action [| Suggested steps if user is affected go here: - + - Example of code changes to handle change - How to opt out of change - For earlier versions, how to opt in to change @@ -40,13 +40,13 @@ // For details on how to generate docids, please look at other change files or // see https://msdn.microsoft.com/en-us/library/fsbx0t7x.aspx for the spec. -// +// // For example, if all members of System.Xml.XmlTextReader is affected, we would have the following item: // * `T:System.Xml.XmlTextReader` // // Notice that only the type is included, as everything contained with it will be included as well. This works for any level of the type // hierarchy and allows for whole namespaces to be included if needed. -// +// // If no specific API is affected, use the following entry: // * Not detectable via API analysis diff --git a/Documentation/compatibility/README.md b/Documentation/compatibility/README.md index 3d47f4005..13532fb0d 100644 --- a/Documentation/compatibility/README.md +++ b/Documentation/compatibility/README.md @@ -105,7 +105,7 @@ Please help us improve the [.NET Framework Application Compatibility documents]( - [MinFreeMemoryPercentageToActiveService is now respected](minfreememorypercentagetoactiveservice-is-now-respected.md) - [NetDataContractSerializer fails to deserialize a ConcurrentDictionary serialized with a different .NET version](netdatacontractserializer-fails-to-deserialize-a-concurrentdictionary-serialized-with-a-different-_net-version.md) - [ObsoleteAttribute exports as both ObsoleteAttribute and DeprecatedAttribute in WinMD scenarios](obsoleteattribute-exports-as-both-obsoleteattribute-and-deprecatedattribute-in-winmd-scenarios.md) -- [ResolveAssemblyReference task now warns on dependencies with the wrong architecture](resolveassemblyreference-task-now-warns-on-dependencies-with-the-wrong-architecture.md) +- [ResolveAssemblyReference task now warns of dependencies with the wrong architecture](resolveassemblyreference-task-now-warns-on-dependencies-with-the-wrong-architecture.md) - [Two-way data-binding to a property with a non-public setter is not supported](two-way-data-binding-to-a-property-with-a-non-public-setter-is-not-supported.md) - [WinRT stream adapters no long call FlushAsync automatically on close](winrt-stream-adapters-no-long-call-flushasync-automatically-on-close.md) diff --git a/Documentation/compatibility/a-concurrentdictionary-serialized-in-_net-4_5-with-netdatacontractserializer-cannot-be-deserialized-by-_net-4_5_1-or-4_5_2.md b/Documentation/compatibility/a-concurrentdictionary-serialized-in-_net-4_5-with-netdatacontractserializer-cannot-be-deserialized-by-_net-4_5_1-or-4_5_2.md index 28fb21683..19084c6d4 100644 --- a/Documentation/compatibility/a-concurrentdictionary-serialized-in-_net-4_5-with-netdatacontractserializer-cannot-be-deserialized-by-_net-4_5_1-or-4_5_2.md +++ b/Documentation/compatibility/a-concurrentdictionary-serialized-in-_net-4_5-with-netdatacontractserializer-cannot-be-deserialized-by-_net-4_5_1-or-4_5_2.md @@ -13,10 +13,10 @@ Minor Available ### Change Description -Due to internal changes to the type, `System.Collections.Concurrent.ConcurrentDictionary` objects that are serialized with the .NET Framework 4.5 -using the `NetDataContractSerializer` cannot be deserialized in the .NET Framework 4.5.1 or in the .NET Framework 4.5.2. +Due to internal changes to the type, objects that are serialized with the .NET Framework 4.5 +using the cannot be deserialized in the .NET Framework 4.5.1 or in the .NET Framework 4.5.2. -Note that moving the other direction (serializing with the .NET Framework 4.5.x and deserializing with the .NET Framework 4.5) works. Similarly, +Note that moving in the other direction (serializing with the .NET Framework 4.5.x and deserializing with the .NET Framework 4.5) works. Similarly, all 4.x cross-version serialization works with the .NET Framework 4.6. Serializing and deserializing with a single version of the .NET Framework is not affected. @@ -25,8 +25,8 @@ Serializing and deserializing with a single version of the .NET Framework is not - [ ] Build-time break ### Recommended Action -If it is necessary to serialize and deserialize a ConcurrentDictionary between the .NET Framework 4.5 and .NET Framework 4.5.1/4.5.2, an alternate serializer like the -DataContractSerializer or BinaryFormatter serializer should be used instead of the NetDataContractSerializer. +If it is necessary to serialize and deserialize a between the .NET Framework 4.5 and .NET Framework 4.5.1/4.5.2, an alternate serializer like the + or serializer should be used instead of the . Alternatively, because this issue is addressed in the .NET Framework 4.6, it may be solved by upgrading to that version of the .NET Framework. diff --git a/Documentation/compatibility/accessing-a-wpf-datagrid's-selected-items-from-a-handler-of-the-datagrid's-unloadingrow-event-can-cause-a-nullreferenceexception.md b/Documentation/compatibility/accessing-a-wpf-datagrid's-selected-items-from-a-handler-of-the-datagrid's-unloadingrow-event-can-cause-a-nullreferenceexception.md index 4862ffbfe..6af2ec4d2 100644 --- a/Documentation/compatibility/accessing-a-wpf-datagrid's-selected-items-from-a-handler-of-the-datagrid's-unloadingrow-event-can-cause-a-nullreferenceexception.md +++ b/Documentation/compatibility/accessing-a-wpf-datagrid's-selected-items-from-a-handler-of-the-datagrid's-unloadingrow-event-can-cause-a-nullreferenceexception.md @@ -13,7 +13,15 @@ Minor Planned ### Change Description -Due to a bug in the .NET Framework 4.5, event handlers for DataGrid events involving the removal of a row can cause a NullReferenceException to be thrown if they access the DataGrid's SelectedItem or SelectedItems properties. + +Due to a bug in the .NET Framework 4.5, event handlers for + events involving the removal of a row +can cause a to be +thrown if they access the +'s + +or +properties. - [ ] Quirked - [ ] Build-time break diff --git a/Documentation/compatibility/ado_net-now-attempts-to-automatically-reconnect-broken-sql-connections.md b/Documentation/compatibility/ado_net-now-attempts-to-automatically-reconnect-broken-sql-connections.md index c8ff781ba..2e50c74d1 100644 --- a/Documentation/compatibility/ado_net-now-attempts-to-automatically-reconnect-broken-sql-connections.md +++ b/Documentation/compatibility/ado_net-now-attempts-to-automatically-reconnect-broken-sql-connections.md @@ -10,13 +10,23 @@ Edge Planned ### Change Description -Beginning in the .NET Framework 4.5.1, the .NET Framework will attempt to automatically reconnect broken SQL connections. Although this will typically make apps more reliable, there are edge cases in which an app needs to know that the connection was lost so that it can take some action upon reconnection. + +Beginning in the .NET Framework 4.5.1, the .NET Framework will attempt to +automatically reconnect broken SQL connections. Although this will typically +make apps more reliable, there are edge cases in which an app needs to know that +the connection was lost so that it can take some action upon reconnection. - [ ] Quirked - [ ] Build-time break ### Recommended Action -If this feature is undesirable due to compatibility concerns, it can be disabled by setting the ConnectRetryCount property of a connection string (or SqlConnectionStringBuilder) to 0. + +If this feature is undesirable due to compatibility concerns, it can be disabled +by setting the + +property of a connection string (or +) to +0. ### Affected APIs * `M:System.Data.IDbConnection.set_ConnectionString(System.String)` diff --git a/Documentation/compatibility/aescryptoserviceprovider-decryptor-provides-a-reusable-transform.md b/Documentation/compatibility/aescryptoserviceprovider-decryptor-provides-a-reusable-transform.md index 061fe7eff..5bf60688f 100644 --- a/Documentation/compatibility/aescryptoserviceprovider-decryptor-provides-a-reusable-transform.md +++ b/Documentation/compatibility/aescryptoserviceprovider-decryptor-provides-a-reusable-transform.md @@ -10,8 +10,18 @@ Minor Investigating ### Change Description -Starting with apps that target the .NET Framework 4.6.2, the `T:System.Security.Cryptography.AesCryptoServiceProvider` decryptor provides a reusable transform. After a call to `TransformFinalBlock`, the transform is reinitialized and can be reused. -For apps that target earlier versions of the .NET Framework, attempting to reuse the decryptor by calling `TransformBlock` after a call to `TransformFinalBlock` throws a `T:System.Security.Cryptography.CryptographicException` or produces corrupted data. + +Starting with apps that target the .NET Framework 4.6.2, the + decryptor provides +a reusable transform. After a call to +, +the transform is reinitialized and can be reused. For apps that +target earlier versions of the .NET Framework, attempting to reuse the decryptor +by calling + +after a call to +throws a or +produces corrupted data. - [X] Quirked AppContext or config files. Needs to be turned on automatically for some situations. - [ ] Build-time break @@ -24,7 +34,7 @@ Applications that depend on the previous behavior can opt out of it using it by ```xml - +
``` In addition, applications that target a previous version of the .NET Framework but are running under a version of the .NET Framework starting with .NET Framework 4.6.2 can opt in to it by adding the following configuration setting to the `` section of the application's configuration file: diff --git a/Documentation/compatibility/appdomainsetup_dynamicbase-is-no-longer-randomized-by-userandomizedstringhashalgorithm.md b/Documentation/compatibility/appdomainsetup_dynamicbase-is-no-longer-randomized-by-userandomizedstringhashalgorithm.md index 6bb7f5d6d..9c520ba05 100644 --- a/Documentation/compatibility/appdomainsetup_dynamicbase-is-no-longer-randomized-by-userandomizedstringhashalgorithm.md +++ b/Documentation/compatibility/appdomainsetup_dynamicbase-is-no-longer-randomized-by-userandomizedstringhashalgorithm.md @@ -10,13 +10,27 @@ Edge Planned ### Change Description -Prior to the .NET Framework 4.6, the value of AppDomainSetup.DynamicBase would be randomized between application domains, or between processes, if UseRandomizedStringHashAlgorithm was enabled in the app's config file. Beginning in the .NET Framework 4.6, AppDomainSetup.DynamicBase will return a stable result between different instances of an app running, and between different app domains. Dynamic bases will still differ for different apps; this change only removes the random naming element for different instances of the same app. + +Prior to the .NET Framework 4.6, the value of + would be +randomized between application domains, or between processes, if +UseRandomizedStringHashAlgorithm was enabled in the app's config file. Beginning +in the .NET Framework 4.6, + will +return a stable result between different instances of an app running, and +between different app domains. Dynamic bases will still differ for different +apps; this change only removes the random naming element for different instances +of the same app. - [ ] Quirked - [ ] Build-time break ### Recommended Action -Be aware that enabling `UseRandomizedStringHashAlgorithm` will not result in `AppDomainSetup.DynamicBase` being randomized. If a random base is needed, it must be produced in your app's code rather than via this API. + +Be aware that enabling `UseRandomizedStringHashAlgorithm` will not result in + being +randomized. If a random base is needed, it must be produced in your app's code +rather than via this API. ### Affected APIs * `P:System.AppDomainSetup.DynamicBase` diff --git a/Documentation/compatibility/application_filtermessage-no-longer-throws-for-re-entrant-implementations-of-imessagefilter_prefiltermessage.md b/Documentation/compatibility/application_filtermessage-no-longer-throws-for-re-entrant-implementations-of-imessagefilter_prefiltermessage.md index 31cd68ed5..eb2a47d79 100644 --- a/Documentation/compatibility/application_filtermessage-no-longer-throws-for-re-entrant-implementations-of-imessagefilter_prefiltermessage.md +++ b/Documentation/compatibility/application_filtermessage-no-longer-throws-for-re-entrant-implementations-of-imessagefilter_prefiltermessage.md @@ -10,7 +10,17 @@ Edge Planned ### Change Description -Prior to the .NET Framework 4.6.1, calling Application.FilterMessage with an IMessageFilter.PreFilterMessage which called AddMessageFilter or RemoveMessageFilter (while also calling Application.DoEvents) would cause an IndexOutOfRangeException. + +Prior to the .NET Framework 4.6.1, calling + +with an + +which called + +or +(while also calling +) +would cause an . Beginning with applications targeting the .NET Framework 4.6.1, this exception is no longer thrown, and re-entrant filters as described above may be used. @@ -18,9 +28,18 @@ Beginning with applications targeting the .NET Framework 4.6.1, this exception i - [ ] Build-time break ### Recommended Action -Be aware that Application.FilterMessage will no longer throw for the re-entrant IMessageFilter.PreFilterMessage behavior described above. This only affects applications targeting the .NET Framework 4.6.1. -Apps targeting the .NET Framework 4.6.1 can opt out of this change (or apps targeting older Frameworks may opt in) by using the [DontSupportReentrantFilterMessage](https://msdn.microsoft.com/en-us/library/mt620032%28v=vs.110%29.aspx) compatibility switch. +Be aware that + +will no longer throw for the re-entrant + +behavior described above. This only affects applications targeting the .NET +Framework 4.6.1. + +Apps targeting the .NET Framework 4.6.1 can opt out of this change (or apps +targeting older Frameworks may opt in) by using the +[DontSupportReentrantFilterMessage](https://msdn.microsoft.com/en-us/library/mt620032%28v=vs.110%29.aspx) +compatibility switch. ### Affected APIs * `M:System.Windows.Forms.Application.FilterMessage(System.Windows.Forms.Message@)` @@ -32,7 +51,7 @@ Windows Forms diff --git a/Documentation/compatibility/asp_net-mvc-now-escapes-spaces-in-strings-passed-in-via-route-parameters.md b/Documentation/compatibility/asp_net-mvc-now-escapes-spaces-in-strings-passed-in-via-route-parameters.md index f2282f45d..b356a5bac 100644 --- a/Documentation/compatibility/asp_net-mvc-now-escapes-spaces-in-strings-passed-in-via-route-parameters.md +++ b/Documentation/compatibility/asp_net-mvc-now-escapes-spaces-in-strings-passed-in-via-route-parameters.md @@ -16,7 +16,7 @@ In order to conform to RFC 2396, spaces in route paths are now escaped when popu - [ ] Build-time break ### Recommended Action -Code should be updated to unescape string parameters from a route. If the original URI is needed, it can be accessed with the Request.RequestUri.OriginalString API. +Code should be updated to unescape string parameters from a route. If the original URI is needed, it can be accessed with the .OriginalString API. ### Affected APIs * `M:System.Web.Http.RouteAttribute.#ctor(System.String)` diff --git a/Documentation/compatibility/binaryformatter-can-fail-to-find-type-from-loadfrom-context.md b/Documentation/compatibility/binaryformatter-can-fail-to-find-type-from-loadfrom-context.md index be22bdb6b..69c79c9f5 100644 --- a/Documentation/compatibility/binaryformatter-can-fail-to-find-type-from-loadfrom-context.md +++ b/Documentation/compatibility/binaryformatter-can-fail-to-find-type-from-loadfrom-context.md @@ -10,16 +10,24 @@ Edge Planned ### Change Description -As of .NET Framework 4.5, a number of XmlSerializer changes may cause differences in deserialization when using `BinaryFormatter` to deserialize types that had been loaded in the -LoadFrom context. These changes are due to the new ways `XmlSerializer` now loads a type which causes different behavior when a BinaryFormatter attempts to deserialize to that type -later on. The default serialization binder does not automatically search the LoadFrom context, although it may have worked in some circumstances based on the old behavior of -XmlSerializer. Due to the changes, when a type is being loaded from an assembly loaded in a different context, a FileNotFoundException may be thrown. +As of .NET Framework 4.5, a number of +changes may cause differences in deserialization when using + +to deserialize types that had been loaded in the LoadFrom context. These changes +are due to the new ways +now loads a type which causes different behavior when a + attempts to +deserialize to that type later on. The default serialization binder does not +automatically search the LoadFrom context, although it may have worked in some +circumstances based on the old behavior of XmlSerializer. Due to the changes, +when a type is being loaded from an assembly loaded in a different context, a + may be thrown. - [ ] Quirked - [ ] Build-time break ### Recommended Action -If this exception is seen, the `Binder` property of the `BinaryFormatter` can be set to a custom binder that will find the correct type. +If this exception is seen, the `Binder` property of the can be set to a custom binder that will find the correct type. ```C# var formatter = new BinaryFormatter { Binder = new TypeFinderBinder() } @@ -30,7 +38,7 @@ And then the custom binder: public class TypeFinderBinder : SerializationBinder { private static readonly string s_assemblyName = Assembly.GetExecutingAssembly().FullName; - + public override Type BindToType(string assemblyName, string typeName) { return Type.GetType(String.Format(CultureInfo.InvariantCulture, "{0}, {1}", typeName, s_assemblyName)); diff --git a/Documentation/compatibility/binding-a-wpf-selector-property-(such-as-'selecteditem')-to-a-static-property-does-not-work.md b/Documentation/compatibility/binding-a-wpf-selector-property-(such-as-'selecteditem')-to-a-static-property-does-not-work.md index b1e3b3cad..a4c8e7d24 100644 --- a/Documentation/compatibility/binding-a-wpf-selector-property-(such-as-'selecteditem')-to-a-static-property-does-not-work.md +++ b/Documentation/compatibility/binding-a-wpf-selector-property-(such-as-'selecteditem')-to-a-static-property-does-not-work.md @@ -13,7 +13,7 @@ Minor Planned ### Change Description -In the .NET Framework 4.5, WPF Selector properties (such as 'SelectedItem' on ListBoxes or DataGrids) that are data-bound to static properties do not properly update when their bound property is updated. +In the .NET Framework 4.5, WPF Selector properties (such as 'SelectedItem' on or ) that are data-bound to static properties do not properly update when their bound property is updated. - [ ] Quirked - [ ] Build-time break diff --git a/Documentation/compatibility/blockingcollection_trytakefromany-does-not-throw-anymore.md b/Documentation/compatibility/blockingcollection_trytakefromany-does-not-throw-anymore.md index 783632a30..072f9e195 100644 --- a/Documentation/compatibility/blockingcollection_trytakefromany-does-not-throw-anymore.md +++ b/Documentation/compatibility/blockingcollection_trytakefromany-does-not-throw-anymore.md @@ -10,7 +10,13 @@ Minor Available ### Change Description -If one of the input collections is marked completed, `BlockingCollection.TryTakeFromAny(BlockingCollection[], T)` no longer returns -1 and `BlockingCollection.TakeFromAny` no longer throws an exception. This change makes it possible to work with collections when one of the collections is either empty or completed, but the other collection still has items that can be retrieved. + +If one of the input collections is marked completed, +no longer returns -1 and + +no longer throws an exception. This change makes it possible to work with +collections when one of the collections is either empty or completed, but the +other collection still has items that can be retrieved. - [ ] Quirked - [ ] Build-time break diff --git a/Documentation/compatibility/building-an-entity-framework-edmx-with-visual-studio-2013-can-fail-with-error-msb4062-if-using-the-entitydeploysplit-or-entityclean-tasks.md b/Documentation/compatibility/building-an-entity-framework-edmx-with-visual-studio-2013-can-fail-with-error-msb4062-if-using-the-entitydeploysplit-or-entityclean-tasks.md index 71b340d40..22711f396 100644 --- a/Documentation/compatibility/building-an-entity-framework-edmx-with-visual-studio-2013-can-fail-with-error-msb4062-if-using-the-entitydeploysplit-or-entityclean-tasks.md +++ b/Documentation/compatibility/building-an-entity-framework-edmx-with-visual-studio-2013-can-fail-with-error-msb4062-if-using-the-entitydeploysplit-or-entityclean-tasks.md @@ -13,7 +13,13 @@ Major Available ### Change Description -MSBuild 12.0 tools (included in Visual Studio 2013) changed msbuild file locations, causing older Entity Framework targets files to be invalid. The result is that `EntityDeploySplit` and `EntityClean` tasks fail because they are unable to find `Microsoft.Data.Entity.Build.Tasks.dll`. Note that this break is because of a toolset (msbuild/VS) change, not because of a .NET Framework change. It will only occur when upgrading developer tools, not when merely upgrading the .NET Framework. +MSBuild 12.0 tools (included in Visual Studio 2013) changed msbuild file +locations, causing older Entity Framework targets files to be invalid. The +result is that `EntityDeploySplit` and `EntityClean` tasks fail because they are +unable to find `Microsoft.Data.Entity.Build.Tasks.dll`. Note that this break is +because of a toolset (msbuild/VS) change, not because of a .NET Framework +change. It will only occur when upgrading developer tools, not when merely +upgrading the .NET Framework. - [ ] Quirked - [x] Build-time break diff --git a/Documentation/compatibility/calling-attribute_getcustomattributes-on-an-indexer-property-no-longer-throws-ambiguousmatchexception.md b/Documentation/compatibility/calling-attribute_getcustomattributes-on-an-indexer-property-no-longer-throws-ambiguousmatchexception.md index 9c550d4a8..8011eadc7 100644 --- a/Documentation/compatibility/calling-attribute_getcustomattributes-on-an-indexer-property-no-longer-throws-ambiguousmatchexception.md +++ b/Documentation/compatibility/calling-attribute_getcustomattributes-on-an-indexer-property-no-longer-throws-ambiguousmatchexception.md @@ -10,13 +10,17 @@ Edge Available ### Change Description -Prior to the .NET Framework 4.6, calling `GetCustomAttribute(s)` on an indexer property which differed from another property only by the type of the index would result in an `AmbiguousMatchException`. Beginning in the .NET Framework 4.6, the property's attributes will be correctly returned. +Prior to the .NET Framework 4.6, calling `GetCustomAttribute(s)` on an indexer +property which differed from another property only by the type of the index +would result in an +. Beginning +in the .NET Framework 4.6, the property's attributes will be correctly returned. - [ ] Quirked - [ ] Build-time break ### Recommended Action -Be aware that GetCustomAttribute(s) will work more frequently now. If an app was previously relying on the `AmbiguousMatchException`, reflection should now be used to explicitly look for multiple indexers, instead. +Be aware that GetCustomAttribute(s) will work more frequently now. If an app was previously relying on the , reflection should now be used to explicitly look for multiple indexers, instead. ### Affected APIs * `M:System.Attribute.GetCustomAttribute(System.Reflection.MemberInfo,System.Type)` diff --git a/Documentation/compatibility/calling-createdefaultauthorizationcontext-with-a-null-argument-has-changed.md b/Documentation/compatibility/calling-createdefaultauthorizationcontext-with-a-null-argument-has-changed.md index 39414ce6d..08c60a817 100644 --- a/Documentation/compatibility/calling-createdefaultauthorizationcontext-with-a-null-argument-has-changed.md +++ b/Documentation/compatibility/calling-createdefaultauthorizationcontext-with-a-null-argument-has-changed.md @@ -10,7 +10,11 @@ Minor Available ### Change Description -The implementation of the AuthorizationContext returned by a call to the `CreateDefaultAuthorizationContext(IList)` with a null authorizationPolicies argument has changed its implementation in the .NET Framework 4.6. +The implementation of the +returned by a call to the + +with a null authorizationPolicies argument has changed its implementation in the +.NET Framework 4.6. - [x] Quirked - [ ] Build-time break @@ -18,7 +22,7 @@ The implementation of the AuthorizationContext returned by a call to the `Create ### Recommended Action In rare cases, WCF apps that use custom authentication may see behavioral differences. In such cases, the previous behavior can be restored in either of two ways: -1. Recompile your app to target an earlier version of the .NET Framework than 4.6. For IIS-hosted services, use the <httpRuntime targetFramework="x.x" /> element to target an earlier version of the .NET Framework. +1. Recompile your app to target an earlier version of the .NET Framework than 4.6. For IIS-hosted services, use the <httpRuntime targetFramework="x.x" /> element to target an earlier version of the .NET Framework. 2. Add the following line to the `` section of your app.config file: `` ### Affected APIs diff --git a/Documentation/compatibility/calling-datagrid_commitedit-from-a-celleditending-handler-drops-focus.md b/Documentation/compatibility/calling-datagrid_commitedit-from-a-celleditending-handler-drops-focus.md index d25ddac8c..38420e616 100644 --- a/Documentation/compatibility/calling-datagrid_commitedit-from-a-celleditending-handler-drops-focus.md +++ b/Documentation/compatibility/calling-datagrid_commitedit-from-a-celleditending-handler-drops-focus.md @@ -13,13 +13,20 @@ Edge Available ### Change Description -Calling DataGrid.CommitEdit from one of the DataGrid's CellEditEnding event handlers causes the DataGrid to lose focus. +Calling +from one of the 's + +event handlers causes the +to lose focus. - [ ] Quirked - [ ] Build-time break ### Recommended Action -This bug has been fixed in the .NET Framework 4.5.2, so it can be avoided by upgrading the .NET Framework. Alternatively, it can be avoided by explicitly re-selecting the DataGrid after calling CommitEdit. +This bug has been fixed in the .NET Framework 4.5.2, so it can be avoided by +upgrading the .NET Framework. Alternatively, it can be avoided by explicitly +re-selecting the +after calling . ### Affected APIs * `M:System.Windows.Controls.DataGrid.CommitEdit` diff --git a/Documentation/compatibility/calling-items_refresh-on-a-wpf-listbox-or-listview-or-datagrid-with-items-selected-can-cause-duplicate-items-to-appear-in-the-element.md b/Documentation/compatibility/calling-items_refresh-on-a-wpf-listbox-or-listview-or-datagrid-with-items-selected-can-cause-duplicate-items-to-appear-in-the-element.md index e0367d433..43fa4cc73 100644 --- a/Documentation/compatibility/calling-items_refresh-on-a-wpf-listbox-or-listview-or-datagrid-with-items-selected-can-cause-duplicate-items-to-appear-in-the-element.md +++ b/Documentation/compatibility/calling-items_refresh-on-a-wpf-listbox-or-listview-or-datagrid-with-items-selected-can-cause-duplicate-items-to-appear-in-the-element.md @@ -13,13 +13,22 @@ Minor Available ### Change Description -In the .NET Framework 4.5, calling ListBox.Items.Refresh from code while items are selected in a ListBox can cause the selected items to be duplicated in the list. A similar issue occurs with ListView and DataGrid. This is fixed in the .NET Framework 4.6. +In the .NET Framework 4.5, calling ListBox.Items.Refresh from code while items +are selected in a +can cause the selected items to be duplicated in the list. A similar issue +occurs with and +. This is fixed in +the .NET Framework 4.6. - [ ] Quirked - [ ] Build-time break ### Recommended Action -This issue may be worked around by programatically unselecting items before Refresh is called and then re-selecting them after the call is completed. Alternatively, this issue has been fixed in the .NET Framework 4.6 and may be addressed by upgrading to that version of the .NET Framework. +This issue may be worked around by programatically unselecting items before + is called +and then re-selecting them after the call is completed. Alternatively, this +issue has been fixed in the .NET Framework 4.6 and may be addressed by upgrading +to that version of the .NET Framework. ### Affected APIs * `M:System.Windows.Data.CollectionView.Refresh` diff --git a/Documentation/compatibility/calls-to-claimsidentity-constructors.md b/Documentation/compatibility/calls-to-claimsidentity-constructors.md index 0cc9c6a21..eaa395d3f 100644 --- a/Documentation/compatibility/calls-to-claimsidentity-constructors.md +++ b/Documentation/compatibility/calls-to-claimsidentity-constructors.md @@ -10,15 +10,34 @@ Edge Investigating ### Change Description -Starting with the .NET Framework 4.6.2, there is a change in how `T:System.Security.Claims.ClaimsIdentity` constructors with an `T:System.Security.Principal.IIdentity` parameter set the `P:System.Security.Claims.ClaimsIdentify.Actor` property. If the `T:System.Security.Principal.IIdentity` argument is a `T:System.Security.Claims.ClaimsIdentity` object, and the `P:System.Security.Claims.ClaimsIdentify.Actor` property of that `T:System.Security.Claims.ClaimsIdentity` object is not `null`, the `P:System.Security.Claims.ClaimsIdentify.Actor` property is attached by using the `M:System.Security.Claims.ClaimsIdentity.Clone` method. In the Framework 4.6.1 and earlier versions, the `P:System.Security.Claims.ClaimsIdentify.Actor` property is attached as an existing reference. - -Because of this change, starting with the .NET Framework 4.6.2, the `P:System.Security.Claims.ClaimsIdentify.Actor` property of the new `T:System.Security.Claims.ClaimsIdentity` object is not equal to the `P:System.Security.Claims.ClaimsIdentify.Actor` property of the constructor's `T:System.Security.Principal.IIdentity` argument. In the .NET Framework 4.6.1 and earlier versions, it is equal. +Starting with the .NET Framework 4.6.2, there is a change in how +constructors with an +parameter set the +property. If the +argument is a +object, and the +property of that +object is not `null`, the +property is attached by using the +method. In the Framework 4.6.1 and earlier versions, the + +property is attached as an existing reference. + +Because of this change, starting with the .NET Framework 4.6.2, the + property +of the new +object is not equal to the +property of the constructor's +argument. In the .NET Framework 4.6.1 and earlier versions, it is equal. - [X] Quirked - [ ] Build-time break ### Recommended Action -If this behavior is undesirable, you can restore the previous behavior by setting the `Switch.System.Security.ClaimsIdentity.SetActorAsReferenceWhenCopyingClaimsIdentity` switch in your application configuration file to `true`. This requires that you add the following to the `` section of your web.config file: +If this behavior is undesirable, you can restore the previous behavior by setting +the `Switch.System.Security.ClaimsIdentity.SetActorAsReferenceWhenCopyingClaimsIdentity` +switch in your application configuration file to `true`. This requires that you +add the following to the `` section of your web.config file: ```xml diff --git a/Documentation/compatibility/change-in-behavior-for-task_waitall-methods-with-time-out-arguments.md b/Documentation/compatibility/change-in-behavior-for-task_waitall-methods-with-time-out-arguments.md index bea632b36..cde34dc27 100644 --- a/Documentation/compatibility/change-in-behavior-for-task_waitall-methods-with-time-out-arguments.md +++ b/Documentation/compatibility/change-in-behavior-for-task_waitall-methods-with-time-out-arguments.md @@ -10,15 +10,25 @@ Minor Available ### Change Description -Task.WaitAll behavior was made more consistent in .NET 4.5. - -In the .NET Framework 4, these methods behaved inconsistently. When the time-out expired, if one or more tasks were completed or canceled before the method call, the method threw an AggregateException exception. When the time-out expired, if no tasks were completed or canceled before the method call, but one or more tasks entered these states after the method call, the method returned false.

In the .NET Framework 4.5, these method overloads now return false if any tasks are still running when the time-out interval expired, and they throw an AggregateException exception only if an input task was cancelled (regardless of whether it was before or after the method call) and no other tasks are still running. +Task.WaitAll behavior was made more consistent in .NET 4.5. + +In the .NET Framework 4, these methods behaved inconsistently. When the time-out +expired, if one or more tasks were completed or canceled before the method call, +the method threw an +exception. When the time-out expired, if no tasks were completed or canceled +before the method call, but one or more tasks entered these states after the +method call, the method returned false.

In the .NET Framework 4.5, +these method overloads now return false if any tasks are still running when the +time-out interval expired, and they throw an + exception only if an input +task was cancelled (regardless of whether it was before or after the method +call) and no other tasks are still running. - [ ] Quirked - [ ] Build-time break ### Recommended Action -If an AggregateException was being caught as a means of detecting a task that was cancelled prior to the WaitAll call being invoked, that code should instead do the same detection via the IsCanceled property (for example: .Any(t => t.IsCanceled)) since .NET 4.6 will only throw in that case if all awaited tasks are completed prior to the timeout. +If an was being caught as a means of detecting a task that was cancelled prior to the WaitAll call being invoked, that code should instead do the same detection via the IsCanceled property (for example: .Any(t => t.IsCanceled)) since .NET 4.6 will only throw in that case if all awaited tasks are completed prior to the timeout. ### Affected APIs * `M:System.Threading.Tasks.Task.WaitAll(System.Threading.Tasks.Task[],System.Int32)` diff --git a/Documentation/compatibility/change-in-behavior-in-data-definition-language-(ddl)-apis.md b/Documentation/compatibility/change-in-behavior-in-data-definition-language-(ddl)-apis.md index ac1ce0b8f..51a589633 100644 --- a/Documentation/compatibility/change-in-behavior-in-data-definition-language-(ddl)-apis.md +++ b/Documentation/compatibility/change-in-behavior-in-data-definition-language-(ddl)-apis.md @@ -10,8 +10,8 @@ Minor Available ### Change Description -The behavior of DDL APIs when AttachDBFilename is specified has changed as follows: -* Connection strings need not specify an Initial Catalog value. Previously, both AttatchDBFilename and Initial Catalog were required. +The behavior of DDL APIs when AttachDBFilename is specified has changed as follows: +* Connection strings need not specify an Initial Catalog value. Previously, both AttachDBFilename and Initial Catalog were required. * If both AttatchDBFilename and Initial Catalog are specified and the given MDF file exists, the ObjectContext.DatabaseExists method returns true. Previously, it returned false. * If both AttatchDBFilename and Initial Catalog are specified and the given MDF file exists, calling the ObjectContext.DeleteDatabase method deletes the files. * If ObjectContext.DeleteDatabase is called when the connection string specifies an AttachDBFilename value with an MDF that doesn't exist and an Initial Catalog that doesn't exist, the method throws an InvalidOperationException exception. Previously, it threw a SqlException exception. @@ -21,7 +21,7 @@ The behavior of DDL APIs when AttachDBFilename is specified has changed as follo ### Recommended Action These changes make it easier to build tools and applications that use the DDL APIs. These changes can affect application compatibility in the following scenarios: -- The user writes code that executes a DROP DATABASE command directly instead of calling ObjectContext.DeleteDatabase if ObjectContext.DatabaseExists returns true. This breaks existing code If the database is not attached but the MDF file exists. +- The user writes code that executes a DROP DATABASE command directly instead of calling ObjectContext.DeleteDatabase if ObjectContext.DatabaseExists returns true. This breaks existing code If the database is not attached but the MDF file exists. - The user writes code that expects the ObjectContext.DeleteDatabase method to throw a SqlException exception rather than an InvalidOperationException exception when the Initial Catalog and MDF file don't exist. ### Affected APIs diff --git a/Documentation/compatibility/changes-in-path-normalization.md b/Documentation/compatibility/changes-in-path-normalization.md index f53036992..3fe8e1fd4 100644 --- a/Documentation/compatibility/changes-in-path-normalization.md +++ b/Documentation/compatibility/changes-in-path-normalization.md @@ -10,16 +10,20 @@ Minor Investigating ### Change Description -Starting with apps that target the .NET Framework 4.6.2, the way in which the runtime normalizes paths has changed. +Starting with apps that target the .NET Framework 4.6.2, the way in which the +runtime normalizes paths has changed. -Normalizing a path involves modifying the string that identifies a path or file so that it conforms to a valid path on the target operating system. Normalization typically involves: +Normalizing a path involves modifying the string that identifies a path or file +so that it conforms to a valid path on the target operating system. +Normalization typically involves: - Canonicalizing component and directory separators. - Applying the current directory to a relative path. - Evaluating the relative directory (.) or the parent directory (..) in a path. - Trimming specified characters. -Starting with apps that target the .NET Framework 4.6.2, the following changes in path normalization are enabled by default: +Starting with apps that target the .NET Framework 4.6.2, the following changes +in path normalization are enabled by default: - The runtime defers to the operating system's [GetFullPathName](https://msdn.microsoft.com/library/windows/desktop/aa364963(v=vs.85).aspx) function to normalize paths. - Normalization no longer involves trimming the end of directory segments (such as a space at the end of a directory name). @@ -27,7 +31,7 @@ Starting with apps that target the .NET Framework 4.6.2, the following changes i - The runtime does not validate device syntax paths. - The use of device syntax to access alternate data streams is supported. -These changes improve performance while allowing methods to access previously inaccessible paths. +These changes improve performance while allowing methods to access previously inaccessible paths. Apps that target the .NET Framework 4.6.1 and earlier versions but are running under the .NET Framework 4.6.2 or later are unaffected by this change. - [X] Quirked diff --git a/Documentation/compatibility/changing-the-isenabled-property-of-the-parent-of-a-textblock-control-affects-any-child-controls.md b/Documentation/compatibility/changing-the-isenabled-property-of-the-parent-of-a-textblock-control-affects-any-child-controls.md index 11a95f7c6..892494fa3 100644 --- a/Documentation/compatibility/changing-the-isenabled-property-of-the-parent-of-a-textblock-control-affects-any-child-controls.md +++ b/Documentation/compatibility/changing-the-isenabled-property-of-the-parent-of-a-textblock-control-affects-any-child-controls.md @@ -10,15 +10,23 @@ Minor Investigating ### Change Description -Starting with the .NET Framework 4.6.2, changing the `IsEnabled` property of the parent of a `T:System.Windows.Controls.TextBlock` control affects any child controls (such as hyperlinks and buttons) of the `T:System.Windows.Controls.TextBlock` control. - -In the .NET Framework 4.6.1 and earlier versions, controls inside a `T:System.Windows.Controls.TextBlock` did not always reflect the state of the IsEnabled property of the `T:System.Windows.Controls.TextBlock` parent. +Starting with the .NET Framework 4.6.2, changing the + property of the +parent of a +control affects any child controls (such as hyperlinks and buttons) of the + control. + +In the .NET Framework 4.6.1 and earlier versions, controls inside a + did not always +reflect the state of the + property of the + parent. - [ ] Quirked // Uses some mechanism to turn the feature on or off, usually using runtime targeting, AppContext or config files. Needs to be turned on automatically for some situations. - [ ] Build-time break // Causes a break if attempted to recompile ### Recommended Action -None. This change conforms to the expected behavior for controls inside a `T:System.Windows.Controls.TextBlock` control. +None. This change conforms to the expected behavior for controls inside a control. ### Affected APIs - `P:System.Windows.UIElement.IsEnabled` diff --git a/Documentation/compatibility/clickonce-supports-sha-256-on-4_0-targeted-apps.md b/Documentation/compatibility/clickonce-supports-sha-256-on-4_0-targeted-apps.md index 317561bc2..16ea4cb0e 100644 --- a/Documentation/compatibility/clickonce-supports-sha-256-on-4_0-targeted-apps.md +++ b/Documentation/compatibility/clickonce-supports-sha-256-on-4_0-targeted-apps.md @@ -10,13 +10,16 @@ Minor Planned ### Change Description -Previously, a ClickOnce app with a certificate signed with SHA-256 would require .NET 4.5 or later to be present, even if the app targeted 4.0. Now, 4.0-targeted ClickOnce apps can run on 4.0, even if signed with SHA-256. +Previously, a ClickOnce app with a certificate signed with SHA-256 would require +.NET 4.5 or later to be present, even if the app targeted 4.0. Now, 4.0-targeted +ClickOnce apps can run on 4.0, even if signed with SHA-256. - [ ] Quirked - [x] Build-time break ### Recommended Action -This change removes that dependency and allows SHA-256 certificates to be used to sign ClickOnce apps that target .NET Framework 4 and earlier versions. +This change removes that dependency and allows SHA-256 certificates to be used +to sign ClickOnce apps that target .NET Framework 4 and earlier versions. ### Affected APIs * Not detectable via API analysis diff --git a/Documentation/compatibility/coerceisselectionboxhighlighted.md b/Documentation/compatibility/coerceisselectionboxhighlighted.md index 4e3a22e74..2ddfad324 100644 --- a/Documentation/compatibility/coerceisselectionboxhighlighted.md +++ b/Documentation/compatibility/coerceisselectionboxhighlighted.md @@ -13,7 +13,8 @@ Minor Planned ### Change Description -Certain sequences of actions involving a ComboBox and its data source can result in a `NullReferenceException`. +Certain sequences of actions involving a +and its data source can result in a . - [ ] Quirked - [ ] Build-time break diff --git a/Documentation/compatibility/compiler-support-for-type-forwarding-when-multi-targeting-mscorlib.md b/Documentation/compatibility/compiler-support-for-type-forwarding-when-multi-targeting-mscorlib.md index 57316d8f4..e5f42e609 100644 --- a/Documentation/compatibility/compiler-support-for-type-forwarding-when-multi-targeting-mscorlib.md +++ b/Documentation/compatibility/compiler-support-for-type-forwarding-when-multi-targeting-mscorlib.md @@ -10,13 +10,17 @@ Edge Not planned ### Change Description -A new CodeDOM feature allows a compiler to compile against the targeted version of mscorlib.dll instead of the .NET Framework 4.5 version of mscorlib.dll. +A new CodeDOM feature allows a compiler to compile against the targeted version +of mscorlib.dll instead of the .NET Framework 4.5 version of mscorlib.dll. - [ ] Quirked - [ ] Build-time break -### Recommended Action -This change prevents compiler warnings (and compilation failure in cases where warnings are treated as errors) when CodeDOM finds two definitions for types that have been type-forwarded. This change may have unintended side effects only if different versions of reference assemblies are mixed in a single location. +### Recommended Action This change prevents compiler warnings (and compilation +failure in cases where warnings are treated as errors) when CodeDOM finds two +definitions for types that have been type-forwarded. This change may have +unintended side effects only if different versions of reference assemblies are +mixed in a single location. ### Affected APIs * Not detectable via API analysis diff --git a/Documentation/compatibility/concurrentqueue_trypeek-can-return-an-erroneous-null-via-its-out-parameter.md b/Documentation/compatibility/concurrentqueue_trypeek-can-return-an-erroneous-null-via-its-out-parameter.md index dfe3a7f93..3bdfb05b2 100644 --- a/Documentation/compatibility/concurrentqueue_trypeek-can-return-an-erroneous-null-via-its-out-parameter.md +++ b/Documentation/compatibility/concurrentqueue_trypeek-can-return-an-erroneous-null-via-its-out-parameter.md @@ -13,7 +13,10 @@ Major Available ### Change Description -In some multi-threaded scenarios, `ConcurentQueue.TryPeek` can return true, but populate the out parameter with a null value (instead of the correct, peeked value). +In some multi-threaded scenarios, + +can return true, but populate the out parameter with a null value (instead of +the correct, peeked value). - [ ] Quirked - [ ] Build-time break diff --git a/Documentation/compatibility/connection-pool-blocking-period-for-azure-sql-databases-is-removed.md b/Documentation/compatibility/connection-pool-blocking-period-for-azure-sql-databases-is-removed.md index 0c6035f55..f6e92ae23 100644 --- a/Documentation/compatibility/connection-pool-blocking-period-for-azure-sql-databases-is-removed.md +++ b/Documentation/compatibility/connection-pool-blocking-period-for-azure-sql-databases-is-removed.md @@ -10,21 +10,46 @@ Minor Investigating ### Change Description -Starting with the .NET Framework 4.6.2, for connection open requests to known Azure SQL databases (*.database.windows.net, *.database.chinacloudapi.cn, *.database.usgovcloudapi.net, *.database.cloudapi.de), the connection pool blocking period is removed, and connection open errors are not cached. Attempts to retry connection open requests will occur almost immediately after transient connection errors. This change allows the connection open attempt to be retried immediately for Azure SQL databases, thereby improving the performance of cloud-enabled apps. For all other connection attempts, the connection pool blocking period continues to be enforced. +Starting with the .NET Framework 4.6.2, for connection open requests to known +Azure SQL databases (*.database.windows.net, *.database.chinacloudapi.cn, +*.database.usgovcloudapi.net, *.database.cloudapi.de), the connection pool +blocking period is removed, and connection open errors are not cached. Attempts +to retry connection open requests will occur almost immediately after transient +connection errors. This change allows the connection open attempt to be retried +immediately for Azure SQL databases, thereby improving the performance of cloud- +enabled apps. For all other connection attempts, the connection pool blocking +period continues to be enforced. + +In the .NET Framework 4.6.1 and earlier versions, when an app encounters a +transient connection failure when connecting to a database, the connection +attempt cannot be retried quickly, because the connection pool caches the error +and re-throws it for 5 seconds to 1 minute. For more information, see +[SQL Server Connection Pooling (ADO.NET)](https://msdn.microsoft.com/en-us/library/8xx3tyca(v=vs.110).aspx). +This behavior is problematic for connections to Azure SQL databases, which often +fail with transient errors that are typically recovered from within a few +seconds. The connection pool blocking feature means that the app cannot connect +to the database for an extensive period, even though the database is available +and the app needs to render within a few seconds. -In the .NET Framework 4.6.1 and earlier versions, when an app encounters a transient connection failure when connecting to a database, the connection attempt cannot be retried quickly, because the connection pool caches the error and re-throws it for 5 seconds to 1 minute. For more information, see [SQL Server Connection Pooling (ADO.NET)](https://msdn.microsoft.com/en-us/library/8xx3tyca(v=vs.110).aspx). This behavior is problematic for connections to Azure SQL databases, which often fail with transient errors that are typically recovered from within a few seconds. The connection pool blocking feature means that the app cannot connect to the database for an extensive period, even though the database is available and the app needs to render within a few seconds. - - [ ] Quirked - [ ] Build-time break ### Recommended Action -If this behavior is undesirable, the connection pool blocking period can be configured by setting the `P:System.Data.SqlClient.SqlConnectionStringBuilder.PoolBlockingPeriod` property introduced in the .NET Framework 4.6.2. The value of the property is a member of the `T:System.Data.SqlClient.PoolBlockingPeriod` enumeration that can take either of three values: -- `F:System.Data.SqlClient.PoolBlockingPeriod.AlwaysBlock` -- `F:System.Data.SqlClient.PoolBlockingPeriod.Auto` -- `F.System.Data.SqlClient.PoolBlockingPeriod.NeverBlock` +If this behavior is undesirable, the connection pool blocking period can be +configured by setting the +property introduced in the .NET Framework 4.6.2. The value of the property is a +member of the + enumeration +that can take either of three values: + +- +- +- -The previous behavior can be restored by setting the `P:System.Data.SqlClient.SqlConnectionStringBuilder.PoolBlockingPeriod` property to `F:System.Data.SqlClient.PoolBlockingPeriod.AlwaysBlock`. +The previous behavior can be restored by setting the + +property to . ### Affected APIs - `M:System.Data.Common.DbConnection.OpenAsync` diff --git a/Documentation/compatibility/contentdisposition-datetimes-returns-slightly-different-string.md b/Documentation/compatibility/contentdisposition-datetimes-returns-slightly-different-string.md index 7df330e37..0aeafb38d 100644 --- a/Documentation/compatibility/contentdisposition-datetimes-returns-slightly-different-string.md +++ b/Documentation/compatibility/contentdisposition-datetimes-returns-slightly-different-string.md @@ -10,13 +10,29 @@ Minor Available ### Change Description -String representations of ContentDispositions have been updated, beginning in 4.6, to always represent the hour component of a DateTime with two digits. This is to comply with [RFC822](http://www.ietf.org/rfc/rfc0822.txt) and [RFC2822](http://www.ietf.org/rfc/rfc2822.txt). This causes `ContentDisposition.ToString` to return a slightly different string in 4.6 in scenarios where one of the disposition's time elements was before 10:00 AM. Note that ContentDispositions are sometimes serialized via converting them to strings, so any ContentDisposition ToString operations, serialization, or GetHashCode calls should be reviewed. + +String representations of +'s have been +updated, beginning in 4.6, to always represent the hour component of a + with two digits. This is to comply +with [RFC822](http://www.ietf.org/rfc/rfc0822.txt) and +[RFC2822](http://www.ietf.org/rfc/rfc2822.txt). This causes + +to return a slightly different string in 4.6 in scenarios where one of the +disposition's time elements was before 10:00 AM. Note that +ContentDispositions are sometimes serialized via converting them to strings, +so any +operations, serialization, or GetHashCode calls should be reviewed. - [ ] Quirked - [ ] Build-time break ### Recommended Action -Do not expect that string representations of ContentDispositions from different .NET Framework versions will correctly compare to one another. Convert the strings back to ContentDispositions, if possible, before conducting a comparison. + +Do not expect that string representations of ContentDispositions from different +.NET Framework versions will correctly compare to one another. Convert the +strings back to ContentDispositions, if possible, before conducting a +comparison. ### Affected APIs * `M:System.Net.Mime.ContentDisposition.ToString` diff --git a/Documentation/compatibility/cor_prf_gc_root_handles-are-not-being-enumerated-by-profilers.md b/Documentation/compatibility/cor_prf_gc_root_handles-are-not-being-enumerated-by-profilers.md index 1bbd0a286..bd5b29339 100644 --- a/Documentation/compatibility/cor_prf_gc_root_handles-are-not-being-enumerated-by-profilers.md +++ b/Documentation/compatibility/cor_prf_gc_root_handles-are-not-being-enumerated-by-profilers.md @@ -13,6 +13,7 @@ Minor Not planned ### Change Description + In the .NET Framework v4.5.1, the profiling API `RootReferences2()` is incorrectly never returning `COR_PRF_GC_ROOT_HANDLE` (they are returned as `COR_PRF_GC_ROOT_OTHER` instead). This issue is fixed beginning in the .NET Framework 4.6. - [ ] Quirked diff --git a/Documentation/compatibility/cspparameters_parentwindowhandle-now-expects-hwnd-value.md b/Documentation/compatibility/cspparameters_parentwindowhandle-now-expects-hwnd-value.md index 305f58971..6f846a8ad 100644 --- a/Documentation/compatibility/cspparameters_parentwindowhandle-now-expects-hwnd-value.md +++ b/Documentation/compatibility/cspparameters_parentwindowhandle-now-expects-hwnd-value.md @@ -10,18 +10,26 @@ Minor Investigating ### Change Description -The `CspParameters.ParentWindowHandle` value, introduced in .NET Framework 2.0, allows an application to register a parent window handle value such -that any UI required to access the key (such as a PIN prompt or consent dialog) opens as a modal child to the specified window. -Starting with apps that target the .NET Framework 4.7, a Windows Forms application can set the CspParameters.ParentWindowHandle property with code like the following: +The +value, introduced in .NET Framework 2.0, allows an application to register a +parent window handle value such that any UI required to access the key (such as +a PIN prompt or consent dialog) opens as a modal child to the specified window. + +Starting with apps that target the .NET Framework 4.7, a Windows Forms +application can set the +property with code like the following: ```C# cspParameters.ParentWindowHandle = form.Handle; ``` -In previous versions of the .NET Framework, the value was expected to be an IntPtr representing a location in memory where the +In previous versions of the .NET Framework, the value was expected to be an +representing a location in memory where the [HWND](https://msdn.microsoft.com/en-us/library/windows/desktop/aa383751(v=vs.85).aspx#HWND) value resided. -Setting the property to form.Handle on Windows 7 and earlier versions had no effect, but on Windows 8 and later versions, it results in a �CryptographicException: The parameter is incorrect.� +Setting the property to form.Handle on Windows 7 and earlier versions had no +effect, but on Windows 8 and later versions, it results in a +": The parameter is incorrect." - [X] Quirked - [ ] Build-time break diff --git a/Documentation/compatibility/currentculture-flows-across-tasks.md b/Documentation/compatibility/currentculture-flows-across-tasks.md index 2dd4d38f5..b1910405d 100644 --- a/Documentation/compatibility/currentculture-flows-across-tasks.md +++ b/Documentation/compatibility/currentculture-flows-across-tasks.md @@ -13,21 +13,42 @@ Minor Planned ### Change Description -Beginning in the .NET Framework 4.6, [CurrentCulture](https://msdn.microsoft.com/en-us/library/system.globalization.cultureinfo.currentculture%28v=vs.110%29.aspx) and [CurrentUICulture](https://msdn.microsoft.com/en-us/library/system.globalization.cultureinfo.currentuiculture%28v=vs.110%29.aspx) are stored in the thread's [ExecutionContext](https://msdn.microsoft.com/en-us/library/system.threading.executioncontext%28v=vs.110%29.aspx), which flows across asynchronous operations. -This means that changes to CurrentCulture or CurrentUICulture will be reflected in tasks which are later run asynchronously. This is different from the behavior of previous .NET Framework versions (which would reset CurrentCulture and CurrentUICulture in all asynchronous tasks). +Beginning in the .NET Framework 4.6, + and + +are stored in the thread's +, which flows +across asynchronous operations. + +This means that changes to +or +will be reflected in tasks which are later run asynchronously. This is different +from the behavior of previous .NET Framework versions (which would reset + +and +in all asynchronous tasks). - [x] Quirked - [ ] Build-time break ### Recommended Action -Apps affected by this change may work around it by explicitly setting the desired CurrentCulture or CurrentUICulture as the first operation in an async Task. Alternatively, the old behavior (of not flowing CurrentCulture/CurrentUICulture) may be opted into by setting the following compatibility switch: +Apps affected by this change may work around it by explicitly setting the desired or + +as the first operation in an async Task. Alternatively, the old behavior (of not +flowing /) +may be opted into by setting the following compatibility switch: + ```C# AppContext.SetSwitch("Switch.System.Globalization.NoAsyncCurrentCulture", true); ``` -This issue has been fixed by WPF in .NET Framework 4.6.2. It has also been fixed in .NET Frameworks 4.6, 4.6.1 through [KB 3139549](https://support.microsoft.com/en-us/kb/3139549). -Applications targeting .NET 4.6 or later will automatically get the right behavior in WPF applications - CurrentCulture/CurrentUICulture would be preserved across Dispatcher operations. +This issue has been fixed by WPF in .NET Framework 4.6.2. It has also been fixed +in .NET Frameworks 4.6, 4.6.1 through [KB 3139549](https://support.microsoft.com/en-us/kb/3139549). +Applications targeting .NET 4.6 or later will automatically get the right +behavior in WPF applications - +/) +would be preserved across Dispatcher operations. ### Affected APIs * `M:System.Globalization.CultureInfo.set_CurrentCulture(System.Globalization.CultureInfo)` diff --git a/Documentation/compatibility/currentculture-not-preserved-across-wpf-dispatcher-operations.md b/Documentation/compatibility/currentculture-not-preserved-across-wpf-dispatcher-operations.md index 6bed35ce3..da136b19f 100644 --- a/Documentation/compatibility/currentculture-not-preserved-across-wpf-dispatcher-operations.md +++ b/Documentation/compatibility/currentculture-not-preserved-across-wpf-dispatcher-operations.md @@ -13,26 +13,65 @@ Minor Planned ### Change Description -Beginning in the .NET Framework 4.6, changes to CurrentCulture or CurrentUICulture made within a [Dispatcher](https://msdn.microsoft.com/en-us/library/system.windows.threading.dispatcher%28v=vs.110%29.aspx) will be lost at the end of that dispatcher operation. Similarly, changes to CurrentCulture or CurrentUICulture made outside of a Dispatcher operation may not be reflected when that operation executes. -Practically speaking, this means that CurrentCulture and CurrentUICulture changes may not flow between WPF UI callbacks and other code in a WPF application. - -This is due to a change in [ExecutionContext](https://msdn.microsoft.com/en-us/library/system.threading.executioncontext%28v=vs.110%29.aspx) that causes CurrentCulture and CurrentUICulture to be stored in the execution context beginning with apps targeting the .NET Framework 4.6. WPF dispatcher operations store the execution context used to begin the operation and restore the previous context when the operation is completed. Because CurrentCulture and CurrentUICulture are now part of that context, changes to them within a dispatcher operation are not persisted outside of the operation. +Beginning in the .NET Framework 4.6, changes to + or + +made within a +will be lost at the end of that dispatcher operation. Similarly, changes to + or + +made outside of a Dispatcher operation may not be reflected when that operation +executes. + +Practically speaking, this means that + and + +changes may not flow between WPF UI callbacks and other code in a WPF +application. + +This is due to a change in + that causes + and + to +be stored in the execution context beginning with apps targeting the .NET +Framework 4.6. WPF dispatcher operations store the execution context used to +begin the operation and restore the previous context when the operation is +completed. Because + and + +are now part of that context, changes to them within a dispatcher operation are +not persisted outside of the operation. - [x] Quirked - [ ] Build-time break ### Recommended Action -Apps affected by this change may work around it by storing the desired CurrentCulture or CurrentUICulture in a field and checking in all Dispatcher operation bodies (including UI event callback handlers) that the correct CurrentCulture and CurrentUICulture are set. Alternatively, because the ExecutionContext change underlying this WPF change only affects apps targeting the .NET Framework 4.6 or newer, this break can be avoided by targeting the .NET Framework 4.5.2. -Apps that target .NET Framework 4.6 or later can also work around this by setting the following compatibility switch: +Apps affected by this change may work around it by storing the desired + or + in +a field and checking in all Dispatcher operation bodies (including UI event +callback handlers) that the correct + and + +are set. Alternatively, because the ExecutionContext change underlying this WPF +change only affects apps targeting the .NET Framework 4.6 or newer, this break +can be avoided by targeting the .NET Framework 4.5.2. + +Apps that target .NET Framework 4.6 or later can also work around this by +setting the following compatibility switch: ``` AppContext.SetSwitch("Switch.System.Globalization.NoAsyncCurrentCulture", true); ``` -This issue has been fixed by WPF in .NET Framework 4.6.2. It has also been fixed in .NET Frameworks 4.6, 4.6.1 through [KB 3139549](https://support.microsoft.com/en-us/kb/3139549). -Applications targeting .NET 4.6 or later will automatically get the right behavior in WPF applications - CurrentCulture/CurrentUICulture would be preserved across Dispatcher operations. +This issue has been fixed by WPF in .NET Framework 4.6.2. It has also been fixed +in .NET Frameworks 4.6, 4.6.1 through [KB 3139549](https://support.microsoft.com/en-us/kb/3139549). +Applications targeting .NET 4.6 or later will automatically +get the right behavior in WPF applications - +/) +would be preserved across Dispatcher operations. ### Affected APIs * Not detectable via API analysis diff --git a/Documentation/compatibility/datagridcellspanel_bringintoview-throws-argumentoutofrangeexception.md b/Documentation/compatibility/datagridcellspanel_bringintoview-throws-argumentoutofrangeexception.md index 4ae280b52..00fc3f441 100644 --- a/Documentation/compatibility/datagridcellspanel_bringintoview-throws-argumentoutofrangeexception.md +++ b/Documentation/compatibility/datagridcellspanel_bringintoview-throws-argumentoutofrangeexception.md @@ -13,17 +13,22 @@ Edge NotPlanned ### Change Description -`M:System.Windows.Controls.DataGrid.ScrollIntoView` will work asynchronously when column virtualization is enabled but the column widths -have not yet been determined. If columns are removed before the asynchronous work happens, an `ArgumentOutOfRangeException` can occur. + + +will work asynchronously when column virtualization is enabled but the column +widths have not yet been determined. If columns are removed before the +asynchronous work happens, an + can occur. - [ ] Quirked - [ ] Build-time break ### Recommended Action + Any one of the following: 1. Upgrade to .NET 4.7. 2. Install the latest servicing patch for .NET 4.6.2. -3. Avoid removing columns until the asynchronous response to `M:System.Windows.Controls.DataGrid.ScrollIntoView` has completed. +3. Avoid removing columns until the asynchronous response to has completed. ### Affected APIs - `M:System.Windows.Controls.DataGrid.ScrollIntoView(System.Object)` diff --git a/Documentation/compatibility/dataobject_getdata-now-retrieves-data-as-utf-8.md b/Documentation/compatibility/dataobject_getdata-now-retrieves-data-as-utf-8.md index ae496043e..263ae6998 100644 --- a/Documentation/compatibility/dataobject_getdata-now-retrieves-data-as-utf-8.md +++ b/Documentation/compatibility/dataobject_getdata-now-retrieves-data-as-utf-8.md @@ -10,15 +10,27 @@ Edge Available ### Change Description -For apps that target the .NET Framework 4 or that run on the .NET Framework 4.5.1 or earlier versions, DataObject.GetData retrieves HTML-formatted data as an ASCII string. As a result, non-ASCII characters (characters whose ASCII codes are greater than 0x7F) are represented by two random characters. -For apps that target the .NET Framework 4.5 or later and run on the .NET Framework 4.5.2, `DataObject.GetData` retrieves HTML-formatted data as UTF-8, which represents characters greater than 0x7F correctly. +For apps that target the .NET Framework 4 or that run on the .NET Framework +4.5.1 or earlier versions, `DataObject.GetData` retrieves HTML-formatted data as +an ASCII string. As a result, non-ASCII characters (characters whose ASCII codes +are greater than 0x7F) are represented by two random characters. + +For apps that target the .NET Framework 4.5 or later and run on the .NET +Framework 4.5.2, `DataObject.GetData` retrieves HTML-formatted data as UTF-8, +which represents characters greater than 0x7F correctly. - [x] Quirked - [ ] Build-time break ### Recommended Action -If you implemented a workaround for the encoding problem with HTML-formatted strings (for example, by explicitly encoding the HTML string retrieved from the Clipboard by passing it to the UTF8Encoding.GetString method) and you're retargeting your app from version 4 to 4.5, that workaround should be removed. + +If you implemented a workaround for the encoding problem with HTML-formatted +strings (for example, by explicitly encoding the HTML string retrieved from the +Clipboard by passing it to +) +and you're retargeting your app from version 4 to 4.5, that workaround should be +removed. If the old behavior is needed for some reason, the app can target the .NET Framework 4.0 to get that behavior. diff --git a/Documentation/compatibility/dbparameter_precision-and-dbparameter_scale-are-now-public-virtual-members.md b/Documentation/compatibility/dbparameter_precision-and-dbparameter_scale-are-now-public-virtual-members.md index 60de604e7..2a48f155f 100644 --- a/Documentation/compatibility/dbparameter_precision-and-dbparameter_scale-are-now-public-virtual-members.md +++ b/Documentation/compatibility/dbparameter_precision-and-dbparameter_scale-are-now-public-virtual-members.md @@ -10,13 +10,22 @@ Minor Available ### Change Description - DbParameter.Precision and DbParameter.Scale are implemented as public virtual properties. They replace the corresponding explicit interface implementations, DbParameter.IDbDataParameter.Precision and DbParameter.IDbDataParameter.Scale. + + and +are implemented as public virtual properties. They replace the corresponding +explicit interface implementations, + and +. - [ ] Quirked - [x] Build-time break ### Recommended Action -When re-building an ADO.NET database provider, these differences will require the 'override' keyword to be applied to the Precision and Scale properties. This is only needed when re-building the components; exisiting binaries will continue to work. + +When re-building an ADO.NET database provider, these differences will require +the 'override' keyword to be applied to the Precision and Scale properties. This +is only needed when re-building the components; exisiting binaries will continue +to work. ### Affected APIs * `P:System.Data.Common.DbParameter.Precision` diff --git a/Documentation/compatibility/different-exception-handling-for-objectcontext_createdatabase-and-dbproviderservices_createdatabase-methods.md b/Documentation/compatibility/different-exception-handling-for-objectcontext_createdatabase-and-dbproviderservices_createdatabase-methods.md index 1e2f47aa8..f82cd0ddf 100644 --- a/Documentation/compatibility/different-exception-handling-for-objectcontext_createdatabase-and-dbproviderservices_createdatabase-methods.md +++ b/Documentation/compatibility/different-exception-handling-for-objectcontext_createdatabase-and-dbproviderservices_createdatabase-methods.md @@ -10,13 +10,22 @@ Minor Available ### Change Description -Beginning in .NET 4.5, if database creation fails, `CreateDatabase` methods will attempt to drop the empty database. If that operation succeeds, the original `SQLException` will be propagated (instead of the `InvalidOperationException` that was always thrown in .NET 4.0) + +Beginning in .NET 4.5, if database creation fails, `CreateDatabase` methods will +attempt to drop the empty database. If that operation succeeds, the original + will be +propagated (instead of the +that was always thrown in .NET 4.0) - [ ] Quirked - [ ] Build-time break ### Recommended Action -When catching an InvalidOperationException while executing ObjectContext.CreateDatabase or DbProviderServices.CreateDatabase, SQLExceptions should now also be caught. +When catching an +while executing +or +, +SQLExceptions should now also be caught. ### Affected APIs * `M:System.Data.Objects.ObjectContext.CreateDatabase` diff --git a/Documentation/compatibility/ef-no-longer-throws-for-queryviews-with-specific-characteristics.md b/Documentation/compatibility/ef-no-longer-throws-for-queryviews-with-specific-characteristics.md index e243fe620..090c54db1 100644 --- a/Documentation/compatibility/ef-no-longer-throws-for-queryviews-with-specific-characteristics.md +++ b/Documentation/compatibility/ef-no-longer-throws-for-queryviews-with-specific-characteristics.md @@ -10,16 +10,26 @@ Edge Not planned ### Change Description -Entity Framework no longer throws a StackOverflowException exception when an app executes a query that involves a QueryView with a 0..1 navigation property that attempts to include the related entities as part of the query. For example, by calling `.Include(e => e.RelatedNavProp)`. + +Entity Framework no longer throws a + exception when an app +executes a query that involves a QueryView with a 0..1 navigation property that +attempts to include the related entities as part of the query. For example, by +calling `.Include(e => e.RelatedNavProp)`. - [ ] Quirked - [ ] Build-time break ### Recommended Action -This change only affects code that uses QueryViews with 1-0..1 relationships when running queries that call .Include. It improves reliability and should be transparent to almost all apps. However, if it causes unexpected behavior, you can disable it by adding the following entry to the `` section of the app's configuration file: + +This change only affects code that uses QueryViews with 1-0..1 relationships +when running queries that call .Include. It improves reliability and should be +transparent to almost all apps. However, if it causes unexpected behavior, you +can disable it by adding the following entry to the `` section of +the app's configuration file: ```xml - + ``` ### Affected APIs diff --git a/Documentation/compatibility/ef-version-must-match-netfx-version.md b/Documentation/compatibility/ef-version-must-match-netfx-version.md index b58157d0c..dc655d28e 100644 --- a/Documentation/compatibility/ef-version-must-match-netfx-version.md +++ b/Documentation/compatibility/ef-version-must-match-netfx-version.md @@ -10,7 +10,13 @@ Major Planned ### Change Description -The entity framework version should be matched with the .NET framework version. Entity Framework 5 is recommended for .NET 4.5. There are some known issues with EF 4.x in a .NET 4.5 project around `System.ComponentModel.DataAnnotations`. In .NET 4.5, these were moved to a different assembly, so there are issues determining which annotations to use. + +The entity framework version should be matched with the .NET framework version. +Entity Framework 5 is recommended for .NET 4.5. There are some known issues with +EF 4.x in a .NET 4.5 project around +. In .NET +4.5, these were moved to a different assembly, so there are issues determining +which annotations to use. - [ ] Quirked - [x] Build-time break diff --git a/Documentation/compatibility/encoderparameter-ctor-is-obsolete.md b/Documentation/compatibility/encoderparameter-ctor-is-obsolete.md index 9519d169b..079acbb07 100644 --- a/Documentation/compatibility/encoderparameter-ctor-is-obsolete.md +++ b/Documentation/compatibility/encoderparameter-ctor-is-obsolete.md @@ -10,13 +10,20 @@ Minor Available ### Change Description -The `EncoderParameter.EncoderParameter(Encoder, Int32, Int32, Int32)` constructor is obsolete now and will introduce build warnings if used. +The +constructor is obsolete now and will introduce build warnings if used. - [ ] Quirked - [x] Build-time break ### Recommended Action -Although the `EncoderParameter.EncoderParameter(Encoder, Int32, Int32, Int32)` constructor will continue to work, the following constructor should be used instead to avoid the obsolete build warning when re-compiling code with .NET 4.5 tools: [EncoderParameter.EncoderParameter(Encoder, Int32, EncoderParameterValueType, IntPtr)](https://msdn.microsoft.com/en-us/library/hh875096(v=vs.110).aspx). +Although the + + +constructor will continue to work, the following constructor should be used +instead to avoid the obsolete build warning when re-compiling code with .NET 4.5 +tools: +. ### Affected APIs * `M:System.Drawing.Imaging.EncoderParameter.#ctor(System.Drawing.Imaging.Encoder,System.Int32,System.Int32,System.Int32,System.Int32)` diff --git a/Documentation/compatibility/enumerable_empty-always-returns-cached-instance.md b/Documentation/compatibility/enumerable_empty-always-returns-cached-instance.md index 73a72d20f..8a0b1c3a1 100644 --- a/Documentation/compatibility/enumerable_empty-always-returns-cached-instance.md +++ b/Documentation/compatibility/enumerable_empty-always-returns-cached-instance.md @@ -10,15 +10,30 @@ Edge Available ### Change Description -Beginning in .NET 4.5, `Enumerable.Empty` always returns a cached internal instance `IEnumerable`. -Previously, `Enumerable.Empty` would cache an empty `IEnumerable` at the time the API was called, meaning that in some conditions in which `Enumerable.Empty` was called rapidly and concurrently, different instances of the type could be returned for different calls to the API. +Beginning in .NET 4.5, + always +returns a cached internal instance +. + +Previously, +would cache an empty + at +the time the API was called, meaning that in some conditions in which + was called +rapidly and concurrently, different instances of the type could be returned for +different calls to the API. - [ ] Quirked - [ ] Build-time break ### Recommended Action -Because the previous behavior was non-deterministic, code is unlikely to depend on it. However, in the unlikely case that empty enumerables are being compared and expected to sometimes be unequal, explicit empty arrays should be created (`new T[0]`) instead of using `Enumerable.Empty`. + +Because the previous behavior was non-deterministic, code is unlikely to depend +on it. However, in the unlikely case that empty enumerables are being compared +and expected to sometimes be unequal, explicit empty arrays should be created +(`new T[0]`) instead of using +. ### Affected APIs * ```M:System.Linq.Enumerable.Empty``1``` diff --git a/Documentation/compatibility/error-codes-for-maxrequestlength-or-maxreceivedmessagesize-are-different.md b/Documentation/compatibility/error-codes-for-maxrequestlength-or-maxreceivedmessagesize-are-different.md index 9ea913fab..9a7d69345 100644 --- a/Documentation/compatibility/error-codes-for-maxrequestlength-or-maxreceivedmessagesize-are-different.md +++ b/Documentation/compatibility/error-codes-for-maxrequestlength-or-maxreceivedmessagesize-are-different.md @@ -10,15 +10,24 @@ Edge Not planned ### Change Description -Messages in WCF web services hosted in Internet Information Services (IIS) or ASP.NET Development Server that exceed maxRequestLength (in ASP.NET) or maxReceivedMessageSize (in WCF) have different error code -The HTTP status code has changed from 400 (Bad Request) to 413 (Request Entity Too Large), and messages that exceed either the maxRequestLength or the maxReceivedMessageSize setting throw a ProtocolException exception. This includes cases in which the transfer mode is Streamed. +Messages in WCF web services hosted in Internet Information Services (IIS) or +ASP.NET Development Server that exceed maxRequestLength (in ASP.NET) or +maxReceivedMessageSize (in WCF) have different error code + +The HTTP status code has changed from 400 (Bad Request) to 413 (Request Entity +Too Large), and messages that exceed either the maxRequestLength or the +maxReceivedMessageSize setting throw a + exception. +This includes cases in which the transfer mode is Streamed. - [ ] Quirked - [ ] Build-time break ### Recommended Action -This change facilitates debugging in cases where the message length exceeds the limits allowed by ASP.NET or WCF. + +This change facilitates debugging in cases where the message length exceeds the +limits allowed by ASP.NET or WCF. You must modify any code that performs processing based on an HTTP 400 status code. diff --git a/Documentation/compatibility/etw-eventlisteners-do-not-capture-events-from-providers-with-explicit-keywords.md b/Documentation/compatibility/etw-eventlisteners-do-not-capture-events-from-providers-with-explicit-keywords.md index b4b35d0f8..627e0dff0 100644 --- a/Documentation/compatibility/etw-eventlisteners-do-not-capture-events-from-providers-with-explicit-keywords.md +++ b/Documentation/compatibility/etw-eventlisteners-do-not-capture-events-from-providers-with-explicit-keywords.md @@ -13,15 +13,24 @@ Edge Available ### Change Description -ETW EventListeners with a blank keyword mask do not properly capture events from providers with explicit keywords. In the .NET Framework 4.5, the TPL provider began providing explicit keywords and triggered this issue. In the .NET Framework 4.6, EventListeners have been updated to no longer have this issue. + +ETW EventListeners with a blank keyword mask do not properly capture events from +providers with explicit keywords. In the .NET Framework 4.5, the TPL provider +began providing explicit keywords and triggered this issue. In the .NET +Framework 4.6, EventListeners have been updated to no longer have this issue. - [ ] Quirked - [ ] Build-time break ### Recommended Action -To work around this problem, replace calls to EnableEvents(eventSource, level) with calls to the EnableEvents overload that explicitly specifies the "any keywords" mask to use: `EnableEvents(eventSource, level, unchecked((EventKeywords)0xFFFFffffFFFFffff))`. -Alternatively, this issue has been fixed in the .NET Framework 4.6 and may be addressed by upgrading to that version of the .NET Framework. +To work around this problem, replace calls to + +with calls to the EnableEvents overload that explicitly specifies the "any +keywords" mask to use: `EnableEvents(eventSource, level, unchecked((EventKeywords)0xFFFFffffFFFFffff))`. + +Alternatively, this issue has been fixed in the .NET Framework 4.6 and may be +addressed by upgrading to that version of the .NET Framework. ### Affected APIs * `M:System.Diagnostics.Tracing.EventListener.EnableEvents(System.Diagnostics.Tracing.EventSource,System.Diagnostics.Tracing.EventLevel)` diff --git a/Documentation/compatibility/eventlistener-truncates-strings-with-embedded-nulls.md b/Documentation/compatibility/eventlistener-truncates-strings-with-embedded-nulls.md index e8b6a682d..df3c6b746 100644 --- a/Documentation/compatibility/eventlistener-truncates-strings-with-embedded-nulls.md +++ b/Documentation/compatibility/eventlistener-truncates-strings-with-embedded-nulls.md @@ -10,13 +10,22 @@ Edge Available ### Change Description -EventListener truncates strings with embedded nulls. Null characters are not supported by the EventSource class. The change only affects apps that use EventListener to read EventSource data in process and that use null characters as delimiters. + + truncates +strings with embedded nulls. Null characters are not supported by the + class. The +change only affects apps that use + to read + data in +process and that use null characters as delimiters. - [ ] Quirked - [ ] Build-time break ### Recommended Action -EventSource data should be updated, if possible, to not use embedded null characters. + + data should +be updated, if possible, to not use embedded null characters. ### Affected APIs * `M:System.Diagnostics.Tracing.EventListener.#ctor` diff --git a/Documentation/compatibility/eventsource_writeevent-impls-must-pass-writeevent-the-same-parameters-that-it-received-(plus-id).md b/Documentation/compatibility/eventsource_writeevent-impls-must-pass-writeevent-the-same-parameters-that-it-received-(plus-id).md index 4f835a00a..7afbe8e49 100644 --- a/Documentation/compatibility/eventsource_writeevent-impls-must-pass-writeevent-the-same-parameters-that-it-received-(plus-id).md +++ b/Documentation/compatibility/eventsource_writeevent-impls-must-pass-writeevent-the-same-parameters-that-it-received-(plus-id).md @@ -10,13 +10,22 @@ Minor Available ### Change Description -The runtime now enforces the contract that specifies the following: A class derived from EventSource that defines an ETW event method must call the base class EventSource.WriteEvent method with the event ID followed by the same arguments that the ETW event method was passed. + +The runtime now enforces the contract that specifies the following: A class +derived from +that defines an ETW event method must call the base class `EventSource.WriteEvent` +method with the event ID followed by the same arguments that the ETW event +method was passed. - [ ] Quirked - [ ] Build-time break ### Recommended Action -An IndexOutOfRangeException exception is thrown if an EventListener reads EventSource data in process for an event source that violates this contract. + +An exception is +thrown if an +reads data in +process for an event source that violates this contract. ### Affected APIs * Not detectable via API analysis diff --git a/Documentation/compatibility/exception-message-has-changed-for-failed-datacontract-serialization-in-case-of-an-unknown-type.md b/Documentation/compatibility/exception-message-has-changed-for-failed-datacontract-serialization-in-case-of-an-unknown-type.md index bc80e35a4..1a452b25b 100644 --- a/Documentation/compatibility/exception-message-has-changed-for-failed-datacontract-serialization-in-case-of-an-unknown-type.md +++ b/Documentation/compatibility/exception-message-has-changed-for-failed-datacontract-serialization-in-case-of-an-unknown-type.md @@ -10,13 +10,20 @@ Edge Planned ### Change Description -Beginning in the .NET Framework 4.6, the exception message given if a DataContractSerializer or DataContractJsonSerializer fails to serialize or deserialize due to missing 'known types' has been clarified. + +Beginning in the .NET Framework 4.6, the exception message given if a + +or +fails to serialize or deserialize due to missing 'known types' has been clarified. - [ ] Quirked - [ ] Build-time break ### Recommended Action -Apps should not depend on specific exception messages. If an app depending on this message, please either update it to expect the new message or (preferably) change it to depend only on the exception type + +Apps should not depend on specific exception messages. If an app depending on +this message, please either update it to expect the new message or (preferably) +change it to depend only on the exception type. ### Affected APIs * `M:System.Runtime.Serialization.Json.DataContractJsonSerializer.#ctor(System.Type)` diff --git a/Documentation/compatibility/exceptions-during-unobserved-processing-in-system_threading_tasks_task-no-longer-propagate-on-finalizer-thread.md b/Documentation/compatibility/exceptions-during-unobserved-processing-in-system_threading_tasks_task-no-longer-propagate-on-finalizer-thread.md index 3ae84713b..adc303940 100644 --- a/Documentation/compatibility/exceptions-during-unobserved-processing-in-system_threading_tasks_task-no-longer-propagate-on-finalizer-thread.md +++ b/Documentation/compatibility/exceptions-during-unobserved-processing-in-system_threading_tasks_task-no-longer-propagate-on-finalizer-thread.md @@ -10,13 +10,26 @@ Edge Planned ### Change Description -Because the System.Threading.Tasks.Task class represents an asynchronous operation, it catches all non-severe exceptions that occur during asynchronous processing. In the .NET Framework 4.5, if an exception is not observed and your code never waits on the task, the exception will no longer propagate on the finalizer thread and crash the process during garbage collection. This change enhances the reliability of applications that use the Task class to perform unobserved asynchronous processing. + +Because the class +represents an asynchronous operation, it catches all non-severe exceptions that +occur during asynchronous processing. In the .NET Framework 4.5, if an exception +is not observed and your code never waits on the task, the exception will no +longer propagate on the finalizer thread and crash the process during garbage +collection. This change enhances the reliability of applications that use the +Task class to perform unobserved asynchronous processing. - [ ] Quirked - [ ] Build-time break ### Recommended Action -If an app depends on unobserved asynchronous exceptions propagating to the finalizer thread, the previous behavior can be restored by providing an appropriate handler for the [TaskScheduler.UnobservedTaskException](https://msdn.microsoft.com/en-us/library/system.threading.tasks.taskscheduler.unobservedtaskexception(v=vs.110).aspx) event, or by setting a [runtime configuration element](https://msdn.microsoft.com/en-us/library/jj160346%28v=vs.110%29.aspx). + +If an app depends on unobserved asynchronous exceptions propagating to the +finalizer thread, the previous behavior can be restored by providing an +appropriate handler for the + +event, or by setting a +[runtime configuration element](https://msdn.microsoft.com/en- us/library/jj160346%28v=vs.110%29.aspx). ### Affected APIs * `M:System.Threading.Tasks.Task.Run(System.Action)` diff --git a/Documentation/compatibility/flowdocument-may-show-an-extra-line-of-text.md b/Documentation/compatibility/flowdocument-may-show-an-extra-line-of-text.md index e3bd2a834..ef8ee3cdb 100644 --- a/Documentation/compatibility/flowdocument-may-show-an-extra-line-of-text.md +++ b/Documentation/compatibility/flowdocument-may-show-an-extra-line-of-text.md @@ -10,13 +10,23 @@ Edge Planned ### Change Description -In some cases, a FlowDocument element will display an extra line of text when running on the .NET Framework 4.5 compared to how it displayed when run on the .NET Framework 4.0. There are no known cases of the change causing any text to be displayed poorly or illegibly, but it could cause text to appear that previously was omitted from a FlowDocument's view. + +In some cases, a + +element will display an extra line of text when running on the .NET Framework +4.5 compared to how it displayed when run on the .NET Framework 4.0. There are +no known cases of the change causing any text to be displayed poorly or +illegibly, but it could cause text to appear that previously was omitted from a +'s +view. - [ ] Quirked - [ ] Build-time break ### Recommended Action -In some cases, decreasing the display element's PageHeight property by one can restore the previous number of displayed lines. + +In some cases, decreasing the display element's PageHeight property by one can +restore the previous number of displayed lines. ### Affected APIs * `M:System.Windows.Documents.FlowDocument.#ctor` diff --git a/Documentation/compatibility/glyphrun_computeinkboundingbox()-and-formattedtext_extent-return-different-values-beginning-in-_net-4_5.md b/Documentation/compatibility/glyphrun_computeinkboundingbox()-and-formattedtext_extent-return-different-values-beginning-in-_net-4_5.md index 1ccb45a47..acc51e8d7 100644 --- a/Documentation/compatibility/glyphrun_computeinkboundingbox()-and-formattedtext_extent-return-different-values-beginning-in-_net-4_5.md +++ b/Documentation/compatibility/glyphrun_computeinkboundingbox()-and-formattedtext_extent-return-different-values-beginning-in-_net-4_5.md @@ -10,13 +10,25 @@ Edge Available ### Change Description -Improvements were made to GlyphRun.ComputeInkBoundingBox() and FormattedText.Extent in the .NET Framework 4.5 to address issues where the boxes were too small for the contained glyphs in some cases in the .NET Framework 4.0. As a result of this, some bounding boxes will be larger beginning in the .NET Framework 4.5, resulting in subtle differences in UI layout. + +Improvements were made to + +and + in +the .NET Framework 4.5 to address issues where the boxes were too small for the +contained glyphs in some cases in the .NET Framework 4.0. As a result of this, +some bounding boxes will be larger beginning in the .NET Framework 4.5, +resulting in subtle differences in UI layout. - [ ] Quirked - [ ] Build-time break ### Recommended Action -Be aware that some glyph bounding box sizes have increased. These changes will usually improve presentation and hit box testing, but if the older (pre-.NET 4.5) behavior is desired, it can be opted into by adding the following entry to the app.config file: + +Be aware that some glyph bounding box sizes have increased. These changes will +usually improve presentation and hit box testing, but if the older (pre-.NET +4.5) behavior is desired, it can be opted into by adding the following entry to +the app.config file: ```xml diff --git a/Documentation/compatibility/gridviews-with-allowcustompaging-set-to-true-may-fire-the-pageindexchanging-event-when-leaving-the-final-page-of-the-view.md b/Documentation/compatibility/gridviews-with-allowcustompaging-set-to-true-may-fire-the-pageindexchanging-event-when-leaving-the-final-page-of-the-view.md index 49b54dfe8..ee1d5ef8f 100644 --- a/Documentation/compatibility/gridviews-with-allowcustompaging-set-to-true-may-fire-the-pageindexchanging-event-when-leaving-the-final-page-of-the-view.md +++ b/Documentation/compatibility/gridviews-with-allowcustompaging-set-to-true-may-fire-the-pageindexchanging-event-when-leaving-the-final-page-of-the-view.md @@ -13,13 +13,28 @@ Minor Planned ### Change Description -A bug in the .NET Framework 4.5 causes `PageIndexChanging` to sometimes not fire for GridViews that have enabled `AllowCustomPaging` + +A bug in the .NET Framework 4.5 causes + +to sometimes not fire for +s that have +enabled . - [ ] Quirked - [ ] Build-time break ### Recommended Action -This issue has been fixed in the .NET Framework 4.6 and may be addressed by upgrading to that version of the .NET Framework. As a work-around, the app can do an explicit BindGrid on any `Page_Load` that would hit these conditions (the GridView is on the last page and LastPageSize is different from PageSize). Alternatively, the app can be modified to allow paging (instead of custom paging), as that scenario does not demonstrate the problem. + +This issue has been fixed in the .NET Framework 4.6 and may be addressed by +upgrading to that version of the .NET Framework. As a work-around, the app can +do an explicit BindGrid on any `Page_Load` that would hit these conditions (the + is on the last +page and +Last is +different from +). +Alternatively, the app can be modified to allow paging (instead of custom +paging), as that scenario does not demonstrate the problem. ### Affected APIs * `P:System.Web.UI.WebControls.GridView.AllowCustomPaging` diff --git a/Documentation/compatibility/horizontal-scrolling-and-virtualization.md b/Documentation/compatibility/horizontal-scrolling-and-virtualization.md index 90bd3bd68..ec2ec1fc7 100644 --- a/Documentation/compatibility/horizontal-scrolling-and-virtualization.md +++ b/Documentation/compatibility/horizontal-scrolling-and-virtualization.md @@ -10,42 +10,59 @@ Minor Planned ### Change Description -This change applies to an ItemsControl that does its own virtualization in the -direction orthogonal to the main scrolling direction (the chief example is -DataGrid with EnableColumnVirtualization="True"). The outcome of certain -horizontal scolling operations has been changed to produce results that are more -intuitive and more analogous to the results of comparable vertical operations. - -The operations include "Scroll Here" and "Right Edge", to use the names from the menu -obtained by right-clicking a horizontal scrollbar. Both of these compute a -candidate offset and call IScrollInfo.SetHorizontalOffset. After scrolling to the new -offset, the notion of "here" or "right edge" may have changed because newly -de-virtualized content has changed the value of IScrollInfo.ExtentWidth. + +This change applies to an + that does its +own virtualization in the direction orthogonal to the main scrolling direction +(the chief example is + with +EnableColumnVirtualization="True"). The outcome of certain horizontal scolling +operations has been changed to produce results that are more intuitive and more +analogous to the results of comparable vertical operations. + +The operations include "Scroll Here" and "Right Edge", to use the names from the +menu obtained by right-clicking a horizontal scrollbar. Both of these compute a +candidate offset and call +. + +After scrolling to the new offset, the notion of "here" or "right edge" may have +changed because newly de-virtualized content has changed the value of +. Prior to .Net 4.6.2, the scroll operation simply uses the candidate offset, even -though it may not be "here" or at the "right edge" any more. This results in effects -like "bouncing" the scroll thumb, best illustrated by example. Suppose a DataGrid has -ExtentWidth=1000 and Width=200. A scroll to "Right Edge" uses candidate offset -1000 - 200 = 800. While scrolling to that offset, new columns are de-virtualized; -let's suppose they are very wide, so that the ExtentWidth changes to 2000. The scroll -ends with HorizontalOffset=800, and the thumb "bounces" back to near the middle of -the scrollbar - precisely at 800/2000 = 40%. - -The change is to recompute a new candidate offset when this situation occurs, and -try again. (This is how vertical scrolling works already.) - -The change produces a more predictable and intuitive experience for the end user, -but it could also affect any app that depends on the exact value of HorizontalOffset -after a horizontal scroll, whether invoked by the end user or by an explicit call -to SetHorizontalOffset. +though it may not be "here" or at the "right edge" any more. This results in +effects like "bouncing" the scroll thumb, best illustrated by example. Suppose a + has +ExtentWidth=1000 and Width=200. A scroll to "Right Edge" uses candidate offset +1000 - 200 = 800. While scrolling to that offset, new columns are de- +virtualized; let's suppose they are very wide, so that the + +changes to 2000. The scroll ends with HorizontalOffset=800, and the thumb +"bounces" back to near the middle of the scrollbar - precisely at 800/2000 = +40%. + +The change is to recompute a new candidate offset when this situation occurs, +and try again. (This is how vertical scrolling works already.) + +The change produces a more predictable and intuitive experience for the end +user, but it could also affect any app that depends on the exact value of + +after a horizontal scroll, whether invoked by the end user or by an explicit +call to +. - [ ] Quirked // Uses some mechanism to turn the feature on or off, usually using runtime targeting, AppContext or config files. Needs to be turned on automatically for some situations. - [ ] Build-time break // Causes a break if attempted to recompile ### Recommended Action -An app that uses a predicted value for HorizontalOffset should be changed to -fetch the actual value (and the value of ExtentWidth) after any horizontal -scroll that could change ExtentWidth due to de-virtualization. + +An app that uses a predicted value for + +should be changed to fetch the actual value (and the value of +) +after any horizontal scroll that could change + +due to de-virtualization. ### Affected APIs * `T:System.Windows.Controls.Primitives.IScrollInfo` diff --git a/Documentation/compatibility/htmltextwriter-does-not-render-br-element-correctly.md b/Documentation/compatibility/htmltextwriter-does-not-render-br-element-correctly.md index 94fc9ecc3..54021cd24 100644 --- a/Documentation/compatibility/htmltextwriter-does-not-render-br-element-correctly.md +++ b/Documentation/compatibility/htmltextwriter-does-not-render-br-element-correctly.md @@ -10,13 +10,23 @@ Edge Available ### Change Description -Beginning in the .NET Framework 4.6, calling `HtmlTextWriter.RenderBeginTag()` and `HtmlTextWriter.RenderEndTag()` with a `
` element will correctly insert only one `
` (instead of two) + +Beginning in the .NET Framework 4.6, calling + +and + +with a `
` element will correctly insert only one `
` (instead of two) - [x] Quirked - [ ] Build-time break ### Recommended Action -If an app depended on the extra `
` tag, `HtmlTextWriter.RenderBeginTag()` should be called a second time. Note that this behavior change only affects apps that are targeting the .NET Framework 4.6, so another option is to target a previous version of the .NET Framework in order to get the old behavior. + +If an app depended on the extra `
` tag, + +should be called a second time. Note that this behavior change only affects apps +that are targeting the .NET Framework 4.6, so another option is to target a +previous version of the .NET Framework in order to get the old behavior. ### Affected APIs * `M:System.Web.UI.HtmlTextWriter.RenderBeginTag(System.String)` diff --git a/Documentation/compatibility/httprequest_contentencoding-property-prohibits-utf7.md b/Documentation/compatibility/httprequest_contentencoding-property-prohibits-utf7.md index 9db98c743..56eaf8ab3 100644 --- a/Documentation/compatibility/httprequest_contentencoding-property-prohibits-utf7.md +++ b/Documentation/compatibility/httprequest_contentencoding-property-prohibits-utf7.md @@ -10,13 +10,23 @@ Edge Available ### Change Description -Beginning in .NET Framework 4.5, UTF-7 encoding is prohibited in HttpRequests' bodies. Data for applications that depend on incoming UTF-7 data will not decode properly in some cases. + +Beginning in .NET Framework 4.5, UTF-7 encoding is prohibited in +s' +bodies. Data for applications that depend on incoming UTF-7 data will not decode +properly in some cases. - [ ] Quirked - [ ] Build-time break ### Recommended Action -Ideally, applications should be updated to not use UTF-7 encoding in HttpRequests. Alternatively, legacy behavior can be restored by using the `aspnet:AllowUtf7RequestContentEncoding` attribute of the [appSettings](https://msdn.microsoft.com/en-us/library/hh975440(v=vs.110).aspx) element. + +Ideally, applications should be updated to not use UTF-7 encoding in +s. Alternatively, legacy +behavior can be restored by using the `aspnet:AllowUtf7RequestContentEncoding` +attribute of the +[appSettings](https://msdn.microsoft.com/en-us/library/hh975440(v=vs.110).aspx) +element. ### Affected APIs * `P:System.Web.HttpRequest.ContentEncoding` diff --git a/Documentation/compatibility/httputility_javascriptstringencode-escapes-ampersand.md b/Documentation/compatibility/httputility_javascriptstringencode-escapes-ampersand.md index c2ddd0fcb..dfb101a20 100644 --- a/Documentation/compatibility/httputility_javascriptstringencode-escapes-ampersand.md +++ b/Documentation/compatibility/httputility_javascriptstringencode-escapes-ampersand.md @@ -10,13 +10,19 @@ Minor Available ### Change Description -Starting with the .NET Framework 4.5, JavaScriptStringEncode escapes the ampersand (&) character. +Starting with the .NET Framework 4.5, + +escapes the ampersand (&) character. - [ ] Quirked - [ ] Build-time break ### Recommended Action -If your app depends on the previous behavior of this method, you can add an aspnet:JavaScriptDoNotEncodeAmpersand setting to the [ASP.NET appSettings element](https://msdn.microsoft.com/en-us/library/hh975440(v=vs.110).aspx) in your configuration file. + +If your app depends on the previous behavior of this method, you can add an +aspnet:JavaScriptDoNotEncodeAmpersand setting to the +[ASP.NET appSettings element](https://msdn.microsoft.com/en-us/library/hh975440(v=vs.110).aspx) +in your configuration file. ### Affected APIs * `M:System.Web.HttpUtility.JavaScriptStringEncode(System.String)` diff --git a/Documentation/compatibility/iasyncresult_completedsynchronously-property-must-be-correct-for-the-resulting-task-to-complete.md b/Documentation/compatibility/iasyncresult_completedsynchronously-property-must-be-correct-for-the-resulting-task-to-complete.md index 3a2902ede..866ad2ac5 100644 --- a/Documentation/compatibility/iasyncresult_completedsynchronously-property-must-be-correct-for-the-resulting-task-to-complete.md +++ b/Documentation/compatibility/iasyncresult_completedsynchronously-property-must-be-correct-for-the-resulting-task-to-complete.md @@ -10,13 +10,25 @@ Edge Available ### Change Description -When calling TaskFactory.FromAsync, the implementation of the IAsyncResult.CompletedSynchronously property must be correct for the resulting task to complete. That is, the property must return true if, and only if, the implementation completed synchronously. Previously, the property was not checked. + +When calling TaskFactory.FromAsync, the implementation of the + +property must be correct for the resulting task to complete. That is, the +property must return true if, and only if, the implementation completed +synchronously. Previously, the property was not checked. - [x] Quirked - [ ] Build-time break ### Recommended Action -If IAsyncResult implementations correctly return true for the CompletedSynchronusly property only when a task completed synchronously, then no break will be observed. Users should review IAsyncResult implementations they own (if any) to ensure that they correctly evaluate whether a task completed synchronously or not. + +If implementations correctly +return true for the + property +only when a task completed synchronously, then no break will be observed. Users +should review implementations +they own (if any) to ensure that they correctly evaluate whether a task +completed synchronously or not. ### Affected APIs * ```M:System.Threading.Tasks.TaskFactory.FromAsync(System.IAsyncResult,System.Action{System.IAsyncResult})``` diff --git a/Documentation/compatibility/icommand_canexecutechanged-event-behaviour-changed-in-_net-4_5.md b/Documentation/compatibility/icommand_canexecutechanged-event-behaviour-changed-in-_net-4_5.md index a6ff0980e..b94173fe6 100644 --- a/Documentation/compatibility/icommand_canexecutechanged-event-behaviour-changed-in-_net-4_5.md +++ b/Documentation/compatibility/icommand_canexecutechanged-event-behaviour-changed-in-_net-4_5.md @@ -13,13 +13,24 @@ Minor Planned ### Change Description -In the .NET Framework 4.5, a CanExecuteChangedEvent was ignored unless the sender of the event was the same object as the object that raised the event. This bug was fixed in .NET Framework 4.5 servcing updates. + +In the .NET Framework 4.5, a + was +ignored unless the sender of the event was the same object as the object that +raised the event. This bug was fixed in .NET Framework 4.5 servcing updates. - [ ] Quirked - [ ] Build-time break ### Recommended Action -This bug has been fixed in the .NET Framework 4.5 servicing releases, so it can be avoided by making sure that the .NET Framework is up-to-date or by upgrading to .NET Framework 4.5.1. Alternatively, application code using ICommand can be modified to make sure that the sender when raising a CanExecuteChanged command is the same as the object raising the event. + +This bug has been fixed in the .NET Framework 4.5 servicing releases, so it can +be avoided by making sure that the .NET Framework is up-to-date or by upgrading +to .NET Framework 4.5.1. Alternatively, application code using + can be modified to +make sure that the sender when raising a + +command is the same as the object raising the event. ### Affected APIs * `E:System.Windows.Input.ICommand.CanExecuteChanged` diff --git a/Documentation/compatibility/intermittently-unable-to-scroll-to-bottom-item-in-itemscontrols-when-using-customer-datatemplates.md b/Documentation/compatibility/intermittently-unable-to-scroll-to-bottom-item-in-itemscontrols-when-using-customer-datatemplates.md index d0a4e85ca..88bb8db3b 100644 --- a/Documentation/compatibility/intermittently-unable-to-scroll-to-bottom-item-in-itemscontrols-when-using-customer-datatemplates.md +++ b/Documentation/compatibility/intermittently-unable-to-scroll-to-bottom-item-in-itemscontrols-when-using-customer-datatemplates.md @@ -13,13 +13,24 @@ Minor Available ### Change Description -In some instances, a bug in the .NET Framework 4.5 is causing ItemsControls (like ListBox, ComboBox, DataGrid, etc.) to not scroll to their bottom item when using custom DataTemplates. If the scrolling is attempted a second time (after scrolling back up), it will work then. + +In some instances, a bug in the .NET Framework 4.5 is causing ItemsControls +(like , +, +, etc.) +to not scroll to their bottom item when using custom DataTemplates. If the +scrolling is attempted a second time (after scrolling back up), it will work +then. - [ ] Quirked - [ ] Build-time break ### Recommended Action -This issue has been fixed in the .NET Framework 4.5.2 and may be addressed by upgrading to that version (or a later version) of the .NET Framework. Alternatively, users can still drag scroll bars to the final items in these collections, but may need to try twice to do so successfully. + +This issue has been fixed in the .NET Framework 4.5.2 and may be addressed by +upgrading to that version (or a later version) of the .NET Framework. +Alternatively, users can still drag scroll bars to the final items in these +collections, but may need to try twice to do so successfully. ### Affected APIs * Not detectable via API analysis diff --git a/Documentation/compatibility/item-scrolling-a-flat-list-with-items-of-different-pixel-height.md b/Documentation/compatibility/item-scrolling-a-flat-list-with-items-of-different-pixel-height.md index 8d47ab12f..bf1dbcf8a 100644 --- a/Documentation/compatibility/item-scrolling-a-flat-list-with-items-of-different-pixel-height.md +++ b/Documentation/compatibility/item-scrolling-a-flat-list-with-items-of-different-pixel-height.md @@ -13,26 +13,38 @@ Minor Planned ### Change Description -When an ItemsControl displays a collection using virtualization (`IsVirtualizing=true`) and item-scrolling (`ScrollUnit=Item`), -and when the control scrolls to display an item whose height in pixels differs from its neighbors, the VirtualizingStackPanel -iterates over all items in the collection. The UI is unresponsive during this iteration; if the collection is -large, this can be perceived as a hang. -The iteration occurs in other circumstances, even in previous .Net releases. For example, it occurs when -pixel-scrolling (`ScrollUnit=Pixel`) upon encountering an item with different pixel height, and when item-scrolling -hierarchical data (such as a TreeView or an ItemsControl with grouping enabled) upon encountering an item with -a different number of descendant items than its neighbors. - -For the case of item-scrolling and different pixel height, the iteration was introduced in .Net 4.6.1 to fix -bugs in the layout of hierarchical data. It is not needed if the data is flat (no hierarchy), and .Net 4.6.2 -does not do it in that case. - -- [ ] Quirked +When an +displays a collection using virtualization (`IsVirtualizing=true`) and item- +scrolling (`ScrollUnit=Item`), and when the control scrolls to display an item +whose height in pixels differs from its neighbors, the + +iterates over all items in the collection. The UI is unresponsive during this +iteration; if the collection is large, this can be perceived as a hang. + +The iteration occurs in other circumstances, even in previous .Net releases. For +example, it occurs when pixel-scrolling (`ScrollUnit=Pixel`) upon encountering +an item with different pixel height, and when item-scrolling hierarchical data +(such as a or an + with grouping +enabled) upon encountering an item with a different number of descendant items +than its neighbors. + +For the case of item-scrolling and different pixel height, the iteration was +introduced in .Net 4.6.1 to fix bugs in the layout of hierarchical data. It is +not needed if the data is flat (no hierarchy), and .Net 4.6.2 does not do it in +that case. + +- [ ] Quirked - [ ] Build-time break ### Recommended Action -If the iteration occurs in .Net 4.6.1 but not in earlier releases - that is, if the ItemsControl is item-scrolling -a flat list with items of different pixel height - there are two remedies: + +If the iteration occurs in .Net 4.6.1 but not in earlier releases - that is, if +the is item- +scrolling a flat list with items of different pixel height - there are two +remedies: + 1. Install .Net 4.6.2. 2. Install hotfix HR 1605 for .Net 4.6.1. diff --git a/Documentation/compatibility/items_clear-does-not-remove-duplicates-from-selecteditems.md b/Documentation/compatibility/items_clear-does-not-remove-duplicates-from-selecteditems.md index de76526b6..ef2c9e4be 100644 --- a/Documentation/compatibility/items_clear-does-not-remove-duplicates-from-selecteditems.md +++ b/Documentation/compatibility/items_clear-does-not-remove-duplicates-from-selecteditems.md @@ -13,12 +13,18 @@ Minor NotPlanned ### Change Description -Suppose a Selector (with multiple selection enabled) has duplicates in its SelectedItems + +Suppose a Selector (with multiple selection enabled) has duplicates in its + collection - the same item appears more than once. Removing those items from the -data source (e.g. by calling Items.Clear) fails to remove them from SelectedItems; -only the first instance is removed. Furthermore, subsequent use of SelectedItems -(e.g. SelectedItems.Clear()) can encounter problems such as ArgumentException, because -SelectedItems contains items that are no longer in the data source. +data source (e.g. by calling Items.Clear) fails to remove them from +; +only the first instance is removed. Furthermore, subsequent use of + +(e.g. SelectedItems.Clear()) can encounter problems such as +, because + +contains items that are no longer in the data source. - [ ] Quirked - [ ] Build-time break diff --git a/Documentation/compatibility/linq-to-ef-join-throws-argumentoutofrangeexception.md b/Documentation/compatibility/linq-to-ef-join-throws-argumentoutofrangeexception.md index a9114d6c2..902986c96 100644 --- a/Documentation/compatibility/linq-to-ef-join-throws-argumentoutofrangeexception.md +++ b/Documentation/compatibility/linq-to-ef-join-throws-argumentoutofrangeexception.md @@ -13,13 +13,18 @@ Minor Not planned ### Change Description -Linq queries or enumerables that call 'Join' on Entity Framework entities can cause an `ArgumentOutOfRangeException` in .NET Framework 4.5 + +Linq queries or enumerables that call 'Join' on Entity Framework entities can +cause an in .NET +Framework 4.5 - [ ] Quirked - [ ] Build-time break ### Recommended Action -This issue was fixed in a servicing update. Please update the .NET Framework 4.5, or upgrade to .NET Framework 4.5.1 or later, to fix this issue. + +This issue was fixed in a servicing update. Please update the .NET Framework +4.5, or upgrade to .NET Framework 4.5.1 or later, to fix this issue. ### Affected APIs * ```M:System.Linq.Enumerable.Join``4(System.Collections.Generic.IEnumerable{``0},System.Collections.Generic.IEnumerable{``1},System.Func{``0,``2},System.Func{``1,``2},System.Func{``0,``1,``3})``` diff --git a/Documentation/compatibility/list_foreach-can-throw-exception-when-modifying-list-item.md b/Documentation/compatibility/list_foreach-can-throw-exception-when-modifying-list-item.md index 57b9e0bb9..ef3dfda42 100644 --- a/Documentation/compatibility/list_foreach-can-throw-exception-when-modifying-list-item.md +++ b/Documentation/compatibility/list_foreach-can-throw-exception-when-modifying-list-item.md @@ -10,13 +10,22 @@ Edge Available ### Change Description -Beginning in .NET 4.5, a `List.ForEach` enumerator will throw an InvalidOperationException exception if an element in the calling collection is modified. Previously, this would not throw an exception but could lead to race conditions. + +Beginning in .NET 4.5, a + +enumerator will throw an + exception if an +element in the calling collection is modified. Previously, this would not throw +an exception but could lead to race conditions. - [x] Quirked - [ ] Build-time break ### Recommended Action -Ideally, code should be fixed to not modify lists while enumerating their elements because that is never a safe operation. To revert to the previous behavior, though, an app may target .NET 4.0. + +Ideally, code should be fixed to not modify lists while enumerating their +elements because that is never a safe operation. To revert to the previous +behavior, though, an app may target .NET 4.0. ### Affected APIs * ``M:System.Collections.Generic.List`1.ForEach(System.Action{`0})`` diff --git a/Documentation/compatibility/list_sort-algorithm-changed.md b/Documentation/compatibility/list_sort-algorithm-changed.md index a229f3fa3..7ac4607e6 100644 --- a/Documentation/compatibility/list_sort-algorithm-changed.md +++ b/Documentation/compatibility/list_sort-algorithm-changed.md @@ -10,13 +10,25 @@ Transparent Not planned ### Change Description -Begining in .NET Framework 4.5, `List`'s sort algorithm has changed (to be an introspective sort instead of a quick sort). `List`'s sort has never been stable, but this change may cause different scenarios to sort in unstable ways. That simply means that equivalent items may sort in different orders in subsequent calls of the API. + +Begining in .NET Framework 4.5, +'s sort algorithm +has changed (to be an introspective sort instead of a quick sort). +'s sort has never +been stable, but this change may cause different scenarios to sort in unstable +ways. That simply means that equivalent items may sort in different orders in +subsequent calls of the API. - [ ] Quirked - [ ] Build-time break ### Recommended Action -Because the old sort algorithm was also unstable (though in slightly different ways), there should be no code that depends on equivalent items always sorting in a particular order. If there are instances of code depending upon that and being lucky with the old behavior, that code should be updated to use a comparer that will deterministically sort the items in the desired order. + +Because the old sort algorithm was also unstable (though in slightly different +ways), there should be no code that depends on equivalent items always sorting +in a particular order. If there are instances of code depending upon that and +being lucky with the old behavior, that code should be updated to use a comparer +that will deterministically sort the items in the desired order. ### Affected APIs * ``M:System.Collections.Generic.List`1.Sort`` diff --git a/Documentation/compatibility/listboxitem-isselected-binding-issue-with-observablecollection_move.md b/Documentation/compatibility/listboxitem-isselected-binding-issue-with-observablecollection_move.md index dfd49e0b9..25321ae61 100644 --- a/Documentation/compatibility/listboxitem-isselected-binding-issue-with-observablecollection_move.md +++ b/Documentation/compatibility/listboxitem-isselected-binding-issue-with-observablecollection_move.md @@ -13,13 +13,28 @@ Minor Planned ### Change Description -Calling `ObservableCollection.Move` on a collection bound to a ListBox with items selected can lead to erratic behavior with future selection or unselection of ListBox items + +Calling +or + +on a collection bound to a + with items selected +can lead to erratic behavior with future selection or unselection of + items. - [ ] Quirked - [ ] Build-time break ### Recommended Action -Calling `ObservableCollection.Remove` and `ObservableCollection.Insert` instead of `ObservableCollection.Move` will work around this issue. Alternatively, this issue has been fixed in the .NET Framework 4.6 and may be addressed by upgrading to that version of the .NET Framework. + +Calling +and + +instead of + +will work around this issue. Alternatively, this issue has been fixed in the +.NET Framework 4.6 and may be addressed by upgrading to that version of the .NET +Framework. ### Affected APIs * ``M:System.Collections.ObjectModel.ObservableCollection`1.Move(System.Int32,System.Int32)`` diff --git a/Documentation/compatibility/log-file-name-created-by-the-objectcontext_createdatabase-method-has-changed-to-match-sql-server-specifications.md b/Documentation/compatibility/log-file-name-created-by-the-objectcontext_createdatabase-method-has-changed-to-match-sql-server-specifications.md index 79f624ca4..947b7091b 100644 --- a/Documentation/compatibility/log-file-name-created-by-the-objectcontext_createdatabase-method-has-changed-to-match-sql-server-specifications.md +++ b/Documentation/compatibility/log-file-name-created-by-the-objectcontext_createdatabase-method-has-changed-to-match-sql-server-specifications.md @@ -10,13 +10,22 @@ Edge Available ### Change Description -When the CreateDatabase method is called either directly or by using Code First with the SqlClient provider and an AttachDBFilename value in the connection string, it creates a log file named filename_log.ldf instead of filename.ldf (where filename is the name of the file specified by the AttachDBFilename value). This change improves debugging by providing a log file named according to SQL Server specifications. + +When the + +method is called either directly or by using Code First with the SqlClient +provider and an AttachDBFilename value in the connection string, it creates a +log file named filename_log.ldf instead of filename.ldf (where filename is the +name of the file specified by the AttachDBFilename value). This change improves +debugging by providing a log file named according to SQL Server specifications. - [ ] Quirked - [ ] Build-time break ### Recommended Action -If the log file name is important for an app, the app should be updated to expect the standard _log.ldf file name format. + +If the log file name is important for an app, the app should be updated to +expect the standard _log.ldf file name format. ### Affected APIs * `M:System.Data.Objects.ObjectContext.CreateDatabase` diff --git a/Documentation/compatibility/long-path-support.md b/Documentation/compatibility/long-path-support.md index 31887b916..b0fc3f119 100644 --- a/Documentation/compatibility/long-path-support.md +++ b/Documentation/compatibility/long-path-support.md @@ -10,27 +10,43 @@ Minor Investigating ### Change Description -Starting with apps that target the .NET Framework 4.6.2, long paths (of up to 32K characters) are supported, and the 260-character (or `MAX_PATH`) limitation on path lengths has been removed. -For apps that are recompiled to target the .NET Framework 4.6.2, code paths that previously threw a `T:System.IO.PathTooLongException` because a path exceeded 260 characters will now throw a `T:System.IO.PathTooLongException` only under the following conditions: +Starting with apps that target the .NET Framework 4.6.2, long paths (of up to +32K characters) are supported, and the 260-character (or `MAX_PATH`) limitation +on path lengths has been removed. -- The length of the path is greater than `F:System.Int16.MaxValue` (32,767) characters. +For apps that are recompiled to target the .NET Framework 4.6.2, code paths that +previously threw a +because a path exceeded 260 characters will now throw a + only under the +following conditions: + +- The length of the path is greater than (32,767) characters. - The operating system returns `COR_E_PATHTOOLONG` or its equivalent. -For apps that target the .NET Framework 4.6.1 and earlier versions, the runtime automatically throws a `T:System.IO.PathTooLongException` whenever a path exceeds 260 characters. +For apps that target the .NET Framework 4.6.1 and earlier versions, the runtime +automatically throws a + whenever a path +exceeds 260 characters. - [X] Quirked - [ ] Build-time break ### Recommended Action -For apps that target the .NET Framework 4.6.2, you can opt out of long path support if it is not desirable by adding the following to to the `` section of your `app.config` file: + +For apps that target the .NET Framework 4.6.2, you can opt out of long path +support if it is not desirable by adding the following to to the `` +section of your `app.config` file: ```xml ``` -For apps that target earlier versions of the .NET Framework but run on the .NET Framework 4.6.2 or later, you can opt in to long path support by adding the following to to the `` section of your `app.config` file: + +For apps that target earlier versions of the .NET Framework but run on the .NET +Framework 4.6.2 or later, you can opt in to long path support by adding the +following to to the `` section of your `app.config` file: ```xml diff --git a/Documentation/compatibility/machinekey_encode-and-machinekey_decode-methods-are-now-obsolete.md b/Documentation/compatibility/machinekey_encode-and-machinekey_decode-methods-are-now-obsolete.md index 19042748f..994e66f8a 100644 --- a/Documentation/compatibility/machinekey_encode-and-machinekey_decode-methods-are-now-obsolete.md +++ b/Documentation/compatibility/machinekey_encode-and-machinekey_decode-methods-are-now-obsolete.md @@ -10,13 +10,21 @@ Minor Available ### Change Description -These methods are now obsolete. Compilation of code that calls these methods produces a compiler warning. + +These methods are now obsolete. Compilation of code that calls these methods +produces a compiler warning. - [ ] Quirked - [x] Build-time break ### Recommended Action -The recommended alternatives are [MachineKey.Protect](https://msdn.microsoft.com/en-us/library/system.web.security.machinekey.protect(v=vs.110).aspx) and [MachineKey.Unprotect](https://msdn.microsoft.com/en-us/library/system.web.security.machinekey.unprotect(v=vs.110).aspx). Alternatively, the build warnings can be suppressed or they can be avoided by using an older compiler. The APIs are still supported. + +The recommended alternatives are + +and +. +Alternatively, the build warnings can be suppressed or they can be avoided by +using an older compiler. The APIs are still supported. ### Affected APIs * `M:System.Web.Security.MachineKey.Encode(System.Byte[],System.Web.Security.MachineKeyProtection)` diff --git a/Documentation/compatibility/marshal_sizeof-and-marshal_ptrtostructure-overloads-break-dynamic-code.md b/Documentation/compatibility/marshal_sizeof-and-marshal_ptrtostructure-overloads-break-dynamic-code.md index bacaae159..c6f11a50e 100644 --- a/Documentation/compatibility/marshal_sizeof-and-marshal_ptrtostructure-overloads-break-dynamic-code.md +++ b/Documentation/compatibility/marshal_sizeof-and-marshal_ptrtostructure-overloads-break-dynamic-code.md @@ -10,17 +10,27 @@ Minor Available ### Change Description -Beginning in the .NET Framework 4.5.1, dynamically binding to the methods `Marshal.SizeOf` or `Marshal.PtrToStructure ` -(via Windows PowerShell, IronPython, or the C# dynamic keyword, for example) can result in `MethodInvocationExceptions` because -new overloads of these methods have been added that may be ambiguous to the scripting engines. +Beginning in the .NET Framework 4.5.1, dynamically binding to the methods +, +, +, +, +, +or +, +(via Windows PowerShell, IronPython, or the C# dynamic keyword, for example) can +result in `MethodInvocationExceptions` because new overloads of these methods +have been added that may be ambiguous to the scripting engines. - [ ] Quirked - [ ] Build-time break ### Recommended Action -Update scripts to clearly indicate which overload shouldbe used. This can typically done by explicitly casting the -methods' type parameters as `System.Type`. See [this link](https://support.microsoft.com/en-us/kb/2909958/) for more -detail and examples of how to workaround the issue. + +Update scripts to clearly indicate which overload shouldbe used. This can +typically done by explicitly casting the methods' type parameters as +. See [this link](https://support.microsoft.com/en-us/kb/2909958/) +for more detail and examples of how to workaround the issue. ### Affected APIs * Not detectable via API analysis @@ -32,8 +42,8 @@ Core diff --git a/Documentation/compatibility/mef-catalogs-implement-ienumerable-and-therefore-can-no-longer-be-used-to-create-a-serializer.md b/Documentation/compatibility/mef-catalogs-implement-ienumerable-and-therefore-can-no-longer-be-used-to-create-a-serializer.md index 550d90211..d7ab8c8a8 100644 --- a/Documentation/compatibility/mef-catalogs-implement-ienumerable-and-therefore-can-no-longer-be-used-to-create-a-serializer.md +++ b/Documentation/compatibility/mef-catalogs-implement-ienumerable-and-therefore-can-no-longer-be-used-to-create-a-serializer.md @@ -10,12 +10,17 @@ Major Available ### Change Description -Starting with the .NET Framework 4.5, MEF catalogs implement IEnumerable and therefore can no longer be used to create a serializer (XmlSerializer object). Trying to serialize a MEF catalog throws an exception. + +Starting with the .NET Framework 4.5, MEF catalogs implement IEnumerable and +therefore can no longer be used to create a serializer +( object). +Trying to serialize a MEF catalog throws an exception. - [ ] Quirked - [ ] Build-time break ### Recommended Action + Can no longer use MEF to create a serializer ### Affected APIs diff --git a/Documentation/compatibility/minfreememorypercentagetoactiveservice-is-now-respected.md b/Documentation/compatibility/minfreememorypercentagetoactiveservice-is-now-respected.md index 141bda90d..57020a548 100644 --- a/Documentation/compatibility/minfreememorypercentagetoactiveservice-is-now-respected.md +++ b/Documentation/compatibility/minfreememorypercentagetoactiveservice-is-now-respected.md @@ -10,13 +10,21 @@ Minor Available ### Change Description -This setting establishes the minimum memory that must be available on the server before a WCF service can be activated. It is designed to prevent OutOfMemoryException exceptions. In the .NET Framework 4.5, this setting had no effect. In the .NET Framework 4.5.1, the setting is observed. + +This setting establishes the minimum memory that must be available on the server +before a WCF service can be activated. It is designed to prevent + exceptions. In the .NET +Framework 4.5, this setting had no effect. In the .NET Framework 4.5.1, the +setting is observed. - [ ] Quirked - [ ] Build-time break ### Recommended Action -An exception occurs if the free memory available on the web server is less than the percentage defined by the configuration setting. Some WCF services that successfully started and ran in a constrained memory environment may now fail. + +An exception occurs if the free memory available on the web server is less than +the percentage defined by the configuration setting. Some WCF services that +successfully started and ran in a constrained memory environment may now fail. ### Affected APIs * Not detectable via API analysis diff --git a/Documentation/compatibility/missing-target-framework-moniker-results-in-4_0-behavior.md b/Documentation/compatibility/missing-target-framework-moniker-results-in-4_0-behavior.md index 713e53cd2..b394e6aca 100644 --- a/Documentation/compatibility/missing-target-framework-moniker-results-in-4_0-behavior.md +++ b/Documentation/compatibility/missing-target-framework-moniker-results-in-4_0-behavior.md @@ -10,13 +10,27 @@ Major Available ### Change Description -Applications without a [TargetFrameworkAttribute](https://msdn.microsoft.com/en-us/library/system.runtime.versioning.targetframeworkattribute(v=vs.110).aspx) applied at the assembly level will automatically run using the semantics (quirks) of the .NET Framework 4.0. To ensure high quality, it is recommended that all binaries be explicitly attributed with a TargetFrameworkAttribute indicating the version of the .NET Framework they were built with. Note that using a target framework moniker in a project file will caues MSBuild to automatically apply a TargetFrameworkAttribute. + +Applications without a + +applied at the assembly level will automatically run using the semantics +(quirks) of the .NET Framework 4.0. To ensure high quality, it is recommended +that all binaries be explicitly attributed with a + +indicating the version of the .NET Framework they were built with. Note that +using a target framework moniker in a project file will caues MSBuild to +automatically apply a +. - [ ] Quirked - [ ] Build-time break ### Recommended Action -A [target framework attribute](https://msdn.microsoft.com/en-us/library/system.runtime.versioning.targetframeworkattribute(v=vs.110).aspx) should be supplied, either through adding the attribute directly to the assembly or by specifying a target framework in the [project file or through Visual Studio's project properties GUI](http://blogs.msdn.com/b/visualstudio/archive/2010/05/19/visual-studio-managed-multi-targeting-part-1-concepts-target-framework-moniker-target-framework.aspx). + +A +should be supplied, either through adding the attribute directly to the assembly +or by specifying a target framework in the +[project file or through Visual Studio's project properties GUI](http://blogs.msdn.com/b/visualstudio/archive/2010/05/19/visual-studio- managed-multi-targeting-part-1-concepts-target-framework-moniker-target-framework.aspx). ### Affected APIs * Not detectable via API analysis diff --git a/Documentation/compatibility/multi-line-asp_net-textbox-spacing-changed-when-using-antixssencoder.md b/Documentation/compatibility/multi-line-asp_net-textbox-spacing-changed-when-using-antixssencoder.md index 7c77b9522..055418495 100644 --- a/Documentation/compatibility/multi-line-asp_net-textbox-spacing-changed-when-using-antixssencoder.md +++ b/Documentation/compatibility/multi-line-asp_net-textbox-spacing-changed-when-using-antixssencoder.md @@ -10,13 +10,22 @@ Minor Available ### Change Description -In .NET Framework 4.0, extra lines were inserted between lines of a multi-line text box on postback, if using the `AntiXSSEncoder`. In .NET Framework 4.5, those extra line breaks are not included, but only if the web app is targeting .NET 4.5 + +In .NET Framework 4.0, extra lines were inserted between lines of a multi-line +text box on postback, if using the +. In .NET +Framework 4.5, those extra line breaks are not included, but only if the web app +is targeting .NET 4.5 - [x] Quirked - [ ] Build-time break ### Recommended Action -Be aware that 4.0 web apps retargeted to .NET 4.5 may have multi-line text boxes improved to no longer insert extra line breaks. If this is not desirable, the app can have the old behavior when running on .NET Framework 4.5 by targeting the .NET Framework 4.0. + +Be aware that 4.0 web apps retargeted to .NET 4.5 may have multi-line text boxes +improved to no longer insert extra line breaks. If this is not desirable, the +app can have the old behavior when running on .NET Framework 4.5 by targeting +the .NET Framework 4.0. ### Affected APIs * Not detectable via API analysis diff --git a/Documentation/compatibility/multiple-items-in-a-single-tablelayoutpanel-cell-may-be-rearranged.md b/Documentation/compatibility/multiple-items-in-a-single-tablelayoutpanel-cell-may-be-rearranged.md index c1193001b..f35a26c1d 100644 --- a/Documentation/compatibility/multiple-items-in-a-single-tablelayoutpanel-cell-may-be-rearranged.md +++ b/Documentation/compatibility/multiple-items-in-a-single-tablelayoutpanel-cell-may-be-rearranged.md @@ -1,4 +1,4 @@ -## Multiple items in a single TableLayoutPanel cell may be rearranged +## Multiple items in a single cell may be rearranged ### Scope Minor @@ -13,13 +13,21 @@ Minor Available ### Change Description -In the .NET Framework 4.5, if multiple items are placed in the same TableLayoutPanel cell, they may be displayed in a different order than they were in the .NET Framework 4.0. + +In the .NET Framework 4.5, if multiple items are placed in the same + cell, they may +be displayed in a different order than they were in the .NET Framework 4.0. - [ ] Quirked - [ ] Build-time break ### Recommended Action -This behavior was reverted in a servicing update for the .NET Framework 4.5. Please update the .NET Framework 4.5, or upgrade to .NET Framework 4.5.1 or later, to fix this issue. Alternatively, avoid the ambiguous case of multiple items in the same TableLayourPanel cell. + +This behavior was reverted in a servicing update for the .NET Framework 4.5. +Please update the .NET Framework 4.5, or upgrade to .NET Framework 4.5.1 or +later, to fix this issue. Alternatively, avoid the ambiguous case of multiple +items in the same + cell. ### Affected APIs * `M:System.Windows.Forms.TableLayoutControlCollection.Add(System.Windows.Forms.Control,System.Int32,System.Int32)` @@ -29,7 +37,7 @@ Windows Forms diff --git a/Documentation/compatibility/netdatacontractserializer-fails-to-deserialize-a-concurrentdictionary-serialized-with-a-different-_net-version.md b/Documentation/compatibility/netdatacontractserializer-fails-to-deserialize-a-concurrentdictionary-serialized-with-a-different-_net-version.md index 8673b5db7..d5d829102 100644 --- a/Documentation/compatibility/netdatacontractserializer-fails-to-deserialize-a-concurrentdictionary-serialized-with-a-different-_net-version.md +++ b/Documentation/compatibility/netdatacontractserializer-fails-to-deserialize-a-concurrentdictionary-serialized-with-a-different-_net-version.md @@ -10,19 +10,27 @@ Minor Planned ### Change Description -By design, the [NetDataContractSerializer](https://msdn.microsoft.com/en-us/library/system.runtime.serialization.netdatacontractserializer.aspx) can be used only if both the serializing and deserializing ends share the same CLR types. Therefore, it is not guaranteed that an object serialized with one version of the .NET Framework can be deserialized by a different version. -ConcurrentDictionary is a type that is known to not to deserialize correctly if serialized with the .NET Framework 4.5 or earlier and deserialized with the .NET Framework 4.5.1 or later. +By design, the +can be used only if both the serializing and deserializing ends share the same +CLR types. Therefore, it is not guaranteed that an object serialized with one +version of the .NET Framework can be deserialized by a different version. + + +is a type that is known to not to deserialize correctly if serialized with the +.NET Framework 4.5 or earlier and deserialized with the .NET Framework 4.5.1 or +later. - [ ] Quirked - [ ] Build-time break ### Recommended Action + There are a number of possible work-arounds for this issue: - Upgrade the serializing computer to use the .NET Framework 4.5.1, as well. -- Use DataContractSerializer instead of NetDataContractSerializer as this does not expect the exact same CLR types at both serializing and deserializing ends. -- Use Dictionary instead of ConcurrentDictionary since it does not exhibit this particular 4.5->4.5.1 break. +- Use instead of as this does not expect the exact same CLR types at both serializing and deserializing ends. +- Use instead of since it does not exhibit this particular 4.5->4.5.1 break. ### Affected APIs * `M:System.Runtime.Serialization.NetDataContractSerializer.Deserialize(System.IO.Stream)` diff --git a/Documentation/compatibility/new-(ambiguous)-dispatcher_invoke-overloads-could-result-in-different-behavior.md b/Documentation/compatibility/new-(ambiguous)-dispatcher_invoke-overloads-could-result-in-different-behavior.md index 77ef6a01f..39c75dec0 100644 --- a/Documentation/compatibility/new-(ambiguous)-dispatcher_invoke-overloads-could-result-in-different-behavior.md +++ b/Documentation/compatibility/new-(ambiguous)-dispatcher_invoke-overloads-could-result-in-different-behavior.md @@ -10,16 +10,27 @@ Minor Available ### Change Description -The .NET Framework 4.5 adds new overloads to Dispatcher.Invoke that include a parameter of type System.Action. When existing code is recompiled, compilers may resolve calls to Dispatcher.Invoke methods that have a Delegate parameter as calls to Dispatcher.Invoke methods with an System.Action parameter. If a call to a Dispatcher.Invoke overload with a Delegate parameter is resolved as a call to a Dispatcher.Invoke overload with an System.Action parameter, the following differences in behavior may occur: -- If an exception occurs, the Dispatcher.UnhandledExceptionFilter and Dispatcher.UnhandledException events are not raised. Instead, exceptions are handled by the UnobservedTaskException event. -- Calls to some members, such as DispatcherOperation.Result, block until the operation has completed. +The .NET Framework 4.5 adds new overloads to Dispatcher.Invoke that include a +parameter of type @System.Action. When existing code is recompiled, compilers +may resolve calls to Dispatcher.Invoke methods that have a @System.Delegate +parameter as calls to Dispatcher.Invoke methods with an @System.Action +parameter. If a call to a Dispatcher.Invoke overload with a @System.Delegate +parameter is resolved as a call to a Dispatcher.Invoke overload with an +@System.Action parameter, the following differences in behavior may occur: + +- If an exception occurs, the Filter> and events are not raised. Instead, exceptions are handled by the event. +- Calls to some members, such as , block until the operation has completed. - [ ] Quirked - [x] Build-time break ### Recommended Action -To avoid ambiguity (and potential differences in exception handling or blocking behaviors), code calling Dispatcher.Invoke can pass an empty object[] as a second parameter to the Invoke call to be sure of resolving to the .NET 4.0 method overload. + +To avoid ambiguity (and potential differences in exception handling or blocking +behaviors), code calling Dispatcher.Invoke can pass an empty object[] as a +second parameter to the Invoke call to be sure of resolving to the .NET 4.0 +method overload. ### Affected APIs * `M:System.Windows.Threading.Dispatcher.Invoke(System.Delegate,System.Object[])` diff --git a/Documentation/compatibility/new-enum-values-in-wpf's-pagerangeselection.md b/Documentation/compatibility/new-enum-values-in-wpf's-pagerangeselection.md index 67cf84b94..3b50098ca 100644 --- a/Documentation/compatibility/new-enum-values-in-wpf's-pagerangeselection.md +++ b/Documentation/compatibility/new-enum-values-in-wpf's-pagerangeselection.md @@ -10,13 +10,24 @@ Edge Available ### Change Description -Two new members (CurrentPage and SelectedPage) have been added to the [PageRangeSelection](https://msdn.microsoft.com/en-us/library/system.windows.controls.pagerangeselection(v=vs.110).aspx) enum. + +Two new members ( +and +) +have been added to the + enum. - [ ] Quirked - [ ] Build-time break ### Recommended Action -In most cases, these changes won't impact user code. Code that depends on a particular number of elements existing in Enum.GetNames or Enum.GetValues calls on the PageRangeSelection type should be modified, though. + +In most cases, these changes won't impact user code. Code that depends on a +particular number of elements existing in + or + calls on +the type +should be modified, though. ### Affected APIs * `T:System.Windows.Controls.PageRangeSelection` @@ -28,7 +39,7 @@ Windows Presentation Foundation (WPF) diff --git a/Documentation/compatibility/non-pooled-sql-connections-will-leak-memory-if-not-explicitly-disposed.md b/Documentation/compatibility/non-pooled-sql-connections-will-leak-memory-if-not-explicitly-disposed.md index 793223bfb..3b0c70375 100644 --- a/Documentation/compatibility/non-pooled-sql-connections-will-leak-memory-if-not-explicitly-disposed.md +++ b/Documentation/compatibility/non-pooled-sql-connections-will-leak-memory-if-not-explicitly-disposed.md @@ -19,7 +19,13 @@ In the .NET Framework 4.5, non-pooled SQL connections which are not explicitly e - [ ] Build-time break ### Recommended Action -This issue is fixed in a .NET Framework 4.5 servicing update. Please update the .NET Framework 4.5, or upgrade to .NET Framework 4.5.1 or later, to fix this issue. Alternatively, this issue may be avoided by using the SqlConnection in a 'using' pattern (which is a best practice) or by explicitly calling Dispose or Close when the connection is no longer needed. + +This issue is fixed in a .NET Framework 4.5 servicing update. Please update the +.NET Framework 4.5, or upgrade to .NET Framework 4.5.1 or later, to fix this +issue. Alternatively, this issue may be avoided by using the + in a 'using' +pattern (which is a best practice) or by explicitly calling Dispose or Close +when the connection is no longer needed. ### Affected APIs * `M:System.Data.SqlClient.SqlConnection.#ctor(System.String)` diff --git a/Documentation/compatibility/objectdisposedexception-thrown-by-wpf-spellchecker.md b/Documentation/compatibility/objectdisposedexception-thrown-by-wpf-spellchecker.md index fb56990fb..57bd66518 100644 --- a/Documentation/compatibility/objectdisposedexception-thrown-by-wpf-spellchecker.md +++ b/Documentation/compatibility/objectdisposedexception-thrown-by-wpf-spellchecker.md @@ -13,7 +13,13 @@ Edge NotPlanned ### Change Description -WPF applications occasionally crash during application shutdown with an ObjectDisposedException thrown by the spellchecker. This is fixed in .NET 4.7 WPF by handling the exception gracefully, and thus ensuring that applications are no longer adversely affected.It should be noted that occasional first-chance exceptions would continue to be observed in applications running under a debugger. + +WPF applications occasionally crash during application shutdown with an + thrown by the +spellchecker. This is fixed in .NET 4.7 WPF by handling the exception +gracefully, and thus ensuring that applications are no longer adversely +affected. It should be noted that occasional first-chance exceptions would +continue to be observed in applications running under a debugger. - [ ] Quirked - [ ] Build-time break diff --git a/Documentation/compatibility/obsoleteattribute-exports-as-both-obsoleteattribute-and-deprecatedattribute-in-winmd-scenarios.md b/Documentation/compatibility/obsoleteattribute-exports-as-both-obsoleteattribute-and-deprecatedattribute-in-winmd-scenarios.md index 1b40dcaf4..e22eed499 100644 --- a/Documentation/compatibility/obsoleteattribute-exports-as-both-obsoleteattribute-and-deprecatedattribute-in-winmd-scenarios.md +++ b/Documentation/compatibility/obsoleteattribute-exports-as-both-obsoleteattribute-and-deprecatedattribute-in-winmd-scenarios.md @@ -10,15 +10,25 @@ Edge Available ### Change Description -When you create a Windows Metadata library (.winmd file), the ObsoleteAttribute attribute is exported as both ObsoleteAttribute and Windows.Foundation.DeprecatedAttribute. + +When you create a Windows Metadata library (.winmd file), the + attribute is exported as +both and +Windows.Foundation.DeprecatedAttribute. - [ ] Quirked - [x] Build-time break ### Recommended Action -Recompilation of existing source code that uses the ObsoleteAttribute attribute may generate warnings when consuming that code from C++/CX or JavaScript. -We do not recommend applying both ObsoleteAttribute and Windows.Foundation.DeprecatedAttribute to code in managed assemblies; it may result in build warnings. +Recompilation of existing source code that uses the + attribute may generate +warnings when consuming that code from C++/CX or JavaScript. + +We do not recommend applying both + and +Windows.Foundation.DeprecatedAttribute to code in managed assemblies; it may +result in build warnings. ### Affected APIs * Not detectable via API analysis diff --git a/Documentation/compatibility/only-tls-1_0-1_1-and-1_2-protocols-supported-in-system_net_servicepointmanager-and-system_net_security_sslstream.md b/Documentation/compatibility/only-tls-1_0-1_1-and-1_2-protocols-supported-in-system_net_servicepointmanager-and-system_net_security_sslstream.md index 8f02c9962..d85ad4c7d 100644 --- a/Documentation/compatibility/only-tls-1_0-1_1-and-1_2-protocols-supported-in-system_net_servicepointmanager-and-system_net_security_sslstream.md +++ b/Documentation/compatibility/only-tls-1_0-1_1-and-1_2-protocols-supported-in-system_net_servicepointmanager-and-system_net_security_sslstream.md @@ -1,4 +1,4 @@ -## Only Tls 1.0, 1.1 and 1.2 protocols supported in System.Net.ServicePointManager and System.Net.Security.SslStream +## Only Tls 1.0, 1.1 and 1.2 protocols supported in System.Net.ServicePointManager and System.Net.Security.SslStream ### Scope Minor @@ -10,15 +10,24 @@ Minor Planned ### Change Description -Starting with the .NET Framework 4.6, the `System.Net.ServicePointManager` and `System.Net.Security.SslStream` classes are only allowed to use one of the following three protocols: Tls1.0, Tls1.1, or Tls1.2. The SSL3.0 protocol and RC4 cipher are not supported. + +Starting with the .NET Framework 4.6, the + and + classes are only +allowed to use one of the following three protocols: Tls1.0, Tls1.1, or Tls1.2. +The SSL3.0 protocol and RC4 cipher are not supported. - [x] Quirked - [ ] Build-time break ### Recommended Action -The recommended mitigation is to upgrade the sever-side app to Tls1.0, Tls1.1, or Tls1.2. If this is not feasible, or if client apps are broken, the AppContext class can be used to opt out of this feature in either of two ways: -1. By programmatically setting compat switches on the AppContext, as explained [here](http://blogs.msdn.com/b/dotnet/archive/2015/04/29/net-announcements-at-build-2015.aspx#dotnet46) +The recommended mitigation is to upgrade the sever-side app to Tls1.0, Tls1.1, +or Tls1.2. If this is not feasible, or if client apps are broken, the + class can be used to opt out of +this feature in either of two ways: + +1. By programmatically setting compat switches on the , as explained [here](http://blogs.msdn.com/b/dotnet/archive/2015/04/29/net-announcements-at-build-2015.aspx#dotnet46) 2. By adding the following line to the `` section of the app.config file: ``; ### Affected APIs diff --git a/Documentation/compatibility/page_loadcomplete-event-no-longer-causes-system_web_ui_webcontrols_entitydatasource-control-to-invoke-data-binding.md b/Documentation/compatibility/page_loadcomplete-event-no-longer-causes-system_web_ui_webcontrols_entitydatasource-control-to-invoke-data-binding.md index fea990994..df997fa22 100644 --- a/Documentation/compatibility/page_loadcomplete-event-no-longer-causes-system_web_ui_webcontrols_entitydatasource-control-to-invoke-data-binding.md +++ b/Documentation/compatibility/page_loadcomplete-event-no-longer-causes-system_web_ui_webcontrols_entitydatasource-control-to-invoke-data-binding.md @@ -10,15 +10,27 @@ Edge Available ### Change Description -The `Page.LoadComplete` event no longer causes the System.Web.UI.WebControls.EntityDataSource control to invoke data binding for changes to create/update/delete parameters. -This change eliminates an extraneous trip to the database, prevents the values of controls from being reset, and produces behavior that is consistent with other data controls, such as SqlDataSource and ObjectDataSource. -This change produces different behavior in the unlikely event that applications rely on invoking data binding in the `Page.LoadComplete` event. + +The event no +longer causes the + control +to invoke data binding for changes to create/update/delete parameters. This +change eliminates an extraneous trip to the database, prevents the values of +controls from being reset, and produces behavior that is consistent with other +data controls, such as + and +. This +change produces different behavior in the unlikely event that applications rely +on invoking data binding in the + event. - [ ] Quirked - [ ] Build-time break ### Recommended Action -If there is a need for databinding, manually invoke databind in an event that is earlier in the post-back. + +If there is a need for databinding, manually invoke databind in an event that is +earlier in the post-back. ### Affected APIs * Investigate applicable APIs diff --git a/Documentation/compatibility/path-colon-checks-are-stricter.md b/Documentation/compatibility/path-colon-checks-are-stricter.md index 14023ae31..432a30fbb 100644 --- a/Documentation/compatibility/path-colon-checks-are-stricter.md +++ b/Documentation/compatibility/path-colon-checks-are-stricter.md @@ -10,9 +10,11 @@ Edge NotPlanned ### Change Description -In .NET Framework 4.6.2, a number of changes were made to support previously unsupported paths (both in length and format). Checks for proper -drive separator (colon) syntax were made more correct, which had the side effect of blocking some URI paths in a few select Path APIs where they -used to be tolerated. + +In .NET Framework 4.6.2, a number of changes were made to support previously +unsupported paths (both in length and format). Checks for proper drive separator +(colon) syntax were made more correct, which had the side effect of blocking +some URI paths in a few select Path APIs where they used to be tolerated. - [x] Quirked - [ ] Build-time break @@ -22,7 +24,7 @@ used to be tolerated. If passing a URI to affected APIs, modify the string to be a legal path first. - Remove the scheme from URLs manually (e.g. remove `file://` from URLs) -- Pass the URI to the `System.Uri` class and use `System.Uri.LocalPath` +- Pass the URI to the class and use Alternatively, you can opt out of the new path normalization by setting the `Switch.System.IO.UseLegacyPathHandling` AppContext switch to true. diff --git a/Documentation/compatibility/persian-calendar-now-uses-the-hijri-solar-algorithm.md b/Documentation/compatibility/persian-calendar-now-uses-the-hijri-solar-algorithm.md index 3bf175c7d..c3a1d66cc 100644 --- a/Documentation/compatibility/persian-calendar-now-uses-the-hijri-solar-algorithm.md +++ b/Documentation/compatibility/persian-calendar-now-uses-the-hijri-solar-algorithm.md @@ -10,9 +10,17 @@ Minor Available ### Change Description -Starting with the .NET Framework 4.6, the PersianCalendar class uses the Hijri solar algorithm. Converting dates between the PersianCalendar and other calendars may produce a slightly different result beginning with the .NET Framework 4.6 for dates earlier than 1800 or later than 2023 (Gregorian). -Also, `PersianCalendar.MinSupportedDateTime` is now `March 22, 0622 instead of March 21, 0622`. +Starting with the .NET Framework 4.6, the + class uses the +Hijri solar algorithm. Converting dates between the + and other +calendars may produce a slightly different result beginning with the .NET +Framework 4.6 for dates earlier than 1800 or later than 2023 (Gregorian). + +Also, + +is now `March 22, 0622 instead of March 21, 0622`. - [ ] Quirked - [ ] Build-time break diff --git a/Documentation/compatibility/previewlostkeyboardfocus-is-called-repeatedly-if-its-handler-shows-a-message-box.md b/Documentation/compatibility/previewlostkeyboardfocus-is-called-repeatedly-if-its-handler-shows-a-message-box.md index bbaabd158..79794fa6c 100644 --- a/Documentation/compatibility/previewlostkeyboardfocus-is-called-repeatedly-if-its-handler-shows-a-message-box.md +++ b/Documentation/compatibility/previewlostkeyboardfocus-is-called-repeatedly-if-its-handler-shows-a-message-box.md @@ -10,9 +10,12 @@ Edge Available ### Change Description -Beginning in the .NET Framework 4.5, calling `System.Windows.Forms.MessageBox.Show` from a `UIElement.PreviewLostKeyboardFocus` -handler will cause the handler to re-fire when the message box is closed, potentially resulting in an infinite loop of -message boxes. + +Beginning in the .NET Framework 4.5, calling +`System.Windows.Forms.MessageBox.Show` from a + +handler will cause the handler to re-fire when the message box is closed, +potentially resulting in an infinite loop of message boxes. - [ ] Quirked - [ ] Build-time break @@ -20,8 +23,8 @@ message boxes. ### Recommended Action There are two options to work around this issue - -1. It may be avoided by calling `System.Windows.MessageBox.Show` instead of `System.Windows.Forms.MessageBox.Show`. -2. It may be avoided by showing the message box from a `LostKeyboardFocus` event handler (as opposed to a `PreviewLostKeyboardFocus` event handler). +1. It may be avoided by calling `System.Windows.MessageBox.Show` instead of `System.Windows.Forms.MessageBox.Show`. +2. It may be avoided by showing the message box from a event handler (as opposed to a event handler). ### Affected APIs * `M:System.Windows.ContentElement.add_PreviewLostKeyboardFocus(System.Windows.Input.KeyboardFocusChangedEventHandler)` diff --git a/Documentation/compatibility/reflection-objects-can-no-longer-be-passed-from-managed-code-to-out-of-process-dcom-clients.md b/Documentation/compatibility/reflection-objects-can-no-longer-be-passed-from-managed-code-to-out-of-process-dcom-clients.md index 5196d17e6..fdfdd0bc3 100644 --- a/Documentation/compatibility/reflection-objects-can-no-longer-be-passed-from-managed-code-to-out-of-process-dcom-clients.md +++ b/Documentation/compatibility/reflection-objects-can-no-longer-be-passed-from-managed-code-to-out-of-process-dcom-clients.md @@ -10,13 +10,15 @@ Minor Available ### Change Description -Reflection objects can no longer be passed from managed code to out-of-process DCOM clients. The following types are affected: -- Assembly -- MemberInfo (and its derived types, including FieldInfo, MethodInfo, Type, and TypeInfo) -- MethodBody -- Module -- ParameterInfo. +Reflection objects can no longer be passed from managed code to out-of-process +DCOM clients. The following types are affected: + +- +- (and its derived types, including , , , and ) +- +- +- . Calls to `IMarshal` for the object return `E_NOINTERFACE`. diff --git a/Documentation/compatibility/remove-ssl3-from-the-wcf-transportdefaults.md b/Documentation/compatibility/remove-ssl3-from-the-wcf-transportdefaults.md index 62c0b706d..136780100 100644 --- a/Documentation/compatibility/remove-ssl3-from-the-wcf-transportdefaults.md +++ b/Documentation/compatibility/remove-ssl3-from-the-wcf-transportdefaults.md @@ -10,18 +10,25 @@ Edge Planned ### Change Description -When using NetTcp with transport security and a credential type of certificate, the SSL 3 protocol is no longer a default protocol used for negotiating a secure connection. In most cases there should be no impact to existing apps as TLS 1.0 has always been included in the protocol list for NetTcp. All existing clients should be able to negotiate a connection using at least TLS1.0. + +When using NetTcp with transport security and a credential type of certificate, +the SSL 3 protocol is no longer a default protocol used for negotiating a secure +connection. In most cases there should be no impact to existing apps as TLS 1.0 +has always been included in the protocol list for NetTcp. All existing clients +should be able to negotiate a connection using at least TLS1.0. - [ ] Quirked - [ ] Build-time break ### Recommended Action -If Ssl3 is required, use one of the following configuration mechanisms to add Ssl3 to the list of negotiated protocols. -* [SslStreamSecurityBindingElement.SslProtocols Property](https://msdn.microsoft.com/en-us/library/system.servicemodel.channels.sslstreamsecuritybindingelement.sslprotocols%28v=vs.110%29.aspx) -* [TcpTransportSecurity.SslProtocols Property](https://msdn.microsoft.com/en-us/library/system.servicemodel.tcptransportsecurity.sslprotocols%28v=vs.110%29.aspx) -* [\ section of \](https://msdn.microsoft.com/en-us/library/ms731331%28v=vs.110%29.aspx) -* [\ section of \](https://msdn.microsoft.com/en-us/library/ms731328%28v=vs.110%29.aspx) +If Ssl3 is required, use one of the following configuration mechanisms to add +Ssl3 to the list of negotiated protocols. + +* +* +* [\ section of \](https://docs.microsoft.com/en-us/dotnet/articles/framework/configure-apps/file-schema/wcf/transport-of-nettcpbinding) +* [\ section of \](https://docs.microsoft.com/en-us/dotnet/articles/framework/configure-apps/file-schema/wcf/sslstreamsecurity) ### Affected APIs * `P:System.ServiceModel.Channels.SslStreamSecurityBindingElement.SslProtocols` diff --git a/Documentation/compatibility/resolveassemblyreference-task-now-warns-on-dependencies-with-the-wrong-architecture.md b/Documentation/compatibility/resolveassemblyreference-task-now-warns-of-dependencies-with-the-wrong-architecture.md similarity index 100% rename from Documentation/compatibility/resolveassemblyreference-task-now-warns-on-dependencies-with-the-wrong-architecture.md rename to Documentation/compatibility/resolveassemblyreference-task-now-warns-of-dependencies-with-the-wrong-architecture.md diff --git a/Documentation/compatibility/ribbongroup-background-is-set-to-transparent-in-localized-builds.md b/Documentation/compatibility/ribbongroup-background-is-set-to-transparent-in-localized-builds.md index aabfb77b3..8da0aaf67 100644 --- a/Documentation/compatibility/ribbongroup-background-is-set-to-transparent-in-localized-builds.md +++ b/Documentation/compatibility/ribbongroup-background-is-set-to-transparent-in-localized-builds.md @@ -13,7 +13,13 @@ Edge NotPlanned ### Change Description -RibbonGroup background on localized builds was always painted with Transparent brush, resulting in poor UI experience. This is fixed in .NET 4.7 WPF fix by updating the localized resources for RibbonGroup, which in turn ensures that the correct brush is selected. + + +background on localized builds was always painted with Transparent brush, +resulting in poor UI experience. This is fixed in .NET 4.7 WPF fix by updating +the localized resources for +, which in +turn ensures that the correct brush is selected. - [ ] Quirked - [ ] Build-time break diff --git a/Documentation/compatibility/right-clicking-on-a-wpf-datagrid-row-header-changes-the-datagrid-selection.md b/Documentation/compatibility/right-clicking-on-a-wpf-datagrid-row-header-changes-the-datagrid-selection.md index 587a3698e..88c7eb929 100644 --- a/Documentation/compatibility/right-clicking-on-a-wpf-datagrid-row-header-changes-the-datagrid-selection.md +++ b/Documentation/compatibility/right-clicking-on-a-wpf-datagrid-row-header-changes-the-datagrid-selection.md @@ -13,13 +13,19 @@ Edge Planned ### Change Description -Right-clicking a selected DataGrid row header while multiple rows are selected results in the DataGrid's selection changing to only that row. + +Right-clicking a selected + row header while +multiple rows are selected results in the 's selection changing to only +that row. - [ ] Quirked - [ ] Build-time break ### Recommended Action -This issue has been fixed in the .NET Framework 4.6 and may be addressed by upgrading to that version of the .NET Framework. + +This issue has been fixed in the .NET Framework 4.6 and may be addressed by +upgrading to that version of the .NET Framework. ### Affected APIs * `M:System.Windows.Controls.DataGrid.#ctor` diff --git a/Documentation/compatibility/rsacng-now-correctly-loads-rsa-keys-of-non-standard-keysize.md b/Documentation/compatibility/rsacng-now-correctly-loads-rsa-keys-of-non-standard-keysize.md index e9ed88226..cd75d7b77 100644 --- a/Documentation/compatibility/rsacng-now-correctly-loads-rsa-keys-of-non-standard-keysize.md +++ b/Documentation/compatibility/rsacng-now-correctly-loads-rsa-keys-of-non-standard-keysize.md @@ -10,22 +10,31 @@ Edge Planned ### Change Description -In .NET Framework versions prior to 4.6.2, customers with non-standard -key sizes for RSA certificates are unable to access those keys via the -`GetRSAPublicKey()` and `GetRSAPrivateKey()` extension methods. A -`CryptographicException` with the message "The requested key size is -not supported" is thrown. In .NET Framework 4.6.2 this issue has been -fixed. Similarly, `RSA.ImportParameters()` and -`RSACng.ImportParameters()` now work with non-standard key sizes -without throwing `CryptographicException`'s. + +In .NET Framework versions prior to 4.6.2, customers with non-standard key sizes +for RSA certificates are unable to access those keys via the + +and + +extension methods. A + +with the message "The requested key size is not supported" is thrown. In .NET +Framework 4.6.2 this issue has been fixed. Similarly, + +and + +now work with non-standard key sizes without throwing +s. - [X] Quirked - [ ] Build-time break ### Recommended Action -If there is any exception handling logic that relies on the previous -behavior where a `CryptographicException` is thrown when non-standard -key sizes are used, consider removing the logic. + +If there is any exception handling logic that relies on the previous behavior +where a + +is thrown when non-standard key sizes are used, consider removing the logic. ### Affected APIs * `M:System.Security.Cryptography.RSA.ImportParameters(System.Security.Cryptography.RSAParameters)` diff --git a/Documentation/compatibility/rsacng_verifyhash-now-returns-false-for-any-verification-failure.md b/Documentation/compatibility/rsacng_verifyhash-now-returns-false-for-any-verification-failure.md index 63bad060a..08f164e7c 100644 --- a/Documentation/compatibility/rsacng_verifyhash-now-returns-false-for-any-verification-failure.md +++ b/Documentation/compatibility/rsacng_verifyhash-now-returns-false-for-any-verification-failure.md @@ -10,16 +10,23 @@ Minor Investigating ### Change Description -Starting with the .NET Framework 4.6.2, this method returns **False** if the signature itself is badly formatted. It now returns false for any verification failure. -In the .NET Framework 4.6 and 4.6.1, the method throws a `T:System.Security.Cryptography.CryptographicException` if the signature itself is badly formatted. +Starting with the .NET Framework 4.6.2, this method returns **False** if the +signature itself is badly formatted. It now returns false for any verification +failure. + +In the .NET Framework 4.6 and 4.6.1, the method throws a + +if the signature itself is badly formatted. - [ ] Quirked - [ ] Build-time break ### Recommended Action -Any code whose execution depends on handling the `T:System.Security.Cryptography.CryptographicException` should instead execute if validation fails and the method returns **False**. +Any code whose execution depends on handling the + +should instead execute if validation fails and the method returns **False**. ### Affected APIs * `M:System.Security.Cryptography.RSACng.VerifyHash(System.Byte[],System.Byte[],System.Security.Cryptography.HashAlgorithmName,System.Security.Cryptography.RSASignaturePadding)` diff --git a/Documentation/compatibility/scrolling-a-wpf-treeview-or-grouped-listbox-in-a-virtualizingstackpanel-can-cause-a-hang.md b/Documentation/compatibility/scrolling-a-wpf-treeview-or-grouped-listbox-in-a-virtualizingstackpanel-can-cause-a-hang.md index d03fbc238..b97de07f3 100644 --- a/Documentation/compatibility/scrolling-a-wpf-treeview-or-grouped-listbox-in-a-virtualizingstackpanel-can-cause-a-hang.md +++ b/Documentation/compatibility/scrolling-a-wpf-treeview-or-grouped-listbox-in-a-virtualizingstackpanel-can-cause-a-hang.md @@ -13,13 +13,24 @@ Major Planned ### Change Description -In the .NET Framework v4.5, scrolling a WPF TreeView in a virtualized stack panel can cause hangs if there are margins in the viewport (between the items in the TreeView, for example, or on an ItemsPresenter element). Additionally, in some cases, different sized items in the view can cause instability even if there are no margins. + +In the .NET Framework v4.5, scrolling a WPF + in a virtualized +stack panel can cause hangs if there are margins in the viewport (between the +items in the , for +example, or on an ItemsPresenter element). Additionally, in some cases, +different sized items in the view can cause instability even if there are no +margins. - [ ] Quirked - [ ] Build-time break ### Recommended Action -This bug can be avoided by upgrading to .NET Framework 4.5.1. Alternatively, margins can be removed from view collections (like TreeViews) within virtualized stack panels if all contained items are the same size. + +This bug can be avoided by upgrading to .NET Framework 4.5.1. Alternatively, +margins can be removed from view collections (like +s) within +virtualized stack panels if all contained items are the same size. ### Affected APIs * `M:System.Windows.Controls.VirtualizingStackPanel.SetIsVirtualizing(System.Windows.DependencyObject,System.Boolean)` @@ -27,6 +38,6 @@ This bug can be avoided by upgrading to .NET Framework 4.5.1. Alternatively, mar ### Category Windows Presentation Foundation (WPF) -[More information](http://connect.microsoft.com/VisualStudio/feedback/details/763639/wpf-application-built-on-net-4-0-freezes-under-system-with-net-4-5-while-scrolling-the-treeview-under-specific-conditions) +[More information](http://connect.microsoft.com/VisualStudio/feedback/details/763639/wpf-application-built-on-net-4-0-freezes-under-system-with-net-4-5-while-scrolling-the--under-specific-conditions) diff --git a/Documentation/compatibility/serialization-of-control-characters-with-datacontractjsonserializer-is-now-compatible-with-ecmascript-v6-and-v8.md b/Documentation/compatibility/serialization-of-control-characters-with-datacontractjsonserializer-is-now-compatible-with-ecmascript-v6-and-v8.md index 0cc815a0b..2f54a0c05 100644 --- a/Documentation/compatibility/serialization-of-control-characters-with-datacontractjsonserializer-is-now-compatible-with-ecmascript-v6-and-v8.md +++ b/Documentation/compatibility/serialization-of-control-characters-with-datacontractjsonserializer-is-now-compatible-with-ecmascript-v6-and-v8.md @@ -10,19 +10,28 @@ Edge Planned ### Change Description -In the .NET framework 4.6.2 and earlier versions, the DataContractJsonSerializer did not serialize some special control characters, such as \b, \f, and \t, in a way that was compatible with the ECMAScript V6 and V8 standards. Starting with the .NET Framework 4.7, serialization of these control characters is compatible with ECMAScript V6 and V8. + +In the .NET framework 4.6.2 and earlier versions, the + +did not serialize some special control characters, such as \b, \f, and \t, in a +way that was compatible with the ECMAScript V6 and V8 standards. Starting with +the .NET Framework 4.7, serialization of these control characters is compatible +with ECMAScript V6 and V8. - [x] Quirked - [ ] Build-time break ### Recommended Action -For apps that target the .NET Framework 4.7, this feature is enabled by default. If this behavior is not desirable, you can opt out of this feature by adding the following line to the `` section of the app.config or web.config file: + +For apps that target the .NET Framework 4.7, this feature is enabled by default. +If this behavior is not desirable, you can opt out of this feature by adding the +following line to the `` section of the app.config or web.config file: ```xml - ``` + ``` ### Affected APIs * `M:System.Runtime.Serialization.Json.DataContractJsonSerializer.WriteObject(System.IO.Stream,System.Object)` diff --git a/Documentation/compatibility/sharing-session-state-with-asp_net-stateserver-requires-all-servers-in-the-web-farm-to-use-the-same-_net-framework-version.md b/Documentation/compatibility/sharing-session-state-with-asp_net-stateserver-requires-all-servers-in-the-web-farm-to-use-the-same-_net-framework-version.md index 11bee4d06..4b871f20f 100644 --- a/Documentation/compatibility/sharing-session-state-with-asp_net-stateserver-requires-all-servers-in-the-web-farm-to-use-the-same-_net-framework-version.md +++ b/Documentation/compatibility/sharing-session-state-with-asp_net-stateserver-requires-all-servers-in-the-web-farm-to-use-the-same-_net-framework-version.md @@ -10,13 +10,19 @@ Edge Planned ### Change Description -When enabling StateServer session state, all of the servers in the given web farm must use the same version of the .NET Framework in order for state to be properly shared. + +When enabling + +session state, all of the servers in the given web farm must use the same +version of the .NET Framework in order for state to be properly shared. - [ ] Quirked - [ ] Build-time break ### Recommended Action -Be sure to upgrade .NET Framework versions on web servers that share state at the same time. + +Be sure to upgrade .NET Framework versions on web servers that share state at +the same time. ### Affected APIs * `F:System.Web.SessionState.SessionStateMode.StateServer` diff --git a/Documentation/compatibility/soapformatter-cannot-deserialize-hashtable-and-similar-ordered-collection-objects.md b/Documentation/compatibility/soapformatter-cannot-deserialize-hashtable-and-similar-ordered-collection-objects.md index 8dfe00bc8..f8d361e59 100644 --- a/Documentation/compatibility/soapformatter-cannot-deserialize-hashtable-and-similar-ordered-collection-objects.md +++ b/Documentation/compatibility/soapformatter-cannot-deserialize-hashtable-and-similar-ordered-collection-objects.md @@ -10,14 +10,26 @@ Minor Available ### Change Description -The SoapFormatter does not guarantee that objects serialized under one .NET Framework version will successfully deserialize under a different version. Specifically, some ordered collections (like Hashtable) added members between 4.0 and 4.5 such that objects of these types cannot deserialize with .NET 4.0 if they were serialzied with .NET 4.5. -Note that if the serialized data is both serialized and deserialized with the same .NET Framework version, no issue will occur. + +The +does not guarantee that objects serialized under one .NET Framework version will +successfully deserialize under a different version. Specifically, some ordered +collections (like ) +added members between 4.0 and 4.5 such that objects of these types cannot +deserialize with .NET 4.0 if they were serialzied with .NET 4.5. Note that if +the serialized data is both serialized and deserialized with the same .NET +Framework version, no issue will occur. - [ ] Quirked - [ ] Build-time break ### Recommended Action -SoapFormatter serialization should be replaced with BinaryFormatter serialization or NetDataContractSerialization to be resilient to .NET Framework changes. + + +serialization should be replaced with + +serialization or +to be resilient to .NET Framework changes. ### Affected APIs * `M:System.Runtime.Serialization.Formatters.Soap.SoapFormatter.Serialize(System.IO.Stream,System.Object)` diff --git a/Documentation/compatibility/some-_net-apis-cause-first-chance-(handled)-entrypointnotfoundexceptions.md b/Documentation/compatibility/some-_net-apis-cause-first-chance-(handled)-entrypointnotfoundexceptions.md index 807ec18dd..dd6cf4a5d 100644 --- a/Documentation/compatibility/some-_net-apis-cause-first-chance-(handled)-entrypointnotfoundexceptions.md +++ b/Documentation/compatibility/some-_net-apis-cause-first-chance-(handled)-entrypointnotfoundexceptions.md @@ -13,13 +13,21 @@ Edge Available ### Change Description -In the .NET Framework 4.5, a small number of .NET methods began throwing first chance EntryPointNotFoundExceptions. These exceptions were handled within the .Net Framework, but could break test automation that did not expect the first chance exceptions. These same APIs break some ApiVerifier scenarios when HighVersionLie is enabled. + +In the .NET Framework 4.5, a small number of .NET methods began throwing first +chance s. These +exceptions were handled within the .Net Framework, but could break test +automation that did not expect the first chance exceptions. These same APIs +break some ApiVerifier scenarios when HighVersionLie is enabled. - [ ] Quirked - [ ] Build-time break ### Recommended Action -This bug can be avoided by upgrading to .NET Framework 4.5.1. Alternatively, test automation can be updated to not break on first-chance EntryPointNotFoundExceptions. + +This bug can be avoided by upgrading to .NET Framework 4.5.1. Alternatively, +test automation can be updated to not break on first-chance +s. ### Affected APIs * `M:System.Diagnostics.Debug.Assert(System.Boolean)` diff --git a/Documentation/compatibility/some-workflow-drag-and-drop-apis-are-obsolete.md b/Documentation/compatibility/some-workflow-drag-and-drop-apis-are-obsolete.md index 60e279370..ed0e0bf0f 100644 --- a/Documentation/compatibility/some-workflow-drag-and-drop-apis-are-obsolete.md +++ b/Documentation/compatibility/some-workflow-drag-and-drop-apis-are-obsolete.md @@ -16,7 +16,11 @@ This WorkFlow Drag/Drop API is obsolete and will cause compiler warnings if the - [x] Build-time break ### Recommended Action -New [DragDropHelper](https://msdn.microsoft.com/en-us/library/system.activities.presentation.dragdrophelper(v=vs.110).aspx) APIs that support operations with multiple objects should be used instead. Alternatively, the build warnings can be suppressed or they can be avoided by using an older compiler. The APIs are still supported. + +New +APIs that support operations with multiple objects should be used instead. +Alternatively, the build warnings can be suppressed or they can be avoided by +using an older compiler. The APIs are still supported. ### Affected APIs * `M:System.Activities.Presentation.DragDropHelper.DoDragMove(System.Activities.Presentation.WorkflowViewElement,System.Windows.Point)` diff --git a/Documentation/compatibility/sqlbulkcopy-uses-destination-column-encoding-for-strings.md b/Documentation/compatibility/sqlbulkcopy-uses-destination-column-encoding-for-strings.md index 71cb6b33d..c957f2a83 100644 --- a/Documentation/compatibility/sqlbulkcopy-uses-destination-column-encoding-for-strings.md +++ b/Documentation/compatibility/sqlbulkcopy-uses-destination-column-encoding-for-strings.md @@ -10,13 +10,26 @@ Edge Planned ### Change Description -When inserting data into a column, SqlBulkCopy uses the encoding of the destination column rather than the default encoding for `VARCHAR` and `CHAR` types. This change eliminates the possibility of data corruption caused by using the default encoding when the destination column does not use the default encoding. In rare cases, an existing application may throw a SqlException exception if the change in encoding produces data that is too big to fit into the destination column. + +When inserting data into a column, + uses the encoding +of the destination column rather than the default encoding for `VARCHAR` and +`CHAR` types. This change eliminates the possibility of data corruption caused +by using the default encoding when the destination column does not use the +default encoding. In rare cases, an existing application may throw a +SqlException exception if the change in encoding produces data that is too big +to fit into the destination column. - [ ] Quirked - [ ] Build-time break ### Recommended Action -Expect that SqlBulkCopy will no longer corrupt data due to encoding differences. If strings near the destination column's size limit are being copied, it may be necessary to either pre-encode data (to be copied to check that the data will fit in the destination column) or catch SqlExceptions. + +Expect that will +no longer corrupt data due to encoding differences. If strings near the +destination column's size limit are being copied, it may be necessary to either +pre-encode data (to be copied to check that the data will fit in the destination +column) or catch s. ### Affected APIs * `T:System.Data.SqlClient.SqlBulkCopy` diff --git a/Documentation/compatibility/sqlconnection_open-fails-on-windows-7-with-non-ifs-winsock-bsp-or-lsp-present.md b/Documentation/compatibility/sqlconnection_open-fails-on-windows-7-with-non-ifs-winsock-bsp-or-lsp-present.md index 466af8011..9b31f6df2 100644 --- a/Documentation/compatibility/sqlconnection_open-fails-on-windows-7-with-non-ifs-winsock-bsp-or-lsp-present.md +++ b/Documentation/compatibility/sqlconnection_open-fails-on-windows-7-with-non-ifs-winsock-bsp-or-lsp-present.md @@ -13,15 +13,26 @@ Minor Planned ### Change Description -SqlConneciton.Open and OpenAsync fail in the .NET Framework 4.5 if running on a Windows 7 machine with a non-IFS Winsock BSP or LSP are present on the computer. -To determine whether a non-IFS BSP or LSP is installed, use the `netsh WinSock Show Catalog` command, and examine every `Winsock Catalog Provider Entry` item that is returned. If the Service Flags value has the `0x20000` bit set, the provider uses IFS handles and will work correctly. If the `0x20000` bit is clear (not set), it is a non-IFS BSP or LSP. + and + +fail in the .NET Framework 4.5 if running on a Windows 7 machine with a non-IFS +Winsock BSP or LSP are present on the computer. + +To determine whether a non-IFS BSP or LSP is installed, use the `netsh WinSock +Show Catalog` command, and examine every `Winsock Catalog Provider Entry` item +that is returned. If the Service Flags value has the `0x20000` bit set, the +provider uses IFS handles and will work correctly. If the `0x20000` bit is clear +(not set), it is a non-IFS BSP or LSP. - [ ] Quirked - [ ] Build-time break ### Recommended Action -This bug has been fixed in the .NET Framework 4.5.2, so it can be avoided by upgrading the .NET Framework. Alternatively, it can be avoided by removing any installed non-IFS Winsock LSPs. + +This bug has been fixed in the .NET Framework 4.5.2, so it can be avoided by +upgrading the .NET Framework. Alternatively, it can be avoided by removing any +installed non-IFS Winsock LSPs. ### Affected APIs * `M:System.Data.SqlClient.SqlConnection.Open` diff --git a/Documentation/compatibility/sslstream-support-for-tls-alerts.md b/Documentation/compatibility/sslstream-support-for-tls-alerts.md index 7767af3e8..d34bb664f 100644 --- a/Documentation/compatibility/sslstream-support-for-tls-alerts.md +++ b/Documentation/compatibility/sslstream-support-for-tls-alerts.md @@ -10,32 +10,47 @@ Edge NotPlanned ### Change Description -After a failed TLS handshake, an `IOException` with an inner `Win32Exception` exception will be thrown by the first I/O Read/Write operation. The `NativeErrorCode` code for the `Win32Exception` can be mapped to the TLS Alert from the remote party using this [Schannel documentation](https://msdn.microsoft.com/en-us/library/windows/desktop/dd721886%28v=vs.85%29.aspx). -For more information, see +After a failed TLS handshake, an + with an inner + exception will +be thrown by the first I/O Read/Write operation. The + +code for the +can be mapped to the TLS Alert from the remote party using this +[channel documentation](https://msdn.microsoft.com/en-us/library/windows/desktop/dd721886%28v=vs.85%29.aspx). + +For more information, see [RFC 2246: Section 7.2.2 Error alerts](https://tools.ietf.org/html/rfc2246#section-7.2.2) -The behavior in .NET 4.6.2 and below is that the transport channel (usually TCP connection) will timeout during either Write or Read if the other party failed the handshake and immediately afterwards rejected the connection. +The behavior in .NET 4.6.2 and below is that the transport channel (usually TCP +connection) will timeout during either Write or Read if the other party failed +the handshake and immediately afterwards rejected the connection. - [x] Quirked - [ ] Build-time break ### Recommended Action -Applications calling network I/O APIs such as `Stream.Read`/`Stream.Write` should handle `IOException` or `TimeoutException`. +Applications calling network I/O APIs such as / +should handle or +. -The TLS Alerts feature is enabled by default starting with .NET 4.7. Applications targeting .NET 4.0 - .NET 4.6.2 running on a .NET 4.7 or higher system will have the feature disabled to preserve compatibility. +The TLS Alerts feature is enabled by default starting with .NET 4.7. +Applications targeting .NET 4.0 - .NET 4.6.2 running on a .NET 4.7 or higher +system will have the feature disabled to preserve compatibility. -The following configuration API is available to enable or disable the feature for .NET 4.6 and above applications running on .NET 4.7 or higher framework. +The following configuration API is available to enable or disable the feature +for .NET 4.6 and above applications running on .NET 4.7 or higher framework. * Programmatically: - + Must be the very first thing the application does since ServicePointManager will initialize only once:   ```C# AppContext.SetSwitch("TestSwitch.LocalAppContext.DisableCaching", true); AppContext.SetSwitch("Switch.System.Net.DontEnableTlsAlerts", true); // Set to 'false' to enable the feature in .NET 4.6 - 4.6.2. -``` +``` * AppConfig: ```XML diff --git a/Documentation/compatibility/system_activities-is-now-aptca.md b/Documentation/compatibility/system_activities-is-now-aptca.md index b4b13bb81..4fdf9e8fe 100644 --- a/Documentation/compatibility/system_activities-is-now-aptca.md +++ b/Documentation/compatibility/system_activities-is-now-aptca.md @@ -10,13 +10,19 @@ Edge Available ### Change Description -The assembly is marked with the AllowPartiallyTrustedCallersAttribute attribute. + +The assembly is marked with the attribute. - [ ] Quirked - [ ] Build-time break ### Recommended Action -Derived classes cannot be marked with the SecurityCriticalAttribute. Previously, derived types had to be marked with the SecurityCriticalAttribute. However, this change should have no real impact. + +Derived classes cannot be marked with the +. +Previously, derived types had to be marked with the +. However, +this change should have no real impact. ### Affected APIs * Not detectable via API analysis diff --git a/Documentation/compatibility/system_net_peertopeer_collaboration-unavailable-on-windows-8.md b/Documentation/compatibility/system_net_peertopeer_collaboration-unavailable-on-windows-8.md index 855fbb2b4..3b640fd91 100644 --- a/Documentation/compatibility/system_net_peertopeer_collaboration-unavailable-on-windows-8.md +++ b/Documentation/compatibility/system_net_peertopeer_collaboration-unavailable-on-windows-8.md @@ -10,6 +10,7 @@ Major Available ### Change Description + The System.Net.PeerToPeer.Collaboration namespace is unavailable on Windows 8 or above. - [ ] Quirked diff --git a/Documentation/compatibility/system_servicemodel_web_webservicehost-object-no-longer-adds-a-default-endpoint.md b/Documentation/compatibility/system_servicemodel_web_webservicehost-object-no-longer-adds-a-default-endpoint.md index c7d03dcb3..f0980e51d 100644 --- a/Documentation/compatibility/system_servicemodel_web_webservicehost-object-no-longer-adds-a-default-endpoint.md +++ b/Documentation/compatibility/system_servicemodel_web_webservicehost-object-no-longer-adds-a-default-endpoint.md @@ -1,23 +1,30 @@ ## System.ServiceModel.Web.WebServiceHost object no longer adds a default endpoint - + ### Scope Minor - + ### Version Introduced 4.5 - + ### Source Analyzer Status Planned ### Change Description -The System.ServiceModel.Web.WebServiceHost object no longer adds a default endpoint if an explicit endpoint has been added by application code. - + +The +object no longer adds a default endpoint if an explicit endpoint has been added +by application code. + - [ ] Quirked - [ ] Build-time break - + ### Recommended Action -If users will expect to be able to connect to a default endpoint and other explicit endpoints have been added to the WebServiceHost, default endpoints should also be added explicitly (using AddDefaultEndpoints). - + +If users will expect to be able to connect to a default endpoint and other +explicit endpoints have been added to the +, default +endpoints should also be added explicitly (using ). + ### Affected APIs * `M:System.ServiceModel.ServiceHost.AddServiceEndpoint(System.Type,System.ServiceModel.Channels.Binding,System.String)` * `M:System.ServiceModel.ServiceHost.AddServiceEndpoint(System.Type,System.ServiceModel.Channels.Binding,System.Uri)` @@ -32,12 +39,12 @@ If users will expect to be able to connect to a default endpoint and other expli ### Category Windows Communication Foundation (WCF) - + [More information](https://msdn.microsoft.com/en-us/library/hh367887(v=vs.110).aspx#wcf) diff --git a/Documentation/compatibility/system_threading_tasks_task-no-longer-throw-objectdisposedexception-after-object-is-disposed.md b/Documentation/compatibility/system_threading_tasks_task-no-longer-throw-objectdisposedexception-after-object-is-disposed.md index 772c275ff..acc60a659 100644 --- a/Documentation/compatibility/system_threading_tasks_task-no-longer-throw-objectdisposedexception-after-object-is-disposed.md +++ b/Documentation/compatibility/system_threading_tasks_task-no-longer-throw-objectdisposedexception-after-object-is-disposed.md @@ -10,13 +10,28 @@ Minor Available ### Change Description -Except for Task.IAsyncResult.AsyncWaitHandle, System.Threading.Tasks.Task methods no longer throw an ObjectDisposedException exception after the object is disposed.

This change supports the use of cached tasks. For example, a method can return a cached task to represent an already completed operation instead of allocating a new task. This was impossible in previous .NET Framework versions, because any consumer of the task could dispose of it, which rendered it unusable. + +Except for +, + methods no longer throw +an exception after +the object is disposed. + +This change supports the use of cached tasks. For example, a method can return a +cached task to represent an already completed operation instead of allocating a +new task. This was impossible in previous .NET Framework versions, because any +consumer of the task could dispose of it, which rendered it unusable. - [ ] Quirked - [ ] Build-time break ### Recommended Action -Be aware that Task methods may no longer throw ObjectDisposedExceptions in cases when the object is disposed. If an app was depending on this exception to know that a task was disposed, it should be updated to explicitly check the task's status using [Task.Status](https://msdn.microsoft.com/en-us/library/system.threading.tasks.task.status(v=vs.110).aspx). + +Be aware that Task methods may no longer throw + in cases when the +object is disposed. If an app was depending on this exception to know that a +task was disposed, it should be updated to explicitly check the task's status +using . ### Affected APIs * Not detectable via API analysis diff --git a/Documentation/compatibility/system_uri-escaping-now-supports-rfc-3986.md b/Documentation/compatibility/system_uri-escaping-now-supports-rfc-3986.md index 5ac19e202..317128142 100644 --- a/Documentation/compatibility/system_uri-escaping-now-supports-rfc-3986.md +++ b/Documentation/compatibility/system_uri-escaping-now-supports-rfc-3986.md @@ -10,18 +10,20 @@ Minor Available ### Change Description -URI escaping has changed in .NET 4.5 to support [RFC 3986](http://tools.ietf.org/html/rfc3986). Specific changes include: -- `EscapeDataString` escapes reserved characters based on RFC 3986. -- `EscapeUriString` does not escape reserved characters. -- `UnescapeDataString` does not throw an exception if it encounters an invalid escape sequence. +URI escaping has changed in .NET 4.5 to support +[RFC 3986](http://tools.ietf.org/html/rfc3986). Specific changes include: + +- escapes reserved characters based on RFC 3986. +- does not escape reserved characters. +- does not throw an exception if it encounters an invalid escape sequence. - Unreserved escaped characters are un-escaped. - [ ] Quirked - [ ] Build-time break ### Recommended Action -* Update applications to not rely on UnescapeDataString to throw in the case of an invalid escape sequence. Such sequences must be detected directly now. +* Update applications to not rely on to throw in the case of an invalid escape sequence. Such sequences must be detected directly now. * Similarly, expect that Escaped and Unescaped URI and Data strings may vary from .NET 4.0 and .NET 4.5 and should not be compared across .NET versions directly. Instead, they should be parsed and normalized in a single .NET version before any comparisons are made. ### Affected APIs diff --git a/Documentation/compatibility/system_uri-parsing-adheres-to-rfc-3987.md b/Documentation/compatibility/system_uri-parsing-adheres-to-rfc-3987.md index f8feef0fe..45c20eae0 100644 --- a/Documentation/compatibility/system_uri-parsing-adheres-to-rfc-3987.md +++ b/Documentation/compatibility/system_uri-parsing-adheres-to-rfc-3987.md @@ -10,8 +10,10 @@ Major Available ### Change Description -URI parsing has changed in several ways in .NET 4.5. Note, however, that these changes only affect code targeting .NET 4.5. If a binary targets .NET 4.0, the old behavior will be observed. -Changes to URI parsing in .NET 4.5 include: + +URI parsing has changed in several ways in .NET 4.5. Note, however, that these +changes only affect code targeting .NET 4.5. If a binary targets .NET 4.0, the +old behavior will be observed. Changes to URI parsing in .NET 4.5 include: - URI parsing will perform normalization and character checking according to the latest IRI rules in RFC 3987 - Unicode normalization form C will only be performed on the host portion of the URI @@ -25,7 +27,12 @@ Changes to URI parsing in .NET 4.5 include: - [ ] Build-time break ### Recommended Action -If the old .NET 4.0 URI parsing semantics are necessary (they often aren't), they can be used by targeting .NET 4.0. This can be accomplished by using a TargetFrameworkAttribute on the assembly, or through Visual Studio's project system UI in the 'project properties' page. + +If the old .NET 4.0 URI parsing semantics are necessary (they often aren't), +they can be used by targeting .NET 4.0. This can be accomplished by using a + +on the assembly, or through Visual Studio's project system UI in the 'project +properties' page. ### Affected APIs * `M:System.Uri.#ctor(System.String)` diff --git a/Documentation/compatibility/system_uri_iswellformeduristring-method-returns-false-for-relative-uris-with-a-colon-char-in-first-segment.md b/Documentation/compatibility/system_uri_iswellformeduristring-method-returns-false-for-relative-uris-with-a-colon-char-in-first-segment.md index eb3b7b24d..fd5025c42 100644 --- a/Documentation/compatibility/system_uri_iswellformeduristring-method-returns-false-for-relative-uris-with-a-colon-char-in-first-segment.md +++ b/Documentation/compatibility/system_uri_iswellformeduristring-method-returns-false-for-relative-uris-with-a-colon-char-in-first-segment.md @@ -10,13 +10,26 @@ Minor Planned ### Change Description -Beginning with the .NET Framework 4.5, `Uri.IsWellFormedUriString` will treat relative URIs with a `:` in their first segment as not well formed. This is a change from `Uri.IsWellFormedUriString` behavior in the .NET Framework 4.0 that was made to conform to RFC3986. + +Beginning with the .NET Framework 4.5, + +will treat relative URIs with a `:` in their first segment as not well formed. +This is a change from + +behavior in the .NET Framework 4.0 that was made to conform to RFC3986. - [x] Quirked - [ ] Build-time break ### Recommended Action -This change (like many other URI changes) will only affect applications targeting the .NET Framework 4.5 (or later). To keep using the old behavior, target the app against the .NET Framework 4.0. Alternatively, scan URI's prior to calling `IsWellFormedUriString` looking for `:` characters that you may want to remove for validation purposes, if the old behavior is desirable. + +This change (like many other URI changes) will only affect applications +targeting the .NET Framework 4.5 (or later). To keep using the old behavior, +target the app against the .NET Framework 4.0. Alternatively, scan URI's prior +to calling + +looking for `:` characters that you may want to remove for validation purposes, +if the old behavior is desirable. ### Affected APIs * `M:System.Uri.IsWellFormedUriString(System.String,System.UriKind)` diff --git a/Documentation/compatibility/targetframeworkname-for-default-app-domain-no-longer-defaults-to-null-if-not-set.md b/Documentation/compatibility/targetframeworkname-for-default-app-domain-no-longer-defaults-to-null-if-not-set.md index e0f0f2e73..a0099cd0f 100644 --- a/Documentation/compatibility/targetframeworkname-for-default-app-domain-no-longer-defaults-to-null-if-not-set.md +++ b/Documentation/compatibility/targetframeworkname-for-default-app-domain-no-longer-defaults-to-null-if-not-set.md @@ -10,13 +10,27 @@ Edge Planned ### Change Description -The TargetFrameworkName was previously null in the default app domain, unless it was explicitly set. Beginning in 4.6, the TargetFrameworkName property for the default app domain will have a default value derived from the TargetFrameworkAttribute (if one is present). Non-default app domains will continue to inherit their TargetFrameworkName from the default app domain (which will not default to null in 4.6) unless it is explicitly overridden. + +The was +previously null in the default app domain, unless it was explicitly set. +Beginning in 4.6, the + property +for the default app domain will have a default value derived from the +TargetFrameworkAttribute (if one is present). Non-default app domains will +continue to inherit their + from the +default app domain (which will not default to null in 4.6) unless it is +explicitly overridden. - [ ] Quirked - [ ] Build-time break ### Recommended Action -Code should be updated to not depend on `AppDomainSetup.TargetFrameworkName` defaulting to null. If it is required that this property continue to evaluate to null, it can be explicitly set to that value. + +Code should be updated to not depend on + +defaulting to null. If it is required that this property continue to evaluate to +null, it can be explicitly set to that value. ### Affected APIs * `M:System.AppDomainSetup.get_TargetFrameworkName` diff --git a/Documentation/compatibility/the-replace-method-in-odata-urls-is-disabled-by-default.md b/Documentation/compatibility/the-replace-method-in-odata-urls-is-disabled-by-default.md index cd8a89b5a..c04677881 100644 --- a/Documentation/compatibility/the-replace-method-in-odata-urls-is-disabled-by-default.md +++ b/Documentation/compatibility/the-replace-method-in-odata-urls-is-disabled-by-default.md @@ -10,13 +10,21 @@ Edge Available ### Change Description -Beginning in the .NET Framework 4.5, the Replace method in OData URLs is disabled by default. When OData Replace is disabled (now by default), any user requests including replace functions (which are uncommon) will fail. + +Beginning in the .NET Framework 4.5, the Replace method in OData URLs is +disabled by default. When OData Replace is disabled (now by default), any user +requests including replace functions (which are uncommon) will fail. - [ ] Quirked - [ ] Build-time break ### Recommended Action -If the replace method is required (which is uncommon), it can be re-enabled through a [config settings](https://msdn.microsoft.com/en-us/library/system.data.services.configuration.dataservicesfeaturessection.replacefunction.aspx). However, an enabled replace method can open security vulnerabilities and should only be used after careful review. + +If the replace method is required (which is uncommon), it can be re-enabled +through a config settings +(). +However, an enabled replace method can open security vulnerabilities and should +only be used after careful review. ### Affected APIs * ``T:System.Data.Services.DataService`1`` diff --git a/Documentation/compatibility/two-way-data-binding-to-a-property-with-a-non-public-setter-is-not-supported.md b/Documentation/compatibility/two-way-data-binding-to-a-property-with-a-non-public-setter-is-not-supported.md index fea52cb5e..ad3922188 100644 --- a/Documentation/compatibility/two-way-data-binding-to-a-property-with-a-non-public-setter-is-not-supported.md +++ b/Documentation/compatibility/two-way-data-binding-to-a-property-with-a-non-public-setter-is-not-supported.md @@ -10,13 +10,23 @@ Minor Planned ### Change Description -Attempting to data bind to a property without a public setter has never been a supported scenario. Beginning in the .NET Framework 4.5.1, this scenario will throw an InvalidOperationException. Note that this new exception will only be thrown for apps that specifically target the .NET Framework 4.5.1. If an app targets the .NET Framework 4.5, the call will be allowed. If the app does not target a particular .NET Framework version, the binding will be treated as one-way. + +Attempting to data bind to a property without a public setter has never been a +supported scenario. Beginning in the .NET Framework 4.5.1, this scenario will +throw an . Note that +this new exception will only be thrown for apps that specifically target the +.NET Framework 4.5.1. If an app targets the .NET Framework 4.5, the call will be +allowed. If the app does not target a particular .NET Framework version, the +binding will be treated as one-way. - [x] Quirked - [ ] Build-time break ### Recommended Action -The app should be updated to either use one-way binding, or expose the property's setter publicly. Alternatively, targeting the .NET Framework 4.5 will cause the app to exhibit the old behavior. + +The app should be updated to either use one-way binding, or expose the +property's setter publicly. Alternatively, targeting the .NET Framework 4.5 will +cause the app to exhibit the old behavior. ### Affected APIs * `F:System.Windows.Data.BindingMode.TwoWay` diff --git a/Documentation/compatibility/type_isassignablefrom-returns-wrong-result-for-generic-variables-with-constraints.md b/Documentation/compatibility/type_isassignablefrom-returns-wrong-result-for-generic-variables-with-constraints.md index ed118fb9d..5bfee3fe7 100644 --- a/Documentation/compatibility/type_isassignablefrom-returns-wrong-result-for-generic-variables-with-constraints.md +++ b/Documentation/compatibility/type_isassignablefrom-returns-wrong-result-for-generic-variables-with-constraints.md @@ -13,13 +13,21 @@ Minor Planned ### Change Description -In the .NET Framework 4.5, Type.IsAssignableFrom will incorrectly return `false` in all cases for some generic types with constraints. + +In the .NET Framework 4.5, + +will incorrectly return `false` in all cases for some generic types with +constraints. - [ ] Quirked - [ ] Build-time break ### Recommended Action -This issue was fixed in a servicing update. Please update the .NET Framework 4.5, or upgrade to .NET Framework 4.5.1 or later, to fix this issue. Alternatively, avoid using IsAssignableFrom with generic types that have constraints on generic parameters. Reflection APIs can be used as a work-around. + +This issue was fixed in a servicing update. Please update the .NET Framework +4.5, or upgrade to .NET Framework 4.5.1 or later, to fix this issue. +Alternatively, avoid using IsAssignableFrom with generic types that have +constraints on generic parameters. Reflection APIs can be used as a work-around. ### Affected APIs * `M:System.Type.IsAssignableFrom(System.Type)` diff --git a/Documentation/compatibility/unexpected-invalidcastexception-from-invokemethod-activity-in-wf4.md b/Documentation/compatibility/unexpected-invalidcastexception-from-invokemethod-activity-in-wf4.md index f58e08b6f..a748168ad 100644 --- a/Documentation/compatibility/unexpected-invalidcastexception-from-invokemethod-activity-in-wf4.md +++ b/Documentation/compatibility/unexpected-invalidcastexception-from-invokemethod-activity-in-wf4.md @@ -13,16 +13,23 @@ Minor Planned ### Change Description -Using a System.Activities.Statements.InvokeMethod that targets a method with a nullable parameter can throw an InvalidCastException. + +Using a + that +targets a method with a nullable parameter can throw an +. - [ ] Quirked - [ ] Build-time break ### Recommended Action -This behavior was reverted in a .NET Framework 4.5 servicing release. Please update the .NET Framework 4.5 (or upgrade to .NET Framework 4.5.1 or later) to fix the issue. + +This behavior was reverted in a .NET Framework 4.5 servicing release. Please +update the .NET Framework 4.5 (or upgrade to .NET Framework 4.5.1 or later) to +fix the issue. ### Affected APIs -* `P:System.Activities.Statements.InvokeMethod.Parameters` +* `P:.Parameters` ### Category Windows Workflow Foundation (WF) diff --git a/Documentation/compatibility/vb_net-no-longer-supports-partial-namespace-qualification-for-system_windows-apis.md b/Documentation/compatibility/vb_net-no-longer-supports-partial-namespace-qualification-for-system_windows-apis.md index dbf800b8b..a9bbb3584 100644 --- a/Documentation/compatibility/vb_net-no-longer-supports-partial-namespace-qualification-for-system_windows-apis.md +++ b/Documentation/compatibility/vb_net-no-longer-supports-partial-namespace-qualification-for-system_windows-apis.md @@ -10,7 +10,7 @@ Minor Available ### Change Description -Beginning in .NET 4.5.2, VB.NET projects cannot specify System.Windows APIs with partially-qualified namespaces. For example, referring to `Windows.Forms.DialogResult` will fail. Instead, code must refer to the fully qualified name (`System.Windows.Forms.DialogResult`) or import the specific namespace and refer simply to `DialogResult`. +Beginning in .NET 4.5.2, VB.NET projects cannot specify System.Windows APIs with partially-qualified namespaces. For example, referring to `Windows.Forms.DialogResult` will fail. Instead, code must refer to the fully qualified name () or import the specific namespace and refer simply to . - [ ] Quirked - [x] Build-time break diff --git a/Documentation/compatibility/wcf-transport-security-supports-certificates-stored-using-cng.md b/Documentation/compatibility/wcf-transport-security-supports-certificates-stored-using-cng.md index e01ef72e2..ca24cee24 100644 --- a/Documentation/compatibility/wcf-transport-security-supports-certificates-stored-using-cng.md +++ b/Documentation/compatibility/wcf-transport-security-supports-certificates-stored-using-cng.md @@ -12,7 +12,8 @@ Investigating ### Change Description Starting with apps that target the .NET Framework 4.6.2, WCF transport security supports certificates stored using the Windows Cryptography Library (CNG). This support is limited to certificates with a public key that has an exponent no more than 32 bits in length. When an application targets the .NET Framework 4.6.2, this feature is on by default. -In earlier versions of the .NET Framework, the attempt to use X509 certificates with a CSG key storage provider throws an exception. +In earlier versions of the .NET Framework, the attempt to use X509 certificates with a CSG key storage provider throws an exception. + - [X] Quirked - [ ] Build-time break @@ -23,12 +24,12 @@ Apps that target the .NET Framework 4.6.1 and earlier but are running on the .NE - ``` + ``` This can also be done programmatically with the following code: ```cs - private const string DisableCngCertificates = @"Switch.System.ServiceModel.DisableCngCertificate"; + private const string DisableCngCertificates = @"Switch.System.ServiceModel.DisableCngCertificate"; AppContext.SetSwitch(disableCngCertificates, false); ``` @@ -37,7 +38,7 @@ This can also be done programmatically with the following code: AppContext.SetSwitch(disableCngCertificates, False) ``` -Note that, because of this change, any exception handling code that depends on the attempt to initiate secure communication with a CNG certificate to fail will no longer execute. +Note that, because of this change, any exception handling code that depends on the attempt to initiate secure communication with a CNG certificate to fail will no longer execute. ### Category Windows Communication Foundation (WCF) diff --git a/Documentation/compatibility/webutility_htmlencode-and-webutility_htmldecode-round-trip-bmp-correctly.md b/Documentation/compatibility/webutility_htmlencode-and-webutility_htmldecode-round-trip-bmp-correctly.md index 06067ebbd..afdfc1e25 100644 --- a/Documentation/compatibility/webutility_htmlencode-and-webutility_htmldecode-round-trip-bmp-correctly.md +++ b/Documentation/compatibility/webutility_htmlencode-and-webutility_htmldecode-round-trip-bmp-correctly.md @@ -10,13 +10,23 @@ Edge Planned ### Change Description -For applications that target the .NET Framework 4.5, characters that are outside the Basic Multilingual Plane (BMP) round-trip correctly when they are passed to the WebUtility.HtmlDecode method. + +For applications that target the .NET Framework 4.5, characters that are outside +the Basic Multilingual Plane (BMP) round-trip correctly when they are passed to +the +methods. - [x] Quirked - [ ] Build-time break ### Recommended Action -This change should have no effect on current applications, but to restore the original behavior, set the targetFramework attribute of the `` element to a string other than "4.5". You can also set the `unicodeEncodingConformance` and `unicodeDecodingConformance` attributes of the `` configuration element to control this behavior independently of the targeted version of the .NET Framework. + +This change should have no effect on current applications, but to restore the +original behavior, set the targetFramework attribute of the `` +element to a string other than "4.5". You can also set the +`unicodeEncodingConformance` and `unicodeDecodingConformance` attributes of the +`` configuration element to control this behavior independently of +the targeted version of the .NET Framework. ### Affected APIs * `M:System.Net.WebUtility.HtmlEncode(System.String)` diff --git a/Documentation/compatibility/wf-serializes-expressions_literal-datetimes-differently.md b/Documentation/compatibility/wf-serializes-expressions_literal-datetimes-differently.md index d7ada3641..0aa56a7e2 100644 --- a/Documentation/compatibility/wf-serializes-expressions_literal-datetimes-differently.md +++ b/Documentation/compatibility/wf-serializes-expressions_literal-datetimes-differently.md @@ -10,13 +10,29 @@ Edge Planned ### Change Description -The associated [ValueSerializer](https://msdn.microsoft.com/en-us/library/system.windows.markup.valueserializer(v=vs.110).aspx) object will convert a DateTime or DateTimeOffset object whose Second and Millisecond components are non-zero and (for a DateTime value) whose DateTime.Kind property is not Unspecified to property element syntax instead of a string. This change allows DateTime and DateTimeOffset values to be round-tripped. Custom XAML parsers that assume that input XAML is in the attribute syntax will not function correctly. + +The associated + object +will convert a or + object whose Second and + components are non-zero +and (for a value) whose + property is not +Unspecified to property element syntax instead of a string. This change allows + and + values to be round-tripped. +Custom XAML parsers that assume that input XAML is in the attribute syntax will +not function correctly. - [ ] Quirked - [ ] Build-time break ### Recommended Action -This change allows DateTime and DateTimeOffset values to be round-tripped. Custom XAML parsers that assume that input XAML is in the attribute syntax will not function correctly. + +This change allows and + values to be round-tripped. +Custom XAML parsers that assume that input XAML is in the attribute syntax will +not function correctly. ### Affected APIs * Not detectable via API analysis diff --git a/Documentation/compatibility/winform's-checkforoverflowunderflow-property-is-now-true-for-system_drawing.md b/Documentation/compatibility/winform's-checkforoverflowunderflow-property-is-now-true-for-system_drawing.md index 2cc3a1572..696bdfc92 100644 --- a/Documentation/compatibility/winform's-checkforoverflowunderflow-property-is-now-true-for-system_drawing.md +++ b/Documentation/compatibility/winform's-checkforoverflowunderflow-property-is-now-true-for-system_drawing.md @@ -16,7 +16,9 @@ The CheckForOverflowUnderflow property for the System.Drawing.dll assembly is se - [ ] Build-time break ### Recommended Action -Previously when overflows occurred, the result would be silently truncated. Now an OverflowException exception is thrown. + +Previously when overflows occurred, the result would be silently truncated. Now +an exception is thrown. ### Affected APIs * Not detectable via API analysis diff --git a/Documentation/compatibility/workflow-3_0-types-are-obsolete.md b/Documentation/compatibility/workflow-3_0-types-are-obsolete.md index fdafc8c40..9f9d20450 100644 --- a/Documentation/compatibility/workflow-3_0-types-are-obsolete.md +++ b/Documentation/compatibility/workflow-3_0-types-are-obsolete.md @@ -16,7 +16,7 @@ Windows Workflow Foundation (WWF) 3.0 APIs (those from the System.Workflow names - [x] Build-time break ### Recommended Action -New WWF 4.0 APIs (in System.Activities) should be used instead. An example of using the new APIs can be found [here](https://msdn.microsoft.com/en-us/library/jj205427.aspx) and further guidance is available [here](http://blogs.msdn.com/b/workflowteam/archive/2012/02/08/deprecatingwf3.aspx). Alternatively, since the WWF 3.0 APIs are still supported, they may be used and the build-time warning avoided either by suppressing it or by using an older compiler. +New WWF 4.0 APIs (in System.Activities) should be used instead. An example of using the new APIs can be found [here](https://docs.microsoft.com/en-us/dotnet/articles/framework/windows-workflow-foundation/how-to-update-the-definition-of-a-running-workflow-instance) and further guidance is available [here](http://blogs.msdn.com/b/workflowteam/archive/2012/02/08/deprecatingwf3.aspx). Alternatively, since the WWF 3.0 APIs are still supported, they may be used and the build-time warning avoided either by suppressing it or by using an older compiler. ### Affected APIs * Not detectable via API analysis diff --git a/Documentation/compatibility/workflow-now-throws-original-exception-instead-of-nullreferenceexception-in-some-cases.md b/Documentation/compatibility/workflow-now-throws-original-exception-instead-of-nullreferenceexception-in-some-cases.md index ce384825c..1cfe389e9 100644 --- a/Documentation/compatibility/workflow-now-throws-original-exception-instead-of-nullreferenceexception-in-some-cases.md +++ b/Documentation/compatibility/workflow-now-throws-original-exception-instead-of-nullreferenceexception-in-some-cases.md @@ -10,9 +10,12 @@ Minor NotPlanned ### Change Description -In the .NET Framework 4.6.2 and earlier versions, when the Execute method of a workflow activity -throws an exception with a `null` value for the `P:System.Exception.Message` property, the -System.Activities Workflow runtime throws a `NullReferenceException`, masking the original + +In the .NET Framework 4.6.2 and earlier versions, when the Execute method of a +workflow activity throws an exception with a `null` value for the + property, the +System.Activities Workflow runtime throws a +, masking the original exception. In the .NET Framework 4.7, the previously masked exception is thrown. @@ -21,8 +24,10 @@ In the .NET Framework 4.7, the previously masked exception is thrown. - [ ] Build-time break ### Recommended Action -If your code relies on handling the `NullReferenceException`, change it to catch the exceptions -that could be thrown from your custom activities. + +If your code relies on handling the +, change it to catch +the exceptions that could be thrown from your custom activities. ### Affected APIs * `M:System.Activities.CodeActivity.Execute(System.Activities.CodeActivityContext)` diff --git a/Documentation/compatibility/workflowdesigner_load-doesn't-remove-symbol-property.md b/Documentation/compatibility/workflowdesigner_load-doesn't-remove-symbol-property.md index 76c4950dc..6eafee8f3 100644 --- a/Documentation/compatibility/workflowdesigner_load-doesn't-remove-symbol-property.md +++ b/Documentation/compatibility/workflowdesigner_load-doesn't-remove-symbol-property.md @@ -13,15 +13,24 @@ Major Planned ### Change Description -When targeting the .NET Framework 4.5 in the workflow designer, and loading a re-hosted 3.5 workflow with the WorkflowDesigner.Load() method, a XamlDuplicateMemberException is thrown while saving the workflow. + +When targeting the .NET Framework 4.5 in the workflow designer, and loading a +re-hosted 3.5 workflow with the + +method, a +is thrown while saving the workflow. - [x] Quirked - [ ] Build-time break ### Recommended Action + This bug only manifests when targeting .NET Framework 4.5 in the workflow designer, so it can be worked around by setting the `WorkflowDesigner.Context.Services.GetService().TargetFrameworkName` to the 4.0 .NET Framework. -Alternatively, the issue may be avoided by using the [WorkflowContext.Load(string)](https://msdn.microsoft.com/en-us/library/ee425926(v=vs.110).aspx) method to load the workflow, instead of [WorkflowDesigner.Load()](https://msdn.microsoft.com/en-us/library/ee403482(v=vs.110).aspx). +Alternatively, the issue may be avoided by using the + +method to load the workflow, instead of +. ### Affected APIs * `M:System.Activities.Presentation.WorkflowDesigner.Load` diff --git a/Documentation/compatibility/wpf-datatemplate-elements-are-now-visible-to-uia.md b/Documentation/compatibility/wpf-datatemplate-elements-are-now-visible-to-uia.md index 97b03f88f..d5b4330dd 100644 --- a/Documentation/compatibility/wpf-datatemplate-elements-are-now-visible-to-uia.md +++ b/Documentation/compatibility/wpf-datatemplate-elements-are-now-visible-to-uia.md @@ -10,13 +10,24 @@ Edge Available ### Change Description -Previously, DataTemplate elements were invisible to UI Automation. Beginning in 4.5, UI Automation will detect these elements. This is useful in many cases, but can break tests that depend on UIA trees not containing DataTemplate elements. + +Previously, elements +were invisible to UI Automation. Beginning in 4.5, UI Automation will detect +these elements. This is useful in many cases, but can break tests that depend on +UIA trees not containing +elements. - [ ] Quirked - [ ] Build-time break ### Recommended Action -UI Auomation tests for this app may need updated to account for the UIA tree now including previously invisible DataTemplate elements. For example, tests that expect some elements to be next to each other may now need to expect previously invisible UIA elements in between. Or tests that rely on certain counts or indexes for UIA elements may need updated with new values. + +UI Auomation tests for this app may need updated to account for the UIA tree now +including previously invisible + elements. For example, +tests that expect some elements to be next to each other may now need to expect +previously invisible UIA elements in between. Or tests that rely on certain +counts or indexes for UIA elements may need updated with new values. ### Affected APIs * `M:System.Windows.DataTemplate.#ctor` diff --git a/Documentation/compatibility/wpf-dispatchersynchronizationcontext_createcopy-now-returns-a-new-copy-instead-of-the-current-instance.md b/Documentation/compatibility/wpf-dispatchersynchronizationcontext_createcopy-now-returns-a-new-copy-instead-of-the-current-instance.md index 8beda13ae..83d62b46e 100644 --- a/Documentation/compatibility/wpf-dispatchersynchronizationcontext_createcopy-now-returns-a-new-copy-instead-of-the-current-instance.md +++ b/Documentation/compatibility/wpf-dispatchersynchronizationcontext_createcopy-now-returns-a-new-copy-instead-of-the-current-instance.md @@ -10,13 +10,31 @@ Minor Available ### Change Description -In the .NET Framework 4, DispatcherSynchronizationContext.CreateCopy() returned a reference to the current instance, primarily as a performance optimization. In the .NET Framework 4.5, it returns a new instance which makes it possible for the first time to conclude that equal references indicate the executing thread is in the correct synchronization context. It is unlikely that code that checks the identity of these references will be affected, but because of the change, code that calls DispatcherSynchronizationContext.CreateCopy should be tested as part of migration to the .NET Framework 4.5 or newer. + +In the .NET Framework 4, + +returned a reference to the current instance, primarily as a performance +optimization. In the .NET Framework 4.5, it returns a new instance which makes +it possible for the first time to conclude that equal references indicate the +executing thread is in the correct synchronization context. It is unlikely that +code that checks the identity of these references will be affected, but because +of the change, code that calls + +should be tested as part of migration to the .NET Framework 4.5 or newer. - [ ] Quirked - [ ] Build-time break ### Recommended Action -Be aware that DispatcherSynchronizationContext.CreateCopy() will now return a new SynchronizationContext object. Previously, code that used equivalence of references generated this way was not actually checking whether it was in the proper context, but does when built against .NET 4.5 or newer. While unlikely to cause issues, exercising the affected code paths should be enough to determine if this poses any problem. + +Be aware that + +will now return a new + object. +Previously, code that used equivalence of references generated this way was not +actually checking whether it was in the proper context, but does when built +against .NET 4.5 or newer. While unlikely to cause issues, exercising the +affected code paths should be enough to determine if this poses any problem. ### Affected APIs * `M:System.Windows.Threading.DispatcherSynchronizationContext.CreateCopy` diff --git a/Documentation/compatibility/wpf-grid-allocation-of-space-to-star-columns.md b/Documentation/compatibility/wpf-grid-allocation-of-space-to-star-columns.md index ebbc8a809..078d3b9b2 100644 --- a/Documentation/compatibility/wpf-grid-allocation-of-space-to-star-columns.md +++ b/Documentation/compatibility/wpf-grid-allocation-of-space-to-star-columns.md @@ -11,9 +11,12 @@ NotPlanned ### Change Description -Starting with the .NET Framework 4.7, WPF replaces the algorithm that `T:System.Windows.Controls.Grid` uses to allocate space to *-columns. This will change the actual width assigned to *-columns in a number of cases: +Starting with the .NET Framework 4.7, WPF replaces the algorithm that + uses to allocate +space to *-columns. This will change the actual width assigned to *-columns in +a number of cases: -- When one or more *-columns also have a minimum or maximum width that overrides the proportional allocation for that colum. (The minimum width can derive from an explicit MinWidth declaration, or from an implicit minimum obtained from the column's content. The maximum width can only be defined explicitly, from a MaxWidth declaration.) +- When one or more *-columns also have a minimum or maximum width that overrides the proportional allocation for that colum. (The minimum width can derive from an explicit MinWidth declaration, or from an implicit minimum obtained from the column's content. The maximum width can only be defined explicitly, from a MaxWidth declaration.) - When one or more *-columns declare an extremely large *-weight, greater than 10^298. @@ -25,15 +28,15 @@ In the first two cases, the widths produced by the new algorithm can be signific The new algorithm fixes several bugs present in the old algorithm: -1. Total allocation to columns can exceed the Grid's width. This can occur when allocating space to a column whose proportional share is less than its minimum size. The algorithm allocates the minimum size, which decreases the space available to other columns. If there are no *-columns left to allocate, the total allocation will be too large. +1. Total allocation to columns can exceed the Grid's width. This can occur when allocating space to a column whose proportional share is less than its minimum size. The algorithm allocates the minimum size, which decreases the space available to other columns. If there are no *-columns left to allocate, the total allocation will be too large. -2. Total allocation can fall short of the Grid's width. This is the dual problem to #1, arising when allocating to a column whose proportional share is greater than its maximum size, with no *-columns left to take up the slack. +2. Total allocation can fall short of the Grid's width. This is the dual problem to #1, arising when allocating to a column whose proportional share is greater than its maximum size, with no *-columns left to take up the slack. -3. Two *-columns can receive allocations not proportional to their *-weights. This is a milder version of #1/#2, arising when allocating to *-columns A, B, and C (in that order), where B's proportional share violates its min (or max) constraint. As above, this changes the space available to column C, who gets less (or more) proportional allocation than A did, +3. Two *-columns can receive allocations not proportional to their *-weights. This is a milder version of #1/#2, arising when allocating to *-columns A, B, and C (in that order), where B's proportional share violates its min (or max) constraint. As above, this changes the space available to column C, who gets less (or more) proportional allocation than A did, -4. Columns with extremely large weights (> 10^298) are all treated as if they had weight 10^298. Proportional differences between them (and between columns with slightly smaller weights) are not honored. +4. Columns with extremely large weights (> 10^298) are all treated as if they had weight 10^298. Proportional differences between them (and between columns with slightly smaller weights) are not honored. -5. Columns with inifinte weights are not handled correctly. [Actually you can't set a weight to Infinity, but this is an artificial restriction. The allocation code was trying to handle it, but doing a bad job.] +5. Columns with inifinte weights are not handled correctly. [Actually you can't set a weight to Infinity, but this is an artificial restriction. The allocation code was trying to handle it, but doing a bad job.] 6. Several minor problems while avoiding overflow, underflow, loss of precision and similar floating-point issues. @@ -42,12 +45,12 @@ The new algorithm fixes several bugs present in the old algorithm: The new algorithm produces results that meet the following criteria: A. The actual width assigned to a *-column is never less than its minimum width nor greater than its maximum width. - -B. Each *-column that is not assigned its minimum or maximum width is assigned a width proportional to its *-weight. To be precise, if two columns are declared with width x* and y* respectively, and if neither column receives its minimum or maximum width, the actual widths v and w assigned to the columns are in the same proportion: v / w == x / y. - -C. The total width allocated to "proportional" *-columns is equal to the space available after allocating to the constrained columns (fixed, auto, and *-columns that are allocated their min or max width). This might be zero, for instance if the sum of the minimum widths exceeds the Grid's availbable width. - -D. All these statements are to be interpreted with respect to the "ideal" layout. When layout rounding is in effect, the actual widths can differ from the ideal widths by as much as one pixel. + +B. Each *-column that is not assigned its minimum or maximum width is assigned a width proportional to its *-weight. To be precise, if two columns are declared with width x* and y* respectively, and if neither column receives its minimum or maximum width, the actual widths v and w assigned to the columns are in the same proportion: v / w == x / y. + +C. The total width allocated to "proportional" *-columns is equal to the space available after allocating to the constrained columns (fixed, auto, and *-columns that are allocated their min or max width). This might be zero, for instance if the sum of the minimum widths exceeds the Grid's availbable width. + +D. All these statements are to be interpreted with respect to the "ideal" layout. When layout rounding is in effect, the actual widths can differ from the ideal widths by as much as one pixel. The old algorithm honored (A) but failed to honor the other criteria in the cases outlined above. @@ -64,7 +67,7 @@ To override the default, use the following configuration setting: ```xml - + ``` diff --git a/Documentation/compatibility/wpf-nullreferenceexception-in-exception-handling-code-from-imagesourceconverter_convertfrom.md b/Documentation/compatibility/wpf-nullreferenceexception-in-exception-handling-code-from-imagesourceconverter_convertfrom.md index b1921a59e..882564bd4 100644 --- a/Documentation/compatibility/wpf-nullreferenceexception-in-exception-handling-code-from-imagesourceconverter_convertfrom.md +++ b/Documentation/compatibility/wpf-nullreferenceexception-in-exception-handling-code-from-imagesourceconverter_convertfrom.md @@ -10,15 +10,30 @@ Edge NotPlanned ### Change Description -An error in the exception handling code for ImageSourceConverter.ConvertFrom caused an incorrect NullReferenceException to be thrown instead of the intended exception (e.g. DirectoryNotFoundException , FileNotFoundException), this change corrects that error so that the method now throws the right exception. -By default all applications targeting .NET Framework 4.6.2 and below will continue to throw NullReferenceException for compatibility, developers targeting .NET Framework 4.7 and above should see the right exceptions. + +An error in the exception handling code for + +caused an incorrect to +be thrown instead of the intended exception (e.g. +, +), this change +corrects that error so that the method now throws the right exception. + +By default all applications targeting .NET Framework 4.6.2 and below will +continue to throw for +compatibility, developers targeting .NET Framework 4.7 and above should see the +right exceptions. // Replace the space with an 'x' if applicable -- [x] Quirked -- [ ] Build-time break +- [x] Quirked +- [ ] Build-time break ### Recommended Action -Developers who wish to revert to getting NullReferenceException when targeting .NET Framework 4.7 can add/merge the following to their application's App.config file: + +Developers who wish to revert to getting + when targeting .NET +Framework 4.7 can add/merge the following to their application's App.config +file: ```xml diff --git a/Documentation/compatibility/wpf-printing-stack-update.md b/Documentation/compatibility/wpf-printing-stack-update.md index 0120c2ec5..d655a9754 100644 --- a/Documentation/compatibility/wpf-printing-stack-update.md +++ b/Documentation/compatibility/wpf-printing-stack-update.md @@ -10,15 +10,21 @@ Edge NotPlanned ### Change Description -WPF's Printing APIs using PrintQueue now call Window's Print Document Package API in favor of the now deprecated XPS Print API, neither users nor developers should see any changes in behaviour or API usage, the change was made with serviceability in mind. -The new printing stack is by default enabled when running in Windows 10 Creators Update. -The old printing stack will still continue to work just as before in older Windows versions. -- [x] Quirked -- [ ] Build-time break +WPF's Printing APIs using +now call Window's Print Document Package API in favor of the now deprecated XPS +Print API, neither users nor developers should see any changes in behaviour or +API usage, the change was made with serviceability in mind. The new printing +stack is by default enabled when running in Windows 10 Creators Update. The old +printing stack will still continue to work just as before in older Windows +versions. + +- [x] Quirked +- [ ] Build-time break ### Recommended Action -If the user wants to use the old stack in Windows 10 Creators Update , the user should set registry key REG_DWORD `HKEY_CURRENT_USER\Software\Microsoft\.NETFramework\Windows Presentation Foundation\Printing\UseXpsOMPrinting = 1` + +If the user wants to use the old stack in Windows 10 Creators Update, the user should set registry key REG_DWORD `HKEY_CURRENT_USER\Software\Microsoft\.NETFramework\Windows Presentation Foundation\Printing\UseXpsOMPrinting = 1` ### Affected APIs Not detectable via API analysis diff --git a/Documentation/compatibility/wpf-spell-checking-fail-in-unexpected-ways.md b/Documentation/compatibility/wpf-spell-checking-fail-in-unexpected-ways.md index 7ccccb34f..8cdf2e53a 100644 --- a/Documentation/compatibility/wpf-spell-checking-fail-in-unexpected-ways.md +++ b/Documentation/compatibility/wpf-spell-checking-fail-in-unexpected-ways.md @@ -15,9 +15,9 @@ Not planned ### Change Description This includes a number of WPF Spell Checker issues: -- WPF Spell Checker sometimes throws COMException -- WPF Spell Checker fails with System.UnauthorizedAccessException when applications are launched using 'run as different user' -- WPF Spell Checker incorrectly identifies spelling errors in compound words like 'Hausnummer' in German. +- WPF Spell Checker sometimes throws +- WPF Spell Checker fails with when applications are launched using 'run as different user' +- WPF Spell Checker incorrectly identifies spelling errors in compound words like 'Hausnummer' in German. - [ ] Quirked - [ ] Build-time break @@ -25,8 +25,8 @@ This includes a number of WPF Spell Checker issues: ### Recommended Action Issue #1 - This has been fixed in .NET Framework 4.6.2 -Issue #2 - WPF Spell Checker is no longer supported when applications are launched using 'run as different user'. Starting .NET Framework 4.6.2, applications launched in this manner will no longer crash unexpectedly - instead the Spell Checker will be silently disabled. -Issue #3 - This has been fixed in .NET Framework 4.6.2. +Issue #2 - WPF Spell Checker is no longer supported when applications are launched using 'run as different user'. Starting .NET Framework 4.6.2, applications launched in this manner will no longer crash unexpectedly - instead the Spell Checker will be silently disabled. +Issue #3 - This has been fixed in .NET Framework 4.6.2. ### Affected APIs * Not detectable via API analysis diff --git a/Documentation/compatibility/wpf-textbox-defaults-to-undo-limit-of-100.md b/Documentation/compatibility/wpf-textbox-defaults-to-undo-limit-of-100.md index d1ca57151..9bb687751 100644 --- a/Documentation/compatibility/wpf-textbox-defaults-to-undo-limit-of-100.md +++ b/Documentation/compatibility/wpf-textbox-defaults-to-undo-limit-of-100.md @@ -16,7 +16,7 @@ In .NET 4.5, the default undo limit for a WPF textbox is 100 (as opposed to bein - [ ] Build-time break ### Recommended Action -If an undo limit of 100 is too low, the limit can be set explicitly with the TextBox's UndoLimit property +If an undo limit of 100 is too low, the limit can be set explicitly with ### Affected APIs * `T:System.Windows.Controls.TextBox` diff --git a/Documentation/compatibility/wpf-textbox-selected-text-appears-a-different-color-when-the-text-box-is-inactive.md b/Documentation/compatibility/wpf-textbox-selected-text-appears-a-different-color-when-the-text-box-is-inactive.md index f036a066c..f7f6945e6 100644 --- a/Documentation/compatibility/wpf-textbox-selected-text-appears-a-different-color-when-the-text-box-is-inactive.md +++ b/Documentation/compatibility/wpf-textbox-selected-text-appears-a-different-color-when-the-text-box-is-inactive.md @@ -10,13 +10,19 @@ Edge Available ### Change Description -In .NET 4.5, when a WPF text box control is inactive (it doesn't have focus), the selected text inside the box will appear a different color than when the control is active. + +In .NET 4.5, when a WPF text box control is inactive (it doesn't have focus), +the selected text inside the box will appear a different color than when the +control is active. - [ ] Quirked - [ ] Build-time break ### Recommended Action -Previous (.NET 4.0) behavior may be restored by setting the [FrameworkCompatibilityPreferences.AreInactiveSelectionHighlightBrushKeysSupported](https://msdn.microsoft.com/en-us/library/system.windows.frameworkcompatibilitypreferences.areinactiveselectionhighlightbrushkeyssupported(v=vs.110).aspx) property to false. + +Previous (.NET 4.0) behavior may be restored by setting the + +property to `false`. ### Affected APIs * `T:System.Windows.Controls.TextBox` diff --git a/Documentation/compatibility/wpf-textbox_text-can-be-out-of-sync-with-databinding.md b/Documentation/compatibility/wpf-textbox_text-can-be-out-of-sync-with-databinding.md index a79c7e81f..a223a2cef 100644 --- a/Documentation/compatibility/wpf-textbox_text-can-be-out-of-sync-with-databinding.md +++ b/Documentation/compatibility/wpf-textbox_text-can-be-out-of-sync-with-databinding.md @@ -10,13 +10,21 @@ Edge Planned ### Change Description -In some cases, the TextBox.Text property reflects a previous value of the databound property value if the property is modified during a databinding write operation. + +In some cases, the + +property reflects a previous value of the databound property value if the +property is modified during a databinding write operation. - [x] Quirked - [ ] Build-time break ### Recommended Action -This should have no negative impact. However, you can restore the previous behavior by setting the [FrameworkCompatibilityPreferences.KeepTextBoxDisplaySynchronizedWithTextProperty](https://msdn.microsoft.com/en-us/library/system.windows.frameworkcompatibilitypreferences.keeptextboxdisplaysynchronizedwithtextproperty(v=vs.110).aspx) property to false. + +This should have no negative impact. However, you can restore the previous +behavior by setting the + +property to `false`. ### Affected APIs * `P:System.Windows.Controls.TextBox.Text` diff --git a/Documentation/compatibility/wpf-treeviewitem-must-be-used-within-a-treeview.md b/Documentation/compatibility/wpf-treeviewitem-must-be-used-within-a-treeview.md index aab1ff8ea..12af653ef 100644 --- a/Documentation/compatibility/wpf-treeviewitem-must-be-used-within-a-treeview.md +++ b/Documentation/compatibility/wpf-treeviewitem-must-be-used-within-a-treeview.md @@ -10,17 +10,30 @@ Minor Available ### Change Description -A change was introduced in 4.5 that restricts usage of TreeViewItem elements outside of a TreeView. This manifests under the following conditions: -- TreeViewItem's visual parent is not a panel. (A TreeViewItem generated for a TreeView will have a panel as its parent) -- The TreeViewItem is a descendant of a VirtualizingStackPanel acting as the "items host" for a list control (ListBox, DataGrid, ListView, etc.). Virtualization doesn't need to be enabled. -- The VirtualizingStackPanel is item-scrolling (`ScrollUnit="Item"`). -- Someone calls `VirtualizingStackPanel.MakeVisible(v)` to scroll an element `v` into view. This can be done explicitly, or implicitly in a number of ways; perhaps the most common way is simply clicking on `v` to give it the keyboard focus. -- The visual-parent chain from `v` to the VirtualizingStackPanel passes through the TreeViewItem. +A change was introduced in 4.5 that restricts usage of + elements +outside of a . This +manifests under the following conditions: -In other words, this is seen when a TreeViewItem is used outside of a TreeView, and the user clicks on a descendant of the TreeViewItem to bring it into view. If the TreeViewItem has no -focusable descendants, you'll never see this issue. An example of a situation where this is hit is when a TreeViewItem is the root of a DataTemplate. When this issue is hit, there is an -InvalidCastException that occurs within the WPF framework. +- 's visual parent is not a panel. (A generated for a will have a panel as its parent) +- The is a descendant of a acting as the "items host" for a list control (ListBox, DataGrid, ListView, etc.). Virtualization doesn't need to be enabled. +- The is item-scrolling (`ScrollUnit="Item"`). +- Someone calls `VirtualizingStackPanel.MakeVisible(v)` to scroll an element `v` into view. This can be done explicitly, or implicitly in a number of ways; perhaps the most common way is simply clicking on `v` to give it the keyboard focus. +- The visual-parent chain from `v` to the passes through the . + +In other words, this is seen when a + is used outside +of a , and the user +clicks on a descendant of the + to bring it +into view. If the + has no +focusable descendants, you'll never see this issue. An example of a situation +where this is hit is when a + is the root of +a DataTemplate. When this issue is hit, there is an InvalidCastException that +occurs within the WPF framework. - [ ] Quirked - [ ] Build-time break diff --git a/Documentation/compatibility/x509certificate2_tostring(bool)-does-not-throw-now-when-_net-cannot-handle-the-certificate.md b/Documentation/compatibility/x509certificate2_tostring(bool)-does-not-throw-now-when-_net-cannot-handle-the-certificate.md index 1970f53fb..80ae512a4 100644 --- a/Documentation/compatibility/x509certificate2_tostring(bool)-does-not-throw-now-when-_net-cannot-handle-the-certificate.md +++ b/Documentation/compatibility/x509certificate2_tostring(bool)-does-not-throw-now-when-_net-cannot-handle-the-certificate.md @@ -10,13 +10,22 @@ Edge Available ### Change Description -Previously, this method would throw if 'true' was passed for the verbose parameter and there were certificates installed that weren't supported by the .Net Framework. Now, the method will succeed and return a valid string that omits the inaccessible portions of the certifiate. + +Previously, this method would throw if `true` was passed for the verbose +parameter and there were certificates installed that weren't supported by the +.NET Framework. Now, the method will succeed and return a valid string that +omits the inaccessible portions of the certifiate. - [ ] Quirked - [ ] Build-time break ### Recommended Action -Any code depending on X509Certificate2.ToString(bool) should be updated to expect that the returned string may exclude some certificate data (such as public key, private key, and extensions) in some cases in which the API would have previously thrown. + +Any code depending on + +should be updated to expect that the returned string may exclude some +certificate data (such as public key, private key, and extensions) in some cases +in which the API would have previously thrown. ### Affected APIs * `M:System.Security.Cryptography.X509Certificates.X509Certificate2.ToString(System.Boolean)` diff --git a/Documentation/compatibility/x509certificateclaimset_findclaims-considers-all-claimtypes.md b/Documentation/compatibility/x509certificateclaimset_findclaims-considers-all-claimtypes.md index 7e5942c2b..516b3a0b5 100644 --- a/Documentation/compatibility/x509certificateclaimset_findclaims-considers-all-claimtypes.md +++ b/Documentation/compatibility/x509certificateclaimset_findclaims-considers-all-claimtypes.md @@ -10,15 +10,25 @@ Minor Planned ### Change Description -In apps that target the .NET Framework 4.6.1, if an X509 claim set is initialized from a certificate that has multiple DNS entries in its SAN field, the FindClaims method attempts to match the claimType argument with all the DNS entries. -For apps that target previous versions of the .NET Framework, the FindClaims method attempts to match the claimType argument only with the last DNS entry. +In apps that target the .NET Framework 4.6.1, if an X509 claim set is +initialized from a certificate that has multiple DNS entries in its SAN field, the + +method attempts to match the claimType argument with all the DNS entries. + +For apps that target previous versions of the .NET Framework, the + +method attempts to match the claimType argument only with the last DNS entry. - [x] Quirked - [ ] Build-time break ### Recommended Action -This change only affects applications targeting the .NET Framework 4.6.1. This change may be disabled (or enabled if targetting pre-4.6.1) with the [DisableMultipleDNSEntries](https://msdn.microsoft.com/en-us/library/mt620030%28v=vs.110%29.aspx) compatibility switch. + +This change only affects applications targeting the .NET Framework 4.6.1. This +change may be disabled (or enabled if targetting pre-4.6.1) with the +[DisableMultipleDNSEntries](https://docs.microsoft.com/en-us/dotnet/articles/framework/migration-guide/mitigation-x509certificateclaimset-findclaims-method#mitigation) +compatibility switch. ### Affected APIs * `M:System.IdentityModel.Claims.X509CertificateClaimSet.FindClaims(System.String,System.String)` diff --git a/Documentation/compatibility/xml-documents-are-now-consider-invalid-if-they-contains-transforms-that-are-not-allowed-on-digital-signatures.md b/Documentation/compatibility/xml-documents-are-now-consider-invalid-if-they-contains-transforms-that-are-not-allowed-on-digital-signatures.md index 3e2e08958..afa7b7387 100644 --- a/Documentation/compatibility/xml-documents-are-now-consider-invalid-if-they-contains-transforms-that-are-not-allowed-on-digital-signatures.md +++ b/Documentation/compatibility/xml-documents-are-now-consider-invalid-if-they-contains-transforms-that-are-not-allowed-on-digital-signatures.md @@ -11,7 +11,9 @@ Planned ### Change Description -In .NET Framework 4.6.2, Security fixes in `SignedXml` and `EncryptedXml` lead +In .NET Framework 4.6.2, Security fixes in + and + lead to different run-time behaviors. For example, * If a document has multiple elements with the same `id` attribute and a @@ -30,9 +32,9 @@ to different run-time behaviors. For example, ### Recommended Action Developers might want to review the usage of -`System.Security.Cryptography.Xml.XmlDsigXsltTransform` and -`System.Security.Cryptography.Xml.XmlDsigXPathTransform`, as well as types -derived from `System.Security.Cryptography.Xml.Transform` since a document + and +, as well as types +derived from since a document receiver may not be able to process it. ### Affected APIs diff --git a/Documentation/compatibility/xmlschemaexception-now-sets-line-positions-properly.md b/Documentation/compatibility/xmlschemaexception-now-sets-line-positions-properly.md index 911e06e41..cfb757734 100644 --- a/Documentation/compatibility/xmlschemaexception-now-sets-line-positions-properly.md +++ b/Documentation/compatibility/xmlschemaexception-now-sets-line-positions-properly.md @@ -10,13 +10,23 @@ Edge Available ### Change Description -If the LoadOptions.SetLineInfo value is passed to the Load method and a validation error occurs, the XmlSchemaException.LineNumber and XmlSchemaException.LinePosition properties now contain line information. + +If the +value is passed to the Load method and a validation error occurs, the + +and +properties now contain line information. - [ ] Quirked - [ ] Build-time break ### Recommended Action -Exception-handling code that assumes XmlSchemaException.LineNumber and XmlSchemaException.LinePosition will not be set should be updated since these properties will now be set properly when SetLineInfo is used while loading XML. + +Exception-handling code that assumes + +and +will not be set should be updated since these properties will now be set +properly when SetLineInfo is used while loading XML. ### Affected APIs * `F:System.Xml.Linq.LoadOptions.SetLineInfo` diff --git a/Documentation/compatibility/xmlserializer-fails-while-serializing-a-type-that-hides-an-accessible-member-with-an-inaccessible-one.md b/Documentation/compatibility/xmlserializer-fails-while-serializing-a-type-that-hides-an-accessible-member-with-an-inaccessible-one.md index 99dfac021..8db289692 100644 --- a/Documentation/compatibility/xmlserializer-fails-while-serializing-a-type-that-hides-an-accessible-member-with-an-inaccessible-one.md +++ b/Documentation/compatibility/xmlserializer-fails-while-serializing-a-type-that-hides-an-accessible-member-with-an-inaccessible-one.md @@ -10,15 +10,25 @@ Minor Planned ### Change Description -When serializing a derived type, the XmlSerializer can fail if the type contains an inaccessible field or property that hides (via the 'new' keyword) a field or property of the same name that was previously accessible (public, for example) on the base type. + +When serializing a derived type, the + can fail if +the type contains an inaccessible field or property that hides (via the 'new' +keyword) a field or property of the same name that was previously accessible +(public, for example) on the base type. - [ ] Quirked - [ ] Build-time break ### Recommended Action -This problem can be solved by making the new, hiding member accessible to the XmlSerializer (by marking it public, for example). -Alternatively, the following config setting will revert to 4.0 XmlSerializer behavior, which will fix the problem: +This problem can be solved by making the new, hiding member accessible to the + (by marking +it public, for example). + +Alternatively, the following config setting will revert to 4.0 + behavior, +which will fix the problem: ```xml diff --git a/Documentation/compatibility/xmlserializer-serializes-fields-differently-in-4_5.md b/Documentation/compatibility/xmlserializer-serializes-fields-differently-in-4_5.md index ffa60b619..5635b2c7c 100644 --- a/Documentation/compatibility/xmlserializer-serializes-fields-differently-in-4_5.md +++ b/Documentation/compatibility/xmlserializer-serializes-fields-differently-in-4_5.md @@ -13,13 +13,20 @@ Major Not planned ### Change Description -Changes in the XmlSerializer in .NET Framework 4.5 caused fields to be formatted differently in the serialized XML. + +Changes in the + in .NET +Framework 4.5 caused fields to be formatted differently in the serialized XML. - [ ] Quirked - [ ] Build-time break ### Recommended Action -This behavior was corrected in a servicing update of .NET Framework 4.5. Please update the .NET Framework 4.5, or upgrade to .NET Framework 4.5.1 or later, to fix this issue. Alternatively, the following config setting will revert to 4.0 XmlSerializer behavior: + +This behavior was corrected in a servicing update of .NET Framework 4.5. Please +update the .NET Framework 4.5, or upgrade to .NET Framework 4.5.1 or later, to +fix this issue. Alternatively, the following config setting will revert to 4.0 + behavior: ```xml diff --git a/Documentation/compatibility/xmltextreader-dtd-entity-expansion-is-limited-to-10000000-characters.md b/Documentation/compatibility/xmltextreader-dtd-entity-expansion-is-limited-to-10000000-characters.md index eda919c68..5f5d688f3 100644 --- a/Documentation/compatibility/xmltextreader-dtd-entity-expansion-is-limited-to-10000000-characters.md +++ b/Documentation/compatibility/xmltextreader-dtd-entity-expansion-is-limited-to-10000000-characters.md @@ -16,7 +16,15 @@ DTD entity expansion is now limited to 10,000,000 characters. Loading XML files - [ ] Build-time break ### Recommended Action -If the limit of DTD entity expansion is too low 10,000,000, the value can be overridden with the [XmlReaderSettings.MaxCharactersFromEntities](https://msdn.microsoft.com/en-us/library/system.xml.xmlreadersettings.maxcharactersfromentities%28v=vs.110%29.aspx) property. An XmlReaderSettings with the proper MaxCharactersFromEntity value can be passed to [XmlReader.Create](https://msdn.microsoft.com/en-us/library/System.Xml.XmlReader.Create(v=vs.110).aspx) + +If the limit of DTD entity expansion is too low 10,000,000, the value can be +overridden with the + +property. An with the +proper +value can be passed to `XmlReader.Create` that takes + +(ie. ) ### Affected APIs * `T:System.Xml.XmlTextReader` diff --git a/Documentation/compatibility/xmlwriter-throws-on-invalid-surrogate-pairs.md b/Documentation/compatibility/xmlwriter-throws-on-invalid-surrogate-pairs.md index 3a0e6502e..789006e3d 100644 --- a/Documentation/compatibility/xmlwriter-throws-on-invalid-surrogate-pairs.md +++ b/Documentation/compatibility/xmlwriter-throws-on-invalid-surrogate-pairs.md @@ -10,13 +10,21 @@ Edge Planned ### Change Description -For apps that target the .NET Framework 4.5.2 or previous versions, writing an invalid surrogate pair using exception fallback handling does not always throw an exception. For apps that target the .NET Framework 4.6, attempting to write an invalid surrogate pair throws an `ArgumentException`. + +For apps that target the .NET Framework 4.5.2 or previous versions, writing an +invalid surrogate pair using exception fallback handling does not always throw +an exception. For apps that target the .NET Framework 4.6, attempting to write +an invalid surrogate pair throws an +. - [x] Quirked - [ ] Build-time break ### Recommended Action -If necessary, this break can be avoided by targeting the .NET Framework 4.5.2 or earlier. Alternatively, invalid surrogate pairs can be pre-processed into valid xml prior to writing them. + +If necessary, this break can be avoided by targeting the .NET Framework 4.5.2 or +earlier. Alternatively, invalid surrogate pairs can be pre-processed into valid +xml prior to writing them. ### Affected APIs * `M:System.Xml.XmlWriter.WriteAttributeString(System.String,System.String)` diff --git a/Documentation/compatibility/xsd-schema-validation-now-correctly-detects-violations-of-unique-constraints-if-compound-keys-are-used-and-one-key-is-empty.md b/Documentation/compatibility/xsd-schema-validation-now-correctly-detects-violations-of-unique-constraints-if-compound-keys-are-used-and-one-key-is-empty.md index 9847ffc50..471670914 100644 --- a/Documentation/compatibility/xsd-schema-validation-now-correctly-detects-violations-of-unique-constraints-if-compound-keys-are-used-and-one-key-is-empty.md +++ b/Documentation/compatibility/xsd-schema-validation-now-correctly-detects-violations-of-unique-constraints-if-compound-keys-are-used-and-one-key-is-empty.md @@ -10,13 +10,22 @@ Edge Available ### Change Description -Versions of the .NET Framework prior to 4.6 had a bug that caused XSD validation to not detect unique constraints on compound keys if one of the keys was empty. In the .NET Framework 4.6, this issue is corrected. This will result in more correct validation, but it may also result in some XML not validating which previously would have. + +Versions of the .NET Framework prior to 4.6 had a bug that caused XSD validation +to not detect unique constraints on compound keys if one of the keys was empty. +In the .NET Framework 4.6, this issue is corrected. This will result in more +correct validation, but it may also result in some XML not validating which +previously would have. - [x] Quirked - [ ] Build-time break ### Recommended Action -If looser, .NET Framework 4.0 validation is needed, the validating application can target version 4.5 (or earlier) of the .NET Framework. When retargeting to .NET 4.6, however, code review should be done to be sure that duplicate compound keys (as described in this issue's description) are not expected to validate. + +If looser .NET Framework 4.0 validation is needed, the validating application +can target version 4.5 (or earlier) of the .NET Framework. When retargeting to +.NET 4.6, however, code review should be done to be sure that duplicate compound +keys (as described in this issue's description) are not expected to validate. ### Affected APIs * Not detectable via API analysis diff --git a/Documentation/compatibility/xslt-style-sheet-exception-message-changed.md b/Documentation/compatibility/xslt-style-sheet-exception-message-changed.md index f632ac4f5..262d34f63 100644 --- a/Documentation/compatibility/xslt-style-sheet-exception-message-changed.md +++ b/Documentation/compatibility/xslt-style-sheet-exception-message-changed.md @@ -10,13 +10,22 @@ Edge Available ### Change Description -In the .NET Framework 4.5, the text of the error message when an XSLT file is too complex is "The style sheet is too complex." In previous versions, the error message was "XSLT compile error." Application code that depends on the text of the error message will no longer work. However, the exception types remain the same, so this change should have no real impact. + +In the .NET Framework 4.5, the text of the error message when an XSLT file is +too complex is "The style sheet is too complex." In previous versions, the error +message was "XSLT compile error." Application code that depends on the text of +the error message will no longer work. However, the exception types remain the +same, so this change should have no real impact. - [ ] Quirked - [ ] Build-time break ### Recommended Action -Update any app code depending on the excepton message from this error condition to expect the new message, or (even better) update the code to depend only on the exception type ([XsltException](https://msdn.microsoft.com/en-us/library/system.xml.xsl.xsltexception(v=vs.110).aspx)), which has not changed. + +Update any app code depending on the excepton message from this error condition +to expect the new message, or (even better) update the code to depend only on +the exception type (), +which has not changed. ### Affected APIs * `M:System.Xml.Xsl.XslCompiledTransform.Load(System.String)` From 90d1f05fa9299a1a131f0d24352580945701e0af Mon Sep 17 00:00:00 2001 From: Connie Yau Date: Fri, 21 Apr 2017 08:32:52 -0700 Subject: [PATCH 355/872] Remove [More Information] links that lead to page with same information --- ...annot-be-deserialized-by-_net-4_5_1-or-4_5_2.md | 2 -- ...entations-of-imessagefilter_prefiltermessage.md | 4 +--- ...signing-certificate-may-fail-on-windows-2003.md | 12 +++++------- ...compiletoassembly-breaks-between-4_0-and-4_5.md | 2 -- ...ection_trytakefromany-does-not-throw-anymore.md | 2 -- ...tioncontext-with-a-null-argument-has-changed.md | 2 -- ...task_waitall-methods-with-time-out-arguments.md | 2 -- ...avior-in-data-definition-language-(ddl)-apis.md | 2 -- ...ckonce-supports-sha-256-on-4_0-targeted-apps.md | 2 -- ...ype-forwarding-when-multi-targeting-mscorlib.md | 2 -- ...ng-period-for-azure-sql-databases-is-removed.md | 2 +- ...-datetimes-returns-slightly-different-string.md | 2 -- .../currentculture-flows-across-tasks.md | 2 +- ...taobject_getdata-now-retrieves-data-as-utf-8.md | 2 -- ...rameter_scale-are-now-public-virtual-members.md | 2 -- ...zation-of-objects-across-appdomains-can-fail.md | 6 ++---- ...nd-dbproviderservices_createdatabase-methods.md | 2 -- ...for-queryviews-with-specific-characteristics.md | 2 -- .../encoderparameter-ctor-is-obsolete.md | 2 -- ...merable_empty-always-returns-cached-instance.md | 2 -- ...ngth-or-maxreceivedmessagesize-are-different.md | 2 -- ...stener-truncates-strings-with-embedded-nulls.md | 2 -- ...e-same-parameters-that-it-received-(plus-id).md | 2 -- ...task-no-longer-propagate-on-finalizer-thread.md | 4 +--- ...uest_contentencoding-property-prohibits-utf7.md | 2 -- ...ity_javascriptstringencode-escapes-ampersand.md | 2 -- ...e-correct-for-the-resulting-task-to-complete.md | 2 -- .../il-ret-not-allowed-in-a-try-region.md | 2 -- ...can-throw-exception-when-modifying-list-item.md | 2 -- ...s-changed-to-match-sql-server-specifications.md | 2 -- ...d-machinekey_decode-methods-are-now-obsolete.md | 2 -- ...m-the-_net-framework-1_1-and-2_0-are-blocked.md | 4 +--- ...can-no-longer-be-used-to-create-a-serializer.md | 2 -- ...rypercentagetoactiveservice-is-now-respected.md | 1 - ...overloads-could-result-in-different-behavior.md | 2 -- .../new-enum-values-in-wpf's-pagerangeselection.md | 2 -- ...nger-able-to-set-enableviewstatemac-to-false.md | 2 -- ...text_executestorequery-now-support-enum-type.md | 2 -- ...e-and-deprecatedattribute-in-winmd-scenarios.md | 2 -- ...intmanager-and-system_net_security_sslstream.md | 2 -- ...sql-generation-to-simpler-4_0-sql-generation.md | 6 ++---- ...itydatasource-control-to-invoke-data-binding.md | 2 -- ...-calendar-now-uses-the-hijri-solar-algorithm.md | 2 -- ...-managed-code-to-out-of-process-dcom-clients.md | 2 -- ...-of-dependencies-with-the-wrong-architecture.md | 6 ++---- ...table-and-similar-ordered-collection-objects.md | 2 -- ...ome-workflow-drag-and-drop-apis-are-obsolete.md | 2 -- ...ant-collation-rather-than-database-collation.md | 6 ++---- ...uses-destination-column-encoding-for-strings.md | 2 -- ...rver-1997-or-databases-using-the-via-adapter.md | 10 ++++------ .../sslstream-support-for-tls-alerts.md | 2 +- .../system_activities-is-now-aptca.md | 2 -- ...opeer_collaboration-unavailable-on-windows-8.md | 2 -- ...ost-object-no-longer-adds-a-default-endpoint.md | 2 -- ...ctdisposedexception-after-object-is-disposed.md | 2 -- .../system_uri-escaping-now-supports-rfc-3986.md | 2 -- .../system_uri-parsing-adheres-to-rfc-3987.md | 2 -- ...domain-no-longer-defaults-to-null-if-not-set.md | 2 -- ...sion-when-registering-itself-in-the-registry.md | 2 +- ...-method-in-odata-urls-is-disabled-by-default.md | 2 -- ...transportwithmessagecredential-security-mode.md | 4 +--- ...de-no-longer-decodes-invalid-input-sequences.md | 2 -- ...butility_htmldecode-round-trip-bmp-correctly.md | 2 -- ...es-expressions_literal-datetimes-differently.md | 2 -- ...flow-property-is-now-true-for-system_drawing.md | 2 -- ...-long-call-flushasync-automatically-on-close.md | 14 ++++++-------- .../workflow-3_0-types-are-obsolete.md | 2 -- ...datatemplate-elements-are-now-visible-to-uia.md | 2 -- ...s-a-new-copy-instead-of-the-current-instance.md | 2 -- .../wpf-layout-rounding-of-margins-has-changed.md | 14 +++++++------- ...for-languages-not-in-the-input-language-list.md | 6 ++---- .../wpf-textbox-defaults-to-undo-limit-of-100.md | 2 -- ...ifferent-color-when-the-text-box-is-inactive.md | 2 -- ...box_text-can-be-out-of-sync-with-databinding.md | 2 -- ...ping-when-extending-outside-a-single-monitor.md | 2 -- ...-now-when-_net-cannot-handle-the-certificate.md | 2 -- ...claimset_findclaims-considers-all-claimtypes.md | 2 -- .../xml-schema-validation-is-stricter.md | 2 -- ...maexception-now-sets-line-positions-properly.md | 2 -- ...-expansion-is-limited-to-10000000-characters.md | 2 -- .../xmlwriter-throws-on-invalid-surrogate-pairs.md | 2 -- .../compatibility/xslt-forward-compat-now-works.md | 2 -- .../xslt-style-sheet-exception-message-changed.md | 2 -- 83 files changed, 40 insertions(+), 195 deletions(-) diff --git a/Documentation/compatibility/a-concurrentdictionary-serialized-in-_net-4_5-with-netdatacontractserializer-cannot-be-deserialized-by-_net-4_5_1-or-4_5_2.md b/Documentation/compatibility/a-concurrentdictionary-serialized-in-_net-4_5-with-netdatacontractserializer-cannot-be-deserialized-by-_net-4_5_1-or-4_5_2.md index 19084c6d4..3e0230438 100644 --- a/Documentation/compatibility/a-concurrentdictionary-serialized-in-_net-4_5-with-netdatacontractserializer-cannot-be-deserialized-by-_net-4_5_1-or-4_5_2.md +++ b/Documentation/compatibility/a-concurrentdictionary-serialized-in-_net-4_5-with-netdatacontractserializer-cannot-be-deserialized-by-_net-4_5_1-or-4_5_2.md @@ -36,8 +36,6 @@ Alternatively, because this issue is addressed in the .NET Framework 4.6, it may ### Category Core -[More information](https://msdn.microsoft.com/en-us/library/dn458360(v=vs.110).aspx#Core) - diff --git a/Documentation/compatibility/blockingcollection_trytakefromany-does-not-throw-anymore.md b/Documentation/compatibility/blockingcollection_trytakefromany-does-not-throw-anymore.md index 072f9e195..4b4bf9acb 100644 --- a/Documentation/compatibility/blockingcollection_trytakefromany-does-not-throw-anymore.md +++ b/Documentation/compatibility/blockingcollection_trytakefromany-does-not-throw-anymore.md @@ -35,6 +35,4 @@ If TryTakeFromAny returning -1 or TakeFromAny throwing were used for control-flo ### Category Core -[More information](https://msdn.microsoft.com/en-us/library/hh367887#core) - diff --git a/Documentation/compatibility/calling-createdefaultauthorizationcontext-with-a-null-argument-has-changed.md b/Documentation/compatibility/calling-createdefaultauthorizationcontext-with-a-null-argument-has-changed.md index 08c60a817..f1fbc647d 100644 --- a/Documentation/compatibility/calling-createdefaultauthorizationcontext-with-a-null-argument-has-changed.md +++ b/Documentation/compatibility/calling-createdefaultauthorizationcontext-with-a-null-argument-has-changed.md @@ -31,6 +31,4 @@ In rare cases, WCF apps that use custom authentication may see behavioral differ ### Category Windows Communication Foundation (WCF) -[More information](https://msdn.microsoft.com/en-us/library/dn833123%28v=vs.110%29.aspx#WCF) - diff --git a/Documentation/compatibility/change-in-behavior-for-task_waitall-methods-with-time-out-arguments.md b/Documentation/compatibility/change-in-behavior-for-task_waitall-methods-with-time-out-arguments.md index cde34dc27..1fc9e671e 100644 --- a/Documentation/compatibility/change-in-behavior-for-task_waitall-methods-with-time-out-arguments.md +++ b/Documentation/compatibility/change-in-behavior-for-task_waitall-methods-with-time-out-arguments.md @@ -38,6 +38,4 @@ If an was being caught as ### Category Core -[More information](https://msdn.microsoft.com/en-us/library/hh367887\(v=vs.110\).aspx#core) - diff --git a/Documentation/compatibility/change-in-behavior-in-data-definition-language-(ddl)-apis.md b/Documentation/compatibility/change-in-behavior-in-data-definition-language-(ddl)-apis.md index 51a589633..3048a9ba2 100644 --- a/Documentation/compatibility/change-in-behavior-in-data-definition-language-(ddl)-apis.md +++ b/Documentation/compatibility/change-in-behavior-in-data-definition-language-(ddl)-apis.md @@ -30,6 +30,4 @@ These changes make it easier to build tools and applications that use the DDL AP ### Category Entity Framework -[More information](https://msdn.microsoft.com/en-us/library/hh367887(v=vs.110).aspx#sql) - diff --git a/Documentation/compatibility/clickonce-supports-sha-256-on-4_0-targeted-apps.md b/Documentation/compatibility/clickonce-supports-sha-256-on-4_0-targeted-apps.md index 16ea4cb0e..982750c8b 100644 --- a/Documentation/compatibility/clickonce-supports-sha-256-on-4_0-targeted-apps.md +++ b/Documentation/compatibility/clickonce-supports-sha-256-on-4_0-targeted-apps.md @@ -27,8 +27,6 @@ to sign ClickOnce apps that target .NET Framework 4 and earlier versions. ### Category ClickOnce -[More information](https://msdn.microsoft.com/en-us/library/dn833125(v=vs.110).aspx#ClickOnce) - diff --git a/Documentation/compatibility/connection-pool-blocking-period-for-azure-sql-databases-is-removed.md b/Documentation/compatibility/connection-pool-blocking-period-for-azure-sql-databases-is-removed.md index f6e92ae23..ae55515cb 100644 --- a/Documentation/compatibility/connection-pool-blocking-period-for-azure-sql-databases-is-removed.md +++ b/Documentation/compatibility/connection-pool-blocking-period-for-azure-sql-databases-is-removed.md @@ -24,7 +24,7 @@ In the .NET Framework 4.6.1 and earlier versions, when an app encounters a transient connection failure when connecting to a database, the connection attempt cannot be retried quickly, because the connection pool caches the error and re-throws it for 5 seconds to 1 minute. For more information, see -[SQL Server Connection Pooling (ADO.NET)](https://msdn.microsoft.com/en-us/library/8xx3tyca(v=vs.110).aspx). +[SQL Server Connection Pooling (ADO.NET)](https://docs.microsoft.com/en-us/dotnet/articles/framework/data/adonet/sql-server-connection-pooling). This behavior is problematic for connections to Azure SQL databases, which often fail with transient errors that are typically recovered from within a few seconds. The connection pool blocking feature means that the app cannot connect diff --git a/Documentation/compatibility/contentdisposition-datetimes-returns-slightly-different-string.md b/Documentation/compatibility/contentdisposition-datetimes-returns-slightly-different-string.md index 0aeafb38d..6719505a1 100644 --- a/Documentation/compatibility/contentdisposition-datetimes-returns-slightly-different-string.md +++ b/Documentation/compatibility/contentdisposition-datetimes-returns-slightly-different-string.md @@ -41,6 +41,4 @@ comparison. ### Category Networking -[More information](https://msdn.microsoft.com/en-us/library/dn833125(v=vs.110).aspx#Networking) - diff --git a/Documentation/compatibility/currentculture-flows-across-tasks.md b/Documentation/compatibility/currentculture-flows-across-tasks.md index b1910405d..329f2b46c 100644 --- a/Documentation/compatibility/currentculture-flows-across-tasks.md +++ b/Documentation/compatibility/currentculture-flows-across-tasks.md @@ -59,6 +59,6 @@ would be preserved across Dispatcher operations. ### Category Core -[More information](https://msdn.microsoft.com/en-us/library/system.globalization.cultureinfo%28v=vs.110%29.aspx#Async) +[More information](https://docs.microsoft.com/en-us/dotnet/api/system.globalization.cultureinfo#Async) diff --git a/Documentation/compatibility/dataobject_getdata-now-retrieves-data-as-utf-8.md b/Documentation/compatibility/dataobject_getdata-now-retrieves-data-as-utf-8.md index 263ae6998..ba128fc38 100644 --- a/Documentation/compatibility/dataobject_getdata-now-retrieves-data-as-utf-8.md +++ b/Documentation/compatibility/dataobject_getdata-now-retrieves-data-as-utf-8.md @@ -42,8 +42,6 @@ If the old behavior is needed for some reason, the app can target the .NET Frame ### Category Windows Forms -[More information](https://msdn.microsoft.com/en-us/library/dn720772(v=vs.110).aspx#WinForms) - diff --git a/Documentation/compatibility/deserialization-of-objects-across-appdomains-can-fail.md b/Documentation/compatibility/deserialization-of-objects-across-appdomains-can-fail.md index abc459d78..6ca5ff3fc 100644 --- a/Documentation/compatibility/deserialization-of-objects-across-appdomains-can-fail.md +++ b/Documentation/compatibility/deserialization-of-objects-across-appdomains-can-fail.md @@ -10,13 +10,13 @@ Edge Not planned ### Change Description -In some cases, when an app uses two or more app domains with different application bases, trying to deserialize objects in the logical call context across app domains throws an exception. +In some cases, when an app uses two or more app domains with different application bases, trying to deserialize objects in the logical call context across app domains throws an exception. - [ ] Quirked - [ ] Build-time break ### Recommended Action -See [Mitigation: Deserialization of Objects Across App Domains](https://msdn.microsoft.com/en-us/library/dn458353(v=vs.110).aspx) +See [Mitigation: Deserialization of Objects Across App Domains](https://docs.microsoft.com/en-us/dotnet/articles/framework/migration-guide/mitigation-deserialization-of-objects-across-app-domains) ### Affected APIs * Not detectable via API analysis @@ -24,6 +24,4 @@ See [Mitigation: Deserialization of Objects Across App Domains](https://msdn.mic ### Category Core -[More information](https://msdn.microsoft.com/en-us/library/dn458360(v=vs.110).aspx) - diff --git a/Documentation/compatibility/different-exception-handling-for-objectcontext_createdatabase-and-dbproviderservices_createdatabase-methods.md b/Documentation/compatibility/different-exception-handling-for-objectcontext_createdatabase-and-dbproviderservices_createdatabase-methods.md index f82cd0ddf..66bf88cdb 100644 --- a/Documentation/compatibility/different-exception-handling-for-objectcontext_createdatabase-and-dbproviderservices_createdatabase-methods.md +++ b/Documentation/compatibility/different-exception-handling-for-objectcontext_createdatabase-and-dbproviderservices_createdatabase-methods.md @@ -34,6 +34,4 @@ SQLExceptions should now also be caught. ### Category Entity Framework -[More information](https://msdn.microsoft.com/en-us/library/hh367887(v=vs.110).aspx#sql) - diff --git a/Documentation/compatibility/ef-no-longer-throws-for-queryviews-with-specific-characteristics.md b/Documentation/compatibility/ef-no-longer-throws-for-queryviews-with-specific-characteristics.md index 090c54db1..dd004ec08 100644 --- a/Documentation/compatibility/ef-no-longer-throws-for-queryviews-with-specific-characteristics.md +++ b/Documentation/compatibility/ef-no-longer-throws-for-queryviews-with-specific-characteristics.md @@ -38,6 +38,4 @@ the app's configuration file: ### Category Entity Framework -[More information](https://msdn.microsoft.com/en-us/library/dn720774(v=vs.110).aspx) - diff --git a/Documentation/compatibility/encoderparameter-ctor-is-obsolete.md b/Documentation/compatibility/encoderparameter-ctor-is-obsolete.md index 079acbb07..7ef8f15a8 100644 --- a/Documentation/compatibility/encoderparameter-ctor-is-obsolete.md +++ b/Documentation/compatibility/encoderparameter-ctor-is-obsolete.md @@ -31,6 +31,4 @@ tools: ### Category Windows Forms -[More information](https://msdn.microsoft.com/en-us/library/hh367887(v=vs.110).aspx#winForms) - diff --git a/Documentation/compatibility/enumerable_empty-always-returns-cached-instance.md b/Documentation/compatibility/enumerable_empty-always-returns-cached-instance.md index 8a0b1c3a1..30ac1d138 100644 --- a/Documentation/compatibility/enumerable_empty-always-returns-cached-instance.md +++ b/Documentation/compatibility/enumerable_empty-always-returns-cached-instance.md @@ -41,6 +41,4 @@ and expected to sometimes be unequal, explicit empty arrays should be created ### Category LINQ -[More information](https://msdn.microsoft.com/en-us/library/hh367887(v=vs.110).aspx#sql) - diff --git a/Documentation/compatibility/error-codes-for-maxrequestlength-or-maxreceivedmessagesize-are-different.md b/Documentation/compatibility/error-codes-for-maxrequestlength-or-maxreceivedmessagesize-are-different.md index 9a7d69345..2e2b9a68d 100644 --- a/Documentation/compatibility/error-codes-for-maxrequestlength-or-maxreceivedmessagesize-are-different.md +++ b/Documentation/compatibility/error-codes-for-maxrequestlength-or-maxreceivedmessagesize-are-different.md @@ -37,6 +37,4 @@ You must modify any code that performs processing based on an HTTP 400 status co ### Category Windows Communication Foundation (WCF) -[More information](https://msdn.microsoft.com/en-us/library/hh367887(v=vs.110).aspx#wcf) - diff --git a/Documentation/compatibility/eventlistener-truncates-strings-with-embedded-nulls.md b/Documentation/compatibility/eventlistener-truncates-strings-with-embedded-nulls.md index df3c6b746..6b9087c20 100644 --- a/Documentation/compatibility/eventlistener-truncates-strings-with-embedded-nulls.md +++ b/Documentation/compatibility/eventlistener-truncates-strings-with-embedded-nulls.md @@ -36,6 +36,4 @@ be updated, if possible, to not use embedded null characters. ### Category Core -[More information](https://msdn.microsoft.com/en-us/library/dn458360%28v=vs.110%29.aspx#Core) - diff --git a/Documentation/compatibility/eventsource_writeevent-impls-must-pass-writeevent-the-same-parameters-that-it-received-(plus-id).md b/Documentation/compatibility/eventsource_writeevent-impls-must-pass-writeevent-the-same-parameters-that-it-received-(plus-id).md index 7afbe8e49..b12f41cb2 100644 --- a/Documentation/compatibility/eventsource_writeevent-impls-must-pass-writeevent-the-same-parameters-that-it-received-(plus-id).md +++ b/Documentation/compatibility/eventsource_writeevent-impls-must-pass-writeevent-the-same-parameters-that-it-received-(plus-id).md @@ -33,6 +33,4 @@ process for an event source that violates this contract. ### Category Core -[More information](https://msdn.microsoft.com/en-us/library/dn458360(v=vs.110).aspx) - diff --git a/Documentation/compatibility/exceptions-during-unobserved-processing-in-system_threading_tasks_task-no-longer-propagate-on-finalizer-thread.md b/Documentation/compatibility/exceptions-during-unobserved-processing-in-system_threading_tasks_task-no-longer-propagate-on-finalizer-thread.md index adc303940..54b0c6758 100644 --- a/Documentation/compatibility/exceptions-during-unobserved-processing-in-system_threading_tasks_task-no-longer-propagate-on-finalizer-thread.md +++ b/Documentation/compatibility/exceptions-during-unobserved-processing-in-system_threading_tasks_task-no-longer-propagate-on-finalizer-thread.md @@ -29,7 +29,7 @@ finalizer thread, the previous behavior can be restored by providing an appropriate handler for the event, or by setting a -[runtime configuration element](https://msdn.microsoft.com/en- us/library/jj160346%28v=vs.110%29.aspx). +[runtime configuration element](https://docs.microsoft.com/en-us/dotnet/articles/framework/configure-apps/file-schema/runtime/throwunobservedtaskexceptions-element). ### Affected APIs * `M:System.Threading.Tasks.Task.Run(System.Action)` @@ -46,6 +46,4 @@ event, or by setting a ### Category Core -[More information](https://msdn.microsoft.com/en-us/library/hh367887(v=vs.110).aspx#core) - diff --git a/Documentation/compatibility/httprequest_contentencoding-property-prohibits-utf7.md b/Documentation/compatibility/httprequest_contentencoding-property-prohibits-utf7.md index 56eaf8ab3..803711149 100644 --- a/Documentation/compatibility/httprequest_contentencoding-property-prohibits-utf7.md +++ b/Documentation/compatibility/httprequest_contentencoding-property-prohibits-utf7.md @@ -34,6 +34,4 @@ element. ### Category ASP.NET -[More information](https://msdn.microsoft.com/en-us/library/hh367887(v=vs.110).aspx#asp) - diff --git a/Documentation/compatibility/httputility_javascriptstringencode-escapes-ampersand.md b/Documentation/compatibility/httputility_javascriptstringencode-escapes-ampersand.md index dfb101a20..789a87fa1 100644 --- a/Documentation/compatibility/httputility_javascriptstringencode-escapes-ampersand.md +++ b/Documentation/compatibility/httputility_javascriptstringencode-escapes-ampersand.md @@ -31,6 +31,4 @@ in your configuration file. ### Category ASP.NET -[More information](https://msdn.microsoft.com/en-us/library/hh367887(v=vs.110).aspx#asp) - diff --git a/Documentation/compatibility/iasyncresult_completedsynchronously-property-must-be-correct-for-the-resulting-task-to-complete.md b/Documentation/compatibility/iasyncresult_completedsynchronously-property-must-be-correct-for-the-resulting-task-to-complete.md index 866ad2ac5..3cbe12852 100644 --- a/Documentation/compatibility/iasyncresult_completedsynchronously-property-must-be-correct-for-the-resulting-task-to-complete.md +++ b/Documentation/compatibility/iasyncresult_completedsynchronously-property-must-be-correct-for-the-resulting-task-to-complete.md @@ -57,6 +57,4 @@ completed synchronously or not. ### Category Core -[More information](https://msdn.microsoft.com/en-us/library/hh367887(v=vs.110).aspx#core) - diff --git a/Documentation/compatibility/il-ret-not-allowed-in-a-try-region.md b/Documentation/compatibility/il-ret-not-allowed-in-a-try-region.md index 1cb812880..a60f84c6c 100644 --- a/Documentation/compatibility/il-ret-not-allowed-in-a-try-region.md +++ b/Documentation/compatibility/il-ret-not-allowed-in-a-try-region.md @@ -24,8 +24,6 @@ If an app is generating IL that includes a ret opcode in a try region, the app m ### Category JIT -[More information](https://msdn.microsoft.com/en-us/library/dn833125(v=vs.110).aspx#RyuJIT) - diff --git a/Documentation/compatibility/log-file-name-created-by-the-objectcontext_createdatabase-method-has-changed-to-match-sql-server-specifications.md b/Documentation/compatibility/log-file-name-created-by-the-objectcontext_createdatabase-method-has-changed-to-match-sql-server-specifications.md index 947b7091b..cddbd8a44 100644 --- a/Documentation/compatibility/log-file-name-created-by-the-objectcontext_createdatabase-method-has-changed-to-match-sql-server-specifications.md +++ b/Documentation/compatibility/log-file-name-created-by-the-objectcontext_createdatabase-method-has-changed-to-match-sql-server-specifications.md @@ -33,6 +33,4 @@ expect the standard _log.ldf file name format. ### Category Entity Framework -[More information](https://msdn.microsoft.com/en-us/library/hh367887(v=vs.110).aspx#sql) - diff --git a/Documentation/compatibility/machinekey_encode-and-machinekey_decode-methods-are-now-obsolete.md b/Documentation/compatibility/machinekey_encode-and-machinekey_decode-methods-are-now-obsolete.md index 994e66f8a..80a3e5642 100644 --- a/Documentation/compatibility/machinekey_encode-and-machinekey_decode-methods-are-now-obsolete.md +++ b/Documentation/compatibility/machinekey_encode-and-machinekey_decode-methods-are-now-obsolete.md @@ -33,6 +33,4 @@ using an older compiler. The APIs are still supported. ### Category ASP.NET -[More information](https://msdn.microsoft.com/en-us/library/hh367887(v=vs.110).aspx#asp) - diff --git a/Documentation/compatibility/managed-browser-hosting-controls-from-the-_net-framework-1_1-and-2_0-are-blocked.md b/Documentation/compatibility/managed-browser-hosting-controls-from-the-_net-framework-1_1-and-2_0-are-blocked.md index ba0d62f04..65820a4ee 100644 --- a/Documentation/compatibility/managed-browser-hosting-controls-from-the-_net-framework-1_1-and-2_0-are-blocked.md +++ b/Documentation/compatibility/managed-browser-hosting-controls-from-the-_net-framework-1_1-and-2_0-are-blocked.md @@ -10,7 +10,7 @@ Minor Not planned ### Change Description -Hosting these controls is blocked in Internet Explorer. +Hosting these controls is blocked in Internet Explorer. - [ ] Quirked - [ ] Build-time break @@ -24,6 +24,4 @@ Internet Explorer will fail to launch an application that uses managed browser h ### Category Web Applications -[More information](https://msdn.microsoft.com/en-us/library/hh367887(v=vs.110).aspx#web) - diff --git a/Documentation/compatibility/mef-catalogs-implement-ienumerable-and-therefore-can-no-longer-be-used-to-create-a-serializer.md b/Documentation/compatibility/mef-catalogs-implement-ienumerable-and-therefore-can-no-longer-be-used-to-create-a-serializer.md index d7ab8c8a8..7bf533bb5 100644 --- a/Documentation/compatibility/mef-catalogs-implement-ienumerable-and-therefore-can-no-longer-be-used-to-create-a-serializer.md +++ b/Documentation/compatibility/mef-catalogs-implement-ienumerable-and-therefore-can-no-longer-be-used-to-create-a-serializer.md @@ -29,6 +29,4 @@ Can no longer use MEF to create a serializer ### Category Managed Extensibility Framework (MEF) -[More information](https://msdn.microsoft.com/en-us/library/hh367887#MEF) - diff --git a/Documentation/compatibility/minfreememorypercentagetoactiveservice-is-now-respected.md b/Documentation/compatibility/minfreememorypercentagetoactiveservice-is-now-respected.md index 57020a548..06be6b9eb 100644 --- a/Documentation/compatibility/minfreememorypercentagetoactiveservice-is-now-respected.md +++ b/Documentation/compatibility/minfreememorypercentagetoactiveservice-is-now-respected.md @@ -32,6 +32,5 @@ successfully started and ran in a constrained memory environment may now fail. ### Category Windows Communication Foundation (WCF) -[More information](https://msdn.microsoft.com/en-us/library/dn458360(v=vs.110).aspx) diff --git a/Documentation/compatibility/new-(ambiguous)-dispatcher_invoke-overloads-could-result-in-different-behavior.md b/Documentation/compatibility/new-(ambiguous)-dispatcher_invoke-overloads-could-result-in-different-behavior.md index 39c75dec0..f95fbe08b 100644 --- a/Documentation/compatibility/new-(ambiguous)-dispatcher_invoke-overloads-could-result-in-different-behavior.md +++ b/Documentation/compatibility/new-(ambiguous)-dispatcher_invoke-overloads-could-result-in-different-behavior.md @@ -41,6 +41,4 @@ method overload. ### Category Windows Workflow Foundation (WF) -[More information](https://msdn.microsoft.com/en-us/library/hh367887(v=vs.110).aspx#wwf) - diff --git a/Documentation/compatibility/new-enum-values-in-wpf's-pagerangeselection.md b/Documentation/compatibility/new-enum-values-in-wpf's-pagerangeselection.md index 3b50098ca..c1d3c4057 100644 --- a/Documentation/compatibility/new-enum-values-in-wpf's-pagerangeselection.md +++ b/Documentation/compatibility/new-enum-values-in-wpf's-pagerangeselection.md @@ -35,8 +35,6 @@ should be modified, though. ### Category Windows Presentation Foundation (WPF) -[More information](https://msdn.microsoft.com/en-us/library/hh367887(v=vs.110).aspx#wpf) - diff --git a/Documentation/compatibility/objectcontext_translate-and-objectcontext_executestorequery-now-support-enum-type.md b/Documentation/compatibility/objectcontext_translate-and-objectcontext_executestorequery-now-support-enum-type.md index 091c4da11..73920fccb 100644 --- a/Documentation/compatibility/objectcontext_translate-and-objectcontext_executestorequery-now-support-enum-type.md +++ b/Documentation/compatibility/objectcontext_translate-and-objectcontext_executestorequery-now-support-enum-type.md @@ -27,6 +27,4 @@ If Translate or ExecuteStoreQuery was called on an enum type in .NET 4.0, '0' wa ### Category Entity Framework -[More information](https://msdn.microsoft.com/en-us/library/hh367887\(v=vs.110\).aspx#sql) - diff --git a/Documentation/compatibility/obsoleteattribute-exports-as-both-obsoleteattribute-and-deprecatedattribute-in-winmd-scenarios.md b/Documentation/compatibility/obsoleteattribute-exports-as-both-obsoleteattribute-and-deprecatedattribute-in-winmd-scenarios.md index e22eed499..cfdb697ed 100644 --- a/Documentation/compatibility/obsoleteattribute-exports-as-both-obsoleteattribute-and-deprecatedattribute-in-winmd-scenarios.md +++ b/Documentation/compatibility/obsoleteattribute-exports-as-both-obsoleteattribute-and-deprecatedattribute-in-winmd-scenarios.md @@ -36,6 +36,4 @@ result in build warnings. ### Category Core -[More information](https://msdn.microsoft.com/en-us/library/dn458356(v=vs.110).aspx) - diff --git a/Documentation/compatibility/only-tls-1_0-1_1-and-1_2-protocols-supported-in-system_net_servicepointmanager-and-system_net_security_sslstream.md b/Documentation/compatibility/only-tls-1_0-1_1-and-1_2-protocols-supported-in-system_net_servicepointmanager-and-system_net_security_sslstream.md index d85ad4c7d..314332ce6 100644 --- a/Documentation/compatibility/only-tls-1_0-1_1-and-1_2-protocols-supported-in-system_net_servicepointmanager-and-system_net_security_sslstream.md +++ b/Documentation/compatibility/only-tls-1_0-1_1-and-1_2-protocols-supported-in-system_net_servicepointmanager-and-system_net_security_sslstream.md @@ -39,6 +39,4 @@ this feature in either of two ways: ### Category Networking -[More information](https://msdn.microsoft.com/en-us/library/dn833123(v=vs.110).aspx#Net) - diff --git a/Documentation/compatibility/opt-in-break-to-revert-from-different-4_5-sql-generation-to-simpler-4_0-sql-generation.md b/Documentation/compatibility/opt-in-break-to-revert-from-different-4_5-sql-generation-to-simpler-4_0-sql-generation.md index cf9a3a90b..bef1b439a 100644 --- a/Documentation/compatibility/opt-in-break-to-revert-from-different-4_5-sql-generation-to-simpler-4_0-sql-generation.md +++ b/Documentation/compatibility/opt-in-break-to-revert-from-different-4_5-sql-generation-to-simpler-4_0-sql-generation.md @@ -10,7 +10,7 @@ Transparent Not planned ### Change Description -Queries that produce JOIN statements and contain a call to a limiting operation without first using OrderBy now produce simpler SQL. After upgrading to .NET Framework 4.5, these queries produced more complicated SQL than previous versions. +Queries that produce JOIN statements and contain a call to a limiting operation without first using OrderBy now produce simpler SQL. After upgrading to .NET Framework 4.5, these queries produced more complicated SQL than previous versions. - [ ] Quirked - [x] Optional @@ -20,7 +20,7 @@ Queries that produce JOIN statements and contain a call to a limiting operation This feature is disabled by default. If Entity Framework generates extra JOIN statements that cause performance degradation, you can enable this feature by adding the following entry to the `` section of the application configuration (app.config) file: ```xml - + ``` ### Affected APIs @@ -29,8 +29,6 @@ This feature is disabled by default. If Entity Framework generates extra JOIN st ### Category Entity Framework -[More information](https://msdn.microsoft.com/en-us/library/dn720772(v=vs.110).aspx) - diff --git a/Documentation/compatibility/page_loadcomplete-event-no-longer-causes-system_web_ui_webcontrols_entitydatasource-control-to-invoke-data-binding.md b/Documentation/compatibility/page_loadcomplete-event-no-longer-causes-system_web_ui_webcontrols_entitydatasource-control-to-invoke-data-binding.md index df997fa22..06659b082 100644 --- a/Documentation/compatibility/page_loadcomplete-event-no-longer-causes-system_web_ui_webcontrols_entitydatasource-control-to-invoke-data-binding.md +++ b/Documentation/compatibility/page_loadcomplete-event-no-longer-causes-system_web_ui_webcontrols_entitydatasource-control-to-invoke-data-binding.md @@ -38,8 +38,6 @@ earlier in the post-back. ### Category ASP.NET -[More information](https://msdn.microsoft.com/en-us/library/hh367887(v=vs.110).aspx#asp) - diff --git a/Documentation/compatibility/reflection-objects-can-no-longer-be-passed-from-managed-code-to-out-of-process-dcom-clients.md b/Documentation/compatibility/reflection-objects-can-no-longer-be-passed-from-managed-code-to-out-of-process-dcom-clients.md index fdfdd0bc3..209523ae3 100644 --- a/Documentation/compatibility/reflection-objects-can-no-longer-be-passed-from-managed-code-to-out-of-process-dcom-clients.md +++ b/Documentation/compatibility/reflection-objects-can-no-longer-be-passed-from-managed-code-to-out-of-process-dcom-clients.md @@ -34,6 +34,4 @@ Update marshaling code to work with non-reflection objects ### Category Core -[More information](https://msdn.microsoft.com/en-us/library/dn833125(v=vs.110).aspx#Core) - diff --git a/Documentation/compatibility/resolveassemblyreference-task-now-warns-of-dependencies-with-the-wrong-architecture.md b/Documentation/compatibility/resolveassemblyreference-task-now-warns-of-dependencies-with-the-wrong-architecture.md index 489bf0152..00d66813a 100644 --- a/Documentation/compatibility/resolveassemblyreference-task-now-warns-of-dependencies-with-the-wrong-architecture.md +++ b/Documentation/compatibility/resolveassemblyreference-task-now-warns-of-dependencies-with-the-wrong-architecture.md @@ -10,7 +10,7 @@ Minor Planned ### Change Description -The task emits a warning, MSB3270, which indicates that a reference or any of its dependencies does not match the app's architecture. For example, this occurs if an app that was compiled with the anycpu option includes an x86 reference. Such a scenario could result in an app failure at run time (in this case, if the app is deployed as an x64 process). +The task emits a warning, MSB3270, which indicates that a reference or any of its dependencies does not match the app's architecture. For example, this occurs if an app that was compiled with the anycpu option includes an x86 reference. Such a scenario could result in an app failure at run time (in this case, if the app is deployed as an x64 process). - [ ] Quirked - [x] Build-time break @@ -18,7 +18,7 @@ The task emits a warning, MSB3270, which indicates that a reference or any of it ### Recommended Action There are two areas of impact: -* Recompilation generates warnings that did not appear when the app was compiled under a previous version of MSBuild. However, because the warning identifies a possible source of runtime failure, it should be investigated and addressed. +* Recompilation generates warnings that did not appear when the app was compiled under a previous version of MSBuild. However, because the warning identifies a possible source of runtime failure, it should be investigated and addressed. * If warnings are treated as errors, the app will fail to compile. ### Affected APIs @@ -27,6 +27,4 @@ There are two areas of impact: ### Category MSBuild -[More information](https://msdn.microsoft.com/en-us/library/dn458356(v=vs.110).aspx) - diff --git a/Documentation/compatibility/soapformatter-cannot-deserialize-hashtable-and-similar-ordered-collection-objects.md b/Documentation/compatibility/soapformatter-cannot-deserialize-hashtable-and-similar-ordered-collection-objects.md index f8d361e59..dd283859b 100644 --- a/Documentation/compatibility/soapformatter-cannot-deserialize-hashtable-and-similar-ordered-collection-objects.md +++ b/Documentation/compatibility/soapformatter-cannot-deserialize-hashtable-and-similar-ordered-collection-objects.md @@ -40,6 +40,4 @@ to be resilient to .NET Framework changes. ### Category Serialization -[More information](https://msdn.microsoft.com/en-us/library/hh367887\(v=vs.110\).aspx#core) - diff --git a/Documentation/compatibility/some-workflow-drag-and-drop-apis-are-obsolete.md b/Documentation/compatibility/some-workflow-drag-and-drop-apis-are-obsolete.md index ed0e0bf0f..4883f5aab 100644 --- a/Documentation/compatibility/some-workflow-drag-and-drop-apis-are-obsolete.md +++ b/Documentation/compatibility/some-workflow-drag-and-drop-apis-are-obsolete.md @@ -31,6 +31,4 @@ using an older compiler. The APIs are still supported. ### Category Windows Workflow Foundation (WF) -[More information](https://msdn.microsoft.com/en-us/library/hh367887#wwf) - diff --git a/Documentation/compatibility/sql_variant-data-uses-sql_variant-collation-rather-than-database-collation.md b/Documentation/compatibility/sql_variant-data-uses-sql_variant-collation-rather-than-database-collation.md index a854a5df5..2e27f7223 100644 --- a/Documentation/compatibility/sql_variant-data-uses-sql_variant-collation-rather-than-database-collation.md +++ b/Documentation/compatibility/sql_variant-data-uses-sql_variant-collation-rather-than-database-collation.md @@ -10,13 +10,13 @@ Transparent Not planned ### Change Description -`sql_variant` data uses `sql_variant` collation rather than database collation. +`sql_variant` data uses `sql_variant` collation rather than database collation. - [ ] Quirked - [ ] Build-time break ### Recommended Action -This change addresses possible data corruption if the database collation differs from the `sql_variant` collation. Applications that rely on the corrupted data may experience failure. +This change addresses possible data corruption if the database collation differs from the `sql_variant` collation. Applications that rely on the corrupted data may experience failure. ### Affected APIs * Not detectable via API analysis @@ -24,6 +24,4 @@ This change addresses possible data corruption if the database collation differs ### Category Data -[More information](https://msdn.microsoft.com/en-us/library/hh367887(v=vs.110).aspx#xml) - diff --git a/Documentation/compatibility/sqlbulkcopy-uses-destination-column-encoding-for-strings.md b/Documentation/compatibility/sqlbulkcopy-uses-destination-column-encoding-for-strings.md index c957f2a83..f4127e57b 100644 --- a/Documentation/compatibility/sqlbulkcopy-uses-destination-column-encoding-for-strings.md +++ b/Documentation/compatibility/sqlbulkcopy-uses-destination-column-encoding-for-strings.md @@ -38,6 +38,4 @@ column) or catch s ### Category Data -[More information](https://msdn.microsoft.com/en-us/library/hh367887(v=vs.110).aspx#xml) - diff --git a/Documentation/compatibility/sqlconnection-can-no-longer-connect-to-sql-server-1997-or-databases-using-the-via-adapter.md b/Documentation/compatibility/sqlconnection-can-no-longer-connect-to-sql-server-1997-or-databases-using-the-via-adapter.md index fef2384f2..e53181db2 100644 --- a/Documentation/compatibility/sqlconnection-can-no-longer-connect-to-sql-server-1997-or-databases-using-the-via-adapter.md +++ b/Documentation/compatibility/sqlconnection-can-no-longer-connect-to-sql-server-1997-or-databases-using-the-via-adapter.md @@ -10,9 +10,9 @@ Edge Planned ### Change Description -Connections to SQL Server databases using the [Virtual Interface Adapter (VIA) protocol](https://technet.microsoft.com/en-us/library/ms191229%28v=sql.105%29.aspx) are no longer supported. -The protocol used to connect to a SQL Server database is visible in the connection string. A VIA connection will contain via:\. -If this app is connecting to SQL via a protocol other than VIA (tcp: or np: for example), then no breaking change will be encountered. +Connections to SQL Server databases using the [Virtual Interface Adapter (VIA) protocol](https://technet.microsoft.com/en-us/library/ms191229%28v=sql.105%29.aspx) are no longer supported. +The protocol used to connect to a SQL Server database is visible in the connection string. A VIA connection will contain via:\. +If this app is connecting to SQL via a protocol other than VIA (tcp: or np: for example), then no breaking change will be encountered. Also, connections to SQL Server 7 (1997) are no longer supported. @@ -20,7 +20,7 @@ Also, connections to SQL Server 7 (1997) are no longer supported. - [ ] Build-time break ### Recommended Action -The VIA protocol is deprecated, so an alternative protocol should be used to connect to SQL databases. The most common protocol used is TCP/IP. Instructions for enabling the TCP/IP protocol can be found [here](https://msdn.microsoft.com/en-us/library/bb909712(v=vs.90).aspx). If the database is only accessed from within an intranet, the shared pipes protocol may provide better performance if the network is slow. +The VIA protocol is deprecated, so an alternative protocol should be used to connect to SQL databases. The most common protocol used is TCP/IP. Instructions for enabling the TCP/IP protocol can be found [here](https://msdn.microsoft.com/en-us/library/bb909712(v=vs.120).aspx). If the database is only accessed from within an intranet, the shared pipes protocol may provide better performance if the network is slow. ### Affected APIs * `M:System.Data.SqlClient.SqlConnection.#ctor(System.String)` @@ -29,6 +29,4 @@ The VIA protocol is deprecated, so an alternative protocol should be used to con ### Category Data -[More information](https://msdn.microsoft.com/en-us/library/hh367887%28v=vs.110%29.aspx#sql) - diff --git a/Documentation/compatibility/sslstream-support-for-tls-alerts.md b/Documentation/compatibility/sslstream-support-for-tls-alerts.md index d34bb664f..5268786fa 100644 --- a/Documentation/compatibility/sslstream-support-for-tls-alerts.md +++ b/Documentation/compatibility/sslstream-support-for-tls-alerts.md @@ -18,7 +18,7 @@ be thrown by the first I/O Read/Write operation. The code for the can be mapped to the TLS Alert from the remote party using this -[channel documentation](https://msdn.microsoft.com/en-us/library/windows/desktop/dd721886%28v=vs.85%29.aspx). +[Schannel documentation](https://msdn.microsoft.com/en-us/library/windows/desktop/dd721886%28v=vs.85%29.aspx). For more information, see [RFC 2246: Section 7.2.2 Error alerts](https://tools.ietf.org/html/rfc2246#section-7.2.2) diff --git a/Documentation/compatibility/system_activities-is-now-aptca.md b/Documentation/compatibility/system_activities-is-now-aptca.md index 4fdf9e8fe..a95925146 100644 --- a/Documentation/compatibility/system_activities-is-now-aptca.md +++ b/Documentation/compatibility/system_activities-is-now-aptca.md @@ -30,6 +30,4 @@ this change should have no real impact. ### Category Windows Workflow Foundation (WF) -[More information](https://msdn.microsoft.com/en-us/library/hh367887) - diff --git a/Documentation/compatibility/system_net_peertopeer_collaboration-unavailable-on-windows-8.md b/Documentation/compatibility/system_net_peertopeer_collaboration-unavailable-on-windows-8.md index 3b640fd91..bcf250ebe 100644 --- a/Documentation/compatibility/system_net_peertopeer_collaboration-unavailable-on-windows-8.md +++ b/Documentation/compatibility/system_net_peertopeer_collaboration-unavailable-on-windows-8.md @@ -25,6 +25,4 @@ Apps that support Windows 8 or above must be updated to not depend on this names ### Category Networking -[More information](https://msdn.microsoft.com/en-us/library/hh367887#network) - diff --git a/Documentation/compatibility/system_servicemodel_web_webservicehost-object-no-longer-adds-a-default-endpoint.md b/Documentation/compatibility/system_servicemodel_web_webservicehost-object-no-longer-adds-a-default-endpoint.md index f0980e51d..72f834f8b 100644 --- a/Documentation/compatibility/system_servicemodel_web_webservicehost-object-no-longer-adds-a-default-endpoint.md +++ b/Documentation/compatibility/system_servicemodel_web_webservicehost-object-no-longer-adds-a-default-endpoint.md @@ -40,8 +40,6 @@ endpoints should also be added explicitly (using . Note, though, that this is probably just informational since it's often not something that needs fixed. diff --git a/Documentation/compatibility/system_threading_tasks_task-no-longer-throw-objectdisposedexception-after-object-is-disposed.md b/Documentation/compatibility/system_threading_tasks_task-no-longer-throw-objectdisposedexception-after-object-is-disposed.md index acc60a659..9137707a4 100644 --- a/Documentation/compatibility/system_threading_tasks_task-no-longer-throw-objectdisposedexception-after-object-is-disposed.md +++ b/Documentation/compatibility/system_threading_tasks_task-no-longer-throw-objectdisposedexception-after-object-is-disposed.md @@ -39,6 +39,4 @@ using . ### Category Core -[More information](https://msdn.microsoft.com/en-us/library/hh367887(v=vs.110).aspx#core) - diff --git a/Documentation/compatibility/system_uri-escaping-now-supports-rfc-3986.md b/Documentation/compatibility/system_uri-escaping-now-supports-rfc-3986.md index 317128142..b87f9fa34 100644 --- a/Documentation/compatibility/system_uri-escaping-now-supports-rfc-3986.md +++ b/Documentation/compatibility/system_uri-escaping-now-supports-rfc-3986.md @@ -34,6 +34,4 @@ URI escaping has changed in .NET 4.5 to support ### Category Core -[More information](https://msdn.microsoft.com/en-us/library/hh367887\(v=vs.110\).aspx#core) - diff --git a/Documentation/compatibility/system_uri-parsing-adheres-to-rfc-3987.md b/Documentation/compatibility/system_uri-parsing-adheres-to-rfc-3987.md index 45c20eae0..278922840 100644 --- a/Documentation/compatibility/system_uri-parsing-adheres-to-rfc-3987.md +++ b/Documentation/compatibility/system_uri-parsing-adheres-to-rfc-3987.md @@ -46,6 +46,4 @@ properties' page. ### Category Core -[More information](https://msdn.microsoft.com/en-us/library/hh367887\(v=vs.110\).aspx#core) - diff --git a/Documentation/compatibility/targetframeworkname-for-default-app-domain-no-longer-defaults-to-null-if-not-set.md b/Documentation/compatibility/targetframeworkname-for-default-app-domain-no-longer-defaults-to-null-if-not-set.md index a0099cd0f..1cad31c78 100644 --- a/Documentation/compatibility/targetframeworkname-for-default-app-domain-no-longer-defaults-to-null-if-not-set.md +++ b/Documentation/compatibility/targetframeworkname-for-default-app-domain-no-longer-defaults-to-null-if-not-set.md @@ -38,6 +38,4 @@ null, it can be explicitly set to that value. ### Category Core -[More information](https://msdn.microsoft.com/en-us/library/dn833125(v=vs.110).aspx#Core) - diff --git a/Documentation/compatibility/the-_net-framework-4_6-does-not-use-a-4_5_x_x-version-when-registering-itself-in-the-registry.md b/Documentation/compatibility/the-_net-framework-4_6-does-not-use-a-4_5_x_x-version-when-registering-itself-in-the-registry.md index b418fba25..6fec39a19 100644 --- a/Documentation/compatibility/the-_net-framework-4_6-does-not-use-a-4_5_x_x-version-when-registering-itself-in-the-registry.md +++ b/Documentation/compatibility/the-_net-framework-4_6-does-not-use-a-4_5_x_x-version-when-registering-itself-in-the-registry.md @@ -24,6 +24,6 @@ Update apps probing for a .NET Framework 4.5 install by looking for 4.5 registry ### Category Setup and Deployment -[More information](https://msdn.microsoft.com/en-us/library/mt125490%28v=vs.110%29.aspx) +[More information](https://docs.microsoft.com/en-us/dotnet/articles/framework/migration-guide/mitigation-product-versioning) diff --git a/Documentation/compatibility/the-replace-method-in-odata-urls-is-disabled-by-default.md b/Documentation/compatibility/the-replace-method-in-odata-urls-is-disabled-by-default.md index c04677881..af0f75236 100644 --- a/Documentation/compatibility/the-replace-method-in-odata-urls-is-disabled-by-default.md +++ b/Documentation/compatibility/the-replace-method-in-odata-urls-is-disabled-by-default.md @@ -32,6 +32,4 @@ only be used after careful review. ### Category Windows Communication Foundation (WCF) -[More information](https://msdn.microsoft.com/en-us/library/hh367887(v=vs.110).aspx#wcf) - diff --git a/Documentation/compatibility/wcf-binding-with-the-transportwithmessagecredential-security-mode.md b/Documentation/compatibility/wcf-binding-with-the-transportwithmessagecredential-security-mode.md index 2228a2b83..1b7c5577e 100644 --- a/Documentation/compatibility/wcf-binding-with-the-transportwithmessagecredential-security-mode.md +++ b/Documentation/compatibility/wcf-binding-with-the-transportwithmessagecredential-security-mode.md @@ -23,7 +23,7 @@ Because this is an opt-in feature, it should not affect the behavior of existing Because this is an opt-in feature, it should not affect the behavior of existing apps. To control whether the new behavior is used or not, use the following configuration setting: ``` - + ``` @@ -36,6 +36,4 @@ Because this is an opt-in feature, it should not affect the behavior of existing ### Category Windows Communication Foundation (WCF) -[More information](https://msdn.microsoft.com/en-US/library/mt592686%28v=vs.110%29.aspx) - diff --git a/Documentation/compatibility/webutility_htmldecode-no-longer-decodes-invalid-input-sequences.md b/Documentation/compatibility/webutility_htmldecode-no-longer-decodes-invalid-input-sequences.md index d75439e1a..7ee29d7be 100644 --- a/Documentation/compatibility/webutility_htmldecode-no-longer-decodes-invalid-input-sequences.md +++ b/Documentation/compatibility/webutility_htmldecode-no-longer-decodes-invalid-input-sequences.md @@ -26,8 +26,6 @@ The change in decoder output should matter only if you store binary data instead ### Category ASP.NET -[More information](https://msdn.microsoft.com/en-us/library/hh367887\(v=vs.110\).aspx#asp) - diff --git a/Documentation/compatibility/winrt-stream-adapters-no-long-call-flushasync-automatically-on-close.md b/Documentation/compatibility/winrt-stream-adapters-no-long-call-flushasync-automatically-on-close.md index 85052a3e5..d51e690c2 100644 --- a/Documentation/compatibility/winrt-stream-adapters-no-long-call-flushasync-automatically-on-close.md +++ b/Documentation/compatibility/winrt-stream-adapters-no-long-call-flushasync-automatically-on-close.md @@ -10,7 +10,7 @@ Transparent Not planned ### Change Description -In Windows Store apps, Windows Runtime stream adapters no longer call the FlushAsync method from the Dispose method. +In Windows Store apps, Windows Runtime stream adapters no longer call the FlushAsync method from the Dispose method. - [ ] Quirked - [ ] Build-time break @@ -19,11 +19,11 @@ In Windows Store apps, Windows Runtime stream adapters no longer call the FlushA This change should be transparent. Developers can restore the previous behavior by writing code like this: ```csharp -using (var stream = GetWindowsRuntimeStream() as Stream) -{ - // do something - await stream.FlushAsync(); -} +using (var stream = GetWindowsRuntimeStream() as Stream) +{ + // do something + await stream.FlushAsync(); +} ``` ### Affected APIs @@ -32,6 +32,4 @@ using (var stream = GetWindowsRuntimeStream() as Stream) ### Category Core -[More information](https://msdn.microsoft.com/en-us/library/dn458360(v=vs.110).aspx) - diff --git a/Documentation/compatibility/workflow-3_0-types-are-obsolete.md b/Documentation/compatibility/workflow-3_0-types-are-obsolete.md index 9f9d20450..034f4c6a8 100644 --- a/Documentation/compatibility/workflow-3_0-types-are-obsolete.md +++ b/Documentation/compatibility/workflow-3_0-types-are-obsolete.md @@ -24,6 +24,4 @@ New WWF 4.0 APIs (in System.Activities) should be used instead. An example of us ### Category Windows Workflow Foundation (WF) -[More information](https://msdn.microsoft.com/en-us/library/hh367887#wwf) - diff --git a/Documentation/compatibility/wpf-datatemplate-elements-are-now-visible-to-uia.md b/Documentation/compatibility/wpf-datatemplate-elements-are-now-visible-to-uia.md index d5b4330dd..ee4bf0311 100644 --- a/Documentation/compatibility/wpf-datatemplate-elements-are-now-visible-to-uia.md +++ b/Documentation/compatibility/wpf-datatemplate-elements-are-now-visible-to-uia.md @@ -36,6 +36,4 @@ counts or indexes for UIA elements may need updated with new values. ### Category Windows Presentation Foundation (WPF) -[More information](https://msdn.microsoft.com/en-us/library/hh367887\(v=vs.110\).aspx#wpf) - diff --git a/Documentation/compatibility/wpf-dispatchersynchronizationcontext_createcopy-now-returns-a-new-copy-instead-of-the-current-instance.md b/Documentation/compatibility/wpf-dispatchersynchronizationcontext_createcopy-now-returns-a-new-copy-instead-of-the-current-instance.md index 83d62b46e..6ce6d1033 100644 --- a/Documentation/compatibility/wpf-dispatchersynchronizationcontext_createcopy-now-returns-a-new-copy-instead-of-the-current-instance.md +++ b/Documentation/compatibility/wpf-dispatchersynchronizationcontext_createcopy-now-returns-a-new-copy-instead-of-the-current-instance.md @@ -42,6 +42,4 @@ affected code paths should be enough to determine if this poses any problem. ### Category Windows Presentation Foundation (WPF) -[More information](https://msdn.microsoft.com/en-us/library/hh367887(v=vs.110).aspx#wpf) - diff --git a/Documentation/compatibility/wpf-layout-rounding-of-margins-has-changed.md b/Documentation/compatibility/wpf-layout-rounding-of-margins-has-changed.md index 5cdf15de9..f2351a6d6 100644 --- a/Documentation/compatibility/wpf-layout-rounding-of-margins-has-changed.md +++ b/Documentation/compatibility/wpf-layout-rounding-of-margins-has-changed.md @@ -1,4 +1,4 @@ -## WPF layout rounding of margins has changed +## WPF layout rounding of margins has changed ### Scope Minor @@ -10,13 +10,13 @@ Minor Not planned ### Change Description -The way in which margins are rounded and borders and the background inside of them has changed. As a result of this change: +The way in which margins are rounded and borders and the background inside of them has changed. As a result of this change: -- The width or height of elements may grow or shrink by at most one pixel. -- The placement of an object can move by at most one pixel. -- Centered elements can be vertically or horizontally off center by at most one pixel. +- The width or height of elements may grow or shrink by at most one pixel. +- The placement of an object can move by at most one pixel. +- Centered elements can be vertically or horizontally off center by at most one pixel. -By default, this new layout is enabled only for apps that target the .NET Framework 4.6. +By default, this new layout is enabled only for apps that target the .NET Framework 4.6. - [x] Quirked - [ ] Build-time break @@ -32,6 +32,6 @@ Apps that target the .NET Framework 4.6 but want WPF controls to render using th ### Category Windows Presentation Foundation (WPF) -[More information](https://msdn.microsoft.com/en-us/library/mt298997(v=vs.110).aspx) +[More information](https://docs.microsoft.com/en-us/dotnet/articles/framework/migration-guide/mitigation-wpf-layout) diff --git a/Documentation/compatibility/wpf-spell-checking-in-text-enabled-controls-will-not-work-in-windows-10-for-languages-not-in-the-input-language-list.md b/Documentation/compatibility/wpf-spell-checking-in-text-enabled-controls-will-not-work-in-windows-10-for-languages-not-in-the-input-language-list.md index ef379a5b1..d8f19ff51 100644 --- a/Documentation/compatibility/wpf-spell-checking-in-text-enabled-controls-will-not-work-in-windows-10-for-languages-not-in-the-input-language-list.md +++ b/Documentation/compatibility/wpf-spell-checking-in-text-enabled-controls-will-not-work-in-windows-10-for-languages-not-in-the-input-language-list.md @@ -10,9 +10,9 @@ Edge Not planned ### Change Description -When running on Windows 10, the spell checker may not work for WPF text-enabled controls because platform spell-checking capabilities are available only for languages present in the input languages list. +When running on Windows 10, the spell checker may not work for WPF text-enabled controls because platform spell-checking capabilities are available only for languages present in the input languages list. -In Windows 10, when a language is added to the list of available keyboards, Windows automatically downloads and installs a corresponding Feature on Demand (FOD) package that provides spell-checking capabilities. By adding the language to the input languages list, the spell checker will be supported. +In Windows 10, when a language is added to the list of available keyboards, Windows automatically downloads and installs a corresponding Feature on Demand (FOD) package that provides spell-checking capabilities. By adding the language to the input languages list, the spell checker will be supported. - [ ] Quirked - [ ] Build-time break @@ -26,6 +26,4 @@ Be aware that the language or text to be spell-checked must be added as an input ### Category Windows Presentation Foundation (WPF) -[More information](https://msdn.microsoft.com/en-us/library/dn833125(v=vs.110).aspx#WPF) - diff --git a/Documentation/compatibility/wpf-textbox-defaults-to-undo-limit-of-100.md b/Documentation/compatibility/wpf-textbox-defaults-to-undo-limit-of-100.md index 9bb687751..3db65140e 100644 --- a/Documentation/compatibility/wpf-textbox-defaults-to-undo-limit-of-100.md +++ b/Documentation/compatibility/wpf-textbox-defaults-to-undo-limit-of-100.md @@ -24,6 +24,4 @@ If an undo limit of 100 is too low, the limit can be set explicitly with diff --git a/Documentation/compatibility/wpf-textbox-selected-text-appears-a-different-color-when-the-text-box-is-inactive.md b/Documentation/compatibility/wpf-textbox-selected-text-appears-a-different-color-when-the-text-box-is-inactive.md index f7f6945e6..6c2398b7f 100644 --- a/Documentation/compatibility/wpf-textbox-selected-text-appears-a-different-color-when-the-text-box-is-inactive.md +++ b/Documentation/compatibility/wpf-textbox-selected-text-appears-a-different-color-when-the-text-box-is-inactive.md @@ -30,6 +30,4 @@ property to `false`. ### Category Windows Presentation Foundation (WPF) -[More information](https://msdn.microsoft.com/en-us/library/hh367887(v=vs.110).aspx#wpf) - diff --git a/Documentation/compatibility/wpf-textbox_text-can-be-out-of-sync-with-databinding.md b/Documentation/compatibility/wpf-textbox_text-can-be-out-of-sync-with-databinding.md index a223a2cef..724c9c1e6 100644 --- a/Documentation/compatibility/wpf-textbox_text-can-be-out-of-sync-with-databinding.md +++ b/Documentation/compatibility/wpf-textbox_text-can-be-out-of-sync-with-databinding.md @@ -32,6 +32,4 @@ property to `false`. ### Category Windows Presentation Foundation (WPF) -[More information](https://msdn.microsoft.com/en-us/library/hh367887(v=vs.110).aspx#wpf) - diff --git a/Documentation/compatibility/wpf-windows-are-rendered-without-clipping-when-extending-outside-a-single-monitor.md b/Documentation/compatibility/wpf-windows-are-rendered-without-clipping-when-extending-outside-a-single-monitor.md index c541b808b..1ff9793c4 100644 --- a/Documentation/compatibility/wpf-windows-are-rendered-without-clipping-when-extending-outside-a-single-monitor.md +++ b/Documentation/compatibility/wpf-windows-are-rendered-without-clipping-when-extending-outside-a-single-monitor.md @@ -24,6 +24,4 @@ This behavior (whether to clip or not) can be explicitly set using the ` diff --git a/Documentation/compatibility/x509certificate2_tostring(bool)-does-not-throw-now-when-_net-cannot-handle-the-certificate.md b/Documentation/compatibility/x509certificate2_tostring(bool)-does-not-throw-now-when-_net-cannot-handle-the-certificate.md index 80ae512a4..2dab63bbc 100644 --- a/Documentation/compatibility/x509certificate2_tostring(bool)-does-not-throw-now-when-_net-cannot-handle-the-certificate.md +++ b/Documentation/compatibility/x509certificate2_tostring(bool)-does-not-throw-now-when-_net-cannot-handle-the-certificate.md @@ -33,6 +33,4 @@ in which the API would have previously thrown. ### Category Core -[More information](https://msdn.microsoft.com/en-us/library/dn833125\(v=vs.110\).aspx#Core) - diff --git a/Documentation/compatibility/x509certificateclaimset_findclaims-considers-all-claimtypes.md b/Documentation/compatibility/x509certificateclaimset_findclaims-considers-all-claimtypes.md index 516b3a0b5..938932a01 100644 --- a/Documentation/compatibility/x509certificateclaimset_findclaims-considers-all-claimtypes.md +++ b/Documentation/compatibility/x509certificateclaimset_findclaims-considers-all-claimtypes.md @@ -36,6 +36,4 @@ compatibility switch. ### Category Windows Communication Foundation (WCF) -[More information](https://msdn.microsoft.com/en-us/library/mt620031%28v=vs.110%29.aspx#WCF) - diff --git a/Documentation/compatibility/xml-schema-validation-is-stricter.md b/Documentation/compatibility/xml-schema-validation-is-stricter.md index 764ff6856..c34ffbdd3 100644 --- a/Documentation/compatibility/xml-schema-validation-is-stricter.md +++ b/Documentation/compatibility/xml-schema-validation-is-stricter.md @@ -24,6 +24,4 @@ If looser .NET Framework 4.0 validation is needed, the validating application ca ### Category XML, XSLT -[More information](https://msdn.microsoft.com/en-us/library/hh367887\(v=vs.110\).aspx) - diff --git a/Documentation/compatibility/xmlschemaexception-now-sets-line-positions-properly.md b/Documentation/compatibility/xmlschemaexception-now-sets-line-positions-properly.md index cfb757734..57784c995 100644 --- a/Documentation/compatibility/xmlschemaexception-now-sets-line-positions-properly.md +++ b/Documentation/compatibility/xmlschemaexception-now-sets-line-positions-properly.md @@ -34,6 +34,4 @@ properly when SetLineInfo is used while loading XML. ### Category XML, XSLT -[More information](https://msdn.microsoft.com/en-us/library/hh367887#xml) - diff --git a/Documentation/compatibility/xmltextreader-dtd-entity-expansion-is-limited-to-10000000-characters.md b/Documentation/compatibility/xmltextreader-dtd-entity-expansion-is-limited-to-10000000-characters.md index 5f5d688f3..cc74e2e43 100644 --- a/Documentation/compatibility/xmltextreader-dtd-entity-expansion-is-limited-to-10000000-characters.md +++ b/Documentation/compatibility/xmltextreader-dtd-entity-expansion-is-limited-to-10000000-characters.md @@ -46,6 +46,4 @@ value can be passed to `XmlReader.Create` that takes ### Category XML, XSLT -[More information](https://msdn.microsoft.com/en-us/library/hh367887(v=vs.110).aspx) - diff --git a/Documentation/compatibility/xmlwriter-throws-on-invalid-surrogate-pairs.md b/Documentation/compatibility/xmlwriter-throws-on-invalid-surrogate-pairs.md index 789006e3d..bb28580dc 100644 --- a/Documentation/compatibility/xmlwriter-throws-on-invalid-surrogate-pairs.md +++ b/Documentation/compatibility/xmlwriter-throws-on-invalid-surrogate-pairs.md @@ -54,8 +54,6 @@ xml prior to writing them. ### Category XML, XSLT -[More information](https://msdn.microsoft.com/en-us/library/dn833123\(v=vs.110\).aspx) - diff --git a/Documentation/compatibility/xslt-style-sheet-exception-message-changed.md b/Documentation/compatibility/xslt-style-sheet-exception-message-changed.md index 262d34f63..d29be625b 100644 --- a/Documentation/compatibility/xslt-style-sheet-exception-message-changed.md +++ b/Documentation/compatibility/xslt-style-sheet-exception-message-changed.md @@ -40,6 +40,4 @@ which has not changed. ### Category XML, XSLT -[More information](https://msdn.microsoft.com/en-us/library/hh367887(v=vs.110).aspx#xml) - From 6e777a010eedfa6f09a96f4b0f9e8b499c33c25b Mon Sep 17 00:00:00 2001 From: Connie Yau Date: Fri, 21 Apr 2017 08:37:48 -0700 Subject: [PATCH 356/872] Small fixes from dotnet/docs#1923 --- ...ask-now-warns-of-dependencies-with-the-wrong-architecture.md | 2 +- ...encode-and-webutility_htmldecode-round-trip-bmp-correctly.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Documentation/compatibility/resolveassemblyreference-task-now-warns-of-dependencies-with-the-wrong-architecture.md b/Documentation/compatibility/resolveassemblyreference-task-now-warns-of-dependencies-with-the-wrong-architecture.md index 00d66813a..1c8bf61e9 100644 --- a/Documentation/compatibility/resolveassemblyreference-task-now-warns-of-dependencies-with-the-wrong-architecture.md +++ b/Documentation/compatibility/resolveassemblyreference-task-now-warns-of-dependencies-with-the-wrong-architecture.md @@ -1,4 +1,4 @@ -## ResolveAssemblyReference task now warns on dependencies with the wrong architecture +## ResolveAssemblyReference task now warns of dependencies with the wrong architecture ### Scope Minor diff --git a/Documentation/compatibility/webutility_htmlencode-and-webutility_htmldecode-round-trip-bmp-correctly.md b/Documentation/compatibility/webutility_htmlencode-and-webutility_htmldecode-round-trip-bmp-correctly.md index adcb89b5d..8459c4117 100644 --- a/Documentation/compatibility/webutility_htmlencode-and-webutility_htmldecode-round-trip-bmp-correctly.md +++ b/Documentation/compatibility/webutility_htmlencode-and-webutility_htmldecode-round-trip-bmp-correctly.md @@ -22,7 +22,7 @@ methods. ### Recommended Action This change should have no effect on current applications, but to restore the -original behavior, set the targetFramework attribute of the `` +original behavior, set the `targetFramework` attribute of the `` element to a string other than "4.5". You can also set the `unicodeEncodingConformance` and `unicodeDecodingConformance` attributes of the `` configuration element to control this behavior independently of From c76aee9554bf809826fe8bbeb188009c9ce31d1c Mon Sep 17 00:00:00 2001 From: Connie Yau Date: Wed, 26 Apr 2017 10:59:28 -0700 Subject: [PATCH 357/872] FIXUP update wording --- ...ot-be-deserialized-by-_net-4_5_1-or-4_5_2.md | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/Documentation/compatibility/a-concurrentdictionary-serialized-in-_net-4_5-with-netdatacontractserializer-cannot-be-deserialized-by-_net-4_5_1-or-4_5_2.md b/Documentation/compatibility/a-concurrentdictionary-serialized-in-_net-4_5-with-netdatacontractserializer-cannot-be-deserialized-by-_net-4_5_1-or-4_5_2.md index 3e0230438..2342782c7 100644 --- a/Documentation/compatibility/a-concurrentdictionary-serialized-in-_net-4_5-with-netdatacontractserializer-cannot-be-deserialized-by-_net-4_5_1-or-4_5_2.md +++ b/Documentation/compatibility/a-concurrentdictionary-serialized-in-_net-4_5-with-netdatacontractserializer-cannot-be-deserialized-by-_net-4_5_1-or-4_5_2.md @@ -13,13 +13,20 @@ Minor Available ### Change Description -Due to internal changes to the type, objects that are serialized with the .NET Framework 4.5 -using the cannot be deserialized in the .NET Framework 4.5.1 or in the .NET Framework 4.5.2. -Note that moving in the other direction (serializing with the .NET Framework 4.5.x and deserializing with the .NET Framework 4.5) works. Similarly, -all 4.x cross-version serialization works with the .NET Framework 4.6. +Due to internal changes to the type, + objects that are +serialized with the .NET Framework 4.5 using the + +cannot be deserialized in the .NET Framework 4.5.1 or in the .NET Framework +4.5.2. -Serializing and deserializing with a single version of the .NET Framework is not affected. +Note that moving in the other direction (serializing with the .NET Framework +4.5.x and deserializing with the .NET Framework 4.5) works. Similarly, all 4.x +cross-version serialization works with the .NET Framework 4.6. + +Serializing and deserializing with a single version of the .NET Framework is not +affected. - [ ] Quirked - [ ] Build-time break From fa70b11c8a51c4987eb4d2c921daa4a2b03cd310 Mon Sep 17 00:00:00 2001 From: Josh Free Date: Wed, 26 Apr 2017 11:56:01 -0700 Subject: [PATCH 358/872] Create README.md Initial commit of Microsoft.NETCore.UniversalWindowsPlatform changelog --- releases/UWP/README.md | 61 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 releases/UWP/README.md diff --git a/releases/UWP/README.md b/releases/UWP/README.md new file mode 100644 index 000000000..63b257cf9 --- /dev/null +++ b/releases/UWP/README.md @@ -0,0 +1,61 @@ +# Microsoft.NETCore.UniversalWindowsPlatform NuGet Package Releases + +You can learn about Microsoft.NETCore.UniversalWindowsPlatform [releases](#releases), below. See [resources](#resources) for additional information. + +## Release Notes + +You can see what was included in each Microsoft.NETCore.UniversalWindowsPlatform release. + +### 5.3.3 (April 24, 2017) + +- Corrected an [issue](http://stackoverflow.com/questions/43530071/how-to-fix-app-submission-error-of-1300) for projects that have Visual Studio configuration values that are not "DEBUG" or "RELEASE" that causes Windows Store submission failure (error code 1300). For example, most Unity apps use a configuration named "Master". + +When using Visual Studio this package requires Visual Studio 2017 or later. + +### 5.3.2 (April 6, 2017) + +- Fixed an issue that caused MAKEPRI build warnings to be emitted when building app packages for UWP projects. + +When using Visual Studio this package requires Visual Studio 2017 or later. + +### 5.3.1 (March 7, 2017) + +- Fixes [DataContractJsonSerializer failing in Microsoft.NetCore.UniversalWindowsPlatform 5.3.0](https://github.com/dotnet/corefx/issues/10374) +- Fixes a regression in 5.3.0 where [4 Libraries were accidently no longer referenced by default](https://github.com/dotnet/corefx/issues/10338) + - System.Collections.NonGeneric + - System.Collections.Specialized + - System.Threading.Overlapped + - System.Xml.XmlDocument + +When using Visual Studio this package requires Visual Studio 2017 or later. + +### 5.3.0 (January 27, 2017) + +- .NET Native 1.6. + +When using Visual Studio this package requires Visual Studio 2017 or later. + + +### 5.2.3 (March 7, 2017) + +- Fixes [DataContractJsonSerializer failing in Microsoft.NetCore.UniversalWindowsPlatform 5.2.2](https://github.com/dotnet/corefx/issues/10374) +- Fixes a regression in 5.2.2 where [4 Libraries were accidently no longer referenced by default](https://github.com/dotnet/corefx/issues/10338) + - System.Collections.NonGeneric + - System.Collections.Specialized + - System.Threading.Overlapped + - System.Xml.XmlDocument + +When using Visual Studio this package requires Visual Studio 2015 Update 3 or later. + +### 5.2.2 (July 14, 2016) + +- .NET Native 1.4. +- Universal Windows Platform 5.2.2 is the default in-box reference in Visual Studio 2017. + +When using Visual Studio this package requires Visual Studio 2015 Update 3 or later. + +## Resources + +- [Microsoft.NETCore.UniversalWindowsPlatform NuGet Package Details](https://www.nuget.org/packages/Microsoft.NETCore.UniversalWindowsPlatform) +- [Windows Dev Center](https://developer.microsoft.com/en-us/windows/apps/getstarted) +- [Downloads and tools for Windows 10](https://developer.microsoft.com/en-us/windows/downloads) From 22893eb9637fed33e1e404e14e61f8ef736eb70c Mon Sep 17 00:00:00 2001 From: Shin Mao Date: Wed, 26 Apr 2017 16:28:03 -0700 Subject: [PATCH 359/872] Add Fix Description for DCJS. --- releases/UWP/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/releases/UWP/README.md b/releases/UWP/README.md index 63b257cf9..603b6c5d9 100644 --- a/releases/UWP/README.md +++ b/releases/UWP/README.md @@ -20,7 +20,7 @@ When using Visual Studio this package requires Visual Studio 2017 or later. ### 5.3.1 (March 7, 2017) -- Fixes [DataContractJsonSerializer failing in Microsoft.NetCore.UniversalWindowsPlatform 5.3.0](https://github.com/dotnet/corefx/issues/10374) +- Fix a [bug](https://github.com/dotnet/corefx/issues/10374) that caused DataContractJsonSerializer fail to serialize any [DataContract] type whose default constructor is not public. - Fixes a regression in 5.3.0 where [4 Libraries were accidently no longer referenced by default](https://github.com/dotnet/corefx/issues/10338) - System.Collections.NonGeneric - System.Collections.Specialized @@ -38,7 +38,7 @@ When using Visual Studio this package requires Visual Studio 2017 or later. ### 5.2.3 (March 7, 2017) -- Fixes [DataContractJsonSerializer failing in Microsoft.NetCore.UniversalWindowsPlatform 5.2.2](https://github.com/dotnet/corefx/issues/10374) +- Fix a [bug](https://github.com/dotnet/corefx/issues/10374) that caused DataContractJsonSerializer fail to serialize any [DataContract] type whose default constructor is not public. - Fixes a regression in 5.2.2 where [4 Libraries were accidently no longer referenced by default](https://github.com/dotnet/corefx/issues/10338) - System.Collections.NonGeneric - System.Collections.Specialized From 91862d312b7b22681fd355e5b7c693f842942533 Mon Sep 17 00:00:00 2001 From: Connie Yau Date: Wed, 26 Apr 2017 16:42:40 -0700 Subject: [PATCH 360/872] Fixing bad docIds --- ...ed-invalidcastexception-from-invokemethod-activity-in-wf4.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Documentation/compatibility/unexpected-invalidcastexception-from-invokemethod-activity-in-wf4.md b/Documentation/compatibility/unexpected-invalidcastexception-from-invokemethod-activity-in-wf4.md index a748168ad..cdacf7790 100644 --- a/Documentation/compatibility/unexpected-invalidcastexception-from-invokemethod-activity-in-wf4.md +++ b/Documentation/compatibility/unexpected-invalidcastexception-from-invokemethod-activity-in-wf4.md @@ -29,7 +29,7 @@ update the .NET Framework 4.5 (or upgrade to .NET Framework 4.5.1 or later) to fix the issue. ### Affected APIs -* `P:.Parameters` +* `P:System.Activities.Statements.InvokeMethod.Parameters` ### Category Windows Workflow Foundation (WF) From 43260d97ae4442b34acc14d42b4f0e78db004ae8 Mon Sep 17 00:00:00 2001 From: Shin Mao Date: Wed, 26 Apr 2017 18:43:33 -0700 Subject: [PATCH 361/872] Addressed feedback. --- releases/UWP/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/releases/UWP/README.md b/releases/UWP/README.md index 603b6c5d9..1afa6d19c 100644 --- a/releases/UWP/README.md +++ b/releases/UWP/README.md @@ -20,7 +20,7 @@ When using Visual Studio this package requires Visual Studio 2017 or later. ### 5.3.1 (March 7, 2017) -- Fix a [bug](https://github.com/dotnet/corefx/issues/10374) that caused DataContractJsonSerializer fail to serialize any [DataContract] type whose default constructor is not public. +- Fix a [bug](https://github.com/dotnet/corefx/issues/10374) that caused DataContractJsonSerializer to fail to serialize any [DataContract] type whose default constructor is not public. - Fixes a regression in 5.3.0 where [4 Libraries were accidently no longer referenced by default](https://github.com/dotnet/corefx/issues/10338) - System.Collections.NonGeneric - System.Collections.Specialized @@ -38,7 +38,7 @@ When using Visual Studio this package requires Visual Studio 2017 or later. ### 5.2.3 (March 7, 2017) -- Fix a [bug](https://github.com/dotnet/corefx/issues/10374) that caused DataContractJsonSerializer fail to serialize any [DataContract] type whose default constructor is not public. +- Fix a [bug](https://github.com/dotnet/corefx/issues/10374) that caused DataContractJsonSerializer to fail to serialize any [DataContract] type whose default constructor is not public. - Fixes a regression in 5.2.2 where [4 Libraries were accidently no longer referenced by default](https://github.com/dotnet/corefx/issues/10338) - System.Collections.NonGeneric - System.Collections.Specialized From dbe1711eb7ea76e363c22928bcac4a1ef298cfc4 Mon Sep 17 00:00:00 2001 From: Josh Free Date: Thu, 27 Apr 2017 10:39:43 -0700 Subject: [PATCH 362/872] changed sentences to past tense --- releases/UWP/README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/releases/UWP/README.md b/releases/UWP/README.md index 1afa6d19c..ca90e558b 100644 --- a/releases/UWP/README.md +++ b/releases/UWP/README.md @@ -20,8 +20,8 @@ When using Visual Studio this package requires Visual Studio 2017 or later. ### 5.3.1 (March 7, 2017) -- Fix a [bug](https://github.com/dotnet/corefx/issues/10374) that caused DataContractJsonSerializer to fail to serialize any [DataContract] type whose default constructor is not public. -- Fixes a regression in 5.3.0 where [4 Libraries were accidently no longer referenced by default](https://github.com/dotnet/corefx/issues/10338) +- Fixed an [issue](https://github.com/dotnet/corefx/issues/10374) that caused DataContractJsonSerializer to fail to serialize any [DataContract] type whose default constructor is not public. +- Fixed a regression in 5.3.0 where [4 Libraries were accidently no longer referenced by default](https://github.com/dotnet/corefx/issues/10338) - System.Collections.NonGeneric - System.Collections.Specialized - System.Threading.Overlapped @@ -38,8 +38,8 @@ When using Visual Studio this package requires Visual Studio 2017 or later. ### 5.2.3 (March 7, 2017) -- Fix a [bug](https://github.com/dotnet/corefx/issues/10374) that caused DataContractJsonSerializer to fail to serialize any [DataContract] type whose default constructor is not public. -- Fixes a regression in 5.2.2 where [4 Libraries were accidently no longer referenced by default](https://github.com/dotnet/corefx/issues/10338) +- Fixed an [issue](https://github.com/dotnet/corefx/issues/10374) that caused DataContractJsonSerializer to fail to serialize any [DataContract] type whose default constructor is not public. +- Fixed a regression in 5.2.2 where [4 Libraries were accidently no longer referenced by default](https://github.com/dotnet/corefx/issues/10338) - System.Collections.NonGeneric - System.Collections.Specialized - System.Threading.Overlapped From 361d77cec146f8e940d29f9814a26b6d9833f78d Mon Sep 17 00:00:00 2001 From: Josh Free Date: Thu, 27 Apr 2017 11:12:00 -0700 Subject: [PATCH 363/872] update 5.3.0 blurb --- releases/UWP/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/releases/UWP/README.md b/releases/UWP/README.md index ca90e558b..4bd856e3f 100644 --- a/releases/UWP/README.md +++ b/releases/UWP/README.md @@ -31,7 +31,7 @@ When using Visual Studio this package requires Visual Studio 2017 or later. ### 5.3.0 (January 27, 2017) -- .NET Native 1.6. +- Contains .NET Native 1.6 with lots of great improvements, including addressing over 100 customer reported issues since .NET Native 1.4 (UWP 5.2.2). When using Visual Studio this package requires Visual Studio 2017 or later. From 9945a263c35a94e180149f8d1956646e501a8390 Mon Sep 17 00:00:00 2001 From: Rich Lander Date: Thu, 27 Apr 2017 21:30:55 -0700 Subject: [PATCH 364/872] Update README.md --- releases/net45/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/releases/net45/README.md b/releases/net45/README.md index a62f06539..d1c239b11 100644 --- a/releases/net45/README.md +++ b/releases/net45/README.md @@ -4,7 +4,7 @@ You can learn about the changes made in the .NET Framework 4.5. The .NET Framework 4.5 is no longer supported by Microsoft. -- [.NET Framework 4.5 announcement blog post](https://blogs.msdn.microsoft.com/dotnet/2013/10/17/net-framework-4-5-1-rtm-start-coding/) +- [.NET Framework 4.5 announcement blog post](https://blogs.msdn.microsoft.com/dotnet/2012/08/15/announcing-the-release-of-net-framework-4-5-rtm-product-and-source-code/) - [What's new in the .NET Framework 4.5](https://docs.microsoft.com/dotnet/articles/framework/whats-new/index#v45) - [Application compatibility](../../Documentation/compatibility/README.md#net-framework-45) - [Known issues](https://support.microsoft.com/en-us/help/2890857/known-issues-for-the-.net-framework-4.5) From c1ff4bad3fa2edfe2660b5f605dfd19b9deef32f Mon Sep 17 00:00:00 2001 From: Antonello Provenzano Date: Fri, 28 Apr 2017 09:08:42 +0200 Subject: [PATCH 365/872] Added DeveelDB project references (#389) --- dotnet-developer-projects.md | 1 + 1 file changed, 1 insertion(+) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 082d9d09e..15cb79876 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -114,6 +114,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [Comparers](https://github.com/StephenCleary/Comparers) - Fluent syntax for building comparers (and equality comparers) and implementing object comparison. * [Cricket](https://github.com/fsprojects/Cricket) - Actor library * [DateTimeExtensions](https://github.com/kappy/DateTimeExtensions) - Common Date Time operations on the form of extensions to System.DateTime, including holidays and working days calculations on several culture locales. + * [DeveelDB](https://github.com/deveel/deveeldb) - SQL-99 embeddable database engine for .NET * [DiffSharp](https://github.com/gbaydin/DiffSharp) - Automatic Differentiation Library * [DnsClient](https://github.com/MichaCo/DnsClient.NET) - A high performant DNS query/lookup library - [Home](http://dnsclient.michaco.net) * [DotNetOpenAuth](https://github.com/DotNetOpenAuth) - Library that adds support for your site visitors to login with their OpenIDs by just dropping an ASP.NET control onto your page. From acdab911abe4bd58890fe45f8f019109b6feca81 Mon Sep 17 00:00:00 2001 From: Connie Yau Date: Mon, 1 May 2017 10:40:58 -0700 Subject: [PATCH 366/872] Fix titles --- ...items-in-a-single-tablelayoutpanel-cell-may-be-rearranged.md | 2 +- .../compatibility/system_uri-escaping-now-supports-rfc-3986.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Documentation/compatibility/multiple-items-in-a-single-tablelayoutpanel-cell-may-be-rearranged.md b/Documentation/compatibility/multiple-items-in-a-single-tablelayoutpanel-cell-may-be-rearranged.md index f35a26c1d..abcd210e7 100644 --- a/Documentation/compatibility/multiple-items-in-a-single-tablelayoutpanel-cell-may-be-rearranged.md +++ b/Documentation/compatibility/multiple-items-in-a-single-tablelayoutpanel-cell-may-be-rearranged.md @@ -1,4 +1,4 @@ -## Multiple items in a single cell may be rearranged +## Multiple items in a single TableLayoutPanel cell may be rearranged ### Scope Minor diff --git a/Documentation/compatibility/system_uri-escaping-now-supports-rfc-3986.md b/Documentation/compatibility/system_uri-escaping-now-supports-rfc-3986.md index b87f9fa34..3967c109e 100644 --- a/Documentation/compatibility/system_uri-escaping-now-supports-rfc-3986.md +++ b/Documentation/compatibility/system_uri-escaping-now-supports-rfc-3986.md @@ -1,4 +1,4 @@ -## System.Uri escaping now supports RFC 3986 (http://tools.ietf.org/html/rfc3986) +## System.Uri escaping now supports RFC 3986 ### Scope Minor From 523052f6f3e86fad0a22778c29ef0f3847dec9a0 Mon Sep 17 00:00:00 2001 From: Connie Yau Date: Mon, 1 May 2017 10:49:33 -0700 Subject: [PATCH 367/872] Fix link to ResolveAssemblyReference breaking change --- Documentation/compatibility/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Documentation/compatibility/README.md b/Documentation/compatibility/README.md index 13532fb0d..2c7245629 100644 --- a/Documentation/compatibility/README.md +++ b/Documentation/compatibility/README.md @@ -105,7 +105,7 @@ Please help us improve the [.NET Framework Application Compatibility documents]( - [MinFreeMemoryPercentageToActiveService is now respected](minfreememorypercentagetoactiveservice-is-now-respected.md) - [NetDataContractSerializer fails to deserialize a ConcurrentDictionary serialized with a different .NET version](netdatacontractserializer-fails-to-deserialize-a-concurrentdictionary-serialized-with-a-different-_net-version.md) - [ObsoleteAttribute exports as both ObsoleteAttribute and DeprecatedAttribute in WinMD scenarios](obsoleteattribute-exports-as-both-obsoleteattribute-and-deprecatedattribute-in-winmd-scenarios.md) -- [ResolveAssemblyReference task now warns of dependencies with the wrong architecture](resolveassemblyreference-task-now-warns-on-dependencies-with-the-wrong-architecture.md) +- [ResolveAssemblyReference task now warns of dependencies with the wrong architecture](resolveassemblyreference-task-now-warns-of-dependencies-with-the-wrong-architecture.md) - [Two-way data-binding to a property with a non-public setter is not supported](two-way-data-binding-to-a-property-with-a-non-public-setter-is-not-supported.md) - [WinRT stream adapters no long call FlushAsync automatically on close](winrt-stream-adapters-no-long-call-flushasync-automatically-on-close.md) From 6e1dbeaaa7f4ee9290e1a06337aa52bb09282338 Mon Sep 17 00:00:00 2001 From: Stacey Haffner Date: Mon, 1 May 2017 10:59:13 -0700 Subject: [PATCH 368/872] Adding more notes for 5.3.0 --- releases/UWP/README.md | 42 +++++++++++++++++++++++++++--------------- 1 file changed, 27 insertions(+), 15 deletions(-) diff --git a/releases/UWP/README.md b/releases/UWP/README.md index 4bd856e3f..ba4aea0d1 100644 --- a/releases/UWP/README.md +++ b/releases/UWP/README.md @@ -7,18 +7,17 @@ You can learn about Microsoft.NETCore.UniversalWindowsPlatform [releases](#relea You can see what was included in each Microsoft.NETCore.UniversalWindowsPlatform release. ### 5.3.3 (April 24, 2017) +When using Visual Studio this package requires Visual Studio 2017 or later. - Corrected an [issue](http://stackoverflow.com/questions/43530071/how-to-fix-app-submission-error-of-1300) for projects that have Visual Studio configuration values that are not "DEBUG" or "RELEASE" that causes Windows Store submission failure (error code 1300). For example, most Unity apps use a configuration named "Master". -When using Visual Studio this package requires Visual Studio 2017 or later. - ### 5.3.2 (April 6, 2017) +When using Visual Studio this package requires Visual Studio 2017 or later. - Fixed an issue that caused MAKEPRI build warnings to be emitted when building app packages for UWP projects. -When using Visual Studio this package requires Visual Studio 2017 or later. - ### 5.3.1 (March 7, 2017) +When using Visual Studio this package requires Visual Studio 2017 or later. - Fixed an [issue](https://github.com/dotnet/corefx/issues/10374) that caused DataContractJsonSerializer to fail to serialize any [DataContract] type whose default constructor is not public. - Fixed a regression in 5.3.0 where [4 Libraries were accidently no longer referenced by default](https://github.com/dotnet/corefx/issues/10338) @@ -27,16 +26,32 @@ When using Visual Studio this package requires Visual Studio 2017 or later. - System.Threading.Overlapped - System.Xml.XmlDocument -When using Visual Studio this package requires Visual Studio 2017 or later. - ### 5.3.0 (January 27, 2017) - -- Contains .NET Native 1.6 with lots of great improvements, including addressing over 100 customer reported issues since .NET Native 1.4 (UWP 5.2.2). - -When using Visual Studio this package requires Visual Studio 2017 or later. - +When using Visual Studio this package requires Visual Studio 2017 or later. You can read more about these changes in our announcement blog [post](https://blogs.msdn.microsoft.com/dotnet/2017/01/30/announcing-net-core-net-native-and-nuget-updates-in-vs-2017-rc/). + +- Added NuGet support for Visual Studio 2017 or later. +- Added hardware-accelerated support for System.Numerics.Vectors. +- Added the ability to inspect static fields that contain the ThreadStatic attribute. +- Added x64 support for Shared Library package with profile-guided optimizations which reduces the package size and improves startup time for x64 native apps. This change brings x64 to parity with x86 and ARM32. +- Integrated .NET Native garbage collector with Windows Runtime MemoryManager API to properly calculate memory load factor in UWP applications. +- Reduced compile times for applications that contain large and/or complex methods by ~25% in certain scenarios. +- Increased performance improvements in reverse p/invoke (up to 400%) and when accessing Windows Runtime objects (up to 135% in certain scenarios). +- Improvements to the relfection stack and metadata formats which result in up to 30% performance increase in some scenarios. +- Improvements to delegate invocation that reduce code size and give up to 7% faster performance. +- General code quality improvements which improve start up times, better steady-state performance, less memory usage and smaller app size. +- Resolved an issue that sometimes resulted in a 1300 error when submitting a package to the store after upgrading / cherry-picking .NET Core assembly packages. +- resolved an issue that caused a memory leak when interacting with certain Windows Runtime objects in a different process. +- significantly reduced global lock contention when accessing Windows Runtime objects from multiple threads. +- Resolved an issue that resulted in queries not executing properly in Entity Framework when enabling .NET Native. ([GitHub #6381](https://github.com/aspnet/EntityFramework/issues/6381)) +- Resolved an issue with System.Linq.Expressions that resulted in unsupressable error messages. ([GitHub #5088](https://github.com/dotnet/corefx/issues/5088)) +- .NET Native will now show a warning if you have a native DLL in a different CPU architecture than the application being built. This is a common mistake that results in the application not being able to launch. + +#### Known issues + +- .NET native does not currently support portable PDBs. When debugging managed components with portable PDBs in application compiled with .NET native, you may have trouble setting breakpoints, stepping in, and/or inspecting variables of related types in those components. You can delete the files from the local package directory (users\userName.nuget\packages) to workaround the warning. This change was also made in the servicing update for .NET Native 1.4 in the latest update to Visual Studio 2017 RC. Earlier versions of .NET native may incorrectly throw OutOfMemoryException and crash during build when consuming portable PDBs. ### 5.2.3 (March 7, 2017) +When using Visual Studio this package requires Visual Studio 2015 Update 3 or later. - Fixed an [issue](https://github.com/dotnet/corefx/issues/10374) that caused DataContractJsonSerializer to fail to serialize any [DataContract] type whose default constructor is not public. - Fixed a regression in 5.2.2 where [4 Libraries were accidently no longer referenced by default](https://github.com/dotnet/corefx/issues/10338) @@ -45,15 +60,12 @@ When using Visual Studio this package requires Visual Studio 2017 or later. - System.Threading.Overlapped - System.Xml.XmlDocument -When using Visual Studio this package requires Visual Studio 2015 Update 3 or later. - ### 5.2.2 (July 14, 2016) +When using Visual Studio this package requires Visual Studio 2015 Update 3 or later. - .NET Native 1.4. - Universal Windows Platform 5.2.2 is the default in-box reference in Visual Studio 2017. -When using Visual Studio this package requires Visual Studio 2015 Update 3 or later. - ## Resources - [Microsoft.NETCore.UniversalWindowsPlatform NuGet Package Details](https://www.nuget.org/packages/Microsoft.NETCore.UniversalWindowsPlatform) From 1e62f39edfa0e2ffe3e36941ea3585a352522e84 Mon Sep 17 00:00:00 2001 From: Ron Petrusha Date: Tue, 2 May 2017 14:14:56 -0700 Subject: [PATCH 369/872] 2 additional changes from 4.6.1 and 4.6.2 (#382) * 2 additional changes from 4.6.1 and 4.6.2 * Renamed files, regenerated readme.md * Removed blank lines, regenerated readme --- Documentation/compatibility/README.md | 4 +- ...inapppath-throws-nullreferenceexception.md | 42 +++++++++++++++++++ ...led-systems-may-throw-argumentexception.md | 37 ++++++++++++++++ 3 files changed, 82 insertions(+), 1 deletion(-) create mode 100644 Documentation/compatibility/asp-net-httpruntime-appdomainapppath-throws-nullreferenceexception.md create mode 100644 Documentation/compatibility/wpf-pencontext-disable-method-calls-on-touch-enabled-systems-may-throw-argumentexception.md diff --git a/Documentation/compatibility/README.md b/Documentation/compatibility/README.md index 2c7245629..8eab80297 100644 --- a/Documentation/compatibility/README.md +++ b/Documentation/compatibility/README.md @@ -36,6 +36,7 @@ Please help us improve the [.NET Framework Application Compatibility documents]( - [Connection pool blocking period for Azure SQL databases is removed](connection-pool-blocking-period-for-azure-sql-databases-is-removed.md) - [DataGridCellsPanel.BringIndexIntoView throws ArgumentOutOfRangeException](datagridcellspanel_bringintoview-throws-argumentoutofrangeexception.md) - [Horizontal scrolling and virtualization](horizontal-scrolling-and-virtualization.md) +- [HttpRuntime.AppDomainAppPath Throws a NullReferenceException](asp-net-httpruntime-appdomainapppath-throws-nullreferenceexception.md) - [Incorrect implementation of MemberDescriptor.Equals](incorrect-implementation-of-memberdescriptor_equals.md) - [Long path support](long-path-support.md) - [Path colon checks are stricter](path-colon-checks-are-stricter.md) @@ -50,6 +51,7 @@ Please help us improve the [.NET Framework Application Compatibility documents]( ## .NET Framework 4.6.1 - [Application.FilterMessage no longer throws for re-entrant implementations of IMessageFilter.PreFilterMessage](application_filtermessage-no-longer-throws-for-re-entrant-implementations-of-imessagefilter_prefiltermessage.md) +- [Calls to System.Windows.Input.PenContext.Disable on touch-enabled systems may throw an ArgumentException](wpf-pencontext-disable-method-calls-on-touch-enabled-systems-may-throw-argumentexception.md) - [Item-scrolling a flat list with items of different pixel-height](item-scrolling-a-flat-list-with-items-of-different-pixel-height.md) - [ObjectDisposedException thrown by WPF spellchecker](objectdisposedexception-thrown-by-wpf-spellchecker.md) - [WCF binding with the TransportWithMessageCredential security mode](wcf-binding-with-the-transportwithmessagecredential-security-mode.md) @@ -143,8 +145,8 @@ Please help us improve the [.NET Framework Application Compatibility documents]( - [IPad should not be used in custom capabilities file because it is now a browser capability](ipad-should-not-be-used-in-custom-capabilities-file-because-it-is-now-a-browser-capability.md) - [Items.Clear does not remove duplicates from SelectedItems](items_clear-does-not-remove-duplicates-from-selecteditems.md) - [Linq to EF Join throws ArgumentOutOfRangeException](linq-to-ef-join-throws-argumentoutofrangeexception.md) -- [List.Sort algorithm changed](list_sort-algorithm-changed.md) - [List<T>.ForEach can throw exception when modifying list item](list_foreach-can-throw-exception-when-modifying-list-item.md) +- [List.Sort algorithm changed](list_sort-algorithm-changed.md) - [ListBoxItem IsSelected binding issue with ObservableCollection<T>.Move](listboxitem-isselected-binding-issue-with-observablecollection_move.md) - [Log file name created by the ObjectContext.CreateDatabase method has changed to match SQL Server specifications](log-file-name-created-by-the-objectcontext_createdatabase-method-has-changed-to-match-sql-server-specifications.md) - [MachineKey.Encode and MachineKey.Decode methods are now obsolete](machinekey_encode-and-machinekey_decode-methods-are-now-obsolete.md) diff --git a/Documentation/compatibility/asp-net-httpruntime-appdomainapppath-throws-nullreferenceexception.md b/Documentation/compatibility/asp-net-httpruntime-appdomainapppath-throws-nullreferenceexception.md new file mode 100644 index 000000000..b0b79d8aa --- /dev/null +++ b/Documentation/compatibility/asp-net-httpruntime-appdomainapppath-throws-nullreferenceexception.md @@ -0,0 +1,42 @@ +## HttpRuntime.AppDomainAppPath Throws a NullReferenceException + +### Scope +Edge + +### Version Introduced +4.6.2 + +### Version Reverted +4.6.3 + +### Source Analyzer Status +NotPlanned + +### Change Description +In the .NET Framework 4.6.2, the runtime throws a `T:System.NullReferenceException` when retrieving a `P:System.Web.HttpRuntime.AppDomainAppPath` value that includes null characters. + +In the .NET Framework 4.6.1 and earlier versions, the runtime throws an `T:System.ArgumentNullException`. + +- [ ] Quirked +- [X] Build-time break + +### Recommended Action +You can do either of the follow to respond to this change: + +- Handle the `T:System.NullReferenceException` if you application is running on the .NET Framework 4.6.2. + +- Upgrade to the .NET Framework 4.7, which restores the previous behavior and throws an `T:System.ArgumentNullException`. + +### Affected APIs +`P:System.Web.HttpRuntime.AppDomainAppPath` + +### Category +ASP.NET + + + + + diff --git a/Documentation/compatibility/wpf-pencontext-disable-method-calls-on-touch-enabled-systems-may-throw-argumentexception.md b/Documentation/compatibility/wpf-pencontext-disable-method-calls-on-touch-enabled-systems-may-throw-argumentexception.md new file mode 100644 index 000000000..354560221 --- /dev/null +++ b/Documentation/compatibility/wpf-pencontext-disable-method-calls-on-touch-enabled-systems-may-throw-argumentexception.md @@ -0,0 +1,37 @@ +## Calls to System.Windows.Input.PenContext.Disable on touch-enabled systems may throw an ArgumentException + +### Scope +Edge + +### Version Introduced +4.6.1 + +### Version Reverted +4.7 + +### Source Analyzer Status +NotPlanned + +### Change Description +Under some circumstances, calls to the internal **System.Windows.Intput.PenContext.Disable** method on touch-enabled systems may throw an unhandled `T:System.ArgumentException` because of reentrancy. + +- [ ] Quirked +- [X] Build-time break + +### Recommended Action +This issue has been addressed in the .NET Framework 4.7. To prevent the exception, upgrade to a version of the .NET Framework starting with the .NET Framework 4.7. + +### Affected APIs +Not detectable via API analysis + +### Category +Windows Presentation Foundation (WPF) + + + + + + From 2cc99228fb61acaea441f745ddf37038e6f8ed53 Mon Sep 17 00:00:00 2001 From: preetikr Date: Tue, 2 May 2017 14:38:05 -0700 Subject: [PATCH 370/872] Include .NET 4.7 updates --- data/platforms.json | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/data/platforms.json b/data/platforms.json index f07edeccc..bf90a271c 100644 --- a/data/platforms.json +++ b/data/platforms.json @@ -73,11 +73,26 @@ "alias": "net47", "category": "netfx", "supportInfo": { - "support": "Supported in Windows 10 Creators Update", + "support": "Supported", "link": "" }, - "info": "https://blogs.msdn.microsoft.com/dotnet/2017/04/05/announcing-the-net-framework-4-7/", - "includedIn": [ "VS2017" ] + "popular": true, + "info": "http://go.microsoft.com/fwlink/?LinkID=825321", + "includedIn": [ "VS2017" ], + "supportedBy": [ "VS2015"], + "runtime": [ + { + "name": ".NET Framework 4.7", + "link": "http://go.microsoft.com/fwlink/?LinkId=825299" + } + ], + "tools": [ + { + "name": ".NET Framework 4.7 Developer Pack", + "link": "http://go.microsoft.com/fwlink/?LinkId=825319", + "description": "The .NET 4.7 Developer pack includes 4.7 reference assemblies needed by Visual Studio and msbuild." + } + ] }, { "platform": ".NET Framework 4.6.2", From d433708a460550e6ae6daf970b179d0bcf6be204 Mon Sep 17 00:00:00 2001 From: Antonello Provenzano Date: Wed, 3 May 2017 17:56:37 +0200 Subject: [PATCH 371/872] Update dotnet-developer-projects.md (#394) --- dotnet-developer-projects.md | 1 + 1 file changed, 1 insertion(+) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 15cb79876..f344d8118 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -115,6 +115,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [Cricket](https://github.com/fsprojects/Cricket) - Actor library * [DateTimeExtensions](https://github.com/kappy/DateTimeExtensions) - Common Date Time operations on the form of extensions to System.DateTime, including holidays and working days calculations on several culture locales. * [DeveelDB](https://github.com/deveel/deveeldb) - SQL-99 embeddable database engine for .NET + * [Deveel Math](https://github.com/deveel/deveel-math) - A port of Google's Harmony library of the Math components to .NET for the computation of astonomic decimals (numbers with more than 1 million decimal digits) * [DiffSharp](https://github.com/gbaydin/DiffSharp) - Automatic Differentiation Library * [DnsClient](https://github.com/MichaCo/DnsClient.NET) - A high performant DNS query/lookup library - [Home](http://dnsclient.michaco.net) * [DotNetOpenAuth](https://github.com/DotNetOpenAuth) - Library that adds support for your site visitors to login with their OpenIDs by just dropping an ASP.NET control onto your page. From 817c7ca4b9e332b27eee698eecdd64ae1a86af30 Mon Sep 17 00:00:00 2001 From: Stacey Haffner Date: Fri, 5 May 2017 13:17:59 -0700 Subject: [PATCH 372/872] Added additional notes for .NET Native 1.4 / 5.2.2 release --- releases/UWP/README.md | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/releases/UWP/README.md b/releases/UWP/README.md index ba4aea0d1..0abc1a895 100644 --- a/releases/UWP/README.md +++ b/releases/UWP/README.md @@ -60,11 +60,12 @@ When using Visual Studio this package requires Visual Studio 2015 Update 3 or la - System.Threading.Overlapped - System.Xml.XmlDocument -### 5.2.2 (July 14, 2016) -When using Visual Studio this package requires Visual Studio 2015 Update 3 or later. +### 5.2.2 (June 27, 2016) +When using Visual Studio this package requires Visual Studio 2015 Update 3 or later. You can read more about these changes in the Visual Studio 2015 Update 3 blog [post](https://www.visualstudio.com/en-us/news/releasenotes/vs2015-update3-vs). -- .NET Native 1.4. -- Universal Windows Platform 5.2.2 is the default in-box reference in Visual Studio 2017. +- Fixed several customer reported bugs. +- Improves release build compilation times of large applications. +- Improves runtime performance for XAML applications and Unity games. ## Resources From babc194f3f4a718061149862625f4ec9c78d975d Mon Sep 17 00:00:00 2001 From: Stacey Haffner Date: Mon, 8 May 2017 08:05:48 -0700 Subject: [PATCH 373/872] Addressed comments --- releases/UWP/README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/releases/UWP/README.md b/releases/UWP/README.md index 0abc1a895..18ef835b1 100644 --- a/releases/UWP/README.md +++ b/releases/UWP/README.md @@ -60,12 +60,12 @@ When using Visual Studio this package requires Visual Studio 2015 Update 3 or la - System.Threading.Overlapped - System.Xml.XmlDocument -### 5.2.2 (June 27, 2016) +### 5.2.2 (July 14, 2016) When using Visual Studio this package requires Visual Studio 2015 Update 3 or later. You can read more about these changes in the Visual Studio 2015 Update 3 blog [post](https://www.visualstudio.com/en-us/news/releasenotes/vs2015-update3-vs). - Fixed several customer reported bugs. -- Improves release build compilation times of large applications. -- Improves runtime performance for XAML applications and Unity games. +- Improved release build compilation times of large applications. +- Improved runtime performance for XAML applications and Unity games. ## Resources From 7cfee264d5e9d013fb67dd526e7b976eb3897702 Mon Sep 17 00:00:00 2001 From: Rich Lander Date: Tue, 16 May 2017 19:57:22 -0700 Subject: [PATCH 374/872] Update release note formatting and section sort (#404) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Change formatting * Sort release-note sections * Update spelling of façade --- releases/net46/dotnet46-changes.md | 24 +-- releases/net461/dotnet461-changes.md | 21 +-- releases/net462/dotnet462-changes.md | 241 +++++++++++++-------------- 3 files changed, 135 insertions(+), 151 deletions(-) diff --git a/releases/net46/dotnet46-changes.md b/releases/net46/dotnet46-changes.md index 3462918b8..729923a80 100644 --- a/releases/net46/dotnet46-changes.md +++ b/releases/net46/dotnet46-changes.md @@ -6,8 +6,7 @@ This list details those changes, grouped by feature area. Each change includes our TFS bug numbers at the end of the line. Please include those numbers in your communication if you wish to contact us to obtain more information. -ASP.NET -------- +## ASP.NET * State Service startup type is correctly persisted. [1038077] * Registry settings preserved during upgrade. [1038147] @@ -45,8 +44,7 @@ ASP.NET * Overloads of HttpUtility.UrlEncode and UrlEncodeToBytes taking (byte[] bytes, int offset, int count) respects the offset and count parameter values. [912606] * Setting culture to auto:* in web.config doesn't cause CultureNotFoundException. [714999] -BCL ---- +## BCL * Projected DirectX value types can be marshalled to WinRT. [1166515] * New WeakReference() doesn't cause COMException. [973791] @@ -151,8 +149,7 @@ BCL * System.Drawing.Icon.ToBitmap() supports PNG framed icons. [1084802] * Uri constructor doesn't throw ArgumentOutOfRangeException when parsing certain URIs with escaped international characters. [1173958] -CLR ---- +## CLR * AppContext values can be overridden by registry settings. [1076165] * Asmx service references can be added to store apps. [1078198] @@ -203,13 +200,11 @@ CLR * .NET Framework Setup UI correctly scales controls in high DPI. [968115] * SIMD types in System.Numerics.dll are recognized by the JIT. [1168471] -Entity Framework ----------------- +## Entity Framework * Entity data source can be configured without causing an exception about the provider not returning a ProviderManifest instance. [810937] -WCF ---- +## WCF * Adding a service reference to a class library doesn't cause compilation errors. [1063611] * CustomBinding honors security header layout mode of Lax / LaxTimeStampLast. [1136398] @@ -226,8 +221,7 @@ WCF * Added a keep-alive timeout on WCF ServiceHost. [948289] * Fixed a null reference exception in System.Runtime.Serialization when ETW is enabled. [1137758] -Windows Forms -------------- +## Windows Forms * Icon.ToBitmap() supports PNG framed icons. [1074253] * Adding large image to resource file doesn't cause error in 300% high DPI mode. [1096726] @@ -238,8 +232,7 @@ Windows Forms * WIT grid's sorting arrows scale for high DPI. [745286] * NumericUpDown scroll buttons scale for high DPI. [906184] -Workflow --------- +## Workflow * WorkflowService design-time validation can be cancelled. [1162560] * ActivityExecutor.OnExecuteWorkItem has improved performance on RyuJIT. [1136333], [1136377] @@ -248,8 +241,7 @@ Workflow * Default TransactionException extended to include the distributed transaction ID in error message. [954268] * Workflow Foundation implementation for SQL better handles transient database errors. [1152472] -WPF ---- +## WPF * Selecting a XAML element with an empty start tag doesn't select its first child instead. [1117943] * Retrieving the font family name for DengXian in WPF doesn't cause an argument exception. [1153238] diff --git a/releases/net461/dotnet461-changes.md b/releases/net461/dotnet461-changes.md index acbfa7e42..a07b6b79a 100644 --- a/releases/net461/dotnet461-changes.md +++ b/releases/net461/dotnet461-changes.md @@ -6,8 +6,7 @@ This list details those changes, grouped by feature area. Each change includes our TFS bug numbers at the end of the line. Please include those numbers in your communication if you wish to contact us to obtain more information. -ASP.NET -------- +## ASP.NET * TreeNode.ImageTooltip is rendered as title attribute [101518] * Access to WebAdminFiles re-enabled [144513] @@ -16,8 +15,7 @@ ASP.NET * RegEx can be opted out for EmailAddresses, Phone, and URL attributes [142685] * Added a MatchTimeout property to RegularExpressionAttribute [142685] -BCL ---- +## BCL * System.Diagnostics.Process v4.1.0.0 supported in desktop implementation assemblies [142838] * System.ServiceProcess.ServiceController exposes a StartType property [145866] @@ -52,8 +50,7 @@ BCL * Fixed a bug that prevented some localized text from displaying properly [145634] * Fixed a bug that caused the Exception Catch event to get the incorrect source line [142525] -CLR ---- +## CLR * Ngen emits debug section mapping IL to native [145669] * ICorProfiler implementations can apply metadata changes during rejit [145801] @@ -105,8 +102,7 @@ CLR * Fixed an issue that caused local variables not to show up in X++ Debugging [145571] * Fixed RyuJIT optimizer causing incorrect result [110557] -WCF ---- +## WCF * ServiceThrottle uses double-checked locking pattern for calls, sessions, and dynamic properties [96934] * MessageLogger.LogInternal doesn't call TraceXPathNavigator.ToString() [127642] @@ -119,8 +115,7 @@ WCF * Fixed a null reference exception in System.Runtime.Serialization when ETW is enabled [105266] * Fixed IdentityModel.Claims to support multiple DNS entries [140718] -Windows Forms -------------- +## Windows Forms * CTRL+A works in multiline text boxes [145670] * Vertical scrollbar's Maximum is in sync with DataGridView's total height if the grid is populated while disabled [127329] @@ -132,16 +127,14 @@ Windows Forms * Fixed the size of the text for the Generating Previews dialog of the PrintPreviewControl from being cropped when scaling up to 500% in HDPI mode [145775] * Fixed the icons in the toolbox when scaling above 100% [145824] -Workflow --------- +## Workflow * Sys.Tx APIs enable distributed transactions with a non-MSDTC coordinator [145813] * A user of EnlistPromotableSinglePhase can promote transactions to a non-MSDTC distributed transaction coordinator [145770, 142891, 142992] * System.Transaction allows for snapshot isolation for non-MSDTC promoter types [146607] * Sql implementation handles transient faults properly [113390] -WPF ---- +## WPF * Listbox items can be selected by touch on high precision touch panel [141237] * Underline can be applied after strikethrough [141662] diff --git a/releases/net462/dotnet462-changes.md b/releases/net462/dotnet462-changes.md index ae6db2b68..e6ab1cbd7 100644 --- a/releases/net462/dotnet462-changes.md +++ b/releases/net462/dotnet462-changes.md @@ -5,53 +5,29 @@ This list details those changes, grouped by feature area. Each change includes our TFS bug numbers at the end of the line. Please include those numbers in your communication if you wish to contact us to obtain more information. -CLR ---- +## Active Directory Services -* Added Custom attribute to opt out of NGen with method granularity [186172] -* Support .NET in packaged desktop apps. [191774] -* Fixed incorrect result generation while comparing 16-bit signed values. [187325] -* Fixed a JIT optimization bug [174983] -* Fixed crashes due to JIT32 inlining�s handling of struct [171773] -* Fixed issue with incomplete PDB information when invoking ildasm. [150267] -* Fixed a performance regression in debug start [164437] -* Fixed an issue in CLR type loader that causes type load failures in rare conditions. [185570] -* Fixed usability issues with error message received when System.BitConverter.ToString(Byte[] value, Int32 startIndex, Int32 length) is called [100012] -* Performance fixes in GC [162854] -* Fixed stress issues in GC [161104] -* Fixed crashes in EventListener.DisposeOnShutdown [156238] -* Implement EventCounter support [150674] -* Fixed System.Diagnostics.Tracing.EventSource does not serialize byte[] correctly [153224] -* Fixed RelatedActivityID is not set properly when using EventSource's ActivityTracker [154432] -* Fixed [EventSource] .WriteEvent handles null strings inconsistently depending on the overload getting called [95999] -* Added the event name to ThrowEventSourceException message [112066] -* Fixed typo in EventSource resource string [118799] -* Fixed unexpected exceptions thrown during OnEventSourceCreated [121699] -* In .NET 4.6 if two event names in EventSource differ by a suffix of Start or Stop, then the EventSource will fail to construct and never emit any logging. This is now fixed. [121820] -* Improve Diagnostic when using RelatedActivityID in EventSource [128437] -* User-defined subclasses named "EventSource" can be allowed by checking that the EventSource's type is not equal to typeof(EventSource) which is the type of the built in EventSource. [125529] -* When a byte array is written to an Event a spurious warning is generated by EventSource, claiming that the event has a mismatch in parameter count when it does not. [166228] -* Fixed erroneous removal of IF condition in a finally or catch handler if the condition check exists in the exit from the try-body and entry to the try-body. [149697] -* Fixed a codegen bug when encountering an unbox instruction while the evaluation stack has pending evaluations that side-effect arguments of the unbox. [150586] -* Fix for optimization bug in the JIT component of .NET 4.6.1 may incorrectly combine branches that test bit patterns into a single branch incorrectly leading to program failure. [168744] -* Fix for hang in GC when ETW happens to request to walk the heap at the end of a background server GC [179589] -* Fixed NullReferenceException in EventSource if activity tracking is enabled. [182896] -* Fixed an EventSource exception indicating the maximum number of arguments has been exceeded. [191686] -* Added support for memory limit specified by job objects to GC. [194795] -* Fixed JIT Optimizer bug causing structs to be treated as reference objects instead of values objects in .Net 4.6 when targeting amd64. [194809] -* Fixed potential crash when the JIT generates an incorrect initialization value for an initblk and initializes memory incorrectly. [199169] -* Added VariableHome API for NullReferenceException improvements. [199851] -* Fixed [EventSource] Tags field is ignored for complex types. [205969] -* Allowed the debugger to determine the layout of types without an instance of the type. [211562] -* Reduced events are being sent for telemetry to the CLR for Windows Server OSes. [211794] -* Support resolving Windows Runtime references through simple name in .NET SDK. [219126] +* On calls made to System.DirectoryServices.AccountManagement UserPrincipal.GetAuthorizationGroups method against an Active Directory forest which contains SID History values for migrated users, an empty GroupPrincipal will be added to the list returned by GetAuthorizationGroups for every group with a migrated user SID. [191563] + +## ASP.NET + +* Fixed deadlock in AspNetSynchronizationContext [152944] +* Add support for sorting Model binding items by nested property names [173528] +* Fix Unhandled non-serializable exceptions in ASP.NET [160528] +* Fixed Non-interlocked update/read of 64-bit variable leads to wrong behavior. [92099] +* Since .NET 4.5 ASP.NET cache reports invalid size of the cache. This has been fixed. [154451] +* Fixed client side project compilation failure [156379] +* Fixed an issue with missing ".NET Memory Cache 4.0" performance counter [145677] +* Improve error message localization for DataAnnotationValidiation in ASP.NET model binding and Dynamic data. [176731] +* Enable customers using the Session State Store Providers with task returning methods. [179604] +* Enabling task returning methods to be used with the OutputCache Providers, to allow ASP.Net customers to get the scalability benefits of async. [187841] + +## BCL -BCL ---- * Fix RunContinuationsAscynchronously flag for all continuation types. [146618] * Fixed NullReference exception if "sha1RSA" is passed to RSACryptoServiceProvider.SignHash(). [147247] -* Fixed �Unhandled Exception: System.Security.SecurityException: Unable to retrieve security descriptor for this frame.� in System.Security.Principal.WindowsIdentity.RunImpersonated() [149685] -* Removed the System.Numerics.Vectors fa�ade from the targeting pack. If this fa�ade is needed, add a reference to the System.Numerics.Vectors NuGet package. [120400] +* Fixed "Unhandled Exception: System.Security.SecurityException: Unable to retrieve security descriptor for this frame." in System.Security.Principal.WindowsIdentity.RunImpersonated() [149685] +* Removed the System.Numerics.Vectors façade from the targeting pack. If this façade is needed, add a reference to the System.Numerics.Vectors NuGet package. [120400] * SignedXml now supports SHA256/384/512 signing. [125387] * Added a new type called DSACng. [180229] * Fixed Warnings generated during build that before required a global disable. [185846] @@ -89,65 +65,70 @@ BCL * Fixed file path syntax to correctly handle device path syntaxes (\\.\, \\?\) [202926] * Fix for StringBuilder overflow and the length becoming negative when > 2GB of data is added/inserted. [216203] -Networking ----------- +## ClickOnce + +* Added support for TLS1.1/1.2 in ClickOnce runtime. [193676] +* Fixed string truncations issue on ClickOnce security dialog. [176656] +* Added ClickOnce support for installation from web-sites that require Client Certificate to be supplied. [197343] + +## CLR + +* Added Custom attribute to opt out of NGen with method granularity [186172] +* Support .NET in packaged desktop apps. [191774] +* Fixed incorrect result generation while comparing 16-bit signed values. [187325] +* Fixed a JIT optimization bug [174983] +* Fixed crashes due to JIT32 inlining handling of struct [171773] +* Fixed issue with incomplete PDB information when invoking ildasm. [150267] +* Fixed a performance regression in debug start [164437] +* Fixed an issue in CLR type loader that causes type load failures in rare conditions. [185570] +* Fixed usability issues with error message received when System.BitConverter.ToString(Byte[] value, Int32 startIndex, Int32 length) is called [100012] +* Performance fixes in GC [162854] +* Fixed stress issues in GC [161104] +* Fixed crashes in EventListener.DisposeOnShutdown [156238] +* Implement EventCounter support [150674] +* Fixed System.Diagnostics.Tracing.EventSource does not serialize byte[] correctly [153224] +* Fixed RelatedActivityID is not set properly when using EventSource's ActivityTracker [154432] +* Fixed [EventSource] .WriteEvent handles null strings inconsistently depending on the overload getting called [95999] +* Added the event name to ThrowEventSourceException message [112066] +* Fixed typo in EventSource resource string [118799] +* Fixed unexpected exceptions thrown during OnEventSourceCreated [121699] +* In .NET 4.6 if two event names in EventSource differ by a suffix of Start or Stop, then the EventSource will fail to construct and never emit any logging. This is now fixed. [121820] +* Improve Diagnostic when using RelatedActivityID in EventSource [128437] +* User-defined subclasses named "EventSource" can be allowed by checking that the EventSource's type is not equal to typeof(EventSource) which is the type of the built in EventSource. [125529] +* When a byte array is written to an Event a spurious warning is generated by EventSource, claiming that the event has a mismatch in parameter count when it does not. [166228] +* Fixed erroneous removal of IF condition in a finally or catch handler if the condition check exists in the exit from the try-body and entry to the try-body. [149697] +* Fixed a codegen bug when encountering an unbox instruction while the evaluation stack has pending evaluations that side-effect arguments of the unbox. [150586] +* Fix for optimization bug in the JIT component of .NET 4.6.1 may incorrectly combine branches that test bit patterns into a single branch incorrectly leading to program failure. [168744] +* Fix for hang in GC when ETW happens to request to walk the heap at the end of a background server GC [179589] +* Fixed NullReferenceException in EventSource if activity tracking is enabled. [182896] +* Fixed an EventSource exception indicating the maximum number of arguments has been exceeded. [191686] +* Added support for memory limit specified by job objects to GC. [194795] +* Fixed JIT Optimizer bug causing structs to be treated as reference objects instead of values objects in .Net 4.6 when targeting amd64. [194809] +* Fixed potential crash when the JIT generates an incorrect initialization value for an initblk and initializes memory incorrectly. [199169] +* Added VariableHome API for NullReferenceException improvements. [199851] +* Fixed [EventSource] Tags field is ignored for complex types. [205969] +* Allowed the debugger to determine the layout of types without an instance of the type. [211562] +* Reduced events are being sent for telemetry to the CLR for Windows Server OSes. [211794] +* Support resolving Windows Runtime references through simple name in .NET SDK. [219126] + +## Networking + * Fixed a crash with Null Reference in PinnableBufferCache.Free. [144864] * Fix in bulletin MS16-065. [186985] * Added CNG certificate support to NCL code in System.dll. [195318] * An AccessViolationException gets thrown in HttpListenerRequest.GetTlsTokenBindingRequestInfo() if the RequestBuffer of the HttpListenerRequest has been moved by the garbage collector. This AccessViolation is caused by the fact that HttpListenerRequest is dereferencing a pointer inside RequestBuffer, without adjusting the pointer address the way other HttpListenerRequest methods do. This is now fixed. [204580] -ASP.NET -------- -* Fixed deadlock in AspNetSynchronizationContext [152944] -* Add support for sorting Model binding items by nested property names [173528] -* Fix Unhandled non-serializable exceptions in ASP.NET [160528] -* Fixed Non-interlocked update/read of 64-bit variable leads to wrong behavior. [92099] -* Since .NET 4.5 ASP.NET cache reports invalid size of the cache. This has been fixed. [154451] -* Fixed client side project compilation failure [156379] -* Fixed an issue with missing ".NET Memory Cache 4.0" performance counter [145677] -* Improve error message localization for DataAnnotationValidiation in ASP.NET model binding and Dynamic data. [176731] -* Enable customers using the Session State Store Providers with task returning methods. [179604] -* Enabling task returning methods to be used with the OutputCache Providers, to allow ASP.Net customers to get the scalability benefits of async. [187841] +## SQL -WPF ---- -* Nested Markup Expressions scenarios, where the parent markup extension is locally defined, have been fixed now. Developers can use markup extension within their custom defined markup extensions without causing a compiler error. [117193] -* Fixed potential periodic hangs or poor performance of a WPF application running on a device that has touch support. This is mostly seen when running over a touch-enabled remote desktop or other touch enabled remote access solutions. [146399] -* Enable automatic invocation and dismissal of the touch keyboard in WPF applications without disabling WPF stylus/touch support on Windows 10 [178044] -* Fixed missing glyph symbol display issues for those WPF applications that render text in the following ranges using a font that does not contain these ranges. [165725] - Ranges: - Unicode = "0000-052F, 0590-06FF, 0750-077F, 08A0-08FF, 1D00-1FFF, 2C60-2C7F, A720-A7FF, FB00-FB0F, FB1D-FBFF" - Unicode = "FC00-FDCF, FDF0-FDFF, FE20-FE2F, FE70-FEFE" -* Developers of WPF applications on .NET 4.6.1 may notice that the number of promotions from a touch move event to a mouse move event do not correspond 1:1. This change ensures that there is a corresponding mouse move promotion for every applicable touch move. [169470] -* Enable WPF Applications to look and feel great in multi DPI environments. This means crisper text, sharper images and general polish. [191569] -* WPF applications that allocate large numbers of bitmaps over time can possibly see performance issues such as frequent pauses and large numbers of garbage collections. This fix changes the bitmap garbage collection strategy to help alleviate these issues. [121913] -* Enables enumeration of generic and themed ResourceDictionary instances, and provides a notification infrastructure for listening to loading and unloading of ResourceDictionary instances. [159740] -* Starting .NET 4.6, CurrentCulture or CurrentUICulture changes made by event handlers (or any other method that WPF orchestrates the dispatch for) are lost when the method completes. This can result in various unintended side-effects ranging from the selection of incorrect UI language by application code, to potential loss of state information. This fix addresses the bug described above. [157919] -* Fixed compilation error in situations when a locally defined custom type in a XAML resource dictionary is immediately followed by something like x:Array. [131561] -* Long runs of dashes are now displayed correctly, without spurious spaces. [92892] -* On environments where the secondary monitor is larger than the primary monitor, a WPF application won't maximize to the correct size. This is now fixed. [104034] -* Fixed Crash after refreshing a collection underlying a ComboBox. [125219] -* Fixed crash in DataGrid view. [150804] -* Fixed Groups not being sorted correctly after property changes. [165198] -* Fixed RibbonGallery being disabled. [173053] -* Fixed memory usage issues with printing in Windows 8 and above. [174139] -* Fix in bulletin MS16-035. [176941] -* Developers can opt-in to receiving an exception when TextBoxBase controls fail to complete a Copy or Cut operation. [177621] -* WPF applications being used via multi-touch enabled devices could sometimes lose mouse promotion after a multi-touch drag/drop. This occurred when users removed touch points other than the primary (or dragging) touch point first. Doing so would cause an incorrect count of active touch devices causing mouse promotion handling to be incorrect for future touch interaction. This is now fixed. [185548] -* WPF would previously throw an ArgumentException when a UI Automation Client queried for an unknown TextAttribute. This was causing performance issues in WPF applications on Windows 8 and above. WPF will now simply return NotSupported in response to querying an unknown TextAttribute preserving the external behavior and helping alleviate performance issues. [187764] -* Fix for crash that occurs when: App is running more than one dispatcher thread, First thread uses any ItemsControl, Second thread uses a Selector. While something is selected, the underlying collection raises a Reset event, or the ItemsSource changes. [190507] -* Per Monitor DPI Aware apps now can have their title bars scaled to the correct DPI when an app is moved from one DPI to a different one. [206796] -* Images created with BitmapCreateOptions=DelayCreation can now update their ImageSource by listening to the RoutedEvent DpiChanged on the Image. This event is fired before the Image is decoded, and thus the cost of decoding the image twice can be avoided. [206986] -* WPF apps which are Per monitor DPI aware, running on Windows 10 Anniversary Update, will not have their popup windows like Menus clipped the first time they are open on a monitor with a different DPI. [212426] -* Fixed for Wisptis doesn't support some scenarios in Windows 7, trying to load wisptis in certain scenarios can result in delays upon start or crashes. [215016] -* Fixed issues with the touch keyboard showing on controls when it should not. [222625] -* Fixed ArgumentException when scrolling a virtualized ItemsControl after adding new items [194726]. -* Avoid unnecessary iteration through all items displayed in a virtualized ItemsControl with ScrollUnit=Item [202599]. -* Fixed XPS printing crash when InvariantCulture is used. [143947] -* Fixed truncation of contents during copy & paste in HTML format when WPF�s DataGrid control contains full width characters, for e.g. Japanese. [104825] +* Added Parameter Caching and CEK TTL improvements. [200050] +* Removed connection pool blocking period for Azure SQL DBs. [200140] +* Fixed incorrect error message in SqlClient when a Command Execution fails on Azure. [201189] +* Disallowed WAM option in native ADAL for AAD authorization. [201411] +* Fix in bulletin MS16-091. [222831] +* Fix for a crash that may occur when the connection pool is being replenished and during replenishment of the pool, the connection to SQL server fails. [229717] + +## WCF -WCF ---- * Added a new option for client to find best matching WCF service endpoint using NetNamePipeBinding.[157498] * CryptoConfig.CreateName(string algorithm) is now updated to understand SHA256 algorithms. [195341] * Fixed a reliability issue in DataContractCriticalHelper which throws as a SerializationException when reading objects concurrently. [146940] @@ -161,18 +142,11 @@ WCF * Fixed DataContractJsonSerializer producing wrong date/time data after having installed KB3093503 when the time zone is (UTC+2) Istanbul. [187509] * Fixed Performance in AppServices Throughput. [201205] * Fixed issue that could occur with tracing enabled on WCF async service; failed call generated double OperationFaulted traces. [208167] -* Fix for ArgumentException when opening service host when user�s certificate has invalid key usage data. [223670] +* Fix for ArgumentException when opening service host when user's certificate has invalid key usage data. [223670] * Fixed WCF SslStreamSecurity DNS Identity Check failure while targeting .NET Framework 4.6 when Alt subject is not present [182336] -Workflow --------- -* Workflow designer now supports �prepared for update� dynamic update XAML [98185] -* Fixed a FIPS compliance issue when using workflow tracking in WF3. [181434] -* Added Workflow/System.Messaging/System.Transactions Telemetry. [198681] -* Fixed transaction failure for SQLCLR usage of System.Transactions to promote a local SQL transaction to a distributed transaction. [206276] +## Windows Forms -Windows Forms -------------- * Fixed a crash in Windows Forms designer related to switching windows themes [172691] * "Smart Tag" dialog processes "enter" key press properly and is same as in Visual Studio 2013 [174771] * Enabled shortcut keys in the preferences dialog in mageui.exe tool [184655] @@ -182,7 +156,7 @@ Windows Forms * Fixed potential race condition in System.Windows.Forms.Application.ThreadContext [146065] * Fixed a control in MageUI tool that is not accessible by a keyboard shortcut because the same shortcut letter is used for two controls [146678] * Fixed a memory leak in Control.DrawToBitmap method. [188396] -* Fixed control text truncations issue in �Items Collection Editor� dialog in Visual Studio. [187716] +* Fixed control text truncations issue in "Items Collection Editor" dialog in Visual Studio. [187716] * Fixed a crash in Windows Forms Designer in Visual Studio related to adjusting TableLayoutPanel control. [190415] * Fixed a crash in Windows Forms Designer in Visual Studio [190416] * Fix in bulletin MS16-019. [174623] @@ -193,21 +167,46 @@ Windows Forms * Added Long path support for Windows 10 Anniversary Update in ClientConfigPath. [202970] * Fixed X1 Professional Client "ok" button is gray and disabled after select Desktop in browse for folder. [207279] -SQL ---- -* Added Parameter Caching and CEK TTL improvements. [200050] -* Removed connection pool blocking period for Azure SQL DBs. [200140] -* Fixed incorrect error message in SqlClient when a Command Execution fails on Azure. [201189] -* Disallowed WAM option in native ADAL for AAD authorization. [201411] -* Fix in bulletin MS16-091. [222831] -* Fix for a crash that may occur when the connection pool is being replenished and during replenishment of the pool, the connection to SQL server fails. [229717] +## Workflow -ClickOnce ---------- -* Added support for TLS1.1/1.2 in ClickOnce runtime. [193676] -* Fixed string truncations issue on ClickOnce security dialog. [176656] -* Added ClickOnce support for installation from web-sites that require Client Certificate to be supplied. [197343] +* Workflow designer now supports "prepared for update" dynamic update XAML [98185] +* Fixed a FIPS compliance issue when using workflow tracking in WF3. [181434] +* Added Workflow/System.Messaging/System.Transactions Telemetry. [198681] +* Fixed transaction failure for SQLCLR usage of System.Transactions to promote a local SQL transaction to a distributed transaction. [206276] -Active Directory Services -------------------------- -* On calls made to System.DirectoryServices.AccountManagement UserPrincipal.GetAuthorizationGroups method against an Active Directory forest which contains SID History values for migrated users, an empty GroupPrincipal will be added to the list returned by GetAuthorizationGroups for every group with a migrated user SID. [191563] +## WPF + +* Nested Markup Expressions scenarios, where the parent markup extension is locally defined, have been fixed now. Developers can use markup extension within their custom defined markup extensions without causing a compiler error. [117193] +* Fixed potential periodic hangs or poor performance of a WPF application running on a device that has touch support. This is mostly seen when running over a touch-enabled remote desktop or other touch enabled remote access solutions. [146399] +* Enable automatic invocation and dismissal of the touch keyboard in WPF applications without disabling WPF stylus/touch support on Windows 10 [178044] +* Fixed missing glyph symbol display issues for those WPF applications that render text in the following ranges using a font that does not contain these ranges. [165725] + Ranges: + Unicode = "0000-052F, 0590-06FF, 0750-077F, 08A0-08FF, 1D00-1FFF, 2C60-2C7F, A720-A7FF, FB00-FB0F, FB1D-FBFF" + Unicode = "FC00-FDCF, FDF0-FDFF, FE20-FE2F, FE70-FEFE" +* Developers of WPF applications on .NET 4.6.1 may notice that the number of promotions from a touch move event to a mouse move event do not correspond 1:1. This change ensures that there is a corresponding mouse move promotion for every applicable touch move. [169470] +* Enable WPF Applications to look and feel great in multi DPI environments. This means crisper text, sharper images and general polish. [191569] +* WPF applications that allocate large numbers of bitmaps over time can possibly see performance issues such as frequent pauses and large numbers of garbage collections. This fix changes the bitmap garbage collection strategy to help alleviate these issues. [121913] +* Enables enumeration of generic and themed ResourceDictionary instances, and provides a notification infrastructure for listening to loading and unloading of ResourceDictionary instances. [159740] +* Starting .NET 4.6, CurrentCulture or CurrentUICulture changes made by event handlers (or any other method that WPF orchestrates the dispatch for) are lost when the method completes. This can result in various unintended side-effects ranging from the selection of incorrect UI language by application code, to potential loss of state information. This fix addresses the bug described above. [157919] +* Fixed compilation error in situations when a locally defined custom type in a XAML resource dictionary is immediately followed by something like x:Array. [131561] +* Long runs of dashes are now displayed correctly, without spurious spaces. [92892] +* On environments where the secondary monitor is larger than the primary monitor, a WPF application won't maximize to the correct size. This is now fixed. [104034] +* Fixed Crash after refreshing a collection underlying a ComboBox. [125219] +* Fixed crash in DataGrid view. [150804] +* Fixed Groups not being sorted correctly after property changes. [165198] +* Fixed RibbonGallery being disabled. [173053] +* Fixed memory usage issues with printing in Windows 8 and above. [174139] +* Fix in bulletin MS16-035. [176941] +* Developers can opt-in to receiving an exception when TextBoxBase controls fail to complete a Copy or Cut operation. [177621] +* WPF applications being used via multi-touch enabled devices could sometimes lose mouse promotion after a multi-touch drag/drop. This occurred when users removed touch points other than the primary (or dragging) touch point first. Doing so would cause an incorrect count of active touch devices causing mouse promotion handling to be incorrect for future touch interaction. This is now fixed. [185548] +* WPF would previously throw an ArgumentException when a UI Automation Client queried for an unknown TextAttribute. This was causing performance issues in WPF applications on Windows 8 and above. WPF will now simply return NotSupported in response to querying an unknown TextAttribute preserving the external behavior and helping alleviate performance issues. [187764] +* Fix for crash that occurs when: App is running more than one dispatcher thread, First thread uses any ItemsControl, Second thread uses a Selector. While something is selected, the underlying collection raises a Reset event, or the ItemsSource changes. [190507] +* Per Monitor DPI Aware apps now can have their title bars scaled to the correct DPI when an app is moved from one DPI to a different one. [206796] +* Images created with BitmapCreateOptions=DelayCreation can now update their ImageSource by listening to the RoutedEvent DpiChanged on the Image. This event is fired before the Image is decoded, and thus the cost of decoding the image twice can be avoided. [206986] +* WPF apps which are Per monitor DPI aware, running on Windows 10 Anniversary Update, will not have their popup windows like Menus clipped the first time they are open on a monitor with a different DPI. [212426] +* Fixed for Wisptis doesn't support some scenarios in Windows 7, trying to load wisptis in certain scenarios can result in delays upon start or crashes. [215016] +* Fixed issues with the touch keyboard showing on controls when it should not. [222625] +* Fixed ArgumentException when scrolling a virtualized ItemsControl after adding new items [194726]. +* Avoid unnecessary iteration through all items displayed in a virtualized ItemsControl with ScrollUnit=Item [202599]. +* Fixed XPS printing crash when InvariantCulture is used. [143947] +* Fixed truncation of contents during copy & paste in HTML format when the WPF DataGrid control contains full width characters, for e.g. Japanese. [104825] From a5bddcdc45f506824ac0df04c2117a47b271d425 Mon Sep 17 00:00:00 2001 From: Rich Lander Date: Tue, 16 May 2017 22:10:07 -0700 Subject: [PATCH 375/872] Clean up release note intro (#405) * Clean up release note intro * Update formatting --- releases/net46/dotnet46-changes.md | 9 +++------ releases/net461/dotnet461-changes.md | 9 +++------ releases/net462/dotnet462-changes.md | 8 +++----- releases/net47/dotnet47-changes.md | 8 +++----- 4 files changed, 12 insertions(+), 22 deletions(-) diff --git a/releases/net46/dotnet46-changes.md b/releases/net46/dotnet46-changes.md index 729923a80..54eaa5d42 100644 --- a/releases/net46/dotnet46-changes.md +++ b/releases/net46/dotnet46-changes.md @@ -1,10 +1,7 @@ -.NET Framework 4.6 list of changes -================================== +.NET Framework 4.6 Release Notes +================================ -.NET Framework 4.6 contains hundreds of bug fixes and improvements. -This list details those changes, grouped by feature area. -Each change includes our TFS bug numbers at the end of the line. -Please include those numbers in your communication if you wish to contact us to obtain more information. +.NET Framework release notes describe product improvements grouped by product area. Each change includes a Microsoft-internal VSTS bug number, which acts as a useful unique ID for each change (can be used to report issues or when calling Microsoft Support). ## ASP.NET diff --git a/releases/net461/dotnet461-changes.md b/releases/net461/dotnet461-changes.md index a07b6b79a..671981687 100644 --- a/releases/net461/dotnet461-changes.md +++ b/releases/net461/dotnet461-changes.md @@ -1,10 +1,7 @@ -.NET Framework 4.6.1 list of changes -==================================== +.NET Framework 4.6.1 Release Notes +================================== -.NET Framework 4.6.1 contains dozens of bug fixes and improvements. -This list details those changes, grouped by feature area. -Each change includes our TFS bug numbers at the end of the line. -Please include those numbers in your communication if you wish to contact us to obtain more information. +.NET Framework release notes describe product improvements grouped by product area. Each change includes a Microsoft-internal VSTS bug number, which acts as a useful unique ID for each change (can be used to report issues or when calling Microsoft Support). ## ASP.NET diff --git a/releases/net462/dotnet462-changes.md b/releases/net462/dotnet462-changes.md index e6ab1cbd7..4504c77ac 100644 --- a/releases/net462/dotnet462-changes.md +++ b/releases/net462/dotnet462-changes.md @@ -1,9 +1,7 @@ -.NET Framework 4.6.2 List of Changes -============================================ +.NET Framework 4.6.2 Release Notes +================================== -.NET Framework 4.6.2 contains dozens of bug fixes and improvements. -This list details those changes, grouped by feature area. -Each change includes our TFS bug numbers at the end of the line. Please include those numbers in your communication if you wish to contact us to obtain more information. +.NET Framework release notes describe product improvements grouped by product area. Each change includes a Microsoft-internal VSTS bug number, which acts as a useful unique ID for each change (can be used to report issues or when calling Microsoft Support). ## Active Directory Services diff --git a/releases/net47/dotnet47-changes.md b/releases/net47/dotnet47-changes.md index a33ad4e9b..7776b9aec 100644 --- a/releases/net47/dotnet47-changes.md +++ b/releases/net47/dotnet47-changes.md @@ -1,9 +1,7 @@ -.NET Framework 4.7 List of Changes -============================================ +.NET Framework 4.7 Release Notes +================================ -.NET Framework 4.7 contains dozens of bug fixes and improvements. -This list details those changes, grouped by feature area. -Each change includes our TFS bug numbers at the end of the line. Please include those numbers in your communication if you wish to contact us to obtain more information. +.NET Framework release notes describe product improvements grouped by product area. Each change includes a Microsoft-internal VSTS bug number, which acts as a useful unique ID for each change (can be used to report issues or when calling Microsoft Support). ## ASP.NET From 7b531eca6e4f7b9c30589439048477f4d009237c Mon Sep 17 00:00:00 2001 From: Richard Lander Date: Tue, 16 May 2017 22:21:34 -0700 Subject: [PATCH 376/872] .NET Framework 4.6 May 2017 Preview Quality Update --- releases/net46/dotnet46-changes.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/releases/net46/dotnet46-changes.md b/releases/net46/dotnet46-changes.md index 54eaa5d42..e279cf18d 100644 --- a/releases/net46/dotnet46-changes.md +++ b/releases/net46/dotnet46-changes.md @@ -3,6 +3,10 @@ .NET Framework release notes describe product improvements grouped by product area. Each change includes a Microsoft-internal VSTS bug number, which acts as a useful unique ID for each change (can be used to report issues or when calling Microsoft Support). +Post-release servicing updates are also included, appended to the end of each product area. The following servicing updates have been included: + +- [May 2017](https://blogs.msdn.com/dotnet) + ## ASP.NET * State Service startup type is correctly persisted. [1038077] @@ -145,6 +149,7 @@ * Fixed the size of Vector. [1020874] * System.Drawing.Icon.ToBitmap() supports PNG framed icons. [1084802] * Uri constructor doesn't throw ArgumentOutOfRangeException when parsing certain URIs with escaped international characters. [1173958] +* When using RSACng (or another class which directly or indirectly uses RSACng) to perform encryption using RSAEncryptionPadding.Pkcs1 when the private key is stored on a smartcard (or other hardware security module) an exception of System.Security.Cryptography.CryptographicException: The parameter is incorrect. at System.Security.Cryptography.NCryptNative.DecryptData[T](SafeNCryptKeyHandle key, Byte[] data, T& paddingInfo, AsymmetricPaddingMode paddingMode, NCryptDecryptor`1 decryptor) [299303] [Added: May 2017] ## CLR @@ -280,3 +285,4 @@ * Window chrome doesn't turn black on maximize with GlassFrameThickness -1. [1176703] * Improved RichTextBox typing performance on low-end GPUs. [1177602] * Applications continue to promote touch events to click after digitizer is removed and reconnected while touching the digitizer. [1186170] +* A WPF application with a virtualizing list control (ListBox, DataGrid, TreeView, etc.) can encounter an ArgumentNullException when scrolling to an item whose size has substantially decreased since the last time it was re-virtualized. [273803, 282662, 282664, 367282, 367285] [Added: May 2017] From 27ce328c067722ae0b5c5f9a2ed3449e4f487acb Mon Sep 17 00:00:00 2001 From: Richard Lander Date: Tue, 16 May 2017 22:21:46 -0700 Subject: [PATCH 377/872] .NET Framework 4.6.1 May 2017 Preview Quality Update --- releases/net461/dotnet461-changes.md | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/releases/net461/dotnet461-changes.md b/releases/net461/dotnet461-changes.md index 671981687..0128e0e75 100644 --- a/releases/net461/dotnet461-changes.md +++ b/releases/net461/dotnet461-changes.md @@ -3,6 +3,10 @@ .NET Framework release notes describe product improvements grouped by product area. Each change includes a Microsoft-internal VSTS bug number, which acts as a useful unique ID for each change (can be used to report issues or when calling Microsoft Support). +Post-release servicing updates are also included, appended to the end of each product area. The following servicing updates have been included: + +- [May 2017](https://blogs.msdn.com/dotnet) + ## ASP.NET * TreeNode.ImageTooltip is rendered as title attribute [101518] @@ -11,6 +15,11 @@ * MaintainScrollPositionOnPostBack works with zoom on Chrome [120243] * RegEx can be opted out for EmailAddresses, Phone, and URL attributes [142685] * Added a MatchTimeout property to RegularExpressionAttribute [142685] +* In the following scenarios, ASP.NET may duplicate the cookie in response headers: + - Before a request cookie is loaded, the response cookie is added. + - A response cookie is added, and then a native module sets the response cookie. + + With the fix, ASP.NET makes sure that response cookies are not duplicated. [359376] [Added: May 2017] ## BCL @@ -46,6 +55,7 @@ * Uri constructor doesn't throw ArgumentOutOfRangeException when parsing certain URIs with escaped international characters [123235] * Fixed a bug that prevented some localized text from displaying properly [145634] * Fixed a bug that caused the Exception Catch event to get the incorrect source line [142525] +* When using RSACng (or another class which directly or indirectly uses RSACng) to perform encryption using RSAEncryptionPadding.Pkcs1 when the private key is stored on a smartcard (or other hardware security module) an exception of System.Security.Cryptography.CryptographicException: The parameter is incorrect. at System.Security.Cryptography.NCryptNative.DecryptData[T](SafeNCryptKeyHandle key, Byte[] data, T& paddingInfo, AsymmetricPaddingMode paddingMode, NCryptDecryptor`1 decryptor) [299303] [Added: May 2017] ## CLR @@ -178,3 +188,7 @@ * Fixed an issue with partial trust applications running on a machine with a touch device [151160] * Fixed a bug caused by loading multiple Microsoft Visual Studio Tools for Office (VSTO) addins on touch enabled devices [142484] * Fixed a bug that caused Visual Studio to hang when saving a XAML file [110669] +* If two WPF applications that target Side by Side (SxS) .NET versions (3.5 and 4.X) are loaded in the same process issues can occur on touch/stylus enabled machines. A common example of this is loading VSTO add-ins written in WPF. This is due to an issue with choosing the correct PenIMC.dll version for each application. This fix allows WPF to properly differentiate between both DLLs and function correctly. [362710] [Added: May 2017] +* If two WPF applications that target Side by Side (SxS) .NET versions (3.5 and 4.X) are loaded in the same process issues can occur on touch/stylus enabled machines. A common example of this is loading VSTO add-ins written in WPF. This is due to an issue with choosing the correct PenIMC.dll version for each application. This fix allows WPF to properly differentiate between both DLLs and function correctly. [377649] [Added: May 2017] +* In some situations, it is possible that WPF attempts to process a touch/stylus input with a null StylusDevice. This can cause a NullReferenceException. This fix checks for this issue and guards against it. [378295] [Added: May 2017] +* A WPF application with a virtualizing list control (ListBox, DataGrid, TreeView, etc.) can encounter an ArgumentNullException when scrolling to an item whose size has substantially decreased since the last time it was re-virtualized. [273803, 282662, 282664, 367282, 367285] [Added: May 2017] From 5b8d85fcf64295c7253e946c43f88f24895e7bd2 Mon Sep 17 00:00:00 2001 From: Richard Lander Date: Tue, 16 May 2017 22:22:07 -0700 Subject: [PATCH 378/872] .NET Framework 4.6.2 May 2017 Preview Quality Update --- releases/net462/dotnet462-changes.md | 105 ++++++++++++++++++++++++++- 1 file changed, 102 insertions(+), 3 deletions(-) diff --git a/releases/net462/dotnet462-changes.md b/releases/net462/dotnet462-changes.md index 4504c77ac..daa3a9550 100644 --- a/releases/net462/dotnet462-changes.md +++ b/releases/net462/dotnet462-changes.md @@ -3,6 +3,10 @@ .NET Framework release notes describe product improvements grouped by product area. Each change includes a Microsoft-internal VSTS bug number, which acts as a useful unique ID for each change (can be used to report issues or when calling Microsoft Support). +Post-release servicing updates are also included, appended to the end of each product area. The following servicing updates have been included: + +- [May 2017](https://blogs.msdn.com/dotnet) + ## Active Directory Services * On calls made to System.DirectoryServices.AccountManagement UserPrincipal.GetAuthorizationGroups method against an Active Directory forest which contains SID History values for migrated users, an empty GroupPrincipal will be added to the list returned by GetAuthorizationGroups for every group with a migrated user SID. [191563] @@ -19,6 +23,53 @@ * Improve error message localization for DataAnnotationValidiation in ASP.NET model binding and Dynamic data. [176731] * Enable customers using the Session State Store Providers with task returning methods. [179604] * Enabling task returning methods to be used with the OutputCache Providers, to allow ASP.Net customers to get the scalability benefits of async. [187841] +* After installing 4.6.2, the max-age value in the following requests coming from Cache is incorrectly set. The issue is not preventing OutputCache on the server side to functional but will cause confusions and problems if customer applications looked at the max-age in the cache control headers. [288340] [Added: May 2017] +* In the following scenarios, ASP.NET may duplicate the cookie in response headers: + - Before a request cookie is loaded, the response cookie is added. + - A response cookie is added, and then a native module sets the response cookie. + + With the fix, ASP.NET makes sure that response cookies are not duplicated. [364615] [Added: May 2017] +* Issue #1: Users might obtain a NULL result when calling OperationContext.Current + + This issue occurs when one creates an OperationContextScope and proceeds to call OperationContext.Current within the using clause. A common pattern that is prone to this failure is the following: + + ```csharp + using (new OperationContextScope(OperationContext.Current)) + { + OperationContext context = OperationContext.Current; //OperationContext.Current returns null + // ... + } + ``` + + To work around this issue, one needs to change the code to something similar to the following: + + ``` csharp + OperationContext ocx = OperationContext.Current; + using (new OperationContextScope(OperationContext.Current)) + { + OperationContext.Current = new OperationContext(ocx.Channel); + // ... + } + ``` + Issue #2: Users might run into a deadlock when using Reentrant services. + + This issue occurs when one creates a Reentrant service ? which restricts instances of the service to one thread of execution at a time. Users prone to running into this problem will have the following ServiceBehaviorAttribute in their code: + + ```csharp + [ServiceBehavior(ConcurrencyMode = ConcurrencyMode.Reentrant)] + ``` + To work around this issue, users should set the ConcurrencyMode of their service to ConcurrencyMode.Single or ConcurrencyMode.Multiple, and provide the appropriate synchronization primitives to ensure a single thread can execute a single method at a time. + + We have rolled out an update of System.ServiceModel.dll and we strongly encourage users to patch their existing .NET 4.6.2 framework. The patch fixes Issue #1, disables the flow of OperationContext.Current by default, and provides an Opt-In option to enables feature. + + To enable the flow of OperationContext.Current across multiple threads in async operations, use the following AppSettings key: + + ```xml + + + + ``` + Setting the value of Switch.System.ServiceModel.DisableOperationContextAsyncFlow to true will disable the flow of the ExecutionContext in OperationContext.Current and will effectively revert the behavior to pre-4.6.2, which is the default behavior after this patch. Setting the value to false will enable the feature and should not be used in Reentrant services. [253477] [Added: May 2017] ## BCL @@ -62,6 +113,13 @@ * Fixed potential errors with String comparison hitting before the AppDomain is fully initialized. [200330] and [201338] * Fixed file path syntax to correctly handle device path syntaxes (\\.\, \\?\) [202926] * Fix for StringBuilder overflow and the length becoming negative when > 2GB of data is added/inserted. [216203] +* Users of SignedXml may get an exception like the following when running in some modes on older versions of Windows (for example, executing without loading the user profile on Windows Server 2008r2). + + ```console + System.Security.Cryptography.CryptographicException: Object was not found. + at System.Security.Cryptography.NCryptNative.CreatePersistedKey(SafeNCryptProviderHandle provider, String algorithm, String name, CngKeyCreationOptions options) + ``` + [372920] [Added: May 2017] ## ClickOnce @@ -108,6 +166,38 @@ * Allowed the debugger to determine the layout of types without an instance of the type. [211562] * Reduced events are being sent for telemetry to the CLR for Windows Server OSes. [211794] * Support resolving Windows Runtime references through simple name in .NET SDK. [219126] +* Reliability improvements in RYUJIT complier code generation due to a missed AVX encoding case. [259784] [Added: May 2017] +* On a machine with many processors, there might a desire to have some processes use only some processes with Server GC. For example if you have a 40-proc machine, you might want to have process 0 use only 10 procs and process 1 use only 6. So process 0 gets 10 GC heaps/threads and process 1 gets 6. Below is an example of using these Server GC configs: + + ```xml + + + + + + + + + ``` + + `` specifies to not affinitize the Server GC threads with CPUs. + `` 6 specifies you want 6 heaps. The actual # of heaps is the min of what you specify and what your proces is allowed to use. + `` the # is in decimal so this is 0x90, meaning you want to use those 2 bits as your process mask. The actual # of heaps is the min of what you specify, what your proces is allowed to use and the # of set bits in this mask you specify. [274126] [Added: May 2017] +* If you are marshaling array of struct A and also array of struct B as SAFEARRAY, and struct A/B has identical GUIDs, you may run into a memory leak. [365349] [Added: May 2017] +* If you are marshaling array of struct A and also array of struct B as SAFEARRAY, and struct A/B has identical GUIDs, you may run into a memory leak. [424243] [Added: May 2017] +* If you are marshaling array of struct A and also array of struct B as SAFEARRAY, and struct A/B has identical GUIDs, you may run into a memory leak. [431586] [Added: May 2017] +* Rare crashes or deadlocks can happen if a GC occurs while another thread is running NGen'ed code which is making the initial call into a static method within the same module where one or more parameter types involve type-forwarded valuetypes. [378601] [Added: May 2017] +* Applications that frequently queue bursts of work items to the .NET ThreadPool, with idle or light activity between bursts, may be shown using PerfView to spend a significant amount of CPU time in clr!ThreadpoolMgr::UnfairSemaphore::Wait in a spin-wait. A new configuration variable is exposed to configure the spinning limit. The environment variable COMPlus_ThreadPool_UnfairSemaphoreSpinLimit may be set to a lower value (default is 0x32) to reduce the amount of spinning done, or zero (0) to disable spinning, before launching the application. Note that changes to this configuration variable may negatively affect the performance of applications, and such changes are not supported. [381905] [Added: May 2017] + +## Entity Framework + +* When there are more than 1000 queries in the EF 4.x application, the application may experience slowness due to exceeding the size limit of the query cache. With this fix, you can change the query cache size through the following AppSetting. + ```xml + + + + ``` + [379134] [Added: May 2017] ## Networking @@ -115,6 +205,7 @@ * Fix in bulletin MS16-065. [186985] * Added CNG certificate support to NCL code in System.dll. [195318] * An AccessViolationException gets thrown in HttpListenerRequest.GetTlsTokenBindingRequestInfo() if the RequestBuffer of the HttpListenerRequest has been moved by the garbage collector. This AccessViolation is caused by the fact that HttpListenerRequest is dereferencing a pointer inside RequestBuffer, without adjusting the pointer address the way other HttpListenerRequest methods do. This is now fixed. [204580] +* When attempting to access token bindings from the GetTlsTokenBindings API, an Access Violation exception can be thrown if managed memory has moved during the request. Pointers are now updated to reflect any memory movement. [267430] [Added: May 2017] ## SQL @@ -124,6 +215,7 @@ * Disallowed WAM option in native ADAL for AAD authorization. [201411] * Fix in bulletin MS16-091. [222831] * Fix for a crash that may occur when the connection pool is being replenished and during replenishment of the pool, the connection to SQL server fails. [229717] +* An OverflowException or IndexOutOfRangeException may be thrown during the prelogin phase of opening a SQL Connection due to receiving a TDS packet that is smaller than expected. [395584, 395586, 395589, 395592] [Added: May 2017] ## WCF @@ -164,6 +256,7 @@ * Fixed printing delay in previewing the document with a network printer. [197824] * Added Long path support for Windows 10 Anniversary Update in ClientConfigPath. [202970] * Fixed X1 Professional Client "ok" button is gray and disabled after select Desktop in browse for folder. [207279] +* A windows Forms Application with MDI parent form under certain conditions will remove active child forms from the MDI child windows list. This happens when the closing of the child form is canceled by the user and the child windows list menu item is opened. [388401] [Added: May 2017] ## Workflow @@ -178,9 +271,9 @@ * Fixed potential periodic hangs or poor performance of a WPF application running on a device that has touch support. This is mostly seen when running over a touch-enabled remote desktop or other touch enabled remote access solutions. [146399] * Enable automatic invocation and dismissal of the touch keyboard in WPF applications without disabling WPF stylus/touch support on Windows 10 [178044] * Fixed missing glyph symbol display issues for those WPF applications that render text in the following ranges using a font that does not contain these ranges. [165725] - Ranges: - Unicode = "0000-052F, 0590-06FF, 0750-077F, 08A0-08FF, 1D00-1FFF, 2C60-2C7F, A720-A7FF, FB00-FB0F, FB1D-FBFF" - Unicode = "FC00-FDCF, FDF0-FDFF, FE20-FE2F, FE70-FEFE" + Ranges: + - Unicode = "0000-052F, 0590-06FF, 0750-077F, 08A0-08FF, 1D00-1FFF, 2C60-2C7F, A720-A7FF, FB00-FB0F, FB1D-FBFF" + - Unicode = "FC00-FDCF, FDF0-FDFF, FE20-FE2F, FE70-FEFE" * Developers of WPF applications on .NET 4.6.1 may notice that the number of promotions from a touch move event to a mouse move event do not correspond 1:1. This change ensures that there is a corresponding mouse move promotion for every applicable touch move. [169470] * Enable WPF Applications to look and feel great in multi DPI environments. This means crisper text, sharper images and general polish. [191569] * WPF applications that allocate large numbers of bitmaps over time can possibly see performance issues such as frequent pauses and large numbers of garbage collections. This fix changes the bitmap garbage collection strategy to help alleviate these issues. [121913] @@ -208,3 +301,9 @@ * Avoid unnecessary iteration through all items displayed in a virtualized ItemsControl with ScrollUnit=Item [202599]. * Fixed XPS printing crash when InvariantCulture is used. [143947] * Fixed truncation of contents during copy & paste in HTML format when the WPF DataGrid control contains full width characters, for e.g. Japanese. [104825] +* In some situations, it is possible that WPF attempts to process a touch/stylus input with a null StylusDevice. This can cause a NullReferenceException. This fix checks for this issue and guards against it. [381810] [Added: May 2017] +* In some situations, it is possible that WPF attempts to process a touch/stylus input with a null StylusDevice. This can cause a NullReferenceException. This fix checks for this issue and guards against it. [378292] [Added: May 2017] +* There is a memory leak when a WPF application includes a D3DImage control, changes both the size and the content of the image, and runs with software rendering (e.g. running over Remote Desktop). [261136] [Added: May 2017] +* A WPF application with a virtualizing list control (ListBox, DataGrid, TreeView, etc.) can encounter an ArgumentNullException when scrolling to an item whose size has substantially decreased since the last time it was re-virtualized. [273803, 282662, 282664, 367282, 367285] [Added: May 2017] +* A WPF application that repeatedly changes the Template of a TextBox can encounter a memory leak of TextBoxView objects. The Template change can happen implicitly, for example by moving the TextBox in and out of the main visual tree, or by moving it between scopes of different implicitly-defined Styles. [245230] [Added: May 2017] +* A WPF application can encounter an ArugmentOutOfRangeException if it uses a DataGrid with column virtualization enabled, calls DataGrid.ScrollIntoView(row, column) before the column widths are known, then immediately changes the DataGrid.Columns collection before the DataGrid has rendered. [271673] [Added: May 2017] From 5b259c0e9c6f93f45b775db435f7a0f7bd2b141c Mon Sep 17 00:00:00 2001 From: Richard Lander Date: Wed, 17 May 2017 16:30:19 -0700 Subject: [PATCH 379/872] Update blog URL --- releases/net46/dotnet46-changes.md | 2 +- releases/net461/dotnet461-changes.md | 2 +- releases/net462/dotnet462-changes.md | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/releases/net46/dotnet46-changes.md b/releases/net46/dotnet46-changes.md index e279cf18d..d269fc388 100644 --- a/releases/net46/dotnet46-changes.md +++ b/releases/net46/dotnet46-changes.md @@ -5,7 +5,7 @@ Post-release servicing updates are also included, appended to the end of each product area. The following servicing updates have been included: -- [May 2017](https://blogs.msdn.com/dotnet) +- [May 2017](https://blogs.msdn.microsoft.com/dotnet/2017/05/17/net-framework-may-2017-preview-of-quality-rollup/) ## ASP.NET diff --git a/releases/net461/dotnet461-changes.md b/releases/net461/dotnet461-changes.md index 0128e0e75..3e25b2e2d 100644 --- a/releases/net461/dotnet461-changes.md +++ b/releases/net461/dotnet461-changes.md @@ -5,7 +5,7 @@ Post-release servicing updates are also included, appended to the end of each product area. The following servicing updates have been included: -- [May 2017](https://blogs.msdn.com/dotnet) +- [May 2017](https://blogs.msdn.microsoft.com/dotnet/2017/05/17/net-framework-may-2017-preview-of-quality-rollup/) ## ASP.NET diff --git a/releases/net462/dotnet462-changes.md b/releases/net462/dotnet462-changes.md index daa3a9550..e1b802511 100644 --- a/releases/net462/dotnet462-changes.md +++ b/releases/net462/dotnet462-changes.md @@ -5,7 +5,7 @@ Post-release servicing updates are also included, appended to the end of each product area. The following servicing updates have been included: -- [May 2017](https://blogs.msdn.com/dotnet) +- [May 2017](https://blogs.msdn.microsoft.com/dotnet/2017/05/17/net-framework-may-2017-preview-of-quality-rollup/) ## Active Directory Services From 5c0aba9421193d15e1a1a4f0bf50980aa5ce13ec Mon Sep 17 00:00:00 2001 From: Joseph Musser Date: Thu, 18 May 2017 15:04:56 -0400 Subject: [PATCH 380/872] Fixed typos (#409) --- releases/net462/dotnet462-changes.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/releases/net462/dotnet462-changes.md b/releases/net462/dotnet462-changes.md index e1b802511..d06b26d34 100644 --- a/releases/net462/dotnet462-changes.md +++ b/releases/net462/dotnet462-changes.md @@ -181,8 +181,8 @@ Post-release servicing updates are also included, appended to the end of each pr ``` `` specifies to not affinitize the Server GC threads with CPUs. - `` 6 specifies you want 6 heaps. The actual # of heaps is the min of what you specify and what your proces is allowed to use. - `` the # is in decimal so this is 0x90, meaning you want to use those 2 bits as your process mask. The actual # of heaps is the min of what you specify, what your proces is allowed to use and the # of set bits in this mask you specify. [274126] [Added: May 2017] + `` 6 specifies you want 6 heaps. The actual # of heaps is the min of what you specify and what your process is allowed to use. + `` the # is in decimal so this is 0x90, meaning you want to use those 2 bits as your process mask. The actual # of heaps is the min of what you specify, what your process is allowed to use and the # of set bits in this mask you specify. [274126] [Added: May 2017] * If you are marshaling array of struct A and also array of struct B as SAFEARRAY, and struct A/B has identical GUIDs, you may run into a memory leak. [365349] [Added: May 2017] * If you are marshaling array of struct A and also array of struct B as SAFEARRAY, and struct A/B has identical GUIDs, you may run into a memory leak. [424243] [Added: May 2017] * If you are marshaling array of struct A and also array of struct B as SAFEARRAY, and struct A/B has identical GUIDs, you may run into a memory leak. [431586] [Added: May 2017] @@ -306,4 +306,4 @@ Post-release servicing updates are also included, appended to the end of each pr * There is a memory leak when a WPF application includes a D3DImage control, changes both the size and the content of the image, and runs with software rendering (e.g. running over Remote Desktop). [261136] [Added: May 2017] * A WPF application with a virtualizing list control (ListBox, DataGrid, TreeView, etc.) can encounter an ArgumentNullException when scrolling to an item whose size has substantially decreased since the last time it was re-virtualized. [273803, 282662, 282664, 367282, 367285] [Added: May 2017] * A WPF application that repeatedly changes the Template of a TextBox can encounter a memory leak of TextBoxView objects. The Template change can happen implicitly, for example by moving the TextBox in and out of the main visual tree, or by moving it between scopes of different implicitly-defined Styles. [245230] [Added: May 2017] -* A WPF application can encounter an ArugmentOutOfRangeException if it uses a DataGrid with column virtualization enabled, calls DataGrid.ScrollIntoView(row, column) before the column widths are known, then immediately changes the DataGrid.Columns collection before the DataGrid has rendered. [271673] [Added: May 2017] +* A WPF application can encounter an ArgumentOutOfRangeException if it uses a DataGrid with column virtualization enabled, calls DataGrid.ScrollIntoView(row, column) before the column widths are known, then immediately changes the DataGrid.Columns collection before the DataGrid has rendered. [271673] [Added: May 2017] From 5deb53286430dc9c3e1a2346555284c7482215bc Mon Sep 17 00:00:00 2001 From: Rich Lander Date: Tue, 23 May 2017 10:13:17 -0700 Subject: [PATCH 381/872] Add direct links for .NET Framework runtime (#412) * Add direct links for .NET Framework runtime * Add trailing CR --- data/platforms.json | 652 ++++++++++++++++++++++++++------------------ 1 file changed, 387 insertions(+), 265 deletions(-) diff --git a/data/platforms.json b/data/platforms.json index bf90a271c..0f7631078 100644 --- a/data/platforms.json +++ b/data/platforms.json @@ -1,274 +1,396 @@ { -"vsversions": -[ -{"alias":"VS2013", -"name":"Visual Studio 2013", -"download":"http://www.visualstudio.com/downloads" -}, -{"alias":"VS2015", -"name":"Visual Studio 2015", -"download":"http://www.visualstudio.com/downloads" -}, -{"alias":"VS2017", -"name":"Visual Studio 2017", -"download":"http://www.visualstudio.com/downloads" -} -] -, -"platformcategories": -[ -{"alias":"netcore", -"name":".NET Core"}, -{"alias":"netfx", -"name":".NET Framework"}, -{"alias":"services", -"name":"Services"}, -{"alias":"devices", -"name":"Devices"}, -{"alias":"gaming", -"name":"Gaming"} -], - -"platforms": -[ - { - "platform": ".NET Core 1.0 and 1.1", - "category": "netcore", - "supportInfo": { - "support": "Supported", - "link": "" + "vsversions": [ + { + "alias": "VS2013", + "name": "Visual Studio 2013", + "download": "http://www.visualstudio.com/downloads" + }, + { + "alias": "VS2015", + "name": "Visual Studio 2015", + "download": "http://www.visualstudio.com/downloads" }, - "popular": true, - "info": "https://blogs.msdn.microsoft.com/dotnet/2017/03/07/announcing-net-core-tools-1-0/", - "includedIn": [ "VS2017" ], - "runtime": [ - { - "name": ".NET Core 1.0", - "link": "https://github.com/dotnet/core/releases/tag/1.0.4" + { + "alias": "VS2017", + "name": "Visual Studio 2017", + "download": "http://www.visualstudio.com/downloads" + } + ], + "platformcategories": [ + { + "alias": "netcore", + "name": ".NET Core" + }, + { + "alias": "netfx", + "name": ".NET Framework" + }, + { + "alias": "services", + "name": "Services" + }, + { + "alias": "devices", + "name": "Devices" + }, + { + "alias": "gaming", + "name": "Gaming" + } + ], + "platforms": [ + { + "platform": ".NET Core 1.0 and 1.1", + "category": "netcore", + "supportInfo": { + "support": "Supported", + "link": "" }, - { - "name": ".NET Core 1.1", - "link": "https://github.com/dotnet/core/releases/tag/1.1.1" + "popular": true, + "info": "https://blogs.msdn.microsoft.com/dotnet/2017/03/07/announcing-net-core-tools-1-0/", + "includedIn": [ + "VS2017" + ], + "runtime": [ + { + "name": ".NET Core 1.0", + "link": "https://github.com/dotnet/core/releases/tag/1.0.4" + }, + { + "name": ".NET Core 1.1", + "link": "https://github.com/dotnet/core/releases/tag/1.1.1" + }, + { + "name": "ASP.NET Core", + "link": "http://www.asp.net/get-started" + } + ], + "tools": [ + { + "name": ".NET Core SDK", + "link": "https://www.microsoft.com/net/download/core", + "description": "The .NET Core SDK for Windows, macOS and Linux." + }, + { + "name": ".NET Core SDK (for Docker)", + "link": "https://www.microsoft.com/net/core#dockercmd", + "description": "The .NET Core docker images, for Windows and Linux." + } + ] + }, + { + "platform": ".NET Framework 4.7", + "alias": "net47", + "category": "netfx", + "supportInfo": { + "support": "Supported", + "link": "" }, - { - "name": "ASP.NET Core", - "link": "http://www.asp.net/get-started" - } - ], - "tools": [ - { - "name": ".NET Core SDK", - "link": "https://www.microsoft.com/net/download/core", - "description": "The .NET Core SDK for Windows, macOS and Linux." + "popular": true, + "info": "http://go.microsoft.com/fwlink/?LinkID=825321", + "includedIn": [ + "VS2017" + ], + "supportedBy": [ + "VS2015" + ], + "runtime": [ + { + "name": ".NET Framework 4.7", + "link": "http://go.microsoft.com/fwlink/?LinkId=825299", + "directLink": "http://go.microsoft.com/fwlink/?LinkId=825302&source=dotnet" + } + ], + "tools": [ + { + "name": ".NET Framework 4.7 Developer Pack", + "link": "http://go.microsoft.com/fwlink/?LinkId=825319", + "description": "The .NET 4.7 Developer pack includes 4.7 reference assemblies needed by Visual Studio and msbuild." + } + ] + }, + { + "platform": ".NET Framework 4.6.2", + "alias": "net462", + "category": "netfx", + "supportInfo": { + "support": "Supported", + "link": "" }, - { - "name": ".NET Core SDK (for Docker)", - "link": "https://www.microsoft.com/net/core#dockercmd", - "description": "The .NET Core docker images, for Windows and Linux." - } - ] - }, + "popular": true, + "info": "http://go.microsoft.com/fwlink/?LinkID=708776", + "includedIn": [ + "VS2017" + ], + "supportedBy": [ + "VS2015", + "VS2013" + ], + "runtime": [ + { + "name": ".NET Framework 4.6.2", + "link": "http://go.microsoft.com/fwlink/?LinkId=780597", + "directLink": "http://go.microsoft.com/fwlink/?LinkID=780596&source=dotnet" + } + ], + "tools": [ + { + "name": ".NET Framework 4.6.2 Developer Pack", + "link": "http://go.microsoft.com/fwlink/?LinkId=780617", + "description": "The .NET 4.6.2 Developer pack includes 4.6.2 reference assemblies needed by Visual Studio and msbuild." + } + ] + }, { - "platform": ".NET Framework 4.7", - "alias": "net47", - "category": "netfx", - "supportInfo": { - "support": "Supported", - "link": "" + "platform": ".NET Framework 4.6.1", + "alias": "net461", + "category": "netfx", + "supportInfo": { + "support": "Supported", + "link": "" + }, + "info": "http://blogs.msdn.com/b/dotnet/archive/2015/11/30/net-framework-4-6-1-is-now-available.aspx", + "includedIn": [ + "VS2017", + "VS2015" + ], + "supportedBy": [ + "VS2013" + ], + "runtime": [ + { + "name": ".NET Framework 4.6.1", + "link": "http://go.microsoft.com/fwlink/?LinkId=671729" + } + ], + "tools": [ + { + "name": ".NET Framework 4.6.1 Targeting Pack", + "link": "http://go.microsoft.com/fwlink/?LinkId=690706", + "description": "The .NET 4.6.1 Developer pack includes the 4.6.1 reference assemblies needed by Visual Studio and msbuild." + } + ] }, - "popular": true, - "info": "http://go.microsoft.com/fwlink/?LinkID=825321", - "includedIn": [ "VS2017" ], - "supportedBy": [ "VS2015"], - "runtime": [ - { - "name": ".NET Framework 4.7", - "link": "http://go.microsoft.com/fwlink/?LinkId=825299" - } - ], - "tools": [ - { - "name": ".NET Framework 4.7 Developer Pack", - "link": "http://go.microsoft.com/fwlink/?LinkId=825319", - "description": "The .NET 4.7 Developer pack includes 4.7 reference assemblies needed by Visual Studio and msbuild." - } - ] - }, - { - "platform": ".NET Framework 4.6.2", - "alias": "net462", - "category": "netfx", - "supportInfo": { - "support": "Supported", - "link": "" + { + "platform": ".NET Framework 4.6", + "alias": "net46", + "category": "netfx", + "supportInfo": { + "support": "Supported", + "link": "" + }, + "info": "http://blogs.msdn.com/b/dotnet/archive/2015/07/20/announcing-net-framework-4-6.aspx", + "includedIn": [ + "VS2017", + "VS2015" + ], + "supportedBy": [ + "VS2013" + ], + "runtime": [ + { + "name": ".NET Framework 4.6", + "link": "http://go.microsoft.com/fwlink/?LinkId=528259" + } + ], + "tools": [ + { + "name": ".NET Framework 4.6 Targeting Pack", + "link": "http://go.microsoft.com/fwlink/?LinkId=528261", + "description": "The .NET 4.6 Developer pack includes the 4.6 reference assemblies needed by Visual Studio and msbuild." + } + ] }, - "popular": true, - "info": "http://go.microsoft.com/fwlink/?LinkID=708776", - "includedIn": [ "VS2017" ], - "supportedBy": [ "VS2015","VS2013"], - "runtime": [ - { - "name": ".NET Framework 4.6.2", - "link": "http://go.microsoft.com/fwlink/?LinkId=780597" - } - ], - "tools": [ - { - "name": ".NET Framework 4.6.2 Developer Pack", - "link": "http://go.microsoft.com/fwlink/?LinkId=780617", - "description": "The .NET 4.6.2 Developer pack includes 4.6.2 reference assemblies needed by Visual Studio and msbuild." - } - ] - }, -{ -"platform":".NET Framework 4.6.1", -"alias": "net461", -"category":"netfx", -"supportInfo" : - { - "support": "Supported", - "link" : "" - }, -"info":"http://blogs.msdn.com/b/dotnet/archive/2015/11/30/net-framework-4-6-1-is-now-available.aspx", -"includedIn":["VS2017","VS2015"], -"supportedBy":["VS2013"], -"runtime":[ -{"name":".NET Framework 4.6.1","link":"http://go.microsoft.com/fwlink/?LinkId=671729"}], -"tools":[ -{"name":".NET Framework 4.6.1 Targeting Pack","link":"http://go.microsoft.com/fwlink/?LinkId=690706","description":"The .NET 4.6.1 Developer pack includes the 4.6.1 reference assemblies needed by Visual Studio and msbuild."} -] -}, -{ -"platform":".NET Framework 4.6", -"alias": "net46", -"category":"netfx", -"supportInfo" : - { - "support": "Supported", - "link" : "" - }, -"info":"http://blogs.msdn.com/b/dotnet/archive/2015/07/20/announcing-net-framework-4-6.aspx", -"includedIn":["VS2017","VS2015"], -"supportedBy":["VS2013"], -"runtime":[ -{"name":".NET Framework 4.6","link":"http://go.microsoft.com/fwlink/?LinkId=528259"}], -"tools":[ -{"name":".NET Framework 4.6 Targeting Pack","link":"http://go.microsoft.com/fwlink/?LinkId=528261","description":"The .NET 4.6 Developer pack includes the 4.6 reference assemblies needed by Visual Studio and msbuild."} -] - }, -{ -"platform":".NET Framework 4.5.2", -"alias": "net452", -"category":"netfx", -"supportInfo" : - { - "support": "Supported", - "link" : "" - }, -"popular": true, -"info":"http://go.microsoft.com/fwlink/?LinkID=309958", -"includedIn":["VS2017","VS2015"], -"supportedBy":["VS2013"], -"runtime":[ -{"name":".NET Framework 4.5.2","link":"http://go.microsoft.com/fwlink/?LinkId=397674"}], -"tools":[ -{"name":".NET Framework 4.5.2 Developer Pack","link":"http://go.microsoft.com/fwlink/?LinkId=328857","description":"The .NET 4.5.2 Developer pack includes the .NET framework 4.5.2 runtime and targeting pack."}, -{"name":".NET Framework 4.5.2 Language Packs","link":"http://go.microsoft.com/fwlink/?LinkId=328858","description":"Resources to support languages other than English."} -] - } -, - - { -"platform":".NET Framework 2.0 + 3.5 SP1", -"alias": "net2", -"category":"netfx", -"supportInfo" : - { - "support": "Supported", - "link" : "" - }, -"popular": true, -"info":"http://msdn.microsoft.com/library/w0x726c2(VS.90).aspx", -"includedIn":[], -"supportedBy":["VS2017","VS2015","VS2013"], -"runtime":[ -{"name":".NET Framework 3.5 SP1","link":"http://go.microsoft.com/fwlink/?LinkID=229190"}, -{"name":".NET Framework 3.5 SP1 (Windows 8+)","link":"http://msdn.microsoft.com/library/hh506443.aspx"}], -"tools":[] - }, - -{ -"platform":"Microsoft Azure", -"category":"services", -"info":"http://msdn.microsoft.com/library/azure", -"includedIn":["VS2017"], -"supportedBy":["VS2015","VS2013"], -"tools":[ -{"name":"Azure SDK for .NET","link":"http://go.microsoft.com/fwlink/?LinkID=254336"} -] - }, -{ -"platform":"Team Foundation Server", -"category":"services", -"info":"http://go.microsoft.com/fwlink/?LinkID=308920", -"includedIn":["VS2015","VS2013","VS2012"], -"supportedBy":[] - }, - -{ -"platform":"Office 365, Office and SharePoint", -"category":"services", -"info":"http://go.microsoft.com/fwlink/?LinkID=308921", -"includedIn":["VS2017","VS2015","VS2013"], -"supportedBy":[] -} -, -{ -"platform":"OneDrive", -"category":"services", -"info":"http://go.microsoft.com/fwlink/?LinkID=306598", -"includedIn":[], -"supportedBy":["VS2017","VS2015","VS2013","VS2012"], -"tools":[{"name":"Live SDK","link":"http://go.microsoft.com/fwlink/?LinkID=306598"}] -}, - -{ -"platform":"Bing", -"category":"services", -"info":"http://www.bing.com/dev", -"includedIn":[], -"supportedBy":["VS2017","VS2015","VS2013"] -}, - -{ -"platform":"Windows Store", -"category":"devices", -"info":"http://msdn.microsoft.com/windows/apps", -"includedIn":["VS2013"], -"supportedBy":[], -"tools":[{"name":"Visual Studio Express 2013 for Windows with Update 2 RC ","link":"http://www.microsoft.com/download/details.aspx?id=42305"}, - {"name":"Microsoft .NET Native","link":"http://msdn.microsoft.com/vstudio/dotnetnative"} -] -}, -{ -"platform":"Xamarin", -"category":"devices", -"info":"http://xamarin.com/", -"includedIn":["VS2017"], -"supportedBy":["VS2015","VS2013"], -"runtime":[], -"tools":[ -{"name":"Xamarin Tools for iOS and Android","link":"http://go.microsoft.com/fwlink/?LinkID=398052"}] -}, -{ -"platform":"Unity", -"category":"gaming", -"info":"https://blogs.msdn.microsoft.com/visualstudio/2016/07/14/visual-studio-tools-for-unity-2-3/", -"includedIn":["VS2017"], -"supportedBy":["VS2015"], -"runtime":[], -"tools":[ -{"name":"Visual Studio 2015 Tools for Unity","link":"https://visualstudiogallery.msdn.microsoft.com/8d26236e-4a64-4d64-8486-7df95156aba9"}] -} -] + { + "platform": ".NET Framework 4.5.2", + "alias": "net452", + "category": "netfx", + "supportInfo": { + "support": "Supported", + "link": "" + }, + "popular": true, + "info": "http://go.microsoft.com/fwlink/?LinkID=309958", + "includedIn": [ + "VS2017", + "VS2015" + ], + "supportedBy": [ + "VS2013" + ], + "runtime": [ + { + "name": ".NET Framework 4.5.2", + "link": "http://go.microsoft.com/fwlink/?LinkId=397674", + "directLink": "http://go.microsoft.com/fwlink/?LinkId=328855&source=dotnet" + } + ], + "tools": [ + { + "name": ".NET Framework 4.5.2 Developer Pack", + "link": "http://go.microsoft.com/fwlink/?LinkId=328857", + "description": "The .NET 4.5.2 Developer pack includes the .NET framework 4.5.2 runtime and targeting pack." + }, + { + "name": ".NET Framework 4.5.2 Language Packs", + "link": "http://go.microsoft.com/fwlink/?LinkId=328858", + "description": "Resources to support languages other than English." + } + ] + }, + { + "platform": ".NET Framework 2.0 + 3.5 SP1", + "alias": "net2", + "category": "netfx", + "supportInfo": { + "support": "Supported", + "link": "" + }, + "popular": true, + "info": "http://msdn.microsoft.com/library/w0x726c2(VS.90).aspx", + "includedIn": [], + "supportedBy": [ + "VS2017", + "VS2015", + "VS2013" + ], + "runtime": [ + { + "name": ".NET Framework 3.5 SP1", + "link": "http://go.microsoft.com/fwlink/?LinkID=229190", + "directLink": "http://download.microsoft.com/download/2/0/E/20E90413-712F-438C-988E-FDAA79A8AC3D/dotnetfx35.exe" + }, + { + "name": ".NET Framework 3.5 SP1 (Windows 8+)", + "link": "http://msdn.microsoft.com/library/hh506443.aspx" + } + ], + "tools": [] + }, + { + "platform": "Microsoft Azure", + "category": "services", + "info": "http://msdn.microsoft.com/library/azure", + "includedIn": [ + "VS2017" + ], + "supportedBy": [ + "VS2015", + "VS2013" + ], + "tools": [ + { + "name": "Azure SDK for .NET", + "link": "http://go.microsoft.com/fwlink/?LinkID=254336" + } + ] + }, + { + "platform": "Team Foundation Server", + "category": "services", + "info": "http://go.microsoft.com/fwlink/?LinkID=308920", + "includedIn": [ + "VS2015", + "VS2013", + "VS2012" + ], + "supportedBy": [] + }, + { + "platform": "Office 365, Office and SharePoint", + "category": "services", + "info": "http://go.microsoft.com/fwlink/?LinkID=308921", + "includedIn": [ + "VS2017", + "VS2015", + "VS2013" + ], + "supportedBy": [] + }, + { + "platform": "OneDrive", + "category": "services", + "info": "http://go.microsoft.com/fwlink/?LinkID=306598", + "includedIn": [], + "supportedBy": [ + "VS2017", + "VS2015", + "VS2013", + "VS2012" + ], + "tools": [ + { + "name": "Live SDK", + "link": "http://go.microsoft.com/fwlink/?LinkID=306598" + } + ] + }, + { + "platform": "Bing", + "category": "services", + "info": "http://www.bing.com/dev", + "includedIn": [], + "supportedBy": [ + "VS2017", + "VS2015", + "VS2013" + ] + }, + { + "platform": "Windows Store", + "category": "devices", + "info": "http://msdn.microsoft.com/windows/apps", + "includedIn": [ + "VS2013" + ], + "supportedBy": [], + "tools": [ + { + "name": "Visual Studio Express 2013 for Windows with Update 2 RC ", + "link": "http://www.microsoft.com/download/details.aspx?id=42305" + }, + { + "name": "Microsoft .NET Native", + "link": "http://msdn.microsoft.com/vstudio/dotnetnative" + } + ] + }, + { + "platform": "Xamarin", + "category": "devices", + "info": "http://xamarin.com/", + "includedIn": [ + "VS2017" + ], + "supportedBy": [ + "VS2015", + "VS2013" + ], + "runtime": [], + "tools": [ + { + "name": "Xamarin Tools for iOS and Android", + "link": "http://go.microsoft.com/fwlink/?LinkID=398052" + } + ] + }, + { + "platform": "Unity", + "category": "gaming", + "info": "https://blogs.msdn.microsoft.com/visualstudio/2016/07/14/visual-studio-tools-for-unity-2-3/", + "includedIn": [ + "VS2017" + ], + "supportedBy": [ + "VS2015" + ], + "runtime": [], + "tools": [ + { + "name": "Visual Studio 2015 Tools for Unity", + "link": "https://visualstudiogallery.msdn.microsoft.com/8d26236e-4a64-4d64-8486-7df95156aba9" + } + ] + } + ] } From 40cbd07d1acdccbffff6cf96b2bc655e1f513ec0 Mon Sep 17 00:00:00 2001 From: Richard Lander Date: Tue, 23 May 2017 11:13:12 -0700 Subject: [PATCH 382/872] Add .NET Core 2.0 Preview 1 --- data/platforms.json | 39 +++++++++++++++++++++++++++++++++++++-- 1 file changed, 37 insertions(+), 2 deletions(-) diff --git a/data/platforms.json b/data/platforms.json index 0f7631078..54cff519b 100644 --- a/data/platforms.json +++ b/data/platforms.json @@ -69,15 +69,50 @@ { "name": ".NET Core SDK", "link": "https://www.microsoft.com/net/download/core", - "description": "The .NET Core SDK for Windows, macOS and Linux." + "description": "The .NET Core SDK 1.0 for Windows, macOS and Linux." }, { - "name": ".NET Core SDK (for Docker)", + "name": ".NET Core SDK 1.0 (for Docker)", "link": "https://www.microsoft.com/net/core#dockercmd", "description": "The .NET Core docker images, for Windows and Linux." } ] }, + { + "platform": ".NET Core 2.0 Preview 1", + "category": "netcore", + "supportInfo": { + "support": "Supported", + "link": "" + }, + "popular": true, + "info": "https://blogs.msdn.microsoft.com/dotnet/2017/05/10/announcing-net-core-2-0-preview-1/", + "supportedBy": [ + "VS2017" + ], + "runtime": [ + { + "name": ".NET Core 2.0 Preview 1", + "link": "https://github.com/dotnet/core/releases/tag/v2.0.0-preview1" + }, + { + "name": "ASP.NET Core 2.0 Preview 1", + "link": "https://blogs.msdn.microsoft.com/webdev/2017/05/10/aspnet-2-preview-1/" + } + ], + "tools": [ + { + "name": ".NET Core SDK", + "link": "https://www.microsoft.com/net/core/preview", + "description": "The .NET Core SDK 2.0 Preview 1 for Windows, macOS and Linux." + }, + { + "name": ".NET Core SDK (for Docker)", + "link": "https://www.microsoft.com/net/core/preview#dockercmd", + "description": "The .NET Core 2.0 Preview 1 Docker images, for Windows and Linux." + } + ] + }, { "platform": ".NET Framework 4.7", "alias": "net47", From 3c15a21d5b416a7d5d985af1834949a6a9f08b50 Mon Sep 17 00:00:00 2001 From: Richard Lander Date: Tue, 23 May 2017 11:19:51 -0700 Subject: [PATCH 383/872] Add IncludedIn field --- data/platforms.json | 1 + 1 file changed, 1 insertion(+) diff --git a/data/platforms.json b/data/platforms.json index 54cff519b..a3b74fbe4 100644 --- a/data/platforms.json +++ b/data/platforms.json @@ -87,6 +87,7 @@ }, "popular": true, "info": "https://blogs.msdn.microsoft.com/dotnet/2017/05/10/announcing-net-core-2-0-preview-1/", + "includedIn": [], "supportedBy": [ "VS2017" ], From fb811127e7552e7a55a83357307b2190d32604e8 Mon Sep 17 00:00:00 2001 From: Richard Lander Date: Tue, 23 May 2017 16:27:01 -0700 Subject: [PATCH 384/872] Add download links --- releases/net451/README.md | 1 + releases/net452/README.md | 1 + releases/net46/README.md | 1 + releases/net461/README.md | 1 + releases/net462/README.md | 1 + releases/net47/README.md | 3 ++- 6 files changed, 7 insertions(+), 1 deletion(-) diff --git a/releases/net451/README.md b/releases/net451/README.md index c7235ef31..e82fd6dd0 100644 --- a/releases/net451/README.md +++ b/releases/net451/README.md @@ -4,6 +4,7 @@ You can learn about the changes made in the .NET Framework 4.5.1. The .NET Framework 4.5.1 is no longer supported by Microsoft. +- [Download](http://go.microsoft.com/fwlink/?LinkId=321326) - [.NET Framework 4.5.1 announcement blog post](https://blogs.msdn.microsoft.com/dotnet/2013/10/17/net-framework-4-5-1-rtm-start-coding/) - [What's new in the .NET Framework 4.5.1](https://docs.microsoft.com/dotnet/articles/framework/whats-new/index#v451) - [Application compatibility](../../Documentation/compatibility/README.md#net-framework-451) diff --git a/releases/net452/README.md b/releases/net452/README.md index 8f97274b6..2637c8838 100644 --- a/releases/net452/README.md +++ b/releases/net452/README.md @@ -2,6 +2,7 @@ You can learn about the changes made in the .NET Framework 4.5.2. +- [Download](http://go.microsoft.com/fwlink/?LinkId=397674) - [.NET Framework 4.5.2 announcement blog post](https://blogs.msdn.microsoft.com/dotnet/2014/05/05/announcing-the-net-framework-4-5-2/) - [What's new in the .NET Framework 4.5.2](https://docs.microsoft.com/dotnet/articles/framework/whats-new/index#v452) - [Application compatibility](../../Documentation/compatibility/README.md#net-framework-452) diff --git a/releases/net46/README.md b/releases/net46/README.md index a064069b9..365a87206 100644 --- a/releases/net46/README.md +++ b/releases/net46/README.md @@ -2,6 +2,7 @@ You can learn about the changes made in the .NET Framework 4.6. +- [Download](http://go.microsoft.com/fwlink/?LinkId=528259) - [.NET Framework 4.6 announcement blog post](https://blogs.msdn.microsoft.com/dotnet/2015/07/20/announcing-net-framework-4-6/) - [What's new in the .NET Framework 4.6](https://docs.microsoft.com/dotnet/articles/framework/whats-new/index#v46) - [Release notes](dotnet46-changes.md) diff --git a/releases/net461/README.md b/releases/net461/README.md index 066e52725..b309362a6 100644 --- a/releases/net461/README.md +++ b/releases/net461/README.md @@ -2,6 +2,7 @@ You can learn about the changes made in the .NET Framework 4.6.1. +- [Download](http://go.microsoft.com/fwlink/?LinkId=671729) - [.NET Framework 4.6.1 announcement blog post](https://blogs.msdn.microsoft.com/dotnet/2015/11/30/net-framework-4-6-1-is-now-available/) - [What's new in the .NET Framework 4.6.1](https://docs.microsoft.com/dotnet/articles/framework/whats-new/index#v461) - [Release notes](dotnet461-changes.md) diff --git a/releases/net462/README.md b/releases/net462/README.md index f7bfe023d..e1a8c67d4 100644 --- a/releases/net462/README.md +++ b/releases/net462/README.md @@ -2,6 +2,7 @@ You can learn about the changes made in the .NET Framework 4.6.2. +- [Download](http://go.microsoft.com/fwlink/?LinkId=780597) - [.NET Framework 4.6.2 announcement blog post](https://blogs.msdn.microsoft.com/dotnet/2016/08/02/announcing-net-framework-4-6-2/) - [What's new in the .NET Framework 4.6.2](https://docs.microsoft.com/dotnet/articles/framework/whats-new/index#v462) - [Release notes](dotnet462-changes.md) diff --git a/releases/net47/README.md b/releases/net47/README.md index e614afecd..9a301662d 100644 --- a/releases/net47/README.md +++ b/releases/net47/README.md @@ -2,7 +2,8 @@ You can learn about the changes made in the .NET Framework 4.7. -- [.NET Framework 4.7 announcement blog post](https://blogs.msdn.microsoft.com/dotnet/2017/04/05/announcing-the-net-framework-4-7/) +- [Download](http://go.microsoft.com/fwlink/?LinkId=825299) +- [.NET Framework 4.7 announcement blog post](https://blogs.msdn.microsoft.com/dotnet/2017/05/02/announcing-the-net-framework-4-7-general-availability/) - [What's new in the .NET Framework 4.7](https://docs.microsoft.com/dotnet/articles/framework/whats-new/index#v47) - [Release notes](dotnet47-changes.md) - [Application compatibility](../../Documentation/compatibility/README.md#net-framework-47) From a516c75d9a7a7baed7090eb762797aa7a34be0e8 Mon Sep 17 00:00:00 2001 From: Connie Yau Date: Tue, 30 May 2017 11:57:12 -0700 Subject: [PATCH 385/872] Compatibility diagnostic wording fixes (#413) * Update breaking changes based on PR feedback * Split breaking change 181 into multiple categories * Fix incorrect xrefs --- Documentation/compatibility/README.md | 6 +++--- ...ider-decryptor-provides-a-reusable-transform.md | 2 +- ...g-the-entitydeploysplit-or-entityclean-tasks.md | 6 +++--- ...rameter_scale-are-now-public-virtual-members.md | 2 +- .../ef-version-must-match-netfx-version.md | 4 ++-- ...-variable-is-now-scoped-within-the-iteration.md | 3 +-- ...twriter-does-not-render-br-element-correctly.md | 2 +- ...d-machinekey_decode-methods-are-now-obsolete.md | 2 +- ...overloads-could-result-in-different-behavior.md | 2 +- .../new-enum-values-in-wpf's-pagerangeselection.md | 2 +- ...e-and-deprecatedattribute-in-winmd-scenarios.md | 4 ++-- .../remove-ssl3-from-the-wcf-transportdefaults.md | 2 +- ...-of-dependencies-with-the-wrong-architecture.md | 2 +- ...ome-workflow-drag-and-drop-apis-are-obsolete.md | 4 ++-- .../sslstream-support-for-tls-alerts.md | 3 ++- .../system_uri-parsing-adheres-to-rfc-3987.md | 14 +++++++------- .../throttle-concurrent-requests-per-session.md | 2 +- .../workflow-3_0-types-are-obsolete.md | 2 +- ...g-code-from-imagesourceconverter_convertfrom.md | 2 +- ...ializer-serializes-fields-differently-in-4_5.md | 3 +-- 20 files changed, 34 insertions(+), 35 deletions(-) diff --git a/Documentation/compatibility/README.md b/Documentation/compatibility/README.md index 8eab80297..a826ac018 100644 --- a/Documentation/compatibility/README.md +++ b/Documentation/compatibility/README.md @@ -126,7 +126,7 @@ Please help us improve the [.NET Framework Application Compatibility documents]( - [Compiler support for type forwarding when multi-targeting mscorlib](compiler-support-for-type-forwarding-when-multi-targeting-mscorlib.md) - [ConcurrentQueue<T>.TryPeek can return an erroneous null via its out parameter](concurrentqueue_trypeek-can-return-an-erroneous-null-via-its-out-parameter.md) - [Different exception handling for ObjectContext.CreateDatabase and DbProviderServices.CreateDatabase methods](different-exception-handling-for-objectcontext_createdatabase-and-dbproviderservices_createdatabase-methods.md) -- [EF version must match NetFX version](ef-version-must-match-netfx-version.md) +- [Entity Framework version must match the .NET Framework version](ef-version-must-match-netfx-version.md) - [EncoderParameter ctor is obsolete](encoderparameter-ctor-is-obsolete.md) - [EntityFramework 6.0 loads very slowly in apps launched from Visual Studio](entityframework-6_0-loads-very-slowly-in-apps-launched-from-visual-studio.md) - [Enumerable.Empty<TResult> always returns cached instance](enumerable_empty-always-returns-cached-instance.md) @@ -168,7 +168,7 @@ Please help us improve the [.NET Framework Application Compatibility documents]( - [Sharing session state with Asp.Net StateServer requires all servers in the web farm to use the same .NET Framework version](sharing-session-state-with-asp_net-stateserver-requires-all-servers-in-the-web-farm-to-use-the-same-_net-framework-version.md) - [SoapFormatter cannot deserialize Hashtable and similar ordered collection objects](soapformatter-cannot-deserialize-hashtable-and-similar-ordered-collection-objects.md) - [Some .NET APIs cause first chance (handled) EntryPointNotFoundExceptions](some-_net-apis-cause-first-chance-(handled)-entrypointnotfoundexceptions.md) -- [Some WorkFlow drag and drop APIs are obsolete](some-workflow-drag-and-drop-apis-are-obsolete.md) +- [Some WorkFlow drag-and-drop APIs are obsolete](some-workflow-drag-and-drop-apis-are-obsolete.md) - [Sql_variant data uses sql_variant collation rather than database collation](sql_variant-data-uses-sql_variant-collation-rather-than-database-collation.md) - [SqlBulkCopy uses destination column encoding for strings](sqlbulkcopy-uses-destination-column-encoding-for-strings.md) - [SqlConnection can no longer connect to SQL Server 1997 or databases using the VIA adapter](sqlconnection-can-no-longer-connect-to-sql-server-1997-or-databases-using-the-via-adapter.md) @@ -199,7 +199,7 @@ Please help us improve the [.NET Framework Application Compatibility documents]( - [XML schema validation is stricter](xml-schema-validation-is-stricter.md) - [XmlSchemaException now sets line positions properly](xmlschemaexception-now-sets-line-positions-properly.md) - [XmlSerializer fails while serializing a type that hides an accessible member with an inaccessible one](xmlserializer-fails-while-serializing-a-type-that-hides-an-accessible-member-with-an-inaccessible-one.md) -- [XmlSerializer serializes fields differently in 4.5](xmlserializer-serializes-fields-differently-in-4_5.md) +- [XmlSerializer serializes fields differently in .NET Framework 4.5](xmlserializer-serializes-fields-differently-in-4_5.md) - [XmlTextReader DTD entity expansion is limited to 10,000,000 characters](xmltextreader-dtd-entity-expansion-is-limited-to-10000000-characters.md) - [XSLT forward compat now works](xslt-forward-compat-now-works.md) - [XSLT style sheet exception message changed](xslt-style-sheet-exception-message-changed.md) diff --git a/Documentation/compatibility/aescryptoserviceprovider-decryptor-provides-a-reusable-transform.md b/Documentation/compatibility/aescryptoserviceprovider-decryptor-provides-a-reusable-transform.md index 5bf60688f..6a1b87bed 100644 --- a/Documentation/compatibility/aescryptoserviceprovider-decryptor-provides-a-reusable-transform.md +++ b/Documentation/compatibility/aescryptoserviceprovider-decryptor-provides-a-reusable-transform.md @@ -23,7 +23,7 @@ after a call to or produces corrupted data. -- [X] Quirked AppContext or config files. Needs to be turned on automatically for some situations. +- [X] Quirked - [ ] Build-time break ### Recommended Action diff --git a/Documentation/compatibility/building-an-entity-framework-edmx-with-visual-studio-2013-can-fail-with-error-msb4062-if-using-the-entitydeploysplit-or-entityclean-tasks.md b/Documentation/compatibility/building-an-entity-framework-edmx-with-visual-studio-2013-can-fail-with-error-msb4062-if-using-the-entitydeploysplit-or-entityclean-tasks.md index 22711f396..3552df72b 100644 --- a/Documentation/compatibility/building-an-entity-framework-edmx-with-visual-studio-2013-can-fail-with-error-msb4062-if-using-the-entitydeploysplit-or-entityclean-tasks.md +++ b/Documentation/compatibility/building-an-entity-framework-edmx-with-visual-studio-2013-can-fail-with-error-msb4062-if-using-the-entitydeploysplit-or-entityclean-tasks.md @@ -13,11 +13,11 @@ Major Available ### Change Description -MSBuild 12.0 tools (included in Visual Studio 2013) changed msbuild file +MSBuild 12.0 tools (included in Visual Studio 2013) changed MSBuild file locations, causing older Entity Framework targets files to be invalid. The result is that `EntityDeploySplit` and `EntityClean` tasks fail because they are unable to find `Microsoft.Data.Entity.Build.Tasks.dll`. Note that this break is -because of a toolset (msbuild/VS) change, not because of a .NET Framework +because of a toolset (MSBuild/VS) change, not because of a .NET Framework change. It will only occur when upgrading developer tools, not when merely upgrading the .NET Framework. @@ -25,7 +25,7 @@ upgrading the .NET Framework. - [x] Build-time break ### Recommended Action -Entity Framework targets files are fixed to work with the new msbuild layout beginning in the .NET Framework 4.6. Upgrading to that version of the Framework will fix this issue. Alternatively, [this](http://stackoverflow.com/a/24249247/131944) workaround can be used to patch the targets files directly. +Entity Framework targets files are fixed to work with the new MSBuild layout beginning in the .NET Framework 4.6. Upgrading to that version of the Framework will fix this issue. Alternatively, [this](http://stackoverflow.com/a/24249247/131944) workaround can be used to patch the targets files directly. ### Affected APIs * Not detectable via API analysis diff --git a/Documentation/compatibility/dbparameter_precision-and-dbparameter_scale-are-now-public-virtual-members.md b/Documentation/compatibility/dbparameter_precision-and-dbparameter_scale-are-now-public-virtual-members.md index 35fbd8dcd..5f47e9114 100644 --- a/Documentation/compatibility/dbparameter_precision-and-dbparameter_scale-are-now-public-virtual-members.md +++ b/Documentation/compatibility/dbparameter_precision-and-dbparameter_scale-are-now-public-virtual-members.md @@ -24,7 +24,7 @@ explicit interface implementations, When re-building an ADO.NET database provider, these differences will require the 'override' keyword to be applied to the Precision and Scale properties. This -is only needed when re-building the components; exisiting binaries will continue +is only needed when re-building the components; existing binaries will continue to work. ### Affected APIs diff --git a/Documentation/compatibility/ef-version-must-match-netfx-version.md b/Documentation/compatibility/ef-version-must-match-netfx-version.md index dc655d28e..3036bce41 100644 --- a/Documentation/compatibility/ef-version-must-match-netfx-version.md +++ b/Documentation/compatibility/ef-version-must-match-netfx-version.md @@ -1,4 +1,4 @@ -## EF version must match NetFX version +## Entity Framework version must match the .NET Framework version ### Scope Major @@ -22,7 +22,7 @@ which annotations to use. - [x] Build-time break ### Recommended Action -Upgrade to EF 5 for .NET 4.5 +Upgrade to Entity Framework 5 for .NET Framework 4.5 ### Affected APIs * Not detectable via API analysis diff --git a/Documentation/compatibility/foreach-iterator-variable-is-now-scoped-within-the-iteration.md b/Documentation/compatibility/foreach-iterator-variable-is-now-scoped-within-the-iteration.md index 999892b1e..5af7159ff 100644 --- a/Documentation/compatibility/foreach-iterator-variable-is-now-scoped-within-the-iteration.md +++ b/Documentation/compatibility/foreach-iterator-variable-is-now-scoped-within-the-iteration.md @@ -10,7 +10,7 @@ Major Available ### Change Description -Beginning with C# 5 (Visual Studio 2012), foreach iterator variables are scoped within the iteration. This can cause breaks if code was previously depending on the variables to not be included in the foreach's closure. The symptom of this change will be that an iterator variable passed to a delagate will be treated as the value it had at the time the delegate was created, rather than the value it had at the time the delegate was invoked. +Beginning with C# 5 (Visual Studio 2012), `foreach` iterator variables are scoped within the iteration. This can cause breaks if code was previously depending on the variables to not be included in the `foreach`'s closure. The symptom of this change is that an iterator variable passed to a delegate is treated as the value it has at the time the delegate is created, rather than the value it has at the time the delegate is invoked. - [ ] Quirked - [x] Build-time break @@ -23,7 +23,6 @@ Ideally, code should be updated to expect the new compiler behavior. If the old ### Categories Core -C# [More information](http://blogs.msdn.com/b/ericlippert/archive/2009/11/12/closing-over-the-loop-variable-considered-harmful.aspx) diff --git a/Documentation/compatibility/htmltextwriter-does-not-render-br-element-correctly.md b/Documentation/compatibility/htmltextwriter-does-not-render-br-element-correctly.md index 54021cd24..c6179fb8d 100644 --- a/Documentation/compatibility/htmltextwriter-does-not-render-br-element-correctly.md +++ b/Documentation/compatibility/htmltextwriter-does-not-render-br-element-correctly.md @@ -25,7 +25,7 @@ with a `
` element will correctly insert only one `
` (instead of two) If an app depended on the extra `
` tag, should be called a second time. Note that this behavior change only affects apps -that are targeting the .NET Framework 4.6, so another option is to target a +that target the .NET Framework 4.6 or later, so another option is to target a previous version of the .NET Framework in order to get the old behavior. ### Affected APIs diff --git a/Documentation/compatibility/machinekey_encode-and-machinekey_decode-methods-are-now-obsolete.md b/Documentation/compatibility/machinekey_encode-and-machinekey_decode-methods-are-now-obsolete.md index 80a3e5642..f87c60ed9 100644 --- a/Documentation/compatibility/machinekey_encode-and-machinekey_decode-methods-are-now-obsolete.md +++ b/Documentation/compatibility/machinekey_encode-and-machinekey_decode-methods-are-now-obsolete.md @@ -23,7 +23,7 @@ The recommended alternatives are and . -Alternatively, the build warnings can be suppressed or they can be avoided by +Alternatively, the build warnings can be suppressed, or they can be avoided by using an older compiler. The APIs are still supported. ### Affected APIs diff --git a/Documentation/compatibility/new-(ambiguous)-dispatcher_invoke-overloads-could-result-in-different-behavior.md b/Documentation/compatibility/new-(ambiguous)-dispatcher_invoke-overloads-could-result-in-different-behavior.md index f95fbe08b..362a1b8f4 100644 --- a/Documentation/compatibility/new-(ambiguous)-dispatcher_invoke-overloads-could-result-in-different-behavior.md +++ b/Documentation/compatibility/new-(ambiguous)-dispatcher_invoke-overloads-could-result-in-different-behavior.md @@ -19,7 +19,7 @@ parameter. If a call to a Dispatcher.Invoke overload with a @System.Delegate parameter is resolved as a call to a Dispatcher.Invoke overload with an @System.Action parameter, the following differences in behavior may occur: -- If an exception occurs, the Filter> and events are not raised. Instead, exceptions are handled by the event. +- If an exception occurs, the and events are not raised. Instead, exceptions are handled by the event. - Calls to some members, such as , block until the operation has completed. - [ ] Quirked diff --git a/Documentation/compatibility/new-enum-values-in-wpf's-pagerangeselection.md b/Documentation/compatibility/new-enum-values-in-wpf's-pagerangeselection.md index c1d3c4057..be1a727f5 100644 --- a/Documentation/compatibility/new-enum-values-in-wpf's-pagerangeselection.md +++ b/Documentation/compatibility/new-enum-values-in-wpf's-pagerangeselection.md @@ -13,7 +13,7 @@ Available Two new members ( and -) +) have been added to the enum. diff --git a/Documentation/compatibility/obsoleteattribute-exports-as-both-obsoleteattribute-and-deprecatedattribute-in-winmd-scenarios.md b/Documentation/compatibility/obsoleteattribute-exports-as-both-obsoleteattribute-and-deprecatedattribute-in-winmd-scenarios.md index cfdb697ed..e246d9573 100644 --- a/Documentation/compatibility/obsoleteattribute-exports-as-both-obsoleteattribute-and-deprecatedattribute-in-winmd-scenarios.md +++ b/Documentation/compatibility/obsoleteattribute-exports-as-both-obsoleteattribute-and-deprecatedattribute-in-winmd-scenarios.md @@ -14,7 +14,7 @@ Available When you create a Windows Metadata library (.winmd file), the attribute is exported as both and -Windows.Foundation.DeprecatedAttribute. +[Windows.Foundation.DeprecatedAttribute](https://docs.microsoft.com/en-us/uwp/api/windows.foundation.metadata.deprecatedattribute). - [ ] Quirked - [x] Build-time break @@ -27,7 +27,7 @@ warnings when consuming that code from C++/CX or JavaScript. We do not recommend applying both and -Windows.Foundation.DeprecatedAttribute to code in managed assemblies; it may +[Windows.Foundation.DeprecatedAttribute](https://docs.microsoft.com/en-us/uwp/api/windows.foundation.metadata.deprecatedattribute) to code in managed assemblies; it may result in build warnings. ### Affected APIs diff --git a/Documentation/compatibility/remove-ssl3-from-the-wcf-transportdefaults.md b/Documentation/compatibility/remove-ssl3-from-the-wcf-transportdefaults.md index 136780100..c3834a724 100644 --- a/Documentation/compatibility/remove-ssl3-from-the-wcf-transportdefaults.md +++ b/Documentation/compatibility/remove-ssl3-from-the-wcf-transportdefaults.md @@ -25,7 +25,7 @@ should be able to negotiate a connection using at least TLS1.0. If Ssl3 is required, use one of the following configuration mechanisms to add Ssl3 to the list of negotiated protocols. -* +* * * [\ section of \](https://docs.microsoft.com/en-us/dotnet/articles/framework/configure-apps/file-schema/wcf/transport-of-nettcpbinding) * [\ section of \](https://docs.microsoft.com/en-us/dotnet/articles/framework/configure-apps/file-schema/wcf/sslstreamsecurity) diff --git a/Documentation/compatibility/resolveassemblyreference-task-now-warns-of-dependencies-with-the-wrong-architecture.md b/Documentation/compatibility/resolveassemblyreference-task-now-warns-of-dependencies-with-the-wrong-architecture.md index 1c8bf61e9..212cc9faa 100644 --- a/Documentation/compatibility/resolveassemblyreference-task-now-warns-of-dependencies-with-the-wrong-architecture.md +++ b/Documentation/compatibility/resolveassemblyreference-task-now-warns-of-dependencies-with-the-wrong-architecture.md @@ -10,7 +10,7 @@ Minor Planned ### Change Description -The task emits a warning, MSB3270, which indicates that a reference or any of its dependencies does not match the app's architecture. For example, this occurs if an app that was compiled with the anycpu option includes an x86 reference. Such a scenario could result in an app failure at run time (in this case, if the app is deployed as an x64 process). +The task emits a warning, MSB3270, which indicates that a reference or any of its dependencies does not match the app's architecture. For example, this occurs if an app that was compiled with the `AnyCPU` option includes an x86 reference. Such a scenario could result in an app failure at run time (in this case, if the app is deployed as an x64 process). - [ ] Quirked - [x] Build-time break diff --git a/Documentation/compatibility/some-workflow-drag-and-drop-apis-are-obsolete.md b/Documentation/compatibility/some-workflow-drag-and-drop-apis-are-obsolete.md index 4883f5aab..8ef567ba1 100644 --- a/Documentation/compatibility/some-workflow-drag-and-drop-apis-are-obsolete.md +++ b/Documentation/compatibility/some-workflow-drag-and-drop-apis-are-obsolete.md @@ -1,4 +1,4 @@ -## Some WorkFlow drag and drop APIs are obsolete +## Some WorkFlow drag-and-drop APIs are obsolete ### Scope Minor @@ -10,7 +10,7 @@ Minor Available ### Change Description -This WorkFlow Drag/Drop API is obsolete and will cause compiler warnings if the app is rebuilt against 4.5. +This WorkFlow drag-and-drop API is obsolete and will cause compiler warnings if the app is rebuilt against 4.5. - [ ] Quirked - [x] Build-time break diff --git a/Documentation/compatibility/sslstream-support-for-tls-alerts.md b/Documentation/compatibility/sslstream-support-for-tls-alerts.md index 5268786fa..b311132ec 100644 --- a/Documentation/compatibility/sslstream-support-for-tls-alerts.md +++ b/Documentation/compatibility/sslstream-support-for-tls-alerts.md @@ -78,7 +78,8 @@ for .NET 4.6 and above applications running on .NET 4.7 or higher framework. * `N:System.Net.Http` ### Category -Networking, Security +Networking +Security + + From cab50c09a852e76effee51392d5064986a2d2b12 Mon Sep 17 00:00:00 2001 From: Dan Jagnow Date: Tue, 6 Jun 2017 21:18:48 -0500 Subject: [PATCH 388/872] Added Polly to .NET Open Source Developer Projects (#418) Added Polly to the Tools group in the .NET Open Source Developer Projects listing. Polly is a .NET resilience and transient-fault-handling library that allows developers to express policies such as Retry, Circuit Breaker, Timeout, Bulkhead Isolation, and Fallback in a fluent and thread-safe manner. --- dotnet-developer-projects.md | 1 + 1 file changed, 1 insertion(+) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index f344d8118..a0accbf5c 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -244,6 +244,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [OmniDB](https://github.com/OmniDB/OmniDB) - Web tool for database management and conversion. [Site](http://omnidb.com.br) * [Outcomes.Net](https://github.com/kinetiq/Ether.Outcomes/) - Fluent wrapper that eliminates plumbing code around failure-prone functions. * [Paket](https://github.com/fsprojects/Paket) - Dependency manager for .NET and Mono projects, which is designed to work well with NuGet packages and also enables referencing files directly from GitHub repositories. + * [Polly](https://github.com/App-vNext/Polly) - A resilience and transient-fault-handling library that allows developers to express policies such as Retry, Circuit Breaker, Timeout, Bulkhead Isolation, and Fallback in a fluent and thread-safe manner. * [Protobuf-net](https://code.google.com/p/protobuf-net/) - A .NET implementation of protobuf, allowing you to serialize your .NET objects efficiently and easily. * [Quick Diagram Tool for C#](https://github.com/realvizu/QuickDiagram) - Code visualization tool for C#. * [scriptcs](https://github.com/scriptcs/scriptcs) - scriptcs makes it easy to write and execute C# with a simple text editor. From 21066a1ed9c4613e8d7417148266c881f4e7bcaa Mon Sep 17 00:00:00 2001 From: Rich Lander Date: Tue, 6 Jun 2017 22:51:24 -0700 Subject: [PATCH 389/872] Move 3.5 doc to docs.ms.com --- data/platforms.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data/platforms.json b/data/platforms.json index 2dd436ed2..f8dc73cac 100644 --- a/data/platforms.json +++ b/data/platforms.json @@ -298,7 +298,7 @@ }, { "name": ".NET Framework 3.5 SP1 (Windows 8+)", - "link": "http://msdn.microsoft.com/library/hh506443.aspx" + "link": "https://docs.microsoft.com/dotnet/framework/install/dotnet-35-windows-10" } ], "tools": [] From 60edf01cc714169e04fa74e71eb4312107c7612b Mon Sep 17 00:00:00 2001 From: Ron Petrusha Date: Fri, 9 Jun 2017 17:17:40 -0700 Subject: [PATCH 390/872] Added 2 WCF app compat changes. (#419) * Added 2 WCF app compat changes. * Updated readme.md --- Documentation/compatibility/README.md | 11 ++- ...-current-returns-null-in-a-using-clause.md | 77 +++++++++++++++++++ ...k-results-when-using-reentrant-services.md | 54 +++++++++++++ 3 files changed, 138 insertions(+), 4 deletions(-) create mode 100644 Documentation/compatibility/operationcontext-current-returns-null-in-a-using-clause.md create mode 100644 Documentation/compatibility/wcf-deadlock-results-when-using-reentrant-services.md diff --git a/Documentation/compatibility/README.md b/Documentation/compatibility/README.md index a826ac018..40a62753e 100644 --- a/Documentation/compatibility/README.md +++ b/Documentation/compatibility/README.md @@ -15,6 +15,7 @@ Please help us improve the [.NET Framework Application Compatibility documents]( ## .NET Framework 4.7 - [CspParameters.ParentWindowHandle now expects HWND value](cspparameters_parentwindowhandle-now-expects-hwnd-value.md) +- [Default value of ServicePointManager.SecurityProtocol is SecurityProtocolType.System.Default](servicepointmanager.securityprotocol-defaults-to-securityprotocoltype.systemdefault.md) - [NullReferenceException in exception handling code from ImageSourceConverter.ConvertFrom](wpf-nullreferenceexception-in-exception-handling-code-from-imagesourceconverter_convertfrom.md) - [Serialization of control characters with DataContractJsonSerializer is now compatible with ECMAScript V6 and V8](serialization-of-control-characters-with-datacontractjsonserializer-is-now-compatible-with-ecmascript-v6-and-v8.md) - [SslStream supports TLS Alerts](sslstream-support-for-tls-alerts.md) @@ -35,10 +36,12 @@ Please help us improve the [.NET Framework Application Compatibility documents]( - [Changing the IsEnabled property of the parent of a TextBlock control affects any child controls](changing-the-isenabled-property-of-the-parent-of-a-textblock-control-affects-any-child-controls.md) - [Connection pool blocking period for Azure SQL databases is removed](connection-pool-blocking-period-for-azure-sql-databases-is-removed.md) - [DataGridCellsPanel.BringIndexIntoView throws ArgumentOutOfRangeException](datagridcellspanel_bringintoview-throws-argumentoutofrangeexception.md) +- [Deadlock may result when using Reentrant services](wcf-deadlock-results-when-using-reentrant-services.md) - [Horizontal scrolling and virtualization](horizontal-scrolling-and-virtualization.md) - [HttpRuntime.AppDomainAppPath Throws a NullReferenceException](asp-net-httpruntime-appdomainapppath-throws-nullreferenceexception.md) - [Incorrect implementation of MemberDescriptor.Equals](incorrect-implementation-of-memberdescriptor_equals.md) - [Long path support](long-path-support.md) +- [OperationContext.Current may return null when called in a using clause](operationcontext-current-returns-null-in-a-using-clause.md) - [Path colon checks are stricter](path-colon-checks-are-stricter.md) - [Remove Ssl3 from the WCF TransportDefaults](remove-ssl3-from-the-wcf-transportdefaults.md) - [RibbonGroup background is set to transparent in localized builds](ribbongroup-background-is-set-to-transparent-in-localized-builds.md) @@ -71,12 +74,12 @@ Please help us improve the [.NET Framework Application Compatibility documents]( - [Exception message has changed for failed DataContract serialization in case of an unknown type](exception-message-has-changed-for-failed-datacontract-serialization-in-case-of-an-unknown-type.md) - [HtmlTextWriter does not render `
` element correctly](htmltextwriter-does-not-render-br-element-correctly.md) - [IL ret not allowed in a try region](il-ret-not-allowed-in-a-try-region.md) -- [Only Tls 1.0, 1.1 and 1.2 protocols supported in System.Net.ServicePointManager and System.Net.Security.SslStream ](only-tls-1_0-1_1-and-1_2-protocols-supported-in-system_net_servicepointmanager-and-system_net_security_sslstream.md) +- [Only Tls 1.0, 1.1 and 1.2 protocols supported in System.Net.ServicePointManager and System.Net.Security.SslStream](only-tls-1_0-1_1-and-1_2-protocols-supported-in-system_net_servicepointmanager-and-system_net_security_sslstream.md) - [Persian calendar now uses the Hijri solar algorithm](persian-calendar-now-uses-the-hijri-solar-algorithm.md) - [Reflection objects can no longer be passed from managed code to out-of-process DCOM clients](reflection-objects-can-no-longer-be-passed-from-managed-code-to-out-of-process-dcom-clients.md) - [TargetFrameworkName for default app domain no longer defaults to null if not set](targetframeworkname-for-default-app-domain-no-longer-defaults-to-null-if-not-set.md) - [The .NET Framework 4.6 does not use a 4.5.x.x version when registering itself in the registry](the-_net-framework-4_6-does-not-use-a-4_5_x_x-version-when-registering-itself-in-the-registry.md) -- [WPF layout rounding of margins has changed ](wpf-layout-rounding-of-margins-has-changed.md) +- [WPF layout rounding of margins has changed](wpf-layout-rounding-of-margins-has-changed.md) - [WPF spell checking in text-enabled controls will not work in Windows 10 for languages not in the OS's input language list](wpf-spell-checking-in-text-enabled-controls-will-not-work-in-windows-10-for-languages-not-in-the-input-language-list.md) - [WPF windows are rendered without clipping when extending outside a single monitor](wpf-windows-are-rendered-without-clipping-when-extending-outside-a-single-monitor.md) - [X509Certificate2.ToString(bool) does not throw now when .NET cannot handle the certificate](x509certificate2_tostring(bool)-does-not-throw-now-when-_net-cannot-handle-the-certificate.md) @@ -126,8 +129,8 @@ Please help us improve the [.NET Framework Application Compatibility documents]( - [Compiler support for type forwarding when multi-targeting mscorlib](compiler-support-for-type-forwarding-when-multi-targeting-mscorlib.md) - [ConcurrentQueue<T>.TryPeek can return an erroneous null via its out parameter](concurrentqueue_trypeek-can-return-an-erroneous-null-via-its-out-parameter.md) - [Different exception handling for ObjectContext.CreateDatabase and DbProviderServices.CreateDatabase methods](different-exception-handling-for-objectcontext_createdatabase-and-dbproviderservices_createdatabase-methods.md) -- [Entity Framework version must match the .NET Framework version](ef-version-must-match-netfx-version.md) - [EncoderParameter ctor is obsolete](encoderparameter-ctor-is-obsolete.md) +- [Entity Framework version must match the .NET Framework version](ef-version-must-match-netfx-version.md) - [EntityFramework 6.0 loads very slowly in apps launched from Visual Studio](entityframework-6_0-loads-very-slowly-in-apps-launched-from-visual-studio.md) - [Enumerable.Empty<TResult> always returns cached instance](enumerable_empty-always-returns-cached-instance.md) - [Error codes for maxRequestLength or maxReceivedMessageSize are different](error-codes-for-maxrequestlength-or-maxreceivedmessagesize-are-different.md) @@ -177,7 +180,7 @@ Please help us improve the [.NET Framework Application Compatibility documents]( - [System.Net.PeerToPeer.Collaboration unavailable on Windows 8](system_net_peertopeer_collaboration-unavailable-on-windows-8.md) - [System.ServiceModel.Web.WebServiceHost object no longer adds a default endpoint](system_servicemodel_web_webservicehost-object-no-longer-adds-a-default-endpoint.md) - [System.Threading.Tasks.Task no longer throw ObjectDisposedException after object is disposed](system_threading_tasks_task-no-longer-throw-objectdisposedexception-after-object-is-disposed.md) -- [System.Uri escaping now supports RFC 3986 (http://tools.ietf.org/html/rfc3986)](system_uri-escaping-now-supports-rfc-3986.md) +- [System.Uri escaping now supports RFC 3986](system_uri-escaping-now-supports-rfc-3986.md) - [System.Uri parsing adheres to RFC 3987](system_uri-parsing-adheres-to-rfc-3987.md) - [System.Uri.IsWellFormedUriString method returns false for relative URIs with a colon char in first segment](system_uri_iswellformeduristring-method-returns-false-for-relative-uris-with-a-colon-char-in-first-segment.md) - [The Replace method in OData URLs is disabled by default](the-replace-method-in-odata-urls-is-disabled-by-default.md) diff --git a/Documentation/compatibility/operationcontext-current-returns-null-in-a-using-clause.md b/Documentation/compatibility/operationcontext-current-returns-null-in-a-using-clause.md new file mode 100644 index 000000000..9e028c8a3 --- /dev/null +++ b/Documentation/compatibility/operationcontext-current-returns-null-in-a-using-clause.md @@ -0,0 +1,77 @@ +## OperationContext.Current may return null when called in a using clause + +### Scope +Edge + +### Version Introduced +4.6.2 + +## Version Reverted + +### Source Analyzer Status +Investigating + +### Change Description + + may return `null` and a may result if all of the following conditions are true: + +- You retrieve the value of the property in a method that returns a or . + +- You instantiate the object in a `using` clause. + +- You retrieve the value of the property within the `using statement`. For example: + + ```csharp + using (new OperationContextScope(OperationContext.Current)) + { + OperationContext context = OperationContext.Current; // OperationContext.Current is null. + // ... + } + ``` + +- [X] Quirked +- [ ] Build-time break + +### Recommended Action + +To address this issue, you can do the following: + +- Modify your code as follows to instantiate a new non-`null` object: + + ```csharp + OperationContext ocx = OperationContext.Current; + using (new OperationContextScope(OperationContext.Current)) + { +    OperationContext.Current = new OperationContext(ocx.Channel); +    // ... + } + ``` + +- Install the latest update to the .NET Framework 4.6.2, or upgrade to a later version of the .NET Framework. This disables the flow of the in and restores the behavior of WCF applications in the .NET Framework 4.6.1 and earlier versions. This behavior is configurable; it is equivalent to adding the following app setting to your configuration file: + + ```xml + + + + ``` + + If this change is undesirable and your application depends on execution context flowing between operation contexts, you can enable its flow as follows: + + ```xml + + + + ``` + +### Affected APIs +- `P:System.ServiceModel.OperationContext.Current` + +### Category +Windows Communication Foundation (WCF) + + + + diff --git a/Documentation/compatibility/wcf-deadlock-results-when-using-reentrant-services.md b/Documentation/compatibility/wcf-deadlock-results-when-using-reentrant-services.md new file mode 100644 index 000000000..e5ef06b33 --- /dev/null +++ b/Documentation/compatibility/wcf-deadlock-results-when-using-reentrant-services.md @@ -0,0 +1,54 @@ +## Deadlock may result when using Reentrant services + +### Scope +Minor + +### Version Introduced +4.6.2 + +### Source Analyzer Status +Investigating + +### Change Description + +A deadlock may result in a Reentrant service, which restricts instances of the service to one thread of execution at a time. Services prone to encounter this problem will have the following in their code: + +```csharp +[ServiceBehavior(ConcurrencyMode = ConcurrencyMode.Reentrant)] +``` + +- [X] Quirked +- [ ] Build-time break + +### Recommended Action + +To address this issue, you can do the following: + +- Set the service's concurrency mode to or . For example: + + ```csharp + [ServiceBehavior(ConcurrencyMode = ConcurrencyMode.Single)] + ``` + +- Install the latest update to the .NET Framework 4.6.2, or upgrade to a later version of the .NET Framework. This disables the flow of the in . This behavior is configurable; it is equivalent to adding the following app setting to your configuration file: + + ```xml + + + + + The value of `Switch.System.ServiceModel.DisableOperationContextAsyncFlow` should never be set to `false` for Rentrant services. + +### Affected APIs +- `T:System.ServiceModel.ServiceBehaviorAttribute` +- `F:System.ServiceModel.ConcurrencyMode.Reentrant` +- +### Category +Windows Communication Foundation (WCF) + + + + From a93d41be36b4d9c77f61751ba2e678d888d3c023 Mon Sep 17 00:00:00 2001 From: Connie Yau Date: Wed, 14 Jun 2017 11:38:24 -0700 Subject: [PATCH 391/872] Change Version Reverted to correct header level --- ...-current-returns-null-in-a-using-clause.md | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/Documentation/compatibility/operationcontext-current-returns-null-in-a-using-clause.md b/Documentation/compatibility/operationcontext-current-returns-null-in-a-using-clause.md index 9e028c8a3..1bdbe164e 100644 --- a/Documentation/compatibility/operationcontext-current-returns-null-in-a-using-clause.md +++ b/Documentation/compatibility/operationcontext-current-returns-null-in-a-using-clause.md @@ -6,7 +6,7 @@ Edge ### Version Introduced 4.6.2 -## Version Reverted +### Version Reverted ### Source Analyzer Status Investigating @@ -16,28 +16,28 @@ Investigating may return `null` and a may result if all of the following conditions are true: - You retrieve the value of the property in a method that returns a or . - + - You instantiate the object in a `using` clause. - You retrieve the value of the property within the `using statement`. For example: - + ```csharp using (new OperationContextScope(OperationContext.Current)) { OperationContext context = OperationContext.Current; // OperationContext.Current is null. // ... } - ``` + ``` -- [X] Quirked -- [ ] Build-time break +- [X] Quirked +- [ ] Build-time break ### Recommended Action To address this issue, you can do the following: - Modify your code as follows to instantiate a new non-`null` object: - + ```csharp OperationContext ocx = OperationContext.Current; using (new OperationContextScope(OperationContext.Current)) @@ -48,11 +48,11 @@ To address this issue, you can do the following: ``` - Install the latest update to the .NET Framework 4.6.2, or upgrade to a later version of the .NET Framework. This disables the flow of the in and restores the behavior of WCF applications in the .NET Framework 4.6.1 and earlier versions. This behavior is configurable; it is equivalent to adding the following app setting to your configuration file: - + ```xml - +
``` If this change is undesirable and your application depends on execution context flowing between operation contexts, you can enable its flow as follows: @@ -60,7 +60,7 @@ To address this issue, you can do the following: ```xml - +
``` ### Affected APIs From 15d96acbe695a8ccbbdaec4dcd7e6aac2e5756d2 Mon Sep 17 00:00:00 2001 From: Ron Petrusha Date: Thu, 15 Jun 2017 15:14:19 -0700 Subject: [PATCH 392/872] Changed change type from retargeting to runtime --- .../compatibility/wpf-printing-stack-update.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/Documentation/compatibility/wpf-printing-stack-update.md b/Documentation/compatibility/wpf-printing-stack-update.md index d655a9754..54265d534 100644 --- a/Documentation/compatibility/wpf-printing-stack-update.md +++ b/Documentation/compatibility/wpf-printing-stack-update.md @@ -13,18 +13,18 @@ NotPlanned WPF's Printing APIs using now call Window's Print Document Package API in favor of the now deprecated XPS -Print API, neither users nor developers should see any changes in behaviour or -API usage, the change was made with serviceability in mind. The new printing -stack is by default enabled when running in Windows 10 Creators Update. The old +Print API. the change was made with serviceability in mind; neither users nor developers +should see any changes in behaviour or API usage, The new printing +stack is enabled by default when running in Windows 10 Creators Update. The old printing stack will still continue to work just as before in older Windows versions. -- [x] Quirked -- [ ] Build-time break +- [ ] Quirked +- [X] Build-time break ### Recommended Action -If the user wants to use the old stack in Windows 10 Creators Update, the user should set registry key REG_DWORD `HKEY_CURRENT_USER\Software\Microsoft\.NETFramework\Windows Presentation Foundation\Printing\UseXpsOMPrinting = 1` +To use the old stack in Windows 10 Creators Update, set the `UseXpsOMPrinting` REG_DWORD value of the `HKEY_CURRENT_USER\Software\Microsoft\.NETFramework\Windows Presentation Foundation\Printing` registry key to `1`. ### Affected APIs Not detectable via API analysis From 94a144482c11bd7d3e82fce1f36790f83805827c Mon Sep 17 00:00:00 2001 From: Ron Petrusha Date: Thu, 15 Jun 2017 15:16:20 -0700 Subject: [PATCH 393/872] Corrected casing. --- Documentation/compatibility/wpf-printing-stack-update.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Documentation/compatibility/wpf-printing-stack-update.md b/Documentation/compatibility/wpf-printing-stack-update.md index 54265d534..51211a2c7 100644 --- a/Documentation/compatibility/wpf-printing-stack-update.md +++ b/Documentation/compatibility/wpf-printing-stack-update.md @@ -13,8 +13,8 @@ NotPlanned WPF's Printing APIs using now call Window's Print Document Package API in favor of the now deprecated XPS -Print API. the change was made with serviceability in mind; neither users nor developers -should see any changes in behaviour or API usage, The new printing +Print API. The change was made with serviceability in mind; neither users nor developers +should see any changes in behavior or API usage. The new printing stack is enabled by default when running in Windows 10 Creators Update. The old printing stack will still continue to work just as before in older Windows versions. From f46ce487fbc2ab875a8b3379eed85ce1a7a66384 Mon Sep 17 00:00:00 2001 From: Ron Petrusha Date: Fri, 16 Jun 2017 08:27:43 -0700 Subject: [PATCH 394/872] Removed build-time break check --- Documentation/compatibility/wpf-printing-stack-update.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Documentation/compatibility/wpf-printing-stack-update.md b/Documentation/compatibility/wpf-printing-stack-update.md index 51211a2c7..f0f03f848 100644 --- a/Documentation/compatibility/wpf-printing-stack-update.md +++ b/Documentation/compatibility/wpf-printing-stack-update.md @@ -20,7 +20,7 @@ printing stack will still continue to work just as before in older Windows versions. - [ ] Quirked -- [X] Build-time break +- [ ] Build-time break ### Recommended Action From 342f44767bdd9ac05f0985e1b23a03f70804c271 Mon Sep 17 00:00:00 2001 From: Ron Petrusha Date: Sun, 25 Jun 2017 17:03:42 -0700 Subject: [PATCH 395/872] RYUJit compiler in 4.6 (#426) * RYUJit compiler in 4.6 * Changed breaking change ID --- Documentation/compatibility/README.md | 1 + .../compatibility/new-64-bit-jit-compiler.md | 63 +++++++++++++++++++ 2 files changed, 64 insertions(+) create mode 100644 Documentation/compatibility/new-64-bit-jit-compiler.md diff --git a/Documentation/compatibility/README.md b/Documentation/compatibility/README.md index 40a62753e..8335c9ba8 100644 --- a/Documentation/compatibility/README.md +++ b/Documentation/compatibility/README.md @@ -74,6 +74,7 @@ Please help us improve the [.NET Framework Application Compatibility documents]( - [Exception message has changed for failed DataContract serialization in case of an unknown type](exception-message-has-changed-for-failed-datacontract-serialization-in-case-of-an-unknown-type.md) - [HtmlTextWriter does not render `
` element correctly](htmltextwriter-does-not-render-br-element-correctly.md) - [IL ret not allowed in a try region](il-ret-not-allowed-in-a-try-region.md) +- [New 64-bit JIT compiler in the .NET Framework 4.6](new-64-bit-jit-compiler.md) - [Only Tls 1.0, 1.1 and 1.2 protocols supported in System.Net.ServicePointManager and System.Net.Security.SslStream](only-tls-1_0-1_1-and-1_2-protocols-supported-in-system_net_servicepointmanager-and-system_net_security_sslstream.md) - [Persian calendar now uses the Hijri solar algorithm](persian-calendar-now-uses-the-hijri-solar-algorithm.md) - [Reflection objects can no longer be passed from managed code to out-of-process DCOM clients](reflection-objects-can-no-longer-be-passed-from-managed-code-to-out-of-process-dcom-clients.md) diff --git a/Documentation/compatibility/new-64-bit-jit-compiler.md b/Documentation/compatibility/new-64-bit-jit-compiler.md new file mode 100644 index 000000000..6acd66b93 --- /dev/null +++ b/Documentation/compatibility/new-64-bit-jit-compiler.md @@ -0,0 +1,63 @@ +## New 64-bit JIT compiler in the .NET Framework 4.6 + +### Scope +Edge + +### Version Introduced +4.6 + +### Source Analyzer Status +NotPlanned + +### Change Description +Starting with the .NET Framework 4.6, a new 64-bit JIT compiler is used for just-in-time compilation. In some cases, an unexpected exception is thrown or a different behavior is observed than if an app is run using the 32-bit compiler or the older 64-bit JIT compiler. This change does not affect the 32-bit JIT compiler. + +The known differences include the following: + +- Under certain conditions, an unboxing operation may throw a in Release builds with optimization turned on. +- In some cases, execution of production code in a large method body may throw a . +- Under certain conditions, structures passed to a method are treated as reference types rather than as value types in Release builds. One of the manifestations of this issue is that the individual items in a collection appear in an unexpected order. +- Under certain conditions, the comparison of values with their high bit set is incorrect if optimization is enabled. +- Under certain conditions, particularly when initializing array values, memory initialization by the IL instruction may initialize memory with an incorrect value. This can result either in an unhandled exception or incorrect output. +- Under certain rare conditions, a conditional bit test can return the incorrect value or throw an exception if compiler optimizations are enabled. +- Under certain conditions, if an `if` statement is used to test for a condition before entering a `try` block and in the exit from the `try` block, and the same condition is evaluated in the `catch` or `finally` block, the new 64-bit JIT compiler removes the `if` condition from the `catch` or `finally` block when it optimizes code. As a result, code inside the `if` statement in the `catch` or `finally` block is executed unconditionally. + + +- [X] Quirked +- [ ] Build-time break + +### Recommended Action +**Mitigation of known issues** +If you encounter the issues listed above, you can address them by doing any of the following: + +- Upgrade to the .NET Framework 4.6.2. The new 64-bit compiler included with the .NET Framework 4.6.2 addresses each of these known issues. +- Ensure that your version of Windows is up to date by running Windows Update. Service updates to the .NET Framework 4.6 and 4.6.1 address each of these issues except the in an unboxing operation. +- Compile with the older 64-bit JIT compiler. See the **Mitigation of other issues** section for more information on how to do this. + +**Mitigation of other issues** +If you encounter any other difference in behavior between code compiled with the older 64-bit compiler and the new 64-bit JIT compiler, or between the debug and release versions of your app that are both compiled with the new 64-bit JIT compiler, you can do the following to compile your app with the older 64-bit JIT compiler: + +- On a per-application basis, you can add the [](https://docs.microsoft.com/dotnet/framework/configure-apps/file-schema/runtime/uselegacyjit-element) element to your application's configuration file. The following disables compilation with the new 64-bit JIT compiler and instead uses the legacy 64-bit JIT compiler. + + ```xml + + + + + + + ``` + +- On a per-user basis, you can add a `REG_DWORD` value named `useLegacyJit` to the `HKEY_CURRENT_USER\SOFTWARE\Microsoft\.NETFramework` key of the registry. A value of 1 enables the legacy 64-bit JIT compiler; a value of 0 disables it and enables the new 64-bit JIT compiler. +- On a per-machine basis, you can add a `REG_DWORD` value named `useLegacyJit` to the `HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework` key of the registry. A value of `1` enables the legacy 64-bit JIT compiler; a value of `0` disables it and enables the new 64-bit JIT compiler. + +You can also let us know about the problem by reporting a bug on [Microsoft Connect](https://connect.microsoft.com/VisualStudio). + +### Affected APIs +* Not detectable via API analysis + +### Category +JIT + + + From 8b63cdf3d06c9678420020b3e8518efa7083b4fb Mon Sep 17 00:00:00 2001 From: Ron Petrusha Date: Fri, 14 Jul 2017 09:16:23 -0700 Subject: [PATCH 396/872] Compatibility issues missing from GitHub for 4.6 and 4.6.1 (#438) * Issues on MSDN not in GitHub * New topic, plus added line break * Changes for 4.6 --- Documentation/compatibility/README.md | 7 ++ ...n-path-separator-character-in-zip-files.md | 49 ++++++++++++++ ...d-string-isnullorempty-compiler-warning.md | 29 +++++++++ ...vent-names-cannot-differ-only-by-suffix.md | 36 +++++++++++ .../compatibility/new-64-bit-jit-compiler.md | 2 +- ...-changes-in-net-framework-4-6-and-later.md | 51 +++++++++++++++ ...e-connection-that-resolves-to-localhost.md | 33 ++++++++++ ...rity-and-md5-certificate-authentication.md | 64 +++++++++++++++++++ ...essfully-converts-icons-with-png-frames.md | 46 +++++++++++++ 9 files changed, 316 insertions(+), 1 deletion(-) create mode 100644 Documentation/compatibility/change-in-path-separator-character-in-zip-files.md create mode 100644 Documentation/compatibility/code-contracts-and-string-isnullorempty-compiler-warning.md create mode 100644 Documentation/compatibility/etw-event-names-cannot-differ-only-by-suffix.md create mode 100644 Documentation/compatibility/product-versioning-changes-in-net-framework-4-6-and-later.md create mode 100644 Documentation/compatibility/sql-server-database-connection-that-resolves-to-localhost.md create mode 100644 Documentation/compatibility/wcf-services-using-nettcp-with-ssl-security-and-md5-certificate-authentication.md create mode 100644 Documentation/compatibility/windows-forms-icon-tobitmap-method-successfully-converts-icons-with-png-frames.md diff --git a/Documentation/compatibility/README.md b/Documentation/compatibility/README.md index 8335c9ba8..70842603d 100644 --- a/Documentation/compatibility/README.md +++ b/Documentation/compatibility/README.md @@ -55,6 +55,8 @@ Please help us improve the [.NET Framework Application Compatibility documents]( - [Application.FilterMessage no longer throws for re-entrant implementations of IMessageFilter.PreFilterMessage](application_filtermessage-no-longer-throws-for-re-entrant-implementations-of-imessagefilter_prefiltermessage.md) - [Calls to System.Windows.Input.PenContext.Disable on touch-enabled systems may throw an ArgumentException](wpf-pencontext-disable-method-calls-on-touch-enabled-systems-may-throw-argumentexception.md) +- [Change in path separator character in FullName property of ZipArchiveEntry objects](change-in-path-separator-character-in-zip-files.md) +- [Contract.Invariant or Contract.Requires do not consider String.IsNullOrEmpty to be pure](code-contracts-and-string-isnullorempty-compiler-warning.md) - [Item-scrolling a flat list with items of different pixel-height](item-scrolling-a-flat-list-with-items-of-different-pixel-height.md) - [ObjectDisposedException thrown by WPF spellchecker](objectdisposedexception-thrown-by-wpf-spellchecker.md) - [WCF binding with the TransportWithMessageCredential security mode](wcf-binding-with-the-transportwithmessagecredential-security-mode.md) @@ -64,6 +66,7 @@ Please help us improve the [.NET Framework Application Compatibility documents]( ## .NET Framework 4.6 - [AppDomainSetup.DynamicBase is no longer randomized by UseRandomizedStringHashAlgorithm](appdomainsetup_dynamicbase-is-no-longer-randomized-by-userandomizedstringhashalgorithm.md) +- [Attempting a TCP/IP connection to a SQL Server database that resolves to `localhost` fails](sql-server-database-connection-that-resolves-to-localhost.md) - [Calling Attribute.GetCustomAttributes on an indexer property no longer throws AmbiguousMatchException if the ambiguity can be resolved by index's type](calling-attribute_getcustomattributes-on-an-indexer-property-no-longer-throws-ambiguousmatchexception.md) - [Calling CreateDefaultAuthorizationContext with a null argument has changed](calling-createdefaultauthorizationcontext-with-a-null-argument-has-changed.md) - [ClickOnce supports SHA-256 on 4.0-targeted apps](clickonce-supports-sha-256-on-4_0-targeted-apps.md) @@ -71,15 +74,19 @@ Please help us improve the [.NET Framework Application Compatibility documents]( - [ContentDisposition DateTimes returns slightly different string](contentdisposition-datetimes-returns-slightly-different-string.md) - [CurrentCulture and CurrentUICulture flow across tasks](currentculture-flows-across-tasks.md) - [CurrentCulture is not preserved across WPF Dispatcher operations](currentculture-not-preserved-across-wpf-dispatcher-operations.md) +- [ETW event names cannot differ only by a "Start" or "Stop" suffix](etw-event-names-cannot-differ-only-by-suffix.md) - [Exception message has changed for failed DataContract serialization in case of an unknown type](exception-message-has-changed-for-failed-datacontract-serialization-in-case-of-an-unknown-type.md) - [HtmlTextWriter does not render `
` element correctly](htmltextwriter-does-not-render-br-element-correctly.md) +- [Icon.ToBitmap successfully converts icons with PNG frames into Bitmap objects](windows-forms-icon-tobitmap-method-successfully-converts-icons-with-png-frames.md) - [IL ret not allowed in a try region](il-ret-not-allowed-in-a-try-region.md) - [New 64-bit JIT compiler in the .NET Framework 4.6](new-64-bit-jit-compiler.md) - [Only Tls 1.0, 1.1 and 1.2 protocols supported in System.Net.ServicePointManager and System.Net.Security.SslStream](only-tls-1_0-1_1-and-1_2-protocols-supported-in-system_net_servicepointmanager-and-system_net_security_sslstream.md) - [Persian calendar now uses the Hijri solar algorithm](persian-calendar-now-uses-the-hijri-solar-algorithm.md) +- [Product versioning changes in the .NET Framework 4.6 and later versions](product-versioning-changes-in-net-framework-4-6-and-later.md) - [Reflection objects can no longer be passed from managed code to out-of-process DCOM clients](reflection-objects-can-no-longer-be-passed-from-managed-code-to-out-of-process-dcom-clients.md) - [TargetFrameworkName for default app domain no longer defaults to null if not set](targetframeworkname-for-default-app-domain-no-longer-defaults-to-null-if-not-set.md) - [The .NET Framework 4.6 does not use a 4.5.x.x version when registering itself in the registry](the-_net-framework-4_6-does-not-use-a-4_5_x_x-version-when-registering-itself-in-the-registry.md) +- [WCF services that use NETTCP with SSL sercurity and MD5 certificate authentication](wcf-services-using-nettcp-with-ssl-security-and-md5-certificate-authentication.md) - [WPF layout rounding of margins has changed](wpf-layout-rounding-of-margins-has-changed.md) - [WPF spell checking in text-enabled controls will not work in Windows 10 for languages not in the OS's input language list](wpf-spell-checking-in-text-enabled-controls-will-not-work-in-windows-10-for-languages-not-in-the-input-language-list.md) - [WPF windows are rendered without clipping when extending outside a single monitor](wpf-windows-are-rendered-without-clipping-when-extending-outside-a-single-monitor.md) diff --git a/Documentation/compatibility/change-in-path-separator-character-in-zip-files.md b/Documentation/compatibility/change-in-path-separator-character-in-zip-files.md new file mode 100644 index 000000000..6fa3513b8 --- /dev/null +++ b/Documentation/compatibility/change-in-path-separator-character-in-zip-files.md @@ -0,0 +1,49 @@ +## Change in path separator character in FullName property of ZipArchiveEntry objects + +### Scope +Edge + +### Version Introduced +4.6.1 + +### Source Analyzer Status +Planned + +### Change Description +For apps that target the .NET Framework 4.6.1 and later versions, the path separator character has changed from a backslash ("\") to a forward slash ("/") in the property of objects created by overloads of the method. The change brings the .NET implementation into conformity with section 4.4.17.1 of the [.ZIP File Format Specification](https://pkware.cachefly.net/webdocs/casestudies/APPNOTE.TXT) and allows .ZIP archives to be decompressed on non-Windows systems. + +Decompressing a zip file created by an app that targets a previous version of the .NET Framework on non-Windows operating systems such as the Macintosh fails to preserve the directory structure. For example, on the Macintosh, it creates a set of files whose filename concatenates the directory path, along with any backslash ("\") characters, and the filename. As a result, the directory structure of decompressed files is not preserved. + + +- [X] Quirked +- [ ] Build-time break + +### Recommended Action + +The impact of this change on .ZIP files that are decompressed on the Windows operating system by APIs in the .NET Framework namespace should be minimal, since these APIs can seamlessly handle either a slash ("/") or a backslash ("\\") as the path separator character. + +If this change is undesirable, you can opt out of it by adding a configuration setting to the [``](https://docs.microsoft.com/dotnet/framework/configure-apps/file-schema/runtime/runtime-element.md) section of your application configuration file. The following example shows both the ` + + +``` + +In addition, apps that target previous versions of the .NET Framework but are running on the .NET Framework 4.6.1 and later versions can opt in to this behavior by adding a configuration setting to the [``](https://docs.microsoft.com/dotnet/framework/configure-apps/file-schema/runtime/runtime-element.md) section of the application configuration file. The following shows both the `` section and the `Switch.System.IO.Compression.ZipFile.UseBackslash` opt-in switch. + +```xml + + + +``` + +### Affected APIs +* M:System.IO.Compression.ZipFile.CreateFromDirectory + +### Category +Core + + + + diff --git a/Documentation/compatibility/code-contracts-and-string-isnullorempty-compiler-warning.md b/Documentation/compatibility/code-contracts-and-string-isnullorempty-compiler-warning.md new file mode 100644 index 000000000..4da1d10fe --- /dev/null +++ b/Documentation/compatibility/code-contracts-and-string-isnullorempty-compiler-warning.md @@ -0,0 +1,29 @@ +## Contract.Invariant or Contract.Requires do not consider String.IsNullOrEmpty to be pure + +### Scope +Minor + +### Version Introduced +4.6.1 + +### Source Analyzer Status +Investigating + +### Change Description +For apps that target the .NET Framework 4.6.1, if the invariant contract for or the precondition contract for calls the method, the rewriter emits compiler warning CC1036: "Detected call to method 'System.String.IsNullOirWhteSpace(System.String)' without [Pure] in method." This is a compiler warning rather than a compiler error. + +- [ ] Quirked +- [ ] Build-time break + +### Recommended Action + +This behavior was addressed in [GitHub Issue #339](https://github.com/Microsoft/CodeContracts/issues/339). To eliminate this warning, you can download and compile an updated version of the source code for the Code Contracts tool from [GitHub](https://github.com/Microsoft/CodeContracts/blob/master/README.md). Download information is found at the bottom of the page. + +### Affected APIs +- M:System.Diagnostics.Contracts.Contract.Invariant(System.Boolean) +- M:System.Diagnostics.Contracts.Contract.Requires(System.Boolean) + +### Category +Tools + + diff --git a/Documentation/compatibility/etw-event-names-cannot-differ-only-by-suffix.md b/Documentation/compatibility/etw-event-names-cannot-differ-only-by-suffix.md new file mode 100644 index 000000000..69a725b98 --- /dev/null +++ b/Documentation/compatibility/etw-event-names-cannot-differ-only-by-suffix.md @@ -0,0 +1,36 @@ +## ETW event names cannot differ only by a "Start" or "Stop" suffix + +### Scope +Edge + +### Version Introduced +4.6 + + +### Version Reverted +4.6.2 + +### Source Analyzer Status +NotPlanned + +### Change Description +In the .NET Framework 4.6 and 4.6.1, the runtime throws an when two Event Tracing for Windows (ETW) event names differ only by a "Start" or "Stop" suffix (as when one event is named `LogUser` and another is named `LogUserStart`). In this case, the runtime cannot construct the event source, which cannot emit any logging. + +- [X] Quirked // Uses some mechanism to turn the feature on or off, usually using runtime targeting, AppContext or config files. Needs to be turned on automatically for some situations. +- [ ] Build-time break // Causes a break if attempted to recompile + +### Recommended Action + +To prevent the exception, ensure that no two event names differ only by a "Start" or "Stop" suffix. + +This requirement is removed starting with the .NET Framework 4.6.2; the runtime can disambiguate event names that differ only by the "Start" and "Stop" suffix. + +### Affected APIs +* Not detectable via API analysis + +### Category +Core + + + + diff --git a/Documentation/compatibility/new-64-bit-jit-compiler.md b/Documentation/compatibility/new-64-bit-jit-compiler.md index 6acd66b93..c9a55b05a 100644 --- a/Documentation/compatibility/new-64-bit-jit-compiler.md +++ b/Documentation/compatibility/new-64-bit-jit-compiler.md @@ -27,7 +27,7 @@ The known differences include the following: - [ ] Build-time break ### Recommended Action -**Mitigation of known issues** +**Mitigation of known issues** If you encounter the issues listed above, you can address them by doing any of the following: - Upgrade to the .NET Framework 4.6.2. The new 64-bit compiler included with the .NET Framework 4.6.2 addresses each of these known issues. diff --git a/Documentation/compatibility/product-versioning-changes-in-net-framework-4-6-and-later.md b/Documentation/compatibility/product-versioning-changes-in-net-framework-4-6-and-later.md new file mode 100644 index 000000000..2f9f75711 --- /dev/null +++ b/Documentation/compatibility/product-versioning-changes-in-net-framework-4-6-and-later.md @@ -0,0 +1,51 @@ +## Product versioning changes in the .NET Framework 4.6 and later versions + +### Scope +Minor + +### Version Introduced +4.6 + +### Source Analyzer Status +NotPlanned + +### Change Description + +Product versioning has changed from the previous releases of the .NET Framework, and particularly the .NET Framework 4, 4.5, 4.5.1, and 4.5.2. + +The following are the detailed changes: + +- The value of the `Version` entry in the `HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full` key has changed to `4.6.xxxxx` for the .NET Framework 4.6 and its point releases, and to `4.7.xxxxx` for the .NET Framework 4.7. In the .NET Framework 4.5, 4.5.1, and 4.5.2, it had the format `4.5.xxxxx`. + +- The file and product versioning for .NET Framework files has changed from the earlier versioning scheme of 4.0.30319.x to 4.6.X.0 for the .NET Framework 4.6 and its point releases, and to 4.7.X.0 for the .NET Framework 4.7 and its point releases. You can see these new values when you view the file's Properties after right-clicking on a file. + +- The and attributes for managed assemblies have Version values in the form 4.6.X.0 for the .NET Framework 4.6 and its point releases, and 4.7.X.0 for the .NET Framework 4.7. + +- In the .NET Framework 4.6, 4.6.1, 4.6.2, and 4.7, the property returns the fixed version string `4.0.30319.42000`. In the .NET Framework 4, 4.5, 4.5.1, and 4.5.2, it returns version strings in the format `4.0.30319.xxxxx` (for example, "4.0.30319.18010"). Note that we do not recommend application code taking any new dependency on the Environment.Version property. + +- [ ] Quirked // Uses some mechanism to turn the feature on or off, usually using runtime targeting, AppContext or config files. Needs to be turned on automatically for some situations. +- [ ] Build-time break // Causes a break if attempted to recompile + +### Recommended Action +In general, applications should depend on the recommended techniques for detecting such things as the runtime version of the .NET Framework and the installation directory: + +- To detect the runtime version of the .NET Framework, see [How to: Determine Which .NET Framework Versions Are Installed](https://docs.microsoft.com/dotnet/framework/migration-guide/how-to-determine-which-versions-are-installed.md). + +- To determine the installation path for the .NET Framework, use the value of the `InstallPath` entry in the `HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full` key. + +> [!IMPORTANT] +> The subkey name is `NET Framework Setup`, not `.NET Framework Setup`. + +- To determine the directory path to the .NET Framework common language runtime, call the method. + +- To get the CLR version, call the method. For the .NET Framework 4 and its point releases (the .NET Framework 4.5, 4.5.1, 4.5.2, and .NET Framework 4.6, 4.6.1, 4.6.2, and 4.7), it returns the string v4.0.30319. + +### Affected APIs +* Not detectable via API analysis + +### Category +Setup and Deployment + + + + diff --git a/Documentation/compatibility/sql-server-database-connection-that-resolves-to-localhost.md b/Documentation/compatibility/sql-server-database-connection-that-resolves-to-localhost.md new file mode 100644 index 000000000..ad3c7951f --- /dev/null +++ b/Documentation/compatibility/sql-server-database-connection-that-resolves-to-localhost.md @@ -0,0 +1,33 @@ +## Attempting a TCP/IP connection to a SQL Server database that resolves to `localhost` fails + +### Scope +Minor + +### Version Introduced +4.6 + +### Version Reverted +4.6.2 + +### Source Analyzer Status +NotPlanned + +### Change Description + +In the .NET Framework 4.6 and 4.6.1, attempting a TCP/IP connection to a SQL Server database that resolves to `localhost` fails with the error, "A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: SQL Network Interfaces, error: 26 - Error Locating Server/Instance Specified)" + +- [ ] Quirked // Uses some mechanism to turn the feature on or off, usually using runtime targeting, AppContext or config files. Needs to be turned on automatically for some situations. +- [ ] Build-time break // Causes a break if attempted to recompile + +### Recommended Action + +This issue has been addressed and the previous behavior restored in the .NET Framework 4.6.2. To connect to a SQL Server databsae that resolves to `localhost`, upgrade to the .NET Framework 4.6.2. + +### Affected APIs +* Not detectable via API analysis + +### Category +Data + + + diff --git a/Documentation/compatibility/wcf-services-using-nettcp-with-ssl-security-and-md5-certificate-authentication.md b/Documentation/compatibility/wcf-services-using-nettcp-with-ssl-security-and-md5-certificate-authentication.md new file mode 100644 index 000000000..dc9ae40c6 --- /dev/null +++ b/Documentation/compatibility/wcf-services-using-nettcp-with-ssl-security-and-md5-certificate-authentication.md @@ -0,0 +1,64 @@ +## WCF services that use NETTCP with SSL sercurity and MD5 certificate authentication + +### Scope +Minor| + +### Version Introduced +4.6 + +### Source Analyzer Status +NotPlanned + +### Change Description +The .NET Framework 4.6 adds TLS 1.1 and TLS 1.2 to the WCF SSL default protocol list. When both client and server machines have the .NET Framework 4.6 or later installed, TLS 1.2 is used for negotiation. + +TLS 1.2 does not support MD5 certificate authentication. As a result, if a customer uses an MD5 certificate, the WCF client will fail to connect to the WCF service. + +- [ ] Quirked // Uses some mechanism to turn the feature on or off, usually using runtime targeting, AppContext or config files. Needs to be turned on automatically for some situations. +- [ ] Build-time break // Causes a break if attempted to recompile + +### Recommended Action +You can work around this issue so that a WCF client can connect to a WCF server by doing any of the following: + +- Update the certificate to not use the MD5 algorithm. This is the recommended solution. + +- If the binding is not dynamically configured in source code, update the application's configuration file to use TLS 1.1 or an earlier version of the protocol. This allows you to continue to use a certificate with the MD5 hash algorithm. + + > [!WARNING] + > This workaround is not recommended, since a certificate with the MD5 hash algorithm is considered insecure. + + The following configuration file does this: + + ```xml + + + + + + + + + + + + + + + ``` + +- If the binding is dynamically configured in source code, update the property to use TLS 1.1 ( or an earlier version of the protocol in the source code. + + > [!WARNING] + > This workaround is not recommended, since a certificate with the MD5 hash algorithm is considered insecure. + +### Affected APIs +* Not detectable via API analysis + +### Category +Windows Communication Foundation (WCF) + + + + diff --git a/Documentation/compatibility/windows-forms-icon-tobitmap-method-successfully-converts-icons-with-png-frames.md b/Documentation/compatibility/windows-forms-icon-tobitmap-method-successfully-converts-icons-with-png-frames.md new file mode 100644 index 000000000..1831bcb41 --- /dev/null +++ b/Documentation/compatibility/windows-forms-icon-tobitmap-method-successfully-converts-icons-with-png-frames.md @@ -0,0 +1,46 @@ +## Icon.ToBitmap successfully converts icons with PNG frames into Bitmap objects + +### Scope +Minor + +### Version Introduced +4.6 + +### Source Analyzer Status +Investigating + +### Change Description + +Starting with the apps that target the .NET Framework 4.6, the method successfully converts icons with PNG frames into Bitmap objects. + +In apps that target the .NET Framework 4.5.2 and earlier versions, the method throws an exception if the Icon object has PNG frames. + +This change affects apps that are recompiled to target the .NET Framework 4.6 and that implement special handling for the that is thrown when an Icon object has PNG frames. When running under the .NET Framework 4.6, the conversion is successful, an is no longer thrown, and therefore the exception handler is no longer invoked. + +- [X] Quirked // Uses some mechanism to turn the feature on or off, usually using runtime targeting, AppContext or config files. Needs to be turned on automatically for some situations. +- [ ] Build-time break // Causes a break if attempted to recompile + +### Recommended Action +If this behavior is undesirable, you can retain the previous behavior by adding the following element to the `` section of your app.config file: + +```xml + +``` + +If the app.config file already contains the `AppContextSwitchOverrides` element, the new value should be merged with the value attribute like this: + +```xml + +``` + +### Affected APIs +* `M:System.Drawing.Icon.ToBitmap` + +### Category +Windows Forms + + + + From 11798f180c5afc658659a2c2e6624300ab64f8e7 Mon Sep 17 00:00:00 2001 From: Vivek Mishra Date: Mon, 31 Jul 2017 17:38:34 -0700 Subject: [PATCH 397/872] Initial changes for adding known issues (#450) Initial changes for adding known issues --- Documentation/KnownIssues/README.md | 9 +++++++++ .../Template/NETFXKnownIssuesTemplate.md | 19 +++++++++++++++++++ Documentation/README.md | 1 + releases/README.md | 1 + releases/net471/KnownIssues/.gitkeep | 0 releases/net471/dotnet471-KnownIssues.md | 9 +++++++++ 6 files changed, 39 insertions(+) create mode 100644 Documentation/KnownIssues/README.md create mode 100644 Documentation/KnownIssues/Template/NETFXKnownIssuesTemplate.md create mode 100644 releases/net471/KnownIssues/.gitkeep create mode 100644 releases/net471/dotnet471-KnownIssues.md diff --git a/Documentation/KnownIssues/README.md b/Documentation/KnownIssues/README.md new file mode 100644 index 000000000..1c665ba4f --- /dev/null +++ b/Documentation/KnownIssues/README.md @@ -0,0 +1,9 @@ +# .NET Framework Known Issues + +The following links provide the known issues, about the various .NET Framework releases, as they existed at the time of release. They describe the underlying issue and how to resolve them. + +- [.NET Framework 4.7](http://go.microsoft.com/fwlink/?LinkId=825308) +- [.NET Framework 4.6.2](http://go.microsoft.com/fwlink/?LinkId=780606) +- [.NET Framework 4.6.1](http://go.microsoft.com/fwlink/?LinkId=671749) +- [.NET Framework 4.6](https://support.microsoft.com/en-us/help/3047761/known-issues-for-the--net-framework-4-6) +- [.NET Framework 4.5.2](https://support.microsoft.com/en-us/help/3047761/known-issues-for-the--net-framework-4-6) diff --git a/Documentation/KnownIssues/Template/NETFXKnownIssuesTemplate.md b/Documentation/KnownIssues/Template/NETFXKnownIssuesTemplate.md new file mode 100644 index 000000000..d0c215262 --- /dev/null +++ b/Documentation/KnownIssues/Template/NETFXKnownIssuesTemplate.md @@ -0,0 +1,19 @@ +## [|Known Issue Title|] +// There is no built in way to do comments in Markdown, so this C# style comment used to mark comments. Please REMOVE ALL COMMENTS before submission. +// Please use proper markdown syntax for code snippets. See http://daringfireball.net/projects/markdown/syntax for examples. +// Entries with [| ... |] are fields that must be updated. + +### Symptoms +[|Description of the symtopms|] +// A description of the symptom(s) that exhibit due to the underlying issue. + +### Cause +[|Description of the root cause(s)|] + +### Resolution +[|Description of the resolution|] +// Add the steps that will allow users to resolve the underlying problem including any work arounds. +// In future, if there is a fix available then also update this page with the latest information or future update/hotfix link. + +### More information +// This is an optional section. Add any other relevant information, if available, like link(s) to help docs, blog etc. diff --git a/Documentation/README.md b/Documentation/README.md index b68ac42a3..188127774 100644 --- a/Documentation/README.md +++ b/Documentation/README.md @@ -3,6 +3,7 @@ The following documents are available in this repo: - [.NET Framework Application Compatibility](compatibility/README.md) +- [.NET Framework Known Issues](KnownIssues/README.md) - [.NET Framework Release Notes](../releases/README.md) - [Testing with RyuJIT](testing-with-ryujit.md) diff --git a/releases/README.md b/releases/README.md index 03f04047d..7297047b5 100644 --- a/releases/README.md +++ b/releases/README.md @@ -21,6 +21,7 @@ You can see what was included in each .NET Framework release. Some releases are ## Resources - [.NET Framework Breaking Changes](../Documentation/compatibility/README.md) +- [.NET Framework Known Issues](../Documentation/KnownIssues/README.md) - [.NET Framework Docs](https://docs.microsoft.com/dotnet) - [.NET Framework Docs Source (dotnet/docs)](https://github.com/dotnet/docs) - [.NET Framework Reference Source](https://referencesource.microsoft.com/) diff --git a/releases/net471/KnownIssues/.gitkeep b/releases/net471/KnownIssues/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/releases/net471/dotnet471-KnownIssues.md b/releases/net471/dotnet471-KnownIssues.md new file mode 100644 index 000000000..7d75edf73 --- /dev/null +++ b/releases/net471/dotnet471-KnownIssues.md @@ -0,0 +1,9 @@ +.NET Framework 4.7.1 Known Issues +================================= + +This document lists the known issue that you may experience after you install the Microsoft .NET Framework 4.7.1. + +## Product issues for the .NET Framework 4.7.1 +For known issues and available workarounds, see the following documents. + +### - \ No newline at end of file From 7a401bf6842ddbd50f2402d0529c8f8fce497962 Mon Sep 17 00:00:00 2001 From: Vivek Mishra Date: Mon, 31 Jul 2017 18:02:58 -0700 Subject: [PATCH 398/872] Updated 471 Known issue file (#451) --- releases/net471/dotnet471-KnownIssues.md | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/releases/net471/dotnet471-KnownIssues.md b/releases/net471/dotnet471-KnownIssues.md index 7d75edf73..f12046166 100644 --- a/releases/net471/dotnet471-KnownIssues.md +++ b/releases/net471/dotnet471-KnownIssues.md @@ -6,4 +6,14 @@ This document lists the known issue that you may experience after you install th ## Product issues for the .NET Framework 4.7.1 For known issues and available workarounds, see the following documents. -### - \ No newline at end of file +### - + + +## References +For known issues in earlier versions of the .NET Framework, see the following: + +- [.NET Framework 4.7](http://go.microsoft.com/fwlink/?LinkId=825308) +- [.NET Framework 4.6.2](http://go.microsoft.com/fwlink/?LinkId=780606) +- [.NET Framework 4.6.1](http://go.microsoft.com/fwlink/?LinkId=671749) +- [.NET Framework 4.6](https://support.microsoft.com/en-us/help/3047761/known-issues-for-the--net-framework-4-6) +- [.NET Framework 4.5.2](https://support.microsoft.com/en-us/help/3047761/known-issues-for-the--net-framework-4-6) \ No newline at end of file From 1650ccb9291cd4e31eb7c4f860bb56fbe2977173 Mon Sep 17 00:00:00 2001 From: Vivek Mishra Date: Thu, 3 Aug 2017 19:37:41 -0700 Subject: [PATCH 399/872] Fixed Known Issues for minor review comments (#453) * Fixed known issues for review comments --- Documentation/KnownIssues/README.md | 2 +- .../KnownIssues/Template/NETFXKnownIssuesTemplate.md | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Documentation/KnownIssues/README.md b/Documentation/KnownIssues/README.md index 1c665ba4f..5b5ae1940 100644 --- a/Documentation/KnownIssues/README.md +++ b/Documentation/KnownIssues/README.md @@ -1,6 +1,6 @@ # .NET Framework Known Issues -The following links provide the known issues, about the various .NET Framework releases, as they existed at the time of release. They describe the underlying issue and how to resolve them. +The following links provide the known issues about the various .NET Framework versions at the time of their release. They describe the underlying issue and how to resolve them. - [.NET Framework 4.7](http://go.microsoft.com/fwlink/?LinkId=825308) - [.NET Framework 4.6.2](http://go.microsoft.com/fwlink/?LinkId=780606) diff --git a/Documentation/KnownIssues/Template/NETFXKnownIssuesTemplate.md b/Documentation/KnownIssues/Template/NETFXKnownIssuesTemplate.md index d0c215262..a454bcf44 100644 --- a/Documentation/KnownIssues/Template/NETFXKnownIssuesTemplate.md +++ b/Documentation/KnownIssues/Template/NETFXKnownIssuesTemplate.md @@ -1,5 +1,5 @@ ## [|Known Issue Title|] -// There is no built in way to do comments in Markdown, so this C# style comment used to mark comments. Please REMOVE ALL COMMENTS before submission. +// There is no built-in way to do comments in Markdown, so this template uses a C#-style comment to mark comments. Please REMOVE ALL COMMENTS before submission. // Please use proper markdown syntax for code snippets. See http://daringfireball.net/projects/markdown/syntax for examples. // Entries with [| ... |] are fields that must be updated. @@ -12,8 +12,8 @@ ### Resolution [|Description of the resolution|] -// Add the steps that will allow users to resolve the underlying problem including any work arounds. -// In future, if there is a fix available then also update this page with the latest information or future update/hotfix link. +// Add the steps that will allow users to resolve the underlying problem including any workarounds. +// In future, if there is a fix available, then also update this page with the latest information or future update/hotfix link. ### More information // This is an optional section. Add any other relevant information, if available, like link(s) to help docs, blog etc. From 730b20e42d47cfbcd86cd0c5c4d7cadacb90c8fb Mon Sep 17 00:00:00 2001 From: Josh Free Date: Fri, 4 Aug 2017 10:35:51 -0700 Subject: [PATCH 400/872] Add 5.3.4 release note --- releases/UWP/README.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/releases/UWP/README.md b/releases/UWP/README.md index 18ef835b1..419bc0499 100644 --- a/releases/UWP/README.md +++ b/releases/UWP/README.md @@ -6,6 +6,11 @@ You can learn about Microsoft.NETCore.UniversalWindowsPlatform [releases](#relea You can see what was included in each Microsoft.NETCore.UniversalWindowsPlatform release. +### 5.3.4 (August 4, 2017) +When using Visual Studio this package requires Visual Studio 2017 or later. + +- Corrected an issue where System.Threading.Thread.MemoryBarrier was implemented as no-op on x86 release builds. + ### 5.3.3 (April 24, 2017) When using Visual Studio this package requires Visual Studio 2017 or later. From 56df2ab8f05bd000f25f4faa001095f8b1fcb4b8 Mon Sep 17 00:00:00 2001 From: Josh Free Date: Fri, 4 Aug 2017 11:44:09 -0700 Subject: [PATCH 401/872] Initial draft of .NET Native 1.7 release notes Initial draft of net-native1.7 notes. refactored existing notes into separate net-native{1.4, 1.6, 1.7} folders. --- releases/UWP/README.md | 73 +++------------------------- releases/UWP/net-native1.4/README.md | 28 +++++++++++ releases/UWP/net-native1.6/README.md | 57 ++++++++++++++++++++++ releases/UWP/net-native1.7/README.md | 42 ++++++++++++++++ 4 files changed, 133 insertions(+), 67 deletions(-) create mode 100644 releases/UWP/net-native1.4/README.md create mode 100644 releases/UWP/net-native1.6/README.md create mode 100644 releases/UWP/net-native1.7/README.md diff --git a/releases/UWP/README.md b/releases/UWP/README.md index 419bc0499..1d79b4ba3 100644 --- a/releases/UWP/README.md +++ b/releases/UWP/README.md @@ -1,79 +1,18 @@ -# Microsoft.NETCore.UniversalWindowsPlatform NuGet Package Releases +# .NET Native (UWP) Releases You can learn about Microsoft.NETCore.UniversalWindowsPlatform [releases](#releases), below. See [resources](#resources) for additional information. ## Release Notes -You can see what was included in each Microsoft.NETCore.UniversalWindowsPlatform release. +You can see what was included in each .NET Native (Microsoft.NETCore.UniversalWindowsPlatform) release. -### 5.3.4 (August 4, 2017) -When using Visual Studio this package requires Visual Studio 2017 or later. - -- Corrected an issue where System.Threading.Thread.MemoryBarrier was implemented as no-op on x86 release builds. - -### 5.3.3 (April 24, 2017) -When using Visual Studio this package requires Visual Studio 2017 or later. - -- Corrected an [issue](http://stackoverflow.com/questions/43530071/how-to-fix-app-submission-error-of-1300) for projects that have Visual Studio configuration values that are not "DEBUG" or "RELEASE" that causes Windows Store submission failure (error code 1300). For example, most Unity apps use a configuration named "Master". - -### 5.3.2 (April 6, 2017) -When using Visual Studio this package requires Visual Studio 2017 or later. - -- Fixed an issue that caused MAKEPRI build warnings to be emitted when building app packages for UWP projects. - -### 5.3.1 (March 7, 2017) -When using Visual Studio this package requires Visual Studio 2017 or later. - -- Fixed an [issue](https://github.com/dotnet/corefx/issues/10374) that caused DataContractJsonSerializer to fail to serialize any [DataContract] type whose default constructor is not public. -- Fixed a regression in 5.3.0 where [4 Libraries were accidently no longer referenced by default](https://github.com/dotnet/corefx/issues/10338) - - System.Collections.NonGeneric - - System.Collections.Specialized - - System.Threading.Overlapped - - System.Xml.XmlDocument - -### 5.3.0 (January 27, 2017) -When using Visual Studio this package requires Visual Studio 2017 or later. You can read more about these changes in our announcement blog [post](https://blogs.msdn.microsoft.com/dotnet/2017/01/30/announcing-net-core-net-native-and-nuget-updates-in-vs-2017-rc/). - -- Added NuGet support for Visual Studio 2017 or later. -- Added hardware-accelerated support for System.Numerics.Vectors. -- Added the ability to inspect static fields that contain the ThreadStatic attribute. -- Added x64 support for Shared Library package with profile-guided optimizations which reduces the package size and improves startup time for x64 native apps. This change brings x64 to parity with x86 and ARM32. -- Integrated .NET Native garbage collector with Windows Runtime MemoryManager API to properly calculate memory load factor in UWP applications. -- Reduced compile times for applications that contain large and/or complex methods by ~25% in certain scenarios. -- Increased performance improvements in reverse p/invoke (up to 400%) and when accessing Windows Runtime objects (up to 135% in certain scenarios). -- Improvements to the relfection stack and metadata formats which result in up to 30% performance increase in some scenarios. -- Improvements to delegate invocation that reduce code size and give up to 7% faster performance. -- General code quality improvements which improve start up times, better steady-state performance, less memory usage and smaller app size. -- Resolved an issue that sometimes resulted in a 1300 error when submitting a package to the store after upgrading / cherry-picking .NET Core assembly packages. -- resolved an issue that caused a memory leak when interacting with certain Windows Runtime objects in a different process. -- significantly reduced global lock contention when accessing Windows Runtime objects from multiple threads. -- Resolved an issue that resulted in queries not executing properly in Entity Framework when enabling .NET Native. ([GitHub #6381](https://github.com/aspnet/EntityFramework/issues/6381)) -- Resolved an issue with System.Linq.Expressions that resulted in unsupressable error messages. ([GitHub #5088](https://github.com/dotnet/corefx/issues/5088)) -- .NET Native will now show a warning if you have a native DLL in a different CPU architecture than the application being built. This is a common mistake that results in the application not being able to launch. - -#### Known issues - -- .NET native does not currently support portable PDBs. When debugging managed components with portable PDBs in application compiled with .NET native, you may have trouble setting breakpoints, stepping in, and/or inspecting variables of related types in those components. You can delete the files from the local package directory (users\userName.nuget\packages) to workaround the warning. This change was also made in the servicing update for .NET Native 1.4 in the latest update to Visual Studio 2017 RC. Earlier versions of .NET native may incorrectly throw OutOfMemoryException and crash during build when consuming portable PDBs. - -### 5.2.3 (March 7, 2017) -When using Visual Studio this package requires Visual Studio 2015 Update 3 or later. - -- Fixed an [issue](https://github.com/dotnet/corefx/issues/10374) that caused DataContractJsonSerializer to fail to serialize any [DataContract] type whose default constructor is not public. -- Fixed a regression in 5.2.2 where [4 Libraries were accidently no longer referenced by default](https://github.com/dotnet/corefx/issues/10338) - - System.Collections.NonGeneric - - System.Collections.Specialized - - System.Threading.Overlapped - - System.Xml.XmlDocument - -### 5.2.2 (July 14, 2016) -When using Visual Studio this package requires Visual Studio 2015 Update 3 or later. You can read more about these changes in the Visual Studio 2015 Update 3 blog [post](https://www.visualstudio.com/en-us/news/releasenotes/vs2015-update3-vs). - -- Fixed several customer reported bugs. -- Improved release build compilation times of large applications. -- Improved runtime performance for XAML applications and Unity games. +- [.NET Native 1.7 (UWP 5.4.x)](net-native1.7/README.md) +- [.NET Native 1.6 (UWP 5.3.x)](net-native1.6/README.md) +- [.NET Native 1.4 (UWP 5.2.x)](net-native1.4/README.md) ## Resources +- [Getting Started with .NET Native](https://docs.microsoft.com/en-us/dotnet/framework/net-native/getting-started-with-net-native) - [Microsoft.NETCore.UniversalWindowsPlatform NuGet Package Details](https://www.nuget.org/packages/Microsoft.NETCore.UniversalWindowsPlatform) - [Windows Dev Center](https://developer.microsoft.com/en-us/windows/apps/getstarted) - [Downloads and tools for Windows 10](https://developer.microsoft.com/en-us/windows/downloads) diff --git a/releases/UWP/net-native1.4/README.md b/releases/UWP/net-native1.4/README.md new file mode 100644 index 000000000..fa7704952 --- /dev/null +++ b/releases/UWP/net-native1.4/README.md @@ -0,0 +1,28 @@ +# .NET Native 1.4 (UWP 5.2.x) Release Notes + +You can see what was included in each .NET Native 1.4 ([Microsoft.NETCore.UniversalWindowsPlatform 5.2.x](https://www.nuget.org/packages/Microsoft.NETCore.UniversalWindowsPlatform)) release, below. + +When using Visual Studio these packages require Visual Studio 2015 Update 3 or later. + +### 5.2.3 (March 7, 2017) + +- Fixed an [issue](https://github.com/dotnet/corefx/issues/10374) that caused DataContractJsonSerializer to fail to serialize any [DataContract] type whose default constructor is not public. +- Fixed a regression in 5.2.2 where [4 Libraries were accidently no longer referenced by default](https://github.com/dotnet/corefx/issues/10338) + - System.Collections.NonGeneric + - System.Collections.Specialized + - System.Threading.Overlapped + - System.Xml.XmlDocument + +### 5.2.2 (July 14, 2016) +You can read more about these changes in the Visual Studio 2015 Update 3 blog [post](https://www.visualstudio.com/en-us/news/releasenotes/vs2015-update3-vs). + +- Fixed several customer reported bugs. +- Improved release build compilation times of large applications. +- Improved runtime performance for XAML applications and Unity games. + +## Resources + +- [Getting Started with .NET Native](https://docs.microsoft.com/en-us/dotnet/framework/net-native/getting-started-with-net-native) +- [Microsoft.NETCore.UniversalWindowsPlatform NuGet Package Details](https://www.nuget.org/packages/Microsoft.NETCore.UniversalWindowsPlatform) +- [Windows Dev Center](https://developer.microsoft.com/en-us/windows/apps/getstarted) +- [Downloads and tools for Windows 10](https://developer.microsoft.com/en-us/windows/downloads) diff --git a/releases/UWP/net-native1.6/README.md b/releases/UWP/net-native1.6/README.md new file mode 100644 index 000000000..ed2f8876c --- /dev/null +++ b/releases/UWP/net-native1.6/README.md @@ -0,0 +1,57 @@ +# .NET Native 1.6 (UWP 5.3.x) Release Notes + +You can see what was included in each .NET Native 1.6 ([Microsoft.NETCore.UniversalWindowsPlatform 5.3.x](https://www.nuget.org/packages/Microsoft.NETCore.UniversalWindowsPlatform)) release, below. + +When using Visual Studio these packages require Visual Studio 2017 or later. + +### 5.3.4 (August 4, 2017) + +- Corrected an issue where System.Threading.Thread.MemoryBarrier was implemented as no-op on x86 release builds. + +### 5.3.3 (April 24, 2017) + +- Corrected an [issue](http://stackoverflow.com/questions/43530071/how-to-fix-app-submission-error-of-1300) for projects that have Visual Studio configuration values that are not "DEBUG" or "RELEASE" that causes Windows Store submission failure (error code 1300). For example, most Unity apps use a configuration named "Master". + +### 5.3.2 (April 6, 2017) + +- Fixed an issue that caused MAKEPRI build warnings to be emitted when building app packages for UWP projects. + +### 5.3.1 (March 7, 2017) + +- Fixed an [issue](https://github.com/dotnet/corefx/issues/10374) that caused DataContractJsonSerializer to fail to serialize any [DataContract] type whose default constructor is not public. +- Fixed a regression in 5.3.0 where [4 Libraries were accidently no longer referenced by default](https://github.com/dotnet/corefx/issues/10338) + - System.Collections.NonGeneric + - System.Collections.Specialized + - System.Threading.Overlapped + - System.Xml.XmlDocument + +### 5.3.0 (January 27, 2017) +You can read more about these changes in our announcement blog [post](https://blogs.msdn.microsoft.com/dotnet/2017/01/30/announcing-net-core-net-native-and-nuget-updates-in-vs-2017-rc/). + +- Added NuGet support for Visual Studio 2017 or later. +- Added hardware-accelerated support for System.Numerics.Vectors. +- Added the ability to inspect static fields that contain the ThreadStatic attribute. +- Added x64 support for Shared Library package with profile-guided optimizations which reduces the package size and improves startup time for x64 native apps. This change brings x64 to parity with x86 and ARM32. +- Integrated .NET Native garbage collector with Windows Runtime MemoryManager API to properly calculate memory load factor in UWP applications. +- Reduced compile times for applications that contain large and/or complex methods by ~25% in certain scenarios. +- Increased performance improvements in reverse p/invoke (up to 400%) and when accessing Windows Runtime objects (up to 135% in certain scenarios). +- Improvements to the relfection stack and metadata formats which result in up to 30% performance increase in some scenarios. +- Improvements to delegate invocation that reduce code size and give up to 7% faster performance. +- General code quality improvements which improve start up times, better steady-state performance, less memory usage and smaller app size. +- Resolved an issue that sometimes resulted in a 1300 error when submitting a package to the store after upgrading / cherry-picking .NET Core assembly packages. +- resolved an issue that caused a memory leak when interacting with certain Windows Runtime objects in a different process. +- significantly reduced global lock contention when accessing Windows Runtime objects from multiple threads. +- Resolved an issue that resulted in queries not executing properly in Entity Framework when enabling .NET Native. ([GitHub #6381](https://github.com/aspnet/EntityFramework/issues/6381)) +- Resolved an issue with System.Linq.Expressions that resulted in unsupressable error messages. ([GitHub #5088](https://github.com/dotnet/corefx/issues/5088)) +- .NET Native will now show a warning if you have a native DLL in a different CPU architecture than the application being built. This is a common mistake that results in the application not being able to launch. + +#### Known issues + +- .NET native does not currently support portable PDBs. When debugging managed components with portable PDBs in application compiled with .NET native, you may have trouble setting breakpoints, stepping in, and/or inspecting variables of related types in those components. You can delete the files from the local package directory (users\userName.nuget\packages) to workaround the warning. This change was also made in the servicing update for .NET Native 1.4 in the latest update to Visual Studio 2017 RC. Earlier versions of .NET native may incorrectly throw OutOfMemoryException and crash during build when consuming portable PDBs. + +## Resources + +- [Getting Started with .NET Native](https://docs.microsoft.com/en-us/dotnet/framework/net-native/getting-started-with-net-native) +- [Microsoft.NETCore.UniversalWindowsPlatform NuGet Package Details](https://www.nuget.org/packages/Microsoft.NETCore.UniversalWindowsPlatform) +- [Windows Dev Center](https://developer.microsoft.com/en-us/windows/apps/getstarted) +- [Downloads and tools for Windows 10](https://developer.microsoft.com/en-us/windows/downloads) diff --git a/releases/UWP/net-native1.7/README.md b/releases/UWP/net-native1.7/README.md new file mode 100644 index 000000000..7fc7a9b99 --- /dev/null +++ b/releases/UWP/net-native1.7/README.md @@ -0,0 +1,42 @@ +# .NET Native 1.7 (UWP 5.4.x) Release Notes + +You can see what was included in each .NET Native 1.7 ([Microsoft.NETCore.UniversalWindowsPlatform 5.4.x](https://www.nuget.org/packages/Microsoft.NETCore.UniversalWindowsPlatform)) release, below. + +When using Visual Studio these packages require Visual Studio 2017 or later. + +### 5.4.0 (TBD) + + +#### Improved Diagnostics and Better Support for Portable PDBs +- In .NET Native 1.7, we added support for the new [Portable PDB format](https://github.com/dotnet/corefx/blob/master/src/System.Reflection.Metadata/specs/PortablePdb-Metadata.md) for representing symbol information in the .NET Native UWP compiler. The portable PDB format was originally developed to support cross-platform symbol information for managed code as well as drastically reduce the size of debug info - the format makes use of the MSIL module metadata instead of duplicating it and, because of this, it is typically an order of magnitude shorter than the equivalent Windows PDB. In addition to that, the portable PDB format supports an "embedded" flavor in which the symbol information is directly attached to the MSIL executable in form of a binary blob, making it much easier to deploy such managed binaries, not having to care about two different files (with all the related problems of mutual compatibility, signing etc.). The debugging experience is on par with Windows PDB's - we encode the same debug information just in a more compact manner. The previous version of the .NET Native toolchain was oblivious of the portable PDB format. [1640097] + +- Improved the debug experience for apps compiled with "/debug:embedded" [364639] + +#### Fixes for Build Warnings and other Compilation Improvements +- Fixed an issue that caused MAKEPRI to emit a spurious build warning [378512] +- Fixed an issue that prevented embedding a win32 resource into a C# UWP project [370533] +- Fixed an MSBuild targets issue that caused UWP App Release builds to fail occasionally (Error MSB6003: The specified task executable "ilc.exe" could not be run. The handle is invalid) [401406] +- Fixed a build crash when using ValueTuple with embedded null values in the string[] passed to TupleElementNamesAttribute [409209] + +#### Fixes for Localization and non-English Scenarios +- Fixed an issue where string resources emitted by Microsoft.NetNative.IL2IL were English-only and not localized [438193] + +#### Fixes for Crashes and other Application Reliability Improvements +- Fixed an issue where System.Reflection would sometimes return two copies of every Attribute in an assembly [392708] +- Fixed an issue that caused System.ServiceModel.MessageParameterAttribute to not work properly in C# UWP projects [394307] +- Fixed a crash with obfuscated applications [396131] +- Fixed a WinMD data corruption issue [430881] +- Fixed Watson-reported crashes in .NET Native 1.6 [432913] +- Fixed a crash in Module::DoCustomImports [432987] +- Fixed incorrect data reported in telemetry [443373] +- Upgraded to newer VSTelemetry SDK and dependent package versions [442135] +- Improved telemetry handling of internal usage [444253] +- Fixed crash in optimizing compiler c2n.dll [300136, 300146] +- Fixed an issue where memory barrier is implemented as no-op on x86 [452729] + +## Resources + +- [Getting Started with .NET Native](https://docs.microsoft.com/en-us/dotnet/framework/net-native/getting-started-with-net-native) +- [Microsoft.NETCore.UniversalWindowsPlatform NuGet Package Details](https://www.nuget.org/packages/Microsoft.NETCore.UniversalWindowsPlatform) +- [Windows Dev Center](https://developer.microsoft.com/en-us/windows/apps/getstarted) +- [Downloads and tools for Windows 10](https://developer.microsoft.com/en-us/windows/downloads) From 977f733b5919e63fcffb842da530c4d7676e89cf Mon Sep 17 00:00:00 2001 From: Richard Lander Date: Mon, 7 Aug 2017 10:42:47 -0700 Subject: [PATCH 402/872] Update .NET Framework 4.7.1 filenames --- releases/net471/KnownIssues/.gitkeep | 0 .../{dotnet471-KnownIssues.md => dotnet471-known-issues.md} | 0 2 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 releases/net471/KnownIssues/.gitkeep rename releases/net471/{dotnet471-KnownIssues.md => dotnet471-known-issues.md} (100%) diff --git a/releases/net471/KnownIssues/.gitkeep b/releases/net471/KnownIssues/.gitkeep deleted file mode 100644 index e69de29bb..000000000 diff --git a/releases/net471/dotnet471-KnownIssues.md b/releases/net471/dotnet471-known-issues.md similarity index 100% rename from releases/net471/dotnet471-KnownIssues.md rename to releases/net471/dotnet471-known-issues.md From cee62047448fe9719d6206d7baf0e6919e20ca94 Mon Sep 17 00:00:00 2001 From: Richard Lander Date: Mon, 7 Aug 2017 10:45:24 -0700 Subject: [PATCH 403/872] Simplify 4.7.1 known issues doc --- releases/net471/dotnet471-known-issues.md | 17 +---------------- 1 file changed, 1 insertion(+), 16 deletions(-) diff --git a/releases/net471/dotnet471-known-issues.md b/releases/net471/dotnet471-known-issues.md index f12046166..1e8fecb64 100644 --- a/releases/net471/dotnet471-known-issues.md +++ b/releases/net471/dotnet471-known-issues.md @@ -1,19 +1,4 @@ .NET Framework 4.7.1 Known Issues ================================= -This document lists the known issue that you may experience after you install the Microsoft .NET Framework 4.7.1. - -## Product issues for the .NET Framework 4.7.1 -For known issues and available workarounds, see the following documents. - -### - - - -## References -For known issues in earlier versions of the .NET Framework, see the following: - -- [.NET Framework 4.7](http://go.microsoft.com/fwlink/?LinkId=825308) -- [.NET Framework 4.6.2](http://go.microsoft.com/fwlink/?LinkId=780606) -- [.NET Framework 4.6.1](http://go.microsoft.com/fwlink/?LinkId=671749) -- [.NET Framework 4.6](https://support.microsoft.com/en-us/help/3047761/known-issues-for-the--net-framework-4-6) -- [.NET Framework 4.5.2](https://support.microsoft.com/en-us/help/3047761/known-issues-for-the--net-framework-4-6) \ No newline at end of file +There are no known issues at this time. From 9be03180ba5c6cc554ba946c3f5c890641a00cfb Mon Sep 17 00:00:00 2001 From: Savorboard Date: Tue, 8 Aug 2017 01:49:13 +0800 Subject: [PATCH 404/872] Added CAP to .NET Open Source Developer Projects (#446) --- dotnet-developer-projects.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index a0accbf5c..043b809f7 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -84,12 +84,13 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [Azure Service Bus](https://github.com/azure/azure-service-bus-dotnet) - .NET Standard client library for [Azure Service Bus](https://docs.microsoft.com/en-us/azure/service-bus/). * [Azure Event Hubs](https://github.com/azure/azure-event-hubs-dotnet) - .NET Standard client library for [Azure Event Hubs](https://docs.microsoft.com/en-us/azure/event-hubs/). * [Azure Relay](https://github.com/azure/azure-relay-dotnet) - .NET Standard client library for [Azure Relay](https://docs.microsoft.com/en-us/azure/service-bus-relay/relay-what-is-it). - * [NServiceBus](https://github.com/Particular/NServiceBus) - The most popular service bus for .NET * [AzureNetQ](https://github.com/Roysvork/AzureNetQ) - An easy to use .NET API for Azure Service Bus. * [Brighter](https://github.com/iancooper/Paramore) - A Command Dispatcher and Command Processor library with support for Work or Task Queues over different MoM implementations such as RabbitMQ + * [CAP](https://github.com/dotnetcore/CAP) - An EventBus with local persistent message functionality for RabbitMQ or Kafka. * [EasyNetQ](https://github.com/mikehadlow/EasyNetQ) - An easy to use .NET API for RabbitMQ. * [Lime](https://github.com/takenet/lime-csharp) - A lightweight messaging library. * [MassTransit](https://github.com/MassTransit/MassTransit) - A distributed application framework for RabbitMQ and Azure Service Bus. + * [NServiceBus](https://github.com/Particular/NServiceBus) - The most popular service bus for .NET * [RestBus](https://github.com/tenor/RestBus) - Easy Asynchronous Messaging and Queueing for .NET ## Libraries From 36686b64566f7e63d009313b3a70dbf30001317d Mon Sep 17 00:00:00 2001 From: Preeti Krishna Date: Mon, 7 Aug 2017 12:24:37 -0700 Subject: [PATCH 405/872] .NET Framework 4.7.1 readme and change list (#454) --- releases/net471/README.md | 22 ++++ releases/net471/dotnet471-changes.md | 173 +++++++++++++++++++++++++++ 2 files changed, 195 insertions(+) create mode 100644 releases/net471/README.md create mode 100644 releases/net471/dotnet471-changes.md diff --git a/releases/net471/README.md b/releases/net471/README.md new file mode 100644 index 000000000..af85bc0b2 --- /dev/null +++ b/releases/net471/README.md @@ -0,0 +1,22 @@ +# Early Access to .NET Framework 4.7.1 Build-2538 Release Notes + +You can learn about the changes made in the .NET Framework 4.7.1 build-2538. + +- [Download](https://github.com/Microsoft/dotnet-framework-earlyaccess) +- [Early Access to .NET Framework 4.7.1 build-2538 announcement blog post](https://blogs.msdn.microsoft.com/dotnet/2017/08/07/welcome-to-the-net-framework-4-7-1-early-access/) +- [Release notes](dotnet471-changes.md) +- [Known issues](dotnet471-known-issues.md) + +# Release Notes by Product Area + +- [ASP.NET](dotnet471-changes.md#aspnet) +- [BCL](dotnet471-changes.md#bcl) +- [CLR](dotnet471-changes.md#clr) +- [Compiler and Managed Languages](dotnet471-changes.md#Compiler-and-Managed-Languages) +- [Configuration](dotnet471-changes.md#Configuration) +- [Networking](dotnet471-changes.md#networking) +- [SQL](dotnet471-changes.md#sql) +- [WCF](dotnet471-changes.md#wcf) +- [Windows Forms](dotnet471-changes.md#windows-forms) +- [Workflow](dotnet471-changes.md#workflow) +- [WPF](dotnet471-changes.md#wpf) diff --git a/releases/net471/dotnet471-changes.md b/releases/net471/dotnet471-changes.md new file mode 100644 index 000000000..6360bf096 --- /dev/null +++ b/releases/net471/dotnet471-changes.md @@ -0,0 +1,173 @@ +.NET Framework List of Changes for Early Access to .NET Framework 4.7.1 Build-2538 +================================================================================== + +Early Access to .NET Framework 4.7.1 build 2538 contains dozens of bug fixes and improvements. +This list details those changes, grouped by feature area. +Each change includes our TFS bug numbers at the end of the line, changed binary name and information on whether the change is a bug or a feature. Please include those numbers in your communication if you wish to contact us to obtain more information about a certain change. + +## ASP.NET + +* Fixed the scenario where ASP.NET's custom errors feature does not work if the URL being requested contains a filesystem reserved keyword. [217022, System.Web.dll, Bug] +* Fixed the scenario where the content-type header is not set in the response if HttpResponse.Redirect is called before executing handler. [360276, system.web.dll, bug] +* Fixed leaking cache items in System.Runtime.MemoryCache when multiple threads race to add an item with the same ID. [388335, System.Runtime.Caching.dll, Bug] +* Fixed an accessibility problem to have consistent identification for table items. [449101, System.Web.Extensions.Design.dll, Bug] +* Fixed spurious xhtml5 warnings in Visual Studio for web forms application development. [450875, System.Web.Extensions.dll, Bug] +* Fixed bug with absolute expiration time when using System.Web.Caching.Cache.Insert(). [453771, System.Web.dll, Bug] +* Fixed accessibility problem where a visually impared user can have less difficulty in identifying property grid entries in high contrast mode for property headers. [459055, System.Web.Extensions.Design.dll, Bug] +* ASP.NET developers now can use this public API to parse a string from SetCookie header to a HttpCookie object: +static bool HttpCookie.TryParse(string s, out HttpCookie result) [402902, System.Web.dll, Feature] +* Added support for SHA-2 hash algorthims for ASP.NET Forms Authentication password format. [405231, System.Web.dll, Feature] +* HttpApplication.OnExecuteStep provides extensibility to ASP.NET pipeline to make it easy for developers to implement features in ambient context pattern and build libraries that cares about ASP.NET execution flow. [406437, System.Web.dll, Feature] + +## BCL + +* Fixed a race condition in resource manager which leads to multiple CultureInfo getting created and presented to the client code. This is also fixed in .NET Core - [https://github.com/dotnet/coreclr/pull/8656](https://github.com/dotnet/coreclr/pull/8656) [99146, mscorlib.dll, Bug] +* Improved reliability of Parallel.For on x86 systems. [99779, mscorlib.dll, Bug] +* Fixed an issue where two threads attempting to load the same assembly may crash the process. [211676, mscorlib.dll, Bug] +* Fixed an issue in ReaderWriterLockSlim where an attempt to enter a write lock that times out does not release waiting attempts to acquire read or upgradeable read locks [216022, System.Core.dll, Bug] +* Improved performance of AesCng and TripleDESCng with in-memory keys. [271987, System.Core.dll, Bug] +* Improved performance in NamedPipeClientStream Connect area. [288338, System.Core.dll, Bug] +* Removed an unnecessary line break in the exception text in Russian locale. [299044, mscorlib.dll, Bug] +* Fixed a performance issue with Task.WhenAny. When a task was repeatedly used in Task.WhenAny, the performance of WhenAny may have degraded over time. [372594, mscorlib.dll, Bug] +* Fixed Access Violation problem in ComCallUnmarshal::UnmarshalInterface. [380021, mscorlib.dll, Bug] +* Updated SignedXML and SignedCMS to use SHA256 as a default over SHA1. SHA1 may still be used by selected as a default by enabling a context switch. [397307, System.Security.dll, Bug] +* Updated SignedXML and SignedCMS to use SHA256 as a default over SHA1. SHA1 may still be used by selected as a default by enabling a context switch. [397641, System.Security.dll, Bug] +* Fixed a bug introduced in .NET 4.6.2 that caused RSACng and DSACng to not be usable in Partial Trust scenarios [400499, System.Core.dll, Bug] +* Fixed a bug in ETW rundown that hung the process. [409381, mscorlib.dll, Bug] +* Added a switch to SignedXML to use the certificates PublicKey.Key property instead of GetAnyPublicKey. [432261, System.Security.dll, Bug] +* When tasks are awaited on background threads that have a DispatcherQueue associated with them, the continuations for the tasks will now be posted on the same thread via the DispatcherQueue. [437118, mscorlib.dll, Bug] +* Enable support for .NET Standard 2.0 in .NET 4.7.1. [404774, mscorlib.dll, Feature] +* Added IsReadOnlyAttribute to System.Runtime.CompilerServices [407211, mscorlib.dll, Feature] +* Added helper method to describe features supported by the runtime. [407212, mscorlib.dll, Feature] +* Added an attribute System.Runtime.CompilerServices.IsRefLikeAttribute [429642, mscorlib.dll, Feature] +* Enabled interop between StorageFile / StorageFolder and .NET types for filesystem access [433898, mscorlib.dll, Feature] +* System.Runtime.CompilerServices.RuntimeFeature.IsSupported allows to check whether the runtime supports displaying source line information for stack frames in assemblies built with portable symbols (PDBs). This is common for libraries that are built targeting .Net standard. [436315, mscorlib.dll, Feature] + +## CLR + +* Managed threads that exit don't get finalized until a GC of an appropriate generation is triggered. Applications that are mostly idle but occasionally create threads or have timers with long periods may accumulate a large number of handles as shown by Task Manager. This issue is fixed by triggering a GC of an appropriate generation based on the number of threads. [134926, clr.dll, Bug] +* Fixed reliability problem for using string hashing before initializing the appdomain which used to crash the apps. This is also fixed in .NET Core - [https://github.com/dotnet/coreclr/issues/10843](https://github.com/dotnet/coreclr/issues/10843) [213531, clr.dll, Bug] +* Exceptions from services that fail to start will now be propagated from ServiceBase.Run. [226883, System.ServiceProcess.dll, Bug] +* Fixed a silent bad code generation issue in RyuJit. The conditions for the silent bad code generation are as follows: [282492, clrjit.dll, Bug] + - The method has a tail call that the JIT decides to dispatch as a fast tail call (without calling a helper). + - Both the caller and the callee have arguments passed on the stack. + - One of the arguments passed on the stack to the caller is a 1, 2, 4, or 8-byte struct. + - Some or all of the fields of that struct are used to compute a callee argument passed in a register. + - If the abovementioned conditions are met, the JIT may generate bad code for the callee register argument. The callee will see an incorrect value. +* Improved resiliency to shutdown finalization for portable PDB. [360526, System.dll, Bug] +* Fixed a rare issue that can cause hangs in programs that use background GC and exhibit specific patterns of GC handle usage. [369415, clr.dll, Bug] +* Fixed a deadlock in TraceSource initialization. [387336, System.dll, Bug] +* After many instances of ReaderWriterLock are created, an instance may hang while upgrading to a write lock. A new configuration variable is exposed, and may be specified as an environment variable (COMPlus_ReaderWriterLock_UseFixedIdGeneration=1) to fix this problem. [395943, clr.dll, Bug] +* Fixed intermittent deadlock during GC with complex generic types. [399387, clr.dll, Bug] +* Fixed a problem where rare crashes or deadlocks happens if a GC occurs while another thread is running NGen'ed code which is making the initial call into a static method within the same module where one or more parameter types involve type-forwarded valuetypes. [404234, clr.dll, Bug] +* Managed threads that exit don't get finalized until a GC of an appropriate generation is triggered. Applications that are mostly idle but occasionally create threads or have timers with long periods may accumulate a large number of handles as shown by Task Manager. This problem is now fixed by triggering a GC of an appropriate generation based on the number of threads that have exited but are not finalized. [407602, clr.dll, Bug] +* Exception.StackTrace now supports displaying source line information for stack frames in assemblies that use pdbs in the new portable pdb format. This is common for libraries that are built targeting .Net standard. [410959, clr.dll, mscorlib.dll, System.Core.dll, Bug] +* Fixed intermittent crash during GC with ETW memory tracing turned on. [425084, clr.dll, Bug] +* SerialPort streams no longer terminate the process when exceptions occur on the background thread. This can happen when removing a USB serial port while in use. +This new behavior is controlled by the Switch.System.IO.Ports.DoNotCatchSerialStreamThreadExceptions AppContext switch. This switch is set to ""truetf get"" by default when targeting .NET 4.7 or below. [428461, System.dll, Bug] +* Updated headers to use HTTPS instead of HTTP in URLs. [447119, mscoree.h, cor.h, Bug] +* Fixed infinite loop in the jit which happens in certain cases where cgt.un is used to implement a null check. [453201, clrjit.dll, Bug] +* Fixed a silent bad codegen problem in JIT that results in incorrect results from XslCompiledTransform. [461649, clrjit.dll, Bug] +* Fixed potential crash during CLR shutdown [437163, clr.dll, Bug] + +## Compiler and Managed Languages + +* Removed unnecessary ITuple constraint from TRest on ValueTuple 8. [363866, mscorlib.dll, Bug] +* Support for dynamic pattern matching types. [295579, mscorlib.dll, Feature] +* Added serializable attribute on each ValueTuple types. [378419, mscorlib.dll, Feature] + +## Configuration + +* Introduced Configuration Builders that allow developers a way to build configuration for applications at runtime from dynamic or centralized sources. [405224, System.Configuration.dll, Feature] + +## Networking + +* Fixed security vulnerability tracked by Microsoft Common Vulnerabilities and Exposures [CVE-2017-0248](https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/CVE-2017-0248) [364538, System.dll, Bug] +* Fixed a problem with HTTP POST requests that require authentication and resubmit. [369338, System.dll, Bug] +* Add 8 new properties to System.Net.Http.HttpClientHandler to align with NETStandard2.0. [386926, System.Net.Http.dll, Bug] + +## SQL + +* Fixed a bug in System.Data.SqlClient where exceptions can be thrown while trying to establish a connection to SQL Server due to receiving TDS packets that are smaller than expected. [396402, System.Data.dll, Bug] +* Enabled sqlclient to connect to the correct instance instead of only default instance when SQL Server 2016 or higher versions is installed in cluster and if it is not the default server. Initially for these scenarios sqlclient was able to connect to only default instance. [400928, System.Data.dll, Bug] + +## WCF + +* When serializing an object with TimeSpan property, it will write an empty element for TimeSpan property. The fix is to reliably support TimeSpan property in XmlSerializer. [252528, System.Xml.dll, Bug] +* Task methods now honor the Description attribute in help pages. [274351, System.ServiceModel.Web.dll, Bug] +* Fixed an incorrect null check issue in AddressHeaderCollection. Afer the fix the actual header (addressHeader) is checked for null and not addressHeaders. [275879, System.ServiceModel.dll, Bug] +* Fixed reliability problem in Addressing.ReadHeader operator comparison [276385, System.ServiceModel.dll, Bug] +* Fixed NullReferenceException in waiters null scenario. [284926, System.ServiceModel.dll, Bug] +* Fixed Narrator accessibility problem - Narrator now announces ‘Configuration’ and ‘Services’ in SvcConfigEditor. [393966, SvcConfigEditor.exe, Bug] +* Fixed accessibility problem - now hyperlinks can be opened via keyboard in 'Tasks' panel in SvcConfigEditor. [393974, SvcConfigEditor.exe, Bug] +* Fixed tab order issues in 'Client' panel for SvcConfigEditor. [393991, SvcConfigEditor.exe, Bug] +* Fixed reliability issues in determination of whether ETW should trace exceptions. [394519, System.ServiceModel.dll, Bug] +* Changed the hashing algorithm of HttpChannelFactory from SHA1 to SHA256. [395428, System.ServiceModel.dll, Bug] +* Changed the hashing algorithm of WindowsUserNameCachingSecurityTokenAuthenticator to not use SHA1. [395433, System.ServiceModel.dll, Bug] +* Changed the hashing algorithm of BuildSharedMemoryName to use SHA256. [395685, System.ServiceModel.dll, Bug] +* Changed the hashing algorithm of MsmqSecureHashAlgorithm from SHA1 to SHA256. [395687, System.ServiceModel.dll, Bug] +* Fixed accessibility problem - now Focus area is correct when pressing arrow key to move focus on a new EndPoint node inSvcConfigEditor. [396819, SvcConfigEditor.exe, Bug] +* Fixed accessibility problem - now focuses are correct when pressing Tab key to move focus on Task area in SvcConfigEditor. [396843, SvcConfigEditor.exe, Bug] +* Fixed accessibility problem - now Narrator reads the full infomation about the link in runtime window in SvcConfigEditor. [396880, SvcConfigEditor.exe, Bug] +* Support for the OS default TLS protocol. [405970, System.ServiceModel.dll, Bug] +* Updated WCF Trace Viewer's controls so all controls now expose the correct properties to screen readers. [424483, SvcTraceViewer.exe , Bug] +* Some text in the WCF Trace Viewer did not contrast enough to be visible for all users. Updated font colors so it should always be visible. [424484, 424485, 424488, SvcTraceViewer.exe, Bug] +* Some text in the WCF Trace Viewer did follow high contrast standards when using high contrast themes. Adjusted text to use the correct colors in these themes. [424924, SvcTraceViewer.exe, Bug] +* Some controls in the WCF Trace Viewer were not accessible using the keyboard because they were not marked as tab stops. Added these to the tab order and these are now accessible using the keyboard. [424942, 424944, SvcTraceViewer.exe, Bug] +* Fixed NullReferenceException when accessing AllowedSecurityIdentifiers if allowedUsers is null. [447641, System.ServiceModel.dll, Bug] + +## Windows Forms + +* MenuStrip.MdiWindowListItem drop down menu now displays accurate list of available child windows. [241047, System.Windows.Forms.dll, Bug] +* Recent changes in the Mage signing tool had enabled only Current User HSM keys, we have now enabled support for LM keys. [266936, Mage.exe, Bug] +* HDPI improvements in ThreadExceptionDialog [372899, System.Windows.Forms.dll, Bug] +* Fixed an incorrectly translated Print dialog issue for Chinese Simplified or Traditional. [398471, System.Windows.Forms.dll, Bug] +* Fixed the problem where a static constructor for ConfigurationOptions class throws an exception when TargetFrameworkName in appdomain is null. [401520, System.Windows.Forms.dll, System.Design.dll, Bug] +* MonthCalendar control is now accessible via narrator and other UI automation tools. [409745, System.Windows.Forms.dll, Bug] +* Fixed multi-mon DPI awareness problem in control anchoring distance scaling [454161, System.Windows.Forms.dll, Bug] +* WinForms is improving how it works with accessibility aids to better support WinForms customers. Specifically, there are changes to improve display during HighContrast mode, to improve the property browser experience and to implement missing accessibility patterns in controls. Property Browser improvements will include better keyboard navigation though the various drop down selection windows, reduced unnecessary tab stops, better reporting of control types, and improved Narrator behavior. [364507, 366444, 382153, 382195, 382373, 384922, 386113, 386118, 386123, 386173, 386221, 386386, 386420, 387172, 392706, 394788, 395785, 396128, 396905, 399055, 399067, 399988, 404882, 404885, 407249, 407451, 409745, 411616, 411645, 426764, 427010, 428277, 430685, 434763, 436154, 436313, 437010, 437011, 437700, 437912, 449452, 457326, 461557, System.Windows.Forms.dll, Bug] + +## Workflow + +* Fixed rendering error in Workflow designer in Sharepoint. [361982, System.Activities.Presentation.dll, Bug] +* Improved accessibility in Workflow designer. Specifically there are fixes in high contrast mode, focus of different controls and dialogs and name properties [407062, 407067, 407068, 407069, 407070, 407072, 407075, 407076, 407080, 407085, 407086, 407097, 407407, 407408, 407411, 407414, 407415, 407428, 407436, 407442, 407444, 407450, 407462, 407463, 407467, 408030, 408035, 408043, 408073, 408077, 408158, 408282, 408315, 408329, 409027, 409645, 409719, 409723, 409731, 434137, 445109, 447654, System.Activities.Presentation.dll, Bug] +* New enumerator values are added for System.Messaging.HashAlgorithm to allow developers to choose SHA256, SHA384, and SHA512. Also, the default hashing algorithm if one is not specified is SHA512. For backward compatibility where customers must continue to use MD5, the following must be added to the app.config file for the application: [394583, System.Messaging.dll, Feature] +``` + + + +``` + +## WPF + +* Nested popups with StaysOpen="False" now work as expected. [94132, PresentationFramework.dll, Bug] +* Fixed a bug in which DataGrid displays the wrong value after committing edits to a normalizing property. [158520, PresentationFramework.dll, Bug] +* On Windows 10, WPF applications running in a locked or disconnected user session sometimes consume CPU cycles unexpectedly. This could also manifest as application crash that is observed as soon as the user logs back onto their session. This fix addresses this problem and improves the overall performance and reliablity of WPF applications running on Windows 10. [165554, WindowsBase.dll, PresentationCore .dll, wpfgfx_v0400.dll, Bug] +* Fixed crashes and incorrect focus when pressing arrow keys in a TreeView or Ribbon that contains Hyperlinks. [170274, PresentationFramework.dll, Bug] +* In WPF applications running on Windows 10 Anniversary Update or greater, WPF will automatically invoke the touch keyboard in applicable scenarios. In .NET 4.7.1, WPF applications may opt out of this behavior by adding the following to their application configuration file, merging this switch with the AppContextSwitchOverrides list. [362756, PresentationCore.dll, Bug] +``` + + + + + +``` +* Support for font changes from Windows 10 Creators Update that involves updates to WPF font fallbacks. [368999, PresentationCore.dll, Bug] +* Added LiveSetting/LiveRegion support to WPF’s Automation provider APIs. Developers can now set the LiveSetting dependency property and raise the LiveRegionChanged event via RaiseAutomationEvent. [386494, UIAutomationClient.dll, Bug] +* Fixed crash when an async binding refers to a dynamic object. [388736, PresentationFramework.dll, Bug] +* A WPF application running on touch or stylus enabled machines may crash under certain circumstances when a Dispatcher thread is being shutdown or when a tablet or stylus is removed. This fix alleviates that issue by ensuring that objects associated with tablets and styluses are only released when the device is no longer in use. [402947, PenIMC.dll , Bug] +* Fixed a NullReferenceException thrown during SpellCheck operations after SpellCheck.CustomDictionaries.Clear() is called programmatically. [407524, PresentationFramework.dll, Bug] +* Fixed a crash occurring when removing the SelectedItem from a collection with a custom implementation of INotifyCollectionChanged that does not report the position of the removed item. [424259, PresentationFramework.dll, Bug] +* Fixed a crash in PenIMC. [424827, PenIMC.dll , Bug] +* Applications written in WPF and running on touch/stylus enabled devices leak a handle on shutdown of a Dispatcher thread. This change appropriately cleans up the handle and fixes the leak. [434938, PenIMC.dll , Bug] +* PackageDigitalSignatureManager.DefaultHashAlgorithm is now SHA256 for applications running on .NET 4.7.1 and targeting .NET 4.6.2 and above. This impacts the default message digest algorithm and signature method for XPS document signing (XpsDocument.SignDigitally) and Package signing (PackageDigitalSignatureManager.Sign). +Developers running on .NET 4.7.1 targeting .NET 4.6.2 and above who require SHA1 defaults may enable a compatibility AppContext flag by adding: ""Switch.MS.Internal.UseSha1AsDefaultHashAlgorithmForDigitalSignatures=true"" to their AppConfig's AppContextSwitchOverrides. This also allows developers running on .NET 4.7.1 and targeting .NET 4.6.1 and below to enable the new default setting by setting this to false. [436861, WindowsBase.dll, Bug] +* Fixed an infinite loop that can occur while resizing a Grid when (a) two row definitions declare a *-height, a MinHeight, and a MaxHeight, (b) neither row's content exceeds the MaxHeight, and (c) the first MinHeight, plus any other fixed or Auto rows, exceeds the Grid's available height (even without considering the second MinHeight). There's a similar fix for columns and width. [442027, PresentationFramework.dll, Bug] +* WPF Accessibility:High Contrast improvements - WPF applications running in high contrast themes, as well as those interacting with screen readers will see various improvements. To enable these changes, set the target framework to 4.7.1 or add "Switch.UseLegacyAccessibilityFeatures=false" to your AppContextSwitchOverrides. [447592, PresentationFramework.dll, PresentationCore.dll, Bug] +* Fixed problem where WPF fails to load resources if two versions of the same assembly are loaded. [454391, PresentationFramework.dll, Bug] +* Fixed ComException in PenIMC_v400 that results in WPF application crashes. [463347, PenIMC2_v0400.dll, PenIMC_v0400.dll, Bug] +* On a machine with touch or stylus device, loading a .NET 3.5 WPF application and a .NET 4.x WPF application side-by-side in the same process can result in heap corruption. This change fixes this problem allowing side-by-side execution in the same process on touch/stylus enabled devices. [377651, PenIMC.dll, PenIMC_v0400.dll, PresentationCore.dll, WindowsBase.dll, Feature] +* Added support for updating visual tree after changing implicit data template. [406804, PresentationFramework.dll, Feature] +* Added ability to tell whether a property value inside a template is a dynamic resource reference. [406807, PresentationFramework.dll, Feature] +* Provided source info for elements in template created by XamlReader.Load [406808, PresentationFramework.dll, Feature] +* Enabled VisualTree notifications for debugging [406811, PresentationFramework.dll, Feature] From f03ab2f868cf8daccfb539f875519d9681f3b14e Mon Sep 17 00:00:00 2001 From: Richard Lander Date: Mon, 7 Aug 2017 13:02:46 -0700 Subject: [PATCH 406/872] Remove 'releases' from .gitignore --- .gitignore | 1 - 1 file changed, 1 deletion(-) diff --git a/.gitignore b/.gitignore index eaf5e216b..b5d7fe667 100644 --- a/.gitignore +++ b/.gitignore @@ -16,7 +16,6 @@ [Dd]ebug/ [Dd]ebugPublic/ [Rr]elease/ -[Rr]eleases/ x64/ x86/ bld/ From 27a2d9c515af8e6229fdad7d69b05dee86bf7fc5 Mon Sep 17 00:00:00 2001 From: Rich Lander Date: Mon, 7 Aug 2017 14:55:51 -0700 Subject: [PATCH 407/872] Update .NET Framework 4.7.1 release notes (#455) Update .NET Framework 4.7.1 release notes --- releases/README.md | 1 + releases/net471/README.md | 10 ++-- releases/net471/dotnet471-changes.md | 71 ++++++++++++----------- releases/net471/dotnet471-known-issues.md | 2 +- 4 files changed, 44 insertions(+), 40 deletions(-) diff --git a/releases/README.md b/releases/README.md index 7297047b5..c50baa478 100644 --- a/releases/README.md +++ b/releases/README.md @@ -8,6 +8,7 @@ To get up-to-date with the latest versions of .NET Framework and Visual Studio, You can see what was included in each .NET Framework release. Some releases are now unsupported, as called out. +- [.NET Framework 4.7.1](net471/README.md) (pre-release) - [.NET Framework 4.7](net47/README.md) - [.NET Framework 4.6.2](net462/README.md) - [.NET Framework 4.6.1](net461/README.md) diff --git a/releases/net471/README.md b/releases/net471/README.md index af85bc0b2..cdbf596a5 100644 --- a/releases/net471/README.md +++ b/releases/net471/README.md @@ -1,13 +1,15 @@ -# Early Access to .NET Framework 4.7.1 Build-2538 Release Notes +# .NET Framework 4.7.1 Release Notes -You can learn about the changes made in the .NET Framework 4.7.1 build-2538. +> These release notes are current for .NET Framework 4.7.1 build 2538, released 2017-08-07. + +You can learn about the changes made in the .NET Framework 4.7.1, as of build 2538. - [Download](https://github.com/Microsoft/dotnet-framework-earlyaccess) -- [Early Access to .NET Framework 4.7.1 build-2538 announcement blog post](https://blogs.msdn.microsoft.com/dotnet/2017/08/07/welcome-to-the-net-framework-4-7-1-early-access/) +- [Announcement blog post](https://blogs.msdn.microsoft.com/dotnet/2017/08/07/welcome-to-the-net-framework-4-7-1-early-access/) - [Release notes](dotnet471-changes.md) - [Known issues](dotnet471-known-issues.md) -# Release Notes by Product Area +## Release Notes by Product Area - [ASP.NET](dotnet471-changes.md#aspnet) - [BCL](dotnet471-changes.md#bcl) diff --git a/releases/net471/dotnet471-changes.md b/releases/net471/dotnet471-changes.md index 6360bf096..128163078 100644 --- a/releases/net471/dotnet471-changes.md +++ b/releases/net471/dotnet471-changes.md @@ -1,9 +1,10 @@ -.NET Framework List of Changes for Early Access to .NET Framework 4.7.1 Build-2538 -================================================================================== +# .NET Framework 4.7.1 Release Notes -Early Access to .NET Framework 4.7.1 build 2538 contains dozens of bug fixes and improvements. -This list details those changes, grouped by feature area. -Each change includes our TFS bug numbers at the end of the line, changed binary name and information on whether the change is a bug or a feature. Please include those numbers in your communication if you wish to contact us to obtain more information about a certain change. +> These release notes are current for .NET Framework 4.7.1 build 2538, released 2017-08-07. + +You can learn about the changes made in the .NET Framework 4.7.1, as of build 2538. + +.NET Framework release notes describe product improvements grouped by product area. Each change includes a Microsoft-internal VSTS bug ID, the primary binary that was updated and whether the change was a bug or a feature. ## ASP.NET @@ -15,13 +16,15 @@ Each change includes our TFS bug numbers at the end of the line, changed binary * Fixed bug with absolute expiration time when using System.Web.Caching.Cache.Insert(). [453771, System.Web.dll, Bug] * Fixed accessibility problem where a visually impared user can have less difficulty in identifying property grid entries in high contrast mode for property headers. [459055, System.Web.Extensions.Design.dll, Bug] * ASP.NET developers now can use this public API to parse a string from SetCookie header to a HttpCookie object: -static bool HttpCookie.TryParse(string s, out HttpCookie result) [402902, System.Web.dll, Feature] + ```csharp + static bool HttpCookie.TryParse(string s, out HttpCookie result) [402902, System.Web.dll, Feature] + ``` * Added support for SHA-2 hash algorthims for ASP.NET Forms Authentication password format. [405231, System.Web.dll, Feature] * HttpApplication.OnExecuteStep provides extensibility to ASP.NET pipeline to make it easy for developers to implement features in ambient context pattern and build libraries that cares about ASP.NET execution flow. [406437, System.Web.dll, Feature] ## BCL -* Fixed a race condition in resource manager which leads to multiple CultureInfo getting created and presented to the client code. This is also fixed in .NET Core - [https://github.com/dotnet/coreclr/pull/8656](https://github.com/dotnet/coreclr/pull/8656) [99146, mscorlib.dll, Bug] +* Fixed a race condition in resource manager which leads to multiple CultureInfo getting created and presented to the client code. This is also fixed in .NET Core - [dotnet/coreclr #8656](https://github.com/dotnet/coreclr/pull/8656) [99146, mscorlib.dll, Bug] * Improved reliability of Parallel.For on x86 systems. [99779, mscorlib.dll, Bug] * Fixed an issue where two threads attempting to load the same assembly may crash the process. [211676, mscorlib.dll, Bug] * Fixed an issue in ReaderWriterLockSlim where an attempt to enter a write lock that times out does not release waiting attempts to acquire read or upgradeable read locks [216022, System.Core.dll, Bug] @@ -46,25 +49,24 @@ static bool HttpCookie.TryParse(string s, out HttpCookie result) [402902, System ## CLR * Managed threads that exit don't get finalized until a GC of an appropriate generation is triggered. Applications that are mostly idle but occasionally create threads or have timers with long periods may accumulate a large number of handles as shown by Task Manager. This issue is fixed by triggering a GC of an appropriate generation based on the number of threads. [134926, clr.dll, Bug] -* Fixed reliability problem for using string hashing before initializing the appdomain which used to crash the apps. This is also fixed in .NET Core - [https://github.com/dotnet/coreclr/issues/10843](https://github.com/dotnet/coreclr/issues/10843) [213531, clr.dll, Bug] +* Fixed reliability problem for using string hashing before initializing the appdomain which used to crash the apps. This is also fixed in .NET Core - [dotnet/coreclr #10843](https://github.com/dotnet/coreclr/issues/10843) [213531, clr.dll, Bug] * Exceptions from services that fail to start will now be propagated from ServiceBase.Run. [226883, System.ServiceProcess.dll, Bug] * Fixed a silent bad code generation issue in RyuJit. The conditions for the silent bad code generation are as follows: [282492, clrjit.dll, Bug] - - The method has a tail call that the JIT decides to dispatch as a fast tail call (without calling a helper). - - Both the caller and the callee have arguments passed on the stack. - - One of the arguments passed on the stack to the caller is a 1, 2, 4, or 8-byte struct. - - Some or all of the fields of that struct are used to compute a callee argument passed in a register. - - If the abovementioned conditions are met, the JIT may generate bad code for the callee register argument. The callee will see an incorrect value. + * The method has a tail call that the JIT decides to dispatch as a fast tail call (without calling a helper). + * Both the caller and the callee have arguments passed on the stack. + * One of the arguments passed on the stack to the caller is a 1, 2, 4, or 8-byte struct. + * Some or all of the fields of that struct are used to compute a callee argument passed in a register. + * If the abovementioned conditions are met, the JIT may generate bad code for the callee register argument. The callee will see an incorrect value. * Improved resiliency to shutdown finalization for portable PDB. [360526, System.dll, Bug] * Fixed a rare issue that can cause hangs in programs that use background GC and exhibit specific patterns of GC handle usage. [369415, clr.dll, Bug] * Fixed a deadlock in TraceSource initialization. [387336, System.dll, Bug] -* After many instances of ReaderWriterLock are created, an instance may hang while upgrading to a write lock. A new configuration variable is exposed, and may be specified as an environment variable (COMPlus_ReaderWriterLock_UseFixedIdGeneration=1) to fix this problem. [395943, clr.dll, Bug] +* After many instances of ReaderWriterLock are created, an instance may hang while upgrading to a write lock. A new configuration variable is exposed, and may be specified as an environment variable (COMPlus\_ReaderWriterLock\_UseFixedIdGeneration=1) to fix this problem. [395943, clr.dll, Bug] * Fixed intermittent deadlock during GC with complex generic types. [399387, clr.dll, Bug] * Fixed a problem where rare crashes or deadlocks happens if a GC occurs while another thread is running NGen'ed code which is making the initial call into a static method within the same module where one or more parameter types involve type-forwarded valuetypes. [404234, clr.dll, Bug] * Managed threads that exit don't get finalized until a GC of an appropriate generation is triggered. Applications that are mostly idle but occasionally create threads or have timers with long periods may accumulate a large number of handles as shown by Task Manager. This problem is now fixed by triggering a GC of an appropriate generation based on the number of threads that have exited but are not finalized. [407602, clr.dll, Bug] * Exception.StackTrace now supports displaying source line information for stack frames in assemblies that use pdbs in the new portable pdb format. This is common for libraries that are built targeting .Net standard. [410959, clr.dll, mscorlib.dll, System.Core.dll, Bug] * Fixed intermittent crash during GC with ETW memory tracing turned on. [425084, clr.dll, Bug] -* SerialPort streams no longer terminate the process when exceptions occur on the background thread. This can happen when removing a USB serial port while in use. -This new behavior is controlled by the Switch.System.IO.Ports.DoNotCatchSerialStreamThreadExceptions AppContext switch. This switch is set to ""truetf get"" by default when targeting .NET 4.7 or below. [428461, System.dll, Bug] +* SerialPort streams no longer terminate the process when exceptions occur on the background thread. This can happen when removing a USB serial port while in use. This new behavior is controlled by the `Switch.System.IO.Ports.DoNotCatchSerialStreamThreadExceptions` AppContext switch. This switch is set to `truetf get` by default when targeting .NET 4.7 or below. [428461, System.dll, Bug] * Updated headers to use HTTPS instead of HTTP in URLs. [447119, mscoree.h, cor.h, Bug] * Fixed infinite loop in the jit which happens in certain cases where cgt.un is used to implement a null check. [453201, clrjit.dll, Bug] * Fixed a silent bad codegen problem in JIT that results in incorrect results from XslCompiledTransform. [461649, clrjit.dll, Bug] @@ -81,7 +83,7 @@ This new behavior is controlled by the Switch.System.IO.Ports.DoNotCatchSerialSt * Introduced Configuration Builders that allow developers a way to build configuration for applications at runtime from dynamic or centralized sources. [405224, System.Configuration.dll, Feature] ## Networking - + * Fixed security vulnerability tracked by Microsoft Common Vulnerabilities and Exposures [CVE-2017-0248](https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/CVE-2017-0248) [364538, System.dll, Bug] * Fixed a problem with HTTP POST requests that require authentication and resubmit. [369338, System.dll, Bug] * Add 8 new properties to System.Net.Http.HttpClientHandler to align with NETStandard2.0. [386926, System.Net.Http.dll, Bug] @@ -132,26 +134,26 @@ This new behavior is controlled by the Switch.System.IO.Ports.DoNotCatchSerialSt * Fixed rendering error in Workflow designer in Sharepoint. [361982, System.Activities.Presentation.dll, Bug] * Improved accessibility in Workflow designer. Specifically there are fixes in high contrast mode, focus of different controls and dialogs and name properties [407062, 407067, 407068, 407069, 407070, 407072, 407075, 407076, 407080, 407085, 407086, 407097, 407407, 407408, 407411, 407414, 407415, 407428, 407436, 407442, 407444, 407450, 407462, 407463, 407467, 408030, 408035, 408043, 408073, 408077, 408158, 408282, 408315, 408329, 409027, 409645, 409719, 409723, 409731, 434137, 445109, 447654, System.Activities.Presentation.dll, Bug] * New enumerator values are added for System.Messaging.HashAlgorithm to allow developers to choose SHA256, SHA384, and SHA512. Also, the default hashing algorithm if one is not specified is SHA512. For backward compatibility where customers must continue to use MD5, the following must be added to the app.config file for the application: [394583, System.Messaging.dll, Feature] -``` - - - -``` + ```xml + + + + ``` ## WPF * Nested popups with StaysOpen="False" now work as expected. [94132, PresentationFramework.dll, Bug] * Fixed a bug in which DataGrid displays the wrong value after committing edits to a normalizing property. [158520, PresentationFramework.dll, Bug] -* On Windows 10, WPF applications running in a locked or disconnected user session sometimes consume CPU cycles unexpectedly. This could also manifest as application crash that is observed as soon as the user logs back onto their session. This fix addresses this problem and improves the overall performance and reliablity of WPF applications running on Windows 10. [165554, WindowsBase.dll, PresentationCore .dll, wpfgfx_v0400.dll, Bug] +* On Windows 10, WPF applications running in a locked or disconnected user session sometimes consume CPU cycles unexpectedly. This could also manifest as application crash that is observed as soon as the user logs back onto their session. This fix addresses this problem and improves the overall performance and reliablity of WPF applications running on Windows 10. [165554, WindowsBase.dll, PresentationCore .dll, wpfgfx\_v0400.dll, Bug] * Fixed crashes and incorrect focus when pressing arrow keys in a TreeView or Ribbon that contains Hyperlinks. [170274, PresentationFramework.dll, Bug] * In WPF applications running on Windows 10 Anniversary Update or greater, WPF will automatically invoke the touch keyboard in applicable scenarios. In .NET 4.7.1, WPF applications may opt out of this behavior by adding the following to their application configuration file, merging this switch with the AppContextSwitchOverrides list. [362756, PresentationCore.dll, Bug] -``` - - - - - -``` + ```xml + + + + + + ``` * Support for font changes from Windows 10 Creators Update that involves updates to WPF font fallbacks. [368999, PresentationCore.dll, Bug] * Added LiveSetting/LiveRegion support to WPF’s Automation provider APIs. Developers can now set the LiveSetting dependency property and raise the LiveRegionChanged event via RaiseAutomationEvent. [386494, UIAutomationClient.dll, Bug] * Fixed crash when an async binding refers to a dynamic object. [388736, PresentationFramework.dll, Bug] @@ -160,13 +162,12 @@ This new behavior is controlled by the Switch.System.IO.Ports.DoNotCatchSerialSt * Fixed a crash occurring when removing the SelectedItem from a collection with a custom implementation of INotifyCollectionChanged that does not report the position of the removed item. [424259, PresentationFramework.dll, Bug] * Fixed a crash in PenIMC. [424827, PenIMC.dll , Bug] * Applications written in WPF and running on touch/stylus enabled devices leak a handle on shutdown of a Dispatcher thread. This change appropriately cleans up the handle and fixes the leak. [434938, PenIMC.dll , Bug] -* PackageDigitalSignatureManager.DefaultHashAlgorithm is now SHA256 for applications running on .NET 4.7.1 and targeting .NET 4.6.2 and above. This impacts the default message digest algorithm and signature method for XPS document signing (XpsDocument.SignDigitally) and Package signing (PackageDigitalSignatureManager.Sign). -Developers running on .NET 4.7.1 targeting .NET 4.6.2 and above who require SHA1 defaults may enable a compatibility AppContext flag by adding: ""Switch.MS.Internal.UseSha1AsDefaultHashAlgorithmForDigitalSignatures=true"" to their AppConfig's AppContextSwitchOverrides. This also allows developers running on .NET 4.7.1 and targeting .NET 4.6.1 and below to enable the new default setting by setting this to false. [436861, WindowsBase.dll, Bug] -* Fixed an infinite loop that can occur while resizing a Grid when (a) two row definitions declare a *-height, a MinHeight, and a MaxHeight, (b) neither row's content exceeds the MaxHeight, and (c) the first MinHeight, plus any other fixed or Auto rows, exceeds the Grid's available height (even without considering the second MinHeight). There's a similar fix for columns and width. [442027, PresentationFramework.dll, Bug] +* PackageDigitalSignatureManager.DefaultHashAlgorithm is now SHA256 for applications running on .NET 4.7.1 and targeting .NET 4.6.2 and above. This impacts the default message digest algorithm and signature method for XPS document signing (XpsDocument.SignDigitally) and Package signing (PackageDigitalSignatureManager.Sign). Developers running on .NET 4.7.1 targeting .NET 4.6.2 and above who require SHA1 defaults may enable a compatibility AppContext flag by adding: `Switch.MS.Internal.UseSha1AsDefaultHashAlgorithmForDigitalSignatures=true` to their AppConfig's AppContextSwitchOverrides. This also allows developers running on .NET 4.7.1 and targeting .NET 4.6.1 and below to enable the new default setting by setting this to false. [436861, WindowsBase.dll, Bug] +* Fixed an infinite loop that can occur while resizing a Grid when (a) two row definitions declare a \*-height, a MinHeight, and a MaxHeight, (b) neither row's content exceeds the MaxHeight, and (c) the first MinHeight, plus any other fixed or Auto rows, exceeds the Grid's available height (even without considering the second MinHeight). There's a similar fix for columns and width. [442027, PresentationFramework.dll, Bug] * WPF Accessibility:High Contrast improvements - WPF applications running in high contrast themes, as well as those interacting with screen readers will see various improvements. To enable these changes, set the target framework to 4.7.1 or add "Switch.UseLegacyAccessibilityFeatures=false" to your AppContextSwitchOverrides. [447592, PresentationFramework.dll, PresentationCore.dll, Bug] * Fixed problem where WPF fails to load resources if two versions of the same assembly are loaded. [454391, PresentationFramework.dll, Bug] -* Fixed ComException in PenIMC_v400 that results in WPF application crashes. [463347, PenIMC2_v0400.dll, PenIMC_v0400.dll, Bug] -* On a machine with touch or stylus device, loading a .NET 3.5 WPF application and a .NET 4.x WPF application side-by-side in the same process can result in heap corruption. This change fixes this problem allowing side-by-side execution in the same process on touch/stylus enabled devices. [377651, PenIMC.dll, PenIMC_v0400.dll, PresentationCore.dll, WindowsBase.dll, Feature] +* Fixed ComException in PenIMC\_v400 that results in WPF application crashes. [463347, PenIMC2\_v0400.dll, PenIMC\_v0400.dll, Bug] +* On a machine with touch or stylus device, loading a .NET 3.5 WPF application and a .NET 4.x WPF application side-by-side in the same process can result in heap corruption. This change fixes this problem allowing side-by-side execution in the same process on touch/stylus enabled devices. [377651, PenIMC.dll, PenIMC\_v0400.dll, PresentationCore.dll, WindowsBase.dll, Feature] * Added support for updating visual tree after changing implicit data template. [406804, PresentationFramework.dll, Feature] * Added ability to tell whether a property value inside a template is a dynamic resource reference. [406807, PresentationFramework.dll, Feature] * Provided source info for elements in template created by XamlReader.Load [406808, PresentationFramework.dll, Feature] diff --git a/releases/net471/dotnet471-known-issues.md b/releases/net471/dotnet471-known-issues.md index 1e8fecb64..c32cc5b8a 100644 --- a/releases/net471/dotnet471-known-issues.md +++ b/releases/net471/dotnet471-known-issues.md @@ -1,4 +1,4 @@ .NET Framework 4.7.1 Known Issues ================================= -There are no known issues at this time. +There are no known issues as of build 2538. From 554318ce0e01287a82c462ce9e1071b3ac326989 Mon Sep 17 00:00:00 2001 From: Rich Lander Date: Tue, 8 Aug 2017 13:27:10 -0700 Subject: [PATCH 408/872] Update README for .NET Framework 4.7.1 early access --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 35d769775..beb3aa3ff 100644 --- a/README.md +++ b/README.md @@ -4,6 +4,8 @@ This repository is a starting point to learn about and engage in .NET and .NET o This repo is not an official .NET Framework support location, however, we will respond to issues filed here as best we can. Please file .NET Core product issues at [dotnet/core](https://github.com/dotnet/core/issues) and ASP.NET Core product issues at [aspnet/home](https://github.com/aspnet/home/issues). +You can try out the [.NET Framework 4.7.1](https://github.com/Microsoft/dotnet/blob/master/releases/net471/README.md) at the [.NET Framework Early Access](https://github.com/microsoft/dotnet-framework-early-access) site. + ## In this repository - [.NET Framework Release Notes](releases/README.md) From a60a6c074cef0460d97e126274c98fb7705354c8 Mon Sep 17 00:00:00 2001 From: hangy Date: Fri, 11 Aug 2017 07:01:32 +0300 Subject: [PATCH 409/872] Update dotnet471-changes.md (#456) --- releases/net471/dotnet471-changes.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/releases/net471/dotnet471-changes.md b/releases/net471/dotnet471-changes.md index 128163078..43f44d2f7 100644 --- a/releases/net471/dotnet471-changes.md +++ b/releases/net471/dotnet471-changes.md @@ -19,7 +19,7 @@ You can learn about the changes made in the .NET Framework 4.7.1, as of build 25 ```csharp static bool HttpCookie.TryParse(string s, out HttpCookie result) [402902, System.Web.dll, Feature] ``` -* Added support for SHA-2 hash algorthims for ASP.NET Forms Authentication password format. [405231, System.Web.dll, Feature] +* Added support for SHA-2 hash algorithms for ASP.NET Forms Authentication password format. [405231, System.Web.dll, Feature] * HttpApplication.OnExecuteStep provides extensibility to ASP.NET pipeline to make it easy for developers to implement features in ambient context pattern and build libraries that cares about ASP.NET execution flow. [406437, System.Web.dll, Feature] ## BCL From 3317ed7faae5a5741732071f4aea26d22f7567f3 Mon Sep 17 00:00:00 2001 From: gsandorx Date: Sun, 13 Aug 2017 09:27:17 -0400 Subject: [PATCH 410/872] Updated SSH.NET link from CodePlex to GitHub (#459) --- dotnet-developer-projects.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 043b809f7..41401037d 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -167,7 +167,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [SmartIrc4net](https://github.com/meebey/SmartIrc4net) - IRC C# Library * [Spartacus](https://github.com/wind39/spartacus) - Multi-purpose C# library, containing: 1) classes to access many types of databases in a fast, generic way; 2) classes to work with XLSX, CSV and DBF files; 3) PDF report engine. * [Splat](https://github.com/paulcbetts/splat) - A library to make things cross-platform that should be. - * [SSH.NET](https://sshnet.codeplex.com/) - A client-side library for SSH, SCP and SFTP. + * [SSH.NET](https://github.com/sshnet/SSH.NET) - A client-side library for SSH, SCP and SFTP. * [Strongly Typed Client API Generators for ASP.NET Web API](https://webapiclientgen.codeplex.com/) - Strongly Typed Client API Generators generate strongly typed client API in TypeScript and C# codes supporting desktop, Universal Windows, Android and iOS. * [Stuntman](https://github.com/ritterim/stuntman) - OWIN middleware for quickly mocking authentication/authorization use case scenarios locally. Supports Cookie Authentication and Bearer Token Authentication. * [SuperSocket](https://github.com/kerryjiang/SuperSocket) - An extensible socket server engine which supports .NET and Mono From cdc980c934ed5dd497123d80c9965da6c87591b0 Mon Sep 17 00:00:00 2001 From: Josh Free Date: Mon, 14 Aug 2017 09:32:55 -0700 Subject: [PATCH 411/872] Set .NET Native 1.7 / UWP 5.0 release date --- releases/UWP/net-native1.7/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/releases/UWP/net-native1.7/README.md b/releases/UWP/net-native1.7/README.md index 7fc7a9b99..9004cdb78 100644 --- a/releases/UWP/net-native1.7/README.md +++ b/releases/UWP/net-native1.7/README.md @@ -4,7 +4,7 @@ You can see what was included in each .NET Native 1.7 ([Microsoft.NETCore.Univer When using Visual Studio these packages require Visual Studio 2017 or later. -### 5.4.0 (TBD) +### 5.4.0 (August 11, 2017) #### Improved Diagnostics and Better Support for Portable PDBs From 40dd1cb3daf12617f6bf1c02e9790fa457d6db82 Mon Sep 17 00:00:00 2001 From: Rich Lander Date: Tue, 15 Aug 2017 12:21:55 -0700 Subject: [PATCH 412/872] Add .NET Core 2.0 (#462) --- data/platforms.json | 62 +++++++++++---------------------------------- 1 file changed, 15 insertions(+), 47 deletions(-) diff --git a/data/platforms.json b/data/platforms.json index f8dc73cac..2e18f8a59 100644 --- a/data/platforms.json +++ b/data/platforms.json @@ -40,80 +40,48 @@ ], "platforms": [ { - "platform": ".NET Core 1.0 and 1.1", + "platform": ".NET Core 2.0", "category": "netcore", "supportInfo": { "support": "Supported", "link": "" }, "popular": true, - "info": "https://blogs.msdn.microsoft.com/dotnet/2017/03/07/announcing-net-core-tools-1-0/", - "includedIn": [ + "info": "https://blogs.msdn.microsoft.com/dotnet/2017/08/14/announcing-net-core-2-0/", + "includedIn": [], + "supportedBy": [ "VS2017" ], "runtime": [ { - "name": ".NET Core 1.0", - "link": "https://github.com/dotnet/core/releases/tag/1.0.4" - }, - { - "name": ".NET Core 1.1", - "link": "https://github.com/dotnet/core/releases/tag/1.1.1" - }, - { - "name": "ASP.NET Core", - "link": "http://www.asp.net/get-started" - } - ], - "tools": [ - { - "name": ".NET Core SDK", - "link": "https://www.microsoft.com/net/download/core", - "description": "The .NET Core SDK 1.0 for Windows, macOS and Linux." - }, - { - "name": ".NET Core SDK 1.0 (for Docker)", - "link": "https://www.microsoft.com/net/core#dockercmd", - "description": "The .NET Core docker images, for Windows and Linux." + "name": ".NET Core 2.0", + "link": "https://github.com/dotnet/core/blob/master/release-notes/download-archives/2.0.0-download.md" } ] - }, + }, { - "platform": ".NET Core 2.0 Preview 1", + "platform": ".NET Core 1.0 and 1.1", "category": "netcore", "supportInfo": { "support": "Supported", "link": "" }, "popular": true, - "info": "https://blogs.msdn.microsoft.com/dotnet/2017/05/10/announcing-net-core-2-0-preview-1/", - "includedIn": [], - "supportedBy": [ + "info": "https://blogs.msdn.microsoft.com/dotnet/2017/03/07/announcing-net-core-tools-1-0/", + "includedIn": [ "VS2017" ], "runtime": [ { - "name": ".NET Core 2.0 Preview 1", - "link": "https://github.com/dotnet/core/releases/tag/v2.0.0-preview1" - }, - { - "name": "ASP.NET Core 2.0 Preview 1", - "link": "https://blogs.msdn.microsoft.com/webdev/2017/05/10/aspnet-2-preview-1/" - } - ], - "tools": [ - { - "name": ".NET Core SDK", - "link": "https://www.microsoft.com/net/core/preview", - "description": "The .NET Core SDK 2.0 Preview 1 for Windows, macOS and Linux." + "name": ".NET Core 1.0", + "link": "https://github.com/dotnet/core/releases/tag/1.0.4" }, { - "name": ".NET Core SDK (for Docker)", - "link": "https://www.microsoft.com/net/core/preview#dockercmd", - "description": "The .NET Core 2.0 Preview 1 Docker images, for Windows and Linux." + "name": ".NET Core 1.1", + "link": "https://github.com/dotnet/core/releases/tag/1.1.1" } ] - }, + }, { "platform": ".NET Framework 4.7", "alias": "net47", From 74141dcb5f8283e350263ad8646192025a588bf6 Mon Sep 17 00:00:00 2001 From: Connie Yau Date: Thu, 17 Aug 2017 14:40:43 -0700 Subject: [PATCH 413/872] Fix DocIds --- ...in-path-separator-character-in-zip-files.md | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/Documentation/compatibility/change-in-path-separator-character-in-zip-files.md b/Documentation/compatibility/change-in-path-separator-character-in-zip-files.md index 6fa3513b8..4c4547942 100644 --- a/Documentation/compatibility/change-in-path-separator-character-in-zip-files.md +++ b/Documentation/compatibility/change-in-path-separator-character-in-zip-files.md @@ -16,7 +16,7 @@ Decompressing a zip file created by an app that targets a previous version of th - [X] Quirked -- [ ] Build-time break +- [ ] Build-time break ### Recommended Action @@ -25,21 +25,23 @@ The impact of this change on .ZIP files that are decompressed on the Windows ope If this change is undesirable, you can opt out of it by adding a configuration setting to the [``](https://docs.microsoft.com/dotnet/framework/configure-apps/file-schema/runtime/runtime-element.md) section of your application configuration file. The following example shows both the ` - + + -``` +``` In addition, apps that target previous versions of the .NET Framework but are running on the .NET Framework 4.6.1 and later versions can opt in to this behavior by adding a configuration setting to the [``](https://docs.microsoft.com/dotnet/framework/configure-apps/file-schema/runtime/runtime-element.md) section of the application configuration file. The following shows both the `` section and the `Switch.System.IO.Compression.ZipFile.UseBackslash` opt-in switch. ```xml - - + + -``` +``` ### Affected APIs -* M:System.IO.Compression.ZipFile.CreateFromDirectory +* `M:System.IO.Compression.ZipFile.CreateFromDirectory(System.String,System.String)` +* `M:System.IO.Compression.ZipFile.CreateFromDirectory(System.String,System.String,System.IO.Compression.CompressionLevel,System.Boolean)` +* `M:System.IO.Compression.ZipFile.CreateFromDirectory(System.String,System.String,System.IO.Compression.CompressionLevel,System.Boolean,System.Text.Encoding)` ### Category Core From c387475e1f70835cafe80206e0ae9cb7a829f88d Mon Sep 17 00:00:00 2001 From: Connie Yau Date: Wed, 23 Aug 2017 12:57:22 -0700 Subject: [PATCH 414/872] Merge fixes from https://github.com/Microsoft/dotnet-apiport/pull/458 --- Documentation/compatibility/! Template.md | 2 +- ...ange-in-behavior-in-data-definition-language-(ddl)-apis.md | 4 ++-- .../compatibility/horizontal-scrolling-and-virtualization.md | 2 +- ...d_canexecutechanged-event-behaviour-changed-in-_net-4_5.md | 2 +- ...apabilities-file-because-it-is-now-a-browser-capability.md | 2 +- Documentation/compatibility/list_sort-algorithm-changed.md | 2 +- ...and-marshal_ptrtostructure-overloads-break-dynamic-code.md | 2 +- ...issing-target-framework-moniker-results-in-4_0-behavior.md | 2 +- ...ialize-hashtable-and-similar-ordered-collection-objects.md | 2 +- .../wpf-datatemplate-elements-are-now-visible-to-uia.md | 2 +- ...s-not-throw-now-when-_net-cannot-handle-the-certificate.md | 2 +- .../xslt-style-sheet-exception-message-changed.md | 2 +- 12 files changed, 13 insertions(+), 13 deletions(-) diff --git a/Documentation/compatibility/! Template.md b/Documentation/compatibility/! Template.md index 953c3142b..629f5ef1a 100644 --- a/Documentation/compatibility/! Template.md +++ b/Documentation/compatibility/! Template.md @@ -9,7 +9,7 @@ //A description of the Scope values can be found at https://docs.microsoft.com/en-us/dotnet/articles/framework/migration-guide/net-compatibility-diagnostics ### Version Introduced -[|Version in which the breaking change first occured|] +[|Version in which the breaking change first occurred|] ### Version Reverted [|Version in which the breaking change was reverted. If not applicable, please remove|] diff --git a/Documentation/compatibility/change-in-behavior-in-data-definition-language-(ddl)-apis.md b/Documentation/compatibility/change-in-behavior-in-data-definition-language-(ddl)-apis.md index 3048a9ba2..a7bc86662 100644 --- a/Documentation/compatibility/change-in-behavior-in-data-definition-language-(ddl)-apis.md +++ b/Documentation/compatibility/change-in-behavior-in-data-definition-language-(ddl)-apis.md @@ -12,8 +12,8 @@ Available ### Change Description The behavior of DDL APIs when AttachDBFilename is specified has changed as follows: * Connection strings need not specify an Initial Catalog value. Previously, both AttachDBFilename and Initial Catalog were required. -* If both AttatchDBFilename and Initial Catalog are specified and the given MDF file exists, the ObjectContext.DatabaseExists method returns true. Previously, it returned false. -* If both AttatchDBFilename and Initial Catalog are specified and the given MDF file exists, calling the ObjectContext.DeleteDatabase method deletes the files. +* If both AttachDBFilename and Initial Catalog are specified and the given MDF file exists, the ObjectContext.DatabaseExists method returns true. Previously, it returned false. +* If both AttachDBFilename and Initial Catalog are specified and the given MDF file exists, calling the ObjectContext.DeleteDatabase method deletes the files. * If ObjectContext.DeleteDatabase is called when the connection string specifies an AttachDBFilename value with an MDF that doesn't exist and an Initial Catalog that doesn't exist, the method throws an InvalidOperationException exception. Previously, it threw a SqlException exception. - [ ] Quirked diff --git a/Documentation/compatibility/horizontal-scrolling-and-virtualization.md b/Documentation/compatibility/horizontal-scrolling-and-virtualization.md index ec2ec1fc7..7016c20bb 100644 --- a/Documentation/compatibility/horizontal-scrolling-and-virtualization.md +++ b/Documentation/compatibility/horizontal-scrolling-and-virtualization.md @@ -16,7 +16,7 @@ This change applies to an own virtualization in the direction orthogonal to the main scrolling direction (the chief example is with -EnableColumnVirtualization="True"). The outcome of certain horizontal scolling +EnableColumnVirtualization="True"). The outcome of certain horizontal scrolling operations has been changed to produce results that are more intuitive and more analogous to the results of comparable vertical operations. diff --git a/Documentation/compatibility/icommand_canexecutechanged-event-behaviour-changed-in-_net-4_5.md b/Documentation/compatibility/icommand_canexecutechanged-event-behaviour-changed-in-_net-4_5.md index b94173fe6..d72dde089 100644 --- a/Documentation/compatibility/icommand_canexecutechanged-event-behaviour-changed-in-_net-4_5.md +++ b/Documentation/compatibility/icommand_canexecutechanged-event-behaviour-changed-in-_net-4_5.md @@ -17,7 +17,7 @@ Planned In the .NET Framework 4.5, a was ignored unless the sender of the event was the same object as the object that -raised the event. This bug was fixed in .NET Framework 4.5 servcing updates. +raised the event. This bug was fixed in .NET Framework 4.5 servicing updates. - [ ] Quirked - [ ] Build-time break diff --git a/Documentation/compatibility/ipad-should-not-be-used-in-custom-capabilities-file-because-it-is-now-a-browser-capability.md b/Documentation/compatibility/ipad-should-not-be-used-in-custom-capabilities-file-because-it-is-now-a-browser-capability.md index 212b3a00b..d109cd2a4 100644 --- a/Documentation/compatibility/ipad-should-not-be-used-in-custom-capabilities-file-because-it-is-now-a-browser-capability.md +++ b/Documentation/compatibility/ipad-should-not-be-used-in-custom-capabilities-file-because-it-is-now-a-browser-capability.md @@ -10,7 +10,7 @@ Edge Planned ### Change Description -Beginning in .NET 4.5, iPad is an identifier in the default ASP.NET browser capabilities file, so it should not be used in a custom capabilties file +Beginning in .NET 4.5, iPad is an identifier in the default ASP.NET browser capabilities file, so it should not be used in a custom capabilities file - [ ] Quirked - [ ] Build-time break diff --git a/Documentation/compatibility/list_sort-algorithm-changed.md b/Documentation/compatibility/list_sort-algorithm-changed.md index 7ac4607e6..671ee3c2c 100644 --- a/Documentation/compatibility/list_sort-algorithm-changed.md +++ b/Documentation/compatibility/list_sort-algorithm-changed.md @@ -11,7 +11,7 @@ Not planned ### Change Description -Begining in .NET Framework 4.5, +Beginning in .NET Framework 4.5, 's sort algorithm has changed (to be an introspective sort instead of a quick sort). 's sort has never diff --git a/Documentation/compatibility/marshal_sizeof-and-marshal_ptrtostructure-overloads-break-dynamic-code.md b/Documentation/compatibility/marshal_sizeof-and-marshal_ptrtostructure-overloads-break-dynamic-code.md index c6f11a50e..797260b3f 100644 --- a/Documentation/compatibility/marshal_sizeof-and-marshal_ptrtostructure-overloads-break-dynamic-code.md +++ b/Documentation/compatibility/marshal_sizeof-and-marshal_ptrtostructure-overloads-break-dynamic-code.md @@ -27,7 +27,7 @@ have been added that may be ambiguous to the scripting engines. ### Recommended Action -Update scripts to clearly indicate which overload shouldbe used. This can +Update scripts to clearly indicate which overload should be used. This can typically done by explicitly casting the methods' type parameters as . See [this link](https://support.microsoft.com/en-us/kb/2909958/) for more detail and examples of how to workaround the issue. diff --git a/Documentation/compatibility/missing-target-framework-moniker-results-in-4_0-behavior.md b/Documentation/compatibility/missing-target-framework-moniker-results-in-4_0-behavior.md index b394e6aca..5ab4743b8 100644 --- a/Documentation/compatibility/missing-target-framework-moniker-results-in-4_0-behavior.md +++ b/Documentation/compatibility/missing-target-framework-moniker-results-in-4_0-behavior.md @@ -18,7 +18,7 @@ applied at the assembly level will automatically run using the semantics that all binaries be explicitly attributed with a indicating the version of the .NET Framework they were built with. Note that -using a target framework moniker in a project file will caues MSBuild to +using a target framework moniker in a project file will cause MSBuild to automatically apply a . diff --git a/Documentation/compatibility/soapformatter-cannot-deserialize-hashtable-and-similar-ordered-collection-objects.md b/Documentation/compatibility/soapformatter-cannot-deserialize-hashtable-and-similar-ordered-collection-objects.md index dd283859b..8dfb59f08 100644 --- a/Documentation/compatibility/soapformatter-cannot-deserialize-hashtable-and-similar-ordered-collection-objects.md +++ b/Documentation/compatibility/soapformatter-cannot-deserialize-hashtable-and-similar-ordered-collection-objects.md @@ -16,7 +16,7 @@ does not guarantee that objects serialized under one .NET Framework version will successfully deserialize under a different version. Specifically, some ordered collections (like ) added members between 4.0 and 4.5 such that objects of these types cannot -deserialize with .NET 4.0 if they were serialzied with .NET 4.5. Note that if +deserialize with .NET 4.0 if they were serialized with .NET 4.5. Note that if the serialized data is both serialized and deserialized with the same .NET Framework version, no issue will occur. diff --git a/Documentation/compatibility/wpf-datatemplate-elements-are-now-visible-to-uia.md b/Documentation/compatibility/wpf-datatemplate-elements-are-now-visible-to-uia.md index ee4bf0311..e82b31b35 100644 --- a/Documentation/compatibility/wpf-datatemplate-elements-are-now-visible-to-uia.md +++ b/Documentation/compatibility/wpf-datatemplate-elements-are-now-visible-to-uia.md @@ -22,7 +22,7 @@ elements. ### Recommended Action -UI Auomation tests for this app may need updated to account for the UIA tree now +UI Automation tests for this app may need updated to account for the UIA tree now including previously invisible elements. For example, tests that expect some elements to be next to each other may now need to expect diff --git a/Documentation/compatibility/x509certificate2_tostring(bool)-does-not-throw-now-when-_net-cannot-handle-the-certificate.md b/Documentation/compatibility/x509certificate2_tostring(bool)-does-not-throw-now-when-_net-cannot-handle-the-certificate.md index 2dab63bbc..53645f1c7 100644 --- a/Documentation/compatibility/x509certificate2_tostring(bool)-does-not-throw-now-when-_net-cannot-handle-the-certificate.md +++ b/Documentation/compatibility/x509certificate2_tostring(bool)-does-not-throw-now-when-_net-cannot-handle-the-certificate.md @@ -14,7 +14,7 @@ Available Previously, this method would throw if `true` was passed for the verbose parameter and there were certificates installed that weren't supported by the .NET Framework. Now, the method will succeed and return a valid string that -omits the inaccessible portions of the certifiate. +omits the inaccessible portions of the certificate. - [ ] Quirked - [ ] Build-time break diff --git a/Documentation/compatibility/xslt-style-sheet-exception-message-changed.md b/Documentation/compatibility/xslt-style-sheet-exception-message-changed.md index d29be625b..54b7a16c0 100644 --- a/Documentation/compatibility/xslt-style-sheet-exception-message-changed.md +++ b/Documentation/compatibility/xslt-style-sheet-exception-message-changed.md @@ -22,7 +22,7 @@ same, so this change should have no real impact. ### Recommended Action -Update any app code depending on the excepton message from this error condition +Update any app code depending on the exception message from this error condition to expect the new message, or (even better) update the code to depend only on the exception type (), which has not changed. From 59f71d2ce5bbd7e7e3784a410ac2e33f79c3e436 Mon Sep 17 00:00:00 2001 From: Josh Free Date: Wed, 23 Aug 2017 16:26:04 -0700 Subject: [PATCH 415/872] Add feedback section to readme --- releases/UWP/README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/releases/UWP/README.md b/releases/UWP/README.md index 1d79b4ba3..85fc598c8 100644 --- a/releases/UWP/README.md +++ b/releases/UWP/README.md @@ -16,3 +16,7 @@ You can see what was included in each .NET Native (Microsoft.NETCore.UniversalWi - [Microsoft.NETCore.UniversalWindowsPlatform NuGet Package Details](https://www.nuget.org/packages/Microsoft.NETCore.UniversalWindowsPlatform) - [Windows Dev Center](https://developer.microsoft.com/en-us/windows/apps/getstarted) - [Downloads and tools for Windows 10](https://developer.microsoft.com/en-us/windows/downloads) + +## Provide Feedback + +Please continue to send questions and suggestions to dotnetnative@microsoft.com. We look forward to hearing from you and seeing what great things you will build. From 4cedc7d79bbdd5116532a5b5ab022dc393c9696a Mon Sep 17 00:00:00 2001 From: Christopher Johnson Date: Mon, 28 Aug 2017 22:10:03 -0500 Subject: [PATCH 416/872] Add headers to dotnet-consumer-projects.md --- dotnet-consumer-projects.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/dotnet-consumer-projects.md b/dotnet-consumer-projects.md index a7fa923f9..05d6cadce 100644 --- a/dotnet-consumer-projects.md +++ b/dotnet-consumer-projects.md @@ -4,20 +4,20 @@ This community maintained list showcases .NET open source consumer projects. It Please sort projects alphabetically and provide a one-line description. GitHub/CodePlex (or other source) links are preferred, but feel free to also include marketing sites. Create new sections, as appropriate. -* Media Streaming/Media file Editor +## Media Streaming/Media file Editor * [Media Browser](https://github.com/mediabrowser/) - [www.mediabrowser.tv](http://www.mediabrowser.tv) - A client/server application that allows you to easily manage your own media content and present it in an eye catching way. Server runs on Windows, Linux and Mac. Clients are for WP, Android, iOS, Media Centre, Windows, Roku, etc. * [Pinta](https://github.com/PintaProject/Pinta) - simple drawing/editing program modeled after Paint.NET -* Audio players +## Audio players * [Banshee](https://github.com/GNOME/banshee) - A cross-platform multimedia player * [Espera](https://github.com/flagbug/Espera) - A media player that plays your music, YouTube videos, SoundCloud songs, has a special "party mode" and an Android remote control. * [Simple Music Player](https://github.com/punker76/simple-music-player) SimpleMP or Simple Music Player is a simple and easy to use music player for free. It plays the most common music files (mp3, ogg, wma, wav) in a simple way. * [Waf Music Manager](http://wmm.codeplex.com) – is a simple and fast application that makes fun to manage the local music collection. -* Internet/Chat Applications +## Internet/Chat Applications * [Smuxi IM](https://github.com/meebey/smuxi) - free, distributed and user-friendly IRC / Twitter / XMPP / Campfire / JabbR client for Linux, Windows and Mac OS X -* Utilities +## Utilities * [Gmail Notifier Plus](https://github.com/shellscape/Gmail-Notifier-Plus) - An app to monitor multiple Gmail and Google Apps for Work Gmail accounts from a single, compact point, sitting in Windows 7/8/8.1 taskbar. * [YouCast](https://github.com/I3arnon/YouCast) - YouCast allows you to subscribe to video feeds on YouTube as podcasts in any standard podcatcher like iTunes, BeyondPod on Adroid or even Zune PC and so forth. * [Ember](https://github.com/Embershot/Ember) - Simple & Beautiful Screenshot App @@ -25,13 +25,13 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [Waf File Hash Generator](http://fhg.codeplex.com) - is a simple tool to generate the hash values of one or more files. It supports: SHA512, SHA256, SHA1 and MD5 in hexadecimal or Base64 format. * [Zero Install](https://github.com/0install/0install-win) - [0install.de](http://0install.de/) - is a decentralized cross-platform software-installation system. Run apps with a single click or control every detail. -* Administration +## Administration * [OpenPetra](https://github.com/openpetra/openpetra) - [www.openpetra.org](https://www.openpetra.org) - An administration software for charities that can be used to manage personnel, supporters, book keeping, gift receipting, accounts payable, conferences etc. -* Crypto Currency +## Crypto Currency * [CoiniumServ](https://github.com/CoiniumServ/CoiniumServ) - a high performance, extremely efficient, platform-agnostic, easy to setup bitcoin & alt-coin pool server implementation. It features stratum services, reward, payment, share processors, vardiff & ban managers, user-friendly embedded web-server & front-end and a full-stack API. -* Online Algorithm Competitions +## Online Algorithm Competitions * [OpenJudgeSystem](https://github.com/NikolayIT/OpenJudgeSystem) - an open source system for online algorithm competitions. The algorithm competitions (currently available in C#, C++, JavaScript, Java and PHP programming languages) are timed contests where all contestants compete online and are given the same algorithmic problems to solve under the same time and memory constraints. This list is just a starting point - also take a look at all the projects on [CodePlex](http://www.codeplex.com/) and on [GitHub Trending C#](https://github.com/trending?l=csharp). From 2c0b3ffc03f6ba90563c143af560b525b13bf0c8 Mon Sep 17 00:00:00 2001 From: Connie Yau Date: Thu, 31 Aug 2017 10:44:10 -0700 Subject: [PATCH 417/872] Update spelling error in compat change 165 --- ...toserviceprovider-decryptor-provides-a-reusable-transform.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Documentation/compatibility/aescryptoserviceprovider-decryptor-provides-a-reusable-transform.md b/Documentation/compatibility/aescryptoserviceprovider-decryptor-provides-a-reusable-transform.md index 6a1b87bed..5e18f71d6 100644 --- a/Documentation/compatibility/aescryptoserviceprovider-decryptor-provides-a-reusable-transform.md +++ b/Documentation/compatibility/aescryptoserviceprovider-decryptor-provides-a-reusable-transform.md @@ -1,4 +1,4 @@ -## AesCrytpServiceProvider decryptor provides a reusable transform +## AesCryptoServiceProvider decryptor provides a reusable transform ### Scope Minor From a0f8c56f85dd7266424d9af2aa647812a45e2587 Mon Sep 17 00:00:00 2001 From: Mike Rousos Date: Wed, 6 Sep 2017 21:12:08 -0400 Subject: [PATCH 418/872] Remove 'ID' from the compat issue template Removed the 'ID' field from the compatibility issue template since we aren't tracking issues by ID number anymore. --- Documentation/compatibility/! Template.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Documentation/compatibility/! Template.md b/Documentation/compatibility/! Template.md index 629f5ef1a..5b0354868 100644 --- a/Documentation/compatibility/! Template.md +++ b/Documentation/compatibility/! Template.md @@ -1,4 +1,4 @@ -## [|ID - Chose next available number|]: [|Breaking Change Title|] +## [|Breaking Change Title|] // There is no built in way to do comments in Markdown, so this C# style comment used to mark comments. Please remove all of these before submission // Please use proper markdown syntax for code snippets. See http://daringfireball.net/projects/markdown/syntax for examples From 97b57bda02efb0496b4a5d26eb7ead4464f41340 Mon Sep 17 00:00:00 2001 From: merriemcgaw Date: Tue, 12 Sep 2017 16:58:27 -0700 Subject: [PATCH 419/872] Tanya's content and Ron's feedback --- .../winforms-accessibility-changes-471.md | 124 ++++++++++++++++++ 1 file changed, 124 insertions(+) create mode 100644 Documentation/compatibility/winforms-accessibility-changes-471.md diff --git a/Documentation/compatibility/winforms-accessibility-changes-471.md b/Documentation/compatibility/winforms-accessibility-changes-471.md new file mode 100644 index 000000000..20dd716ca --- /dev/null +++ b/Documentation/compatibility/winforms-accessibility-changes-471.md @@ -0,0 +1,124 @@ +## 195: Accessibility improvements in Windows Forms controls + +### Scope +Major + +### Version Introduced +4.7.1 + +### Source Analyzer Status +NotPlanned + +### Change Description +Windows Forms Framework is improving how it works with accessibility technologies to better support Windows Forms customers. These include the following changes: +- Changes to improve display during High Contrast mode. +- Changes to improve the property browser experience. Property browser improvements include: + - Better keyboard navigation through the various drop-down selection windows. + - Reduced unnecessary tab stops. + - Better reporting of control types. + - Improved narrator behavior. +- Changes to implement missing UI accessibility patterns in controls. + +- [x] Quirked +- [ ] Build-time break + +### Recommended Action +__How to opt in or out of these changes__ + +In order for the application to benefit from these changes, it must run on the .NET Framework 4.7.1 or later. The application can benefit from these changes in either of the following ways: +- It is recompiled to target the .NET Framework 4.7.1. +- It opts out of the legacy accessibility behaviors by adding the following [AppContext Switch](https://docs.microsoft.com/en-us/dotnet/framework/configure-apps/file-schema/runtime/appcontextswitchoverrides-element) to the `````` section of the app config file and setting it to false, as the following example shows. +``` + + + + + + + + + + +``` +pplications that target the .NET Framework 4.7.1 or later and want to preserve the legacy accessibility behavior can opt in to the use of legacy accessibility features by explicitly setting this AppContext switch to ```true```. + +For an overview of UI automation, see the [UI Automation Overview](https://docs.microsoft.com/en-us/dotnet/framework/ui-automation/ui-automation-overview). + +__Added support for UI Automation patterns and properties__ + +The .NET Framework 4.7.1 adds support for the fillowing UI automation patterns and properties: +- The `T:System.Windows.Forms.ToolStripSplitButton` and `T:System.Windows.Forms.ComboBox` controls support the [Expand/Collapse pattern](https://docs.microsoft.com/en-us/dotnet/framework/ui-automation/implementing-the-ui-automation-expandcollapse-control-pattern) +- The `T:System.Windows.Forms.ToolStripMenuItem` control supports the [ControlType](https://docs.microsoft.com/en-us/dotnet/framework/ui-automation/ui-automation-support-for-the-menubar-control-type) property value "MenuItem" +- The `T:System.Windows.Forms.ToolStripItem` controls supports the [Name](https://docs.microsoft.com/en-us/dotnet/api/system.windows.automation.automationelement.nameproperty?view=netframework-4.7) property and [Expand/Collapse pattern](https://docs.microsoft.com/en-us/dotnet/framework/ui-automation/implementing-the-ui-automation-expandcollapse-control-pattern) +- [AccessibleEvents](https://docs.microsoft.com/en-us/dotnet/api/system.windows.forms.accessibleevents?view=netframework-4.7) indicating StateChange and NameChange when drop down is expanded or collapsed to `T:System.Windows.Forms.ToolStripDropDownItem` +- The `T:System.Windows.Forms.ToolStripDropDownButton` control property has a ControlType property value of `F:System.Windows.Automation.ControlType.Button` +- `T:System.Windows.Forms.DataGridViewCheckBoxCell` control supports the [Toggle Pattern](https://docs.microsoft.com/en-us/dotnet/api/system.windows.automation.togglepattern?view=netframework-4.7) + +__Improvements to PropertyBrowser control__ + +The .NET Framework 4.7.1 adds the following improvements to the PropertyBrowser control: +- The __Details__ button in the error dialog that is displayed when the user enters an incorrect value in the T:System.Windows.Forms.PropertyGrid control supports the Expand/Collapse pattern, state and name change notifications, and a ControlType property with a value of "Button". +- The [AccessibleRole](https://docs.microsoft.com/en-us/dotnet/api/system.windows.forms.accessiblerole?view=netframework-4.7) of rows in PropertyGrid control have changed from "Row" to "Cell". The cell maps to UIA ControlType "DataItem", which allows it to support appropriate keyboard shortcuts and Narrator announcements. +- Improved keyboard navigation between the grid and the ToolBar above it. Pressing "Shift-Tab" now selects the first ToolBar button, instead of the whole ToolBar + +__Use of OS-defined colors in High Contrast themes__ + +- `T:System.Windows.Forms.Button` and `T:System.Windows.Forms.CheckBox` controls with `P:System.Windows.Forms.Control.FlatStyle` set to `F:System.Windows.Forms.FlatStyle.Standard`, which is the default style, now use OS-defined colors in High Contrast theme when selected. Previously, test and background colors were not contrasting and were hard to read. +- `T:System.Windows.Forms.Button`, `T:System.Windows.Forms.CheckBox`, `T:System.Windows.Forms.RadioButton`, `T:System.Windows.Forms.Label`, `T:System.Windows.Forms.LinkLabel` and `T:System.Windows.Forms.GroupBox` with`P:System.Windows.Forms.Control.Enabled` set to _false_, used a shaded color to rendered text in High Contrast themes, resulting in low contrast against the background. Now these controls use "Disabled Text" color defined by the OS. This fix applies to control with `P:System.Windows.Forms.Control.FlatStyle` set value other than `F:System.Windows.Forms.FlatStyle.System`. The latter controls are rendered by the OS. + +NOTE: Windows10 has changed values for some high contrast system colors. Windows Forms Framework is based on Win32 framework. For the best experience, run on the latest version of Windows and opt in to the latest OS changes by adding an app.manifest file in a test application and uncommenting the following code: +``` +     +     +``` +__Improved keyboard navigation__ + +- When `T:System.Windows.Forms.ComboBox` control has `P:System.Windows.Forms.ComboBox.DropDownStyle` set to `F:System.Windows.Forms.DropDownStyle.DropDownList`, and is the first control in the TabOrder on the form, it is now displaying focus rectangle when the parent form is opened using the keyboard. Before this change, keyboard focus was on this control, but focus indicator was not rendered. + +### Affected APIs +* `M:System.Windows.Forms.ToolStripDropDownButton.CreateAccessibilityInstance` +* `P:System.Windows.Forms.DomainUpDown.DomainUpDownAccessibleObject.Name` + +### Category +Windows Forms + + + + + From cc69c67b1c4877336854b3b7c065d42597adfc7d Mon Sep 17 00:00:00 2001 From: merriemcgaw Date: Thu, 14 Sep 2017 10:38:17 -0700 Subject: [PATCH 420/872] Next round of changes Second round of feedback plus a couple of bugs. --- .../winforms-accessibility-changes-471.md | 102 ++++++++++-------- 1 file changed, 55 insertions(+), 47 deletions(-) diff --git a/Documentation/compatibility/winforms-accessibility-changes-471.md b/Documentation/compatibility/winforms-accessibility-changes-471.md index 20dd716ca..5735ce0b5 100644 --- a/Documentation/compatibility/winforms-accessibility-changes-471.md +++ b/Documentation/compatibility/winforms-accessibility-changes-471.md @@ -27,7 +27,7 @@ __How to opt in or out of these changes__ In order for the application to benefit from these changes, it must run on the .NET Framework 4.7.1 or later. The application can benefit from these changes in either of the following ways: - It is recompiled to target the .NET Framework 4.7.1. -- It opts out of the legacy accessibility behaviors by adding the following [AppContext Switch](https://docs.microsoft.com/en-us/dotnet/framework/configure-apps/file-schema/runtime/appcontextswitchoverrides-element) to the `````` section of the app config file and setting it to false, as the following example shows. +- It opts out of the legacy accessibility behaviors by adding the following [AppContext Switch](https://docs.microsoft.com/dotnet/framework/configure-apps/file-schema/runtime/appcontextswitchoverrides-element) to the `````` section of the app config file and setting it to false, as the following example shows. ``` @@ -40,44 +40,51 @@ In order for the application to benefit from these changes, it must run on the .
``` -pplications that target the .NET Framework 4.7.1 or later and want to preserve the legacy accessibility behavior can opt in to the use of legacy accessibility features by explicitly setting this AppContext switch to ```true```. +Applications that target the .NET Framework 4.7.1 or later and want to preserve the legacy accessibility behavior can opt in to the use of legacy accessibility features by explicitly setting this AppContext switch to ```true```. -For an overview of UI automation, see the [UI Automation Overview](https://docs.microsoft.com/en-us/dotnet/framework/ui-automation/ui-automation-overview). +For an overview of UI automation, see the [UI Automation Overview](https://docs.microsoft.com/dotnet/framework/ui-automation/ui-automation-overview). __Added support for UI Automation patterns and properties__ The .NET Framework 4.7.1 adds support for the fillowing UI automation patterns and properties: -- The `T:System.Windows.Forms.ToolStripSplitButton` and `T:System.Windows.Forms.ComboBox` controls support the [Expand/Collapse pattern](https://docs.microsoft.com/en-us/dotnet/framework/ui-automation/implementing-the-ui-automation-expandcollapse-control-pattern) -- The `T:System.Windows.Forms.ToolStripMenuItem` control supports the [ControlType](https://docs.microsoft.com/en-us/dotnet/framework/ui-automation/ui-automation-support-for-the-menubar-control-type) property value "MenuItem" -- The `T:System.Windows.Forms.ToolStripItem` controls supports the [Name](https://docs.microsoft.com/en-us/dotnet/api/system.windows.automation.automationelement.nameproperty?view=netframework-4.7) property and [Expand/Collapse pattern](https://docs.microsoft.com/en-us/dotnet/framework/ui-automation/implementing-the-ui-automation-expandcollapse-control-pattern) -- [AccessibleEvents](https://docs.microsoft.com/en-us/dotnet/api/system.windows.forms.accessibleevents?view=netframework-4.7) indicating StateChange and NameChange when drop down is expanded or collapsed to `T:System.Windows.Forms.ToolStripDropDownItem` -- The `T:System.Windows.Forms.ToolStripDropDownButton` control property has a ControlType property value of `F:System.Windows.Automation.ControlType.Button` -- `T:System.Windows.Forms.DataGridViewCheckBoxCell` control supports the [Toggle Pattern](https://docs.microsoft.com/en-us/dotnet/api/system.windows.automation.togglepattern?view=netframework-4.7) - +- The `T:System.Windows.Forms.ToolStripSplitButton` and `T:System.Windows.Forms.ComboBox` controls support the [Expand/Collapse pattern](https://docs.microsoft.com/dotnet/framework/ui-automation/implementing-the-ui-automation-expandcollapse-control-pattern) +- The `T:System.Windows.Forms.ToolStripMenuItem` control has a [ControlType](https://docs.microsoft.com/dotnet/framework/ui-automation/ui-automation-support-for-the-menubar-control-type) property value +- The `T:System.Windows.Forms.ToolStripItem` control supports the [Name](https://docs.microsoft.com/dotnet/api/system.windows.automation.automationelement.nameproperty) property and [Expand/Collapse pattern](https://docs.microsoft.com/dotnet/framework/ui-automation/implementing-the-ui-automation-expandcollapse-control-pattern) +- The `T:System.Windows.Forms.ToolStripDropDownItem` control supports [AccessibleEvents](https://docs.microsoft.com/dotnet/api/system.windows.forms.accessibleevents) indicating StateChange and NameChange when drop down is expanded or collapsed. +- The `T:System.Windows.Forms.ToolStripDropDownButton` control has a [ControlType](https://docs.microsoft.com/dotnet/framework/ui-automation/ui-automation-support-for-the-menubar-control-type) property value of +- The `T:System.Windows.Forms.DataGridViewCheckBoxCell` control supports the [Toggle Pattern](https://docs.microsoft.com/dotnet/api/system.windows.automation.togglepattern) + __Improvements to PropertyBrowser control__ The .NET Framework 4.7.1 adds the following improvements to the PropertyBrowser control: -- The __Details__ button in the error dialog that is displayed when the user enters an incorrect value in the T:System.Windows.Forms.PropertyGrid control supports the Expand/Collapse pattern, state and name change notifications, and a ControlType property with a value of "Button". -- The [AccessibleRole](https://docs.microsoft.com/en-us/dotnet/api/system.windows.forms.accessiblerole?view=netframework-4.7) of rows in PropertyGrid control have changed from "Row" to "Cell". The cell maps to UIA ControlType "DataItem", which allows it to support appropriate keyboard shortcuts and Narrator announcements. -- Improved keyboard navigation between the grid and the ToolBar above it. Pressing "Shift-Tab" now selects the first ToolBar button, instead of the whole ToolBar +- The __Details__ button in the error dialog that is displayed when the user enters an incorrect value in the T:System.Windows.Forms.PropertyGrid control supports the Expand/Collapse pattern, state and name change notifications, and a [ControlType](https://docs.microsoft.com/dotnet/framework/ui-automation/ui-automation-support-for-the-menubar-control-type) property with a value of . +- The [AccessibleRole](https://docs.microsoft.com/dotnet/api/system.windows.forms.accessiblerole) of rows in PropertyGrid control have changed from "Row" to "Cell". The cell maps to UIA ControlType "DataItem", which allows it to support appropriate keyboard shortcuts and Narrator announcements. +- Improved keyboard navigation between the grid and the toolbar above it. Pressing "Shift-Tab" now selects the first ToolBar button, instead of the whole ToolBar __Use of OS-defined colors in High Contrast themes__ - `T:System.Windows.Forms.Button` and `T:System.Windows.Forms.CheckBox` controls with `P:System.Windows.Forms.Control.FlatStyle` set to `F:System.Windows.Forms.FlatStyle.Standard`, which is the default style, now use OS-defined colors in High Contrast theme when selected. Previously, test and background colors were not contrasting and were hard to read. - `T:System.Windows.Forms.Button`, `T:System.Windows.Forms.CheckBox`, `T:System.Windows.Forms.RadioButton`, `T:System.Windows.Forms.Label`, `T:System.Windows.Forms.LinkLabel` and `T:System.Windows.Forms.GroupBox` with`P:System.Windows.Forms.Control.Enabled` set to _false_, used a shaded color to rendered text in High Contrast themes, resulting in low contrast against the background. Now these controls use "Disabled Text" color defined by the OS. This fix applies to control with `P:System.Windows.Forms.Control.FlatStyle` set value other than `F:System.Windows.Forms.FlatStyle.System`. The latter controls are rendered by the OS. +- `T:System.Windows.Forms.DataGridView` now renders a visible rectangle around the content of the cell which has the current focus. Previously, this was not visible in certain High Contrast themes. -NOTE: Windows10 has changed values for some high contrast system colors. Windows Forms Framework is based on Win32 framework. For the best experience, run on the latest version of Windows and opt in to the latest OS changes by adding an app.manifest file in a test application and uncommenting the following code: +NOTE: Windows10 has changed values for some high contrast system colors. Windows Forms Framework is based on the Win32 framework. For the best experience, run on the latest version of Windows and opt in to the latest OS changes by adding an app.manifest file in a test application and uncommenting the following code: ```         ``` __Improved keyboard navigation__ -- When `T:System.Windows.Forms.ComboBox` control has `P:System.Windows.Forms.ComboBox.DropDownStyle` set to `F:System.Windows.Forms.DropDownStyle.DropDownList`, and is the first control in the TabOrder on the form, it is now displaying focus rectangle when the parent form is opened using the keyboard. Before this change, keyboard focus was on this control, but focus indicator was not rendered. +- When a `T:System.Windows.Forms.ComboBox` control has `P:System.Windows.Forms.ComboBox.DropDownStyle` set to `F:System.Windows.Forms.DropDownStyle.DropDownList` and is the first control in the tab order on the form, it now displays a focus rectangle when the parent form is opened using the keyboard. Before this change, keyboard focus was on this control, but a focus indicator was not rendered. + +__Improved Narrator support__ +- The `T:Sysetm.Windows.Forms.MonthCalendar`control has added support for assistive technologies to access the control, inclding the ability for Narrator to read the value of the control when previously it could not. + ### Affected APIs * `M:System.Windows.Forms.ToolStripDropDownButton.CreateAccessibilityInstance` * `P:System.Windows.Forms.DomainUpDown.DomainUpDownAccessibleObject.Name` +* `T:Sysetm.Windows.Forms.MonthCalendar.MonthCalendarAccessibleObject` +* ### Category Windows Forms @@ -85,38 +92,39 @@ Windows Forms From ac034ac03908499b470395d903c7f7394d71d5b5 Mon Sep 17 00:00:00 2001 From: Ron Petrusha Date: Thu, 14 Sep 2017 11:13:25 -0700 Subject: [PATCH 421/872] Fixed version reverted --- ...ttpruntime-appdomainapppath-throws-nullreferenceexception.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Documentation/compatibility/asp-net-httpruntime-appdomainapppath-throws-nullreferenceexception.md b/Documentation/compatibility/asp-net-httpruntime-appdomainapppath-throws-nullreferenceexception.md index b0b79d8aa..5915c46f3 100644 --- a/Documentation/compatibility/asp-net-httpruntime-appdomainapppath-throws-nullreferenceexception.md +++ b/Documentation/compatibility/asp-net-httpruntime-appdomainapppath-throws-nullreferenceexception.md @@ -7,7 +7,7 @@ Edge 4.6.2 ### Version Reverted -4.6.3 +4.7 ### Source Analyzer Status NotPlanned From 9d85267859cf8b784b38bbb814a983c53585292e Mon Sep 17 00:00:00 2001 From: merriemcgaw Date: Fri, 15 Sep 2017 16:20:21 -0700 Subject: [PATCH 422/872] More bugs --- .../winforms-accessibility-changes-471.md | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/Documentation/compatibility/winforms-accessibility-changes-471.md b/Documentation/compatibility/winforms-accessibility-changes-471.md index 5735ce0b5..0954f6c05 100644 --- a/Documentation/compatibility/winforms-accessibility-changes-471.md +++ b/Documentation/compatibility/winforms-accessibility-changes-471.md @@ -53,19 +53,23 @@ The .NET Framework 4.7.1 adds support for the fillowing UI automation patterns a - The `T:System.Windows.Forms.ToolStripDropDownItem` control supports [AccessibleEvents](https://docs.microsoft.com/dotnet/api/system.windows.forms.accessibleevents) indicating StateChange and NameChange when drop down is expanded or collapsed. - The `T:System.Windows.Forms.ToolStripDropDownButton` control has a [ControlType](https://docs.microsoft.com/dotnet/framework/ui-automation/ui-automation-support-for-the-menubar-control-type) property value of - The `T:System.Windows.Forms.DataGridViewCheckBoxCell` control supports the [Toggle Pattern](https://docs.microsoft.com/dotnet/api/system.windows.automation.togglepattern) +- The `T:System.Windows.Forms.NumericUpDown` and `T:System.Windows.Forms.DomainUpDown` controls support the [Name](https://docs.microsoft.com/dotnet/api/system.windows.automation.automationelement.nameproperty) and have a [ControlType](https://docs.microsoft.com/dotnet/framework/ui-automation/ui-automation-support-for-the-spinner-control-type) of and have support for the __Improvements to PropertyBrowser control__ The .NET Framework 4.7.1 adds the following improvements to the PropertyBrowser control: -- The __Details__ button in the error dialog that is displayed when the user enters an incorrect value in the T:System.Windows.Forms.PropertyGrid control supports the Expand/Collapse pattern, state and name change notifications, and a [ControlType](https://docs.microsoft.com/dotnet/framework/ui-automation/ui-automation-support-for-the-menubar-control-type) property with a value of . +- The __Details__ button in the error dialog that is displayed when the user enters an incorrect value in the `T:System.Windows.Forms.PropertyGrid` control supports the Expand/Collapse pattern, state and name change notifications, and a [ControlType](https://docs.microsoft.com/dotnet/framework/ui-automation/ui-automation-support-for-the-menubar-control-type) property with a value of . - The [AccessibleRole](https://docs.microsoft.com/dotnet/api/system.windows.forms.accessiblerole) of rows in PropertyGrid control have changed from "Row" to "Cell". The cell maps to UIA ControlType "DataItem", which allows it to support appropriate keyboard shortcuts and Narrator announcements. - Improved keyboard navigation between the grid and the toolbar above it. Pressing "Shift-Tab" now selects the first ToolBar button, instead of the whole ToolBar __Use of OS-defined colors in High Contrast themes__ -- `T:System.Windows.Forms.Button` and `T:System.Windows.Forms.CheckBox` controls with `P:System.Windows.Forms.Control.FlatStyle` set to `F:System.Windows.Forms.FlatStyle.Standard`, which is the default style, now use OS-defined colors in High Contrast theme when selected. Previously, test and background colors were not contrasting and were hard to read. -- `T:System.Windows.Forms.Button`, `T:System.Windows.Forms.CheckBox`, `T:System.Windows.Forms.RadioButton`, `T:System.Windows.Forms.Label`, `T:System.Windows.Forms.LinkLabel` and `T:System.Windows.Forms.GroupBox` with`P:System.Windows.Forms.Control.Enabled` set to _false_, used a shaded color to rendered text in High Contrast themes, resulting in low contrast against the background. Now these controls use "Disabled Text" color defined by the OS. This fix applies to control with `P:System.Windows.Forms.Control.FlatStyle` set value other than `F:System.Windows.Forms.FlatStyle.System`. The latter controls are rendered by the OS. +- `T:System.Windows.Forms.Button` and `T:System.Windows.Forms.CheckBox` controls with `P:System.Windows.Forms.Control.FlatStyle` set to `F:System.Windows.Forms.FlatStyle.Standard`, which is the default style, now use OS-defined colors in High Contrast theme when selected. Previously, text and background colors were not contrasting and were hard to read. +- `T:System.Windows.Forms.Button`, `T:System.Windows.Forms.CheckBox`, `T:System.Windows.Forms.RadioButton`, `T:System.Windows.Forms.Label`, `T:System.Windows.Forms.LinkLabel` and `T:System.Windows.Forms.GroupBox` with`P:System.Windows.Forms.Control.Enabled` set to _false_, used a shaded color to rendered text in High Contrast themes, resulting in low contrast against the background. Now these controls use "Disabled Text" color defined by the OS. This fix applies to control with `P:System.Windows.Forms.Control.FlatStyle` property set to a value other than `F:System.Windows.Forms.FlatStyle.System`. The latter controls are rendered by the OS. - `T:System.Windows.Forms.DataGridView` now renders a visible rectangle around the content of the cell which has the current focus. Previously, this was not visible in certain High Contrast themes. +- `T:System.Windows.Forms.ToolStripMenuItem` controls with a `P:System.Windows.Forms.ToolStripItem.Enabled` property set to _false_ now use the "Disabled Text" color defined by the OS. +- `T:System.Windows.Forms.ToolStripMenuItem` controls with a `P:System.Windows.Forms.ToolStripItem.Checked` property set to _true_ now render the associated check mark in a contrasting system color. Previously the check mark color was not contrasting enough and not visible in High Contrast themes. +- NOTE: Windows10 has changed values for some high contrast system colors. Windows Forms Framework is based on the Win32 framework. For the best experience, run on the latest version of Windows and opt in to the latest OS changes by adding an app.manifest file in a test application and uncommenting the following code: ``` @@ -77,7 +81,13 @@ __Improved keyboard navigation__ - When a `T:System.Windows.Forms.ComboBox` control has `P:System.Windows.Forms.ComboBox.DropDownStyle` set to `F:System.Windows.Forms.DropDownStyle.DropDownList` and is the first control in the tab order on the form, it now displays a focus rectangle when the parent form is opened using the keyboard. Before this change, keyboard focus was on this control, but a focus indicator was not rendered. __Improved Narrator support__ -- The `T:Sysetm.Windows.Forms.MonthCalendar`control has added support for assistive technologies to access the control, inclding the ability for Narrator to read the value of the control when previously it could not. +- The `T:System.Windows.Forms.MonthCalendar` control has added support for assistive technologies to access the control, including the ability for Narrator to read the value of the control when previously it could not. +- The `T:System.Windows.Forms.CheckedListBox` control now notifies Narrator when the `P:System.Windows.Forms.CheckState` property has been changed. Previously, Narrator did not recieve notification and as a result users would not be informed that the `P:System.Windows.Forms.CheckState` had been updated. +- The `T:System.Windows.Forms.LinkLabel` control has changed the way it notifies Narrator of the text of in the control. Previously, Narrator announced this text twice and read "&" symbols as real text even though they are not visible to a user. The duplicated text was removed from the Narrator announcements, as well as unnecessary & symbols. +- The `T:System.Windows.Forms.DataGridViewCell` control types now correctly report the read-only status to Narrator and other assistive technologies. +- Narrator is now able to read the System Menu of child windows in [Multiple-Document Interface](https://docs.microsoft.com/en-us/dotnet/framework/winforms/advanced/multiple-document-interface-mdi-applications) applications. +- Narrator is now able to read `T:System.Windows.Forms.ToolStripMenuItem` controls with a `P:System.Windows.Forms.ToolStripItem.Enabled` property set to _false_. Previously, Narrator was unable to focus on disabled menu items to read hte content. +- ### Affected APIs From 9e3e85b05173fae82bbc884c92e0f4a59a05ce06 Mon Sep 17 00:00:00 2001 From: merriemcgaw Date: Mon, 18 Sep 2017 15:05:53 -0700 Subject: [PATCH 423/872] PropertyGrid changes Additional changes for the Property Grid plus some additional tweaks. --- .../winforms-accessibility-changes-471.md | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/Documentation/compatibility/winforms-accessibility-changes-471.md b/Documentation/compatibility/winforms-accessibility-changes-471.md index 0954f6c05..2763ee437 100644 --- a/Documentation/compatibility/winforms-accessibility-changes-471.md +++ b/Documentation/compatibility/winforms-accessibility-changes-471.md @@ -55,12 +55,21 @@ The .NET Framework 4.7.1 adds support for the fillowing UI automation patterns a - The `T:System.Windows.Forms.DataGridViewCheckBoxCell` control supports the [Toggle Pattern](https://docs.microsoft.com/dotnet/api/system.windows.automation.togglepattern) - The `T:System.Windows.Forms.NumericUpDown` and `T:System.Windows.Forms.DomainUpDown` controls support the [Name](https://docs.microsoft.com/dotnet/api/system.windows.automation.automationelement.nameproperty) and have a [ControlType](https://docs.microsoft.com/dotnet/framework/ui-automation/ui-automation-support-for-the-spinner-control-type) of and have support for the -__Improvements to PropertyBrowser control__ +__Improvements to PropertyGrid control__ The .NET Framework 4.7.1 adds the following improvements to the PropertyBrowser control: -- The __Details__ button in the error dialog that is displayed when the user enters an incorrect value in the `T:System.Windows.Forms.PropertyGrid` control supports the Expand/Collapse pattern, state and name change notifications, and a [ControlType](https://docs.microsoft.com/dotnet/framework/ui-automation/ui-automation-support-for-the-menubar-control-type) property with a value of . -- The [AccessibleRole](https://docs.microsoft.com/dotnet/api/system.windows.forms.accessiblerole) of rows in PropertyGrid control have changed from "Row" to "Cell". The cell maps to UIA ControlType "DataItem", which allows it to support appropriate keyboard shortcuts and Narrator announcements. +- The __Details__ button in the error dialog that is displayed when the user enters an incorrect value in the `T:System.Windows.Forms.PropertyGrid` control supports the [Expand/Collapse pattern](https://docs.microsoft.com/dotnet/framework/ui-automation/implementing-the-ui-automation-expandcollapse-control-pattern), state and name change notifications, and a [ControlType](https://docs.microsoft.com/dotnet/framework/ui-automation/ui-automation-support-for-the-menubar-control-type) property with a value of . +- The message pane displayed when the __Details__ button of the error dialog is now keyboard accessible and allows Narrator to announce the content of the error message. +- The [AccessibleRole](https://docs.microsoft.com/dotnet/api/system.windows.forms.accessiblerole) of rows in `T:System.Windows.Forms.PropertyGrid` control have changed from "Row" to "Cell". The cell maps to UIA ControlType "DataItem", which allows it to support appropriate keyboard shortcuts and Narrator announcements. +- The `T:System.Windows.Forms.PropertyGrid` control rows which represent header items when the has a `P:System.Windows.Forms.PropertySort` property set to `F:System.Windows.Forms.PropertySory.Categorized` have a [ControlType](https://docs.microsoft.com/dotnet/framework/ui-automation/ui-automation-support-for-the-menubar-control-type) property value +- The `T:System.Windows.Forms.PropertyGrid` control rows which represent header items when the has a `P:System.Windows.Forms.PropertySort` property set to `F:System.Windows.Forms.PropertySory.Categorized` support the [Expand/Collapse pattern](https://docs.microsoft.com/dotnet/framework/ui-automation/implementing-the-ui-automation-expandcollapse-control-pattern). - Improved keyboard navigation between the grid and the toolbar above it. Pressing "Shift-Tab" now selects the first ToolBar button, instead of the whole ToolBar +- `T:System.Windows.Forms.PropertyGrid` controls displayed in High Contrast mode will now draw a focus rectangle around the toolstrip button which corresponds to the current `P:System.Windows.Forms.PropertySort` property value. +- `T:System.Windows.Forms.PropertyGrid` controls displayed in High Contrast mode and with a `P:System.Windows.Forms.PropertySort` property set to `F:System.Windows.Forms.PropertySory.Categorized` will now display the background of category headers in a highly contrasting color. +- `T:System.Windows.Forms.PropertyGrid` controls better differentiates between toolstrip items with focus and the toolstrip item which indicates the current value of the `P:System.Windows.Forms.PropertySort` property. This fix consists of a High Contrast change and a change for non-High Contrast scenarios. +- `T:System.Windows.Forms.PropertyGrid` control toolstrip items which indicates the current value of the `P:System.Windows.Forms.PropertySort` property support the [Toggle Pattern](https://docs.microsoft.com/dotnet/api/system.windows.automation.togglepattern). +- Improved Narrator support for distinguishing the selected alignment in the Alignment Picker. +- When an empty `T:System.Windows.Forms.PropertyGrid` control is displayed on a form, it will now receive focus where previously it would not. __Use of OS-defined colors in High Contrast themes__ @@ -69,7 +78,7 @@ __Use of OS-defined colors in High Contrast themes__ - `T:System.Windows.Forms.DataGridView` now renders a visible rectangle around the content of the cell which has the current focus. Previously, this was not visible in certain High Contrast themes. - `T:System.Windows.Forms.ToolStripMenuItem` controls with a `P:System.Windows.Forms.ToolStripItem.Enabled` property set to _false_ now use the "Disabled Text" color defined by the OS. - `T:System.Windows.Forms.ToolStripMenuItem` controls with a `P:System.Windows.Forms.ToolStripItem.Checked` property set to _true_ now render the associated check mark in a contrasting system color. Previously the check mark color was not contrasting enough and not visible in High Contrast themes. -- + NOTE: Windows10 has changed values for some high contrast system colors. Windows Forms Framework is based on the Win32 framework. For the best experience, run on the latest version of Windows and opt in to the latest OS changes by adding an app.manifest file in a test application and uncommenting the following code: ``` From 29b24e02460f0f578ddb034d328d501d67a84e78 Mon Sep 17 00:00:00 2001 From: merriemcgaw Date: Tue, 19 Sep 2017 15:03:42 -0700 Subject: [PATCH 424/872] Added UIAutomation blurb Added blurb for Nikola's bug and overall UIAutomation improvements. --- .../compatibility/winforms-accessibility-changes-471.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Documentation/compatibility/winforms-accessibility-changes-471.md b/Documentation/compatibility/winforms-accessibility-changes-471.md index 2763ee437..12284ae81 100644 --- a/Documentation/compatibility/winforms-accessibility-changes-471.md +++ b/Documentation/compatibility/winforms-accessibility-changes-471.md @@ -46,6 +46,8 @@ For an overview of UI automation, see the [UI Automation Overview](https://docs. __Added support for UI Automation patterns and properties__ +Accessibility clients can take advantage of new WinForms accessibility functionality by using common, publicly described invocation patterns. These is not WinForms-specific. For instance, accessibility clients can call the QueryInterface method on the IAccessible interface (MAAS) to obtain an IServiceProvider interface. If this interface is available, clients can use its QueryService method to request an IAccessibleEx interface. For more information, see [Using IAccessibleEx from a Client](https://msdn.microsoft.com/en-us/library/windows/desktop/dd561924(v=vs.85).aspx). Starting with the .NET Framework 4.7.1, IServiceProvider and [IAccessibleEx]( https://msdn.microsoft.com/en-us/library/windows/desktop/dd561898(v=vs.85).aspx) (where applicable) are available for WinForms accessibility objects. + The .NET Framework 4.7.1 adds support for the fillowing UI automation patterns and properties: - The `T:System.Windows.Forms.ToolStripSplitButton` and `T:System.Windows.Forms.ComboBox` controls support the [Expand/Collapse pattern](https://docs.microsoft.com/dotnet/framework/ui-automation/implementing-the-ui-automation-expandcollapse-control-pattern) - The `T:System.Windows.Forms.ToolStripMenuItem` control has a [ControlType](https://docs.microsoft.com/dotnet/framework/ui-automation/ui-automation-support-for-the-menubar-control-type) property value From 9173710ca05c9e2c8d0944a8bab00c01189759cf Mon Sep 17 00:00:00 2001 From: Alicia Li Date: Wed, 20 Sep 2017 10:58:36 -0700 Subject: [PATCH 425/872] Create WCFSDKToolsAccessibilityChangesIn4.7.1 --- .../WCFSDKToolsAccessibilityChangesIn4.7.1 | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 Documentation/compatibility/WCFSDKToolsAccessibilityChangesIn4.7.1 diff --git a/Documentation/compatibility/WCFSDKToolsAccessibilityChangesIn4.7.1 b/Documentation/compatibility/WCFSDKToolsAccessibilityChangesIn4.7.1 new file mode 100644 index 000000000..aa4905dec --- /dev/null +++ b/Documentation/compatibility/WCFSDKToolsAccessibilityChangesIn4.7.1 @@ -0,0 +1,23 @@ +##Improved accessibility for some .NET SDK tools + +###Scope +Edge +###Version Introduced +.NET Framework 4.7.1 +###Source Analyzer Status +NotPlanned +###Change Description +In .NET Framework SDK 4.7.1, svcconfigedit.exe and svctraceviewer.exe tools have been improved by fixing varied accessibility issues. Most of these were small issues like a name not being defined or certain UI Automation patterns not being implemented correctly. While many users wouldn’t be aware of these incorrect values, for customers who use assistive technologies like screen readers, they will find these SDK tools become more accessible. Certainly, these fixes change some previous behaviors, like keyboard focus order. +###Quirked: +In order to get all the accessibility fixes in these tools, you can add App config file with the following configuration: + + + +###Affected APIs +* Not detectable via API analysis + + From 33853b9ecb18368609f7760ac68768571d016657 Mon Sep 17 00:00:00 2001 From: merriemcgaw Date: Wed, 20 Sep 2017 14:50:19 -0700 Subject: [PATCH 426/872] Incorporating feedback --- .../compatibility/winforms-accessibility-changes-471.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Documentation/compatibility/winforms-accessibility-changes-471.md b/Documentation/compatibility/winforms-accessibility-changes-471.md index 12284ae81..3f1e7052d 100644 --- a/Documentation/compatibility/winforms-accessibility-changes-471.md +++ b/Documentation/compatibility/winforms-accessibility-changes-471.md @@ -26,7 +26,7 @@ Windows Forms Framework is improving how it works with accessibility technologie __How to opt in or out of these changes__ In order for the application to benefit from these changes, it must run on the .NET Framework 4.7.1 or later. The application can benefit from these changes in either of the following ways: -- It is recompiled to target the .NET Framework 4.7.1. +- It is recompiled to target the .NET Framework 4.7.1. These accessibility changes are enabled by default on Windows Forms applications that target the .NET Framework 4.7.1 or later. - It opts out of the legacy accessibility behaviors by adding the following [AppContext Switch](https://docs.microsoft.com/dotnet/framework/configure-apps/file-schema/runtime/appcontextswitchoverrides-element) to the `````` section of the app config file and setting it to false, as the following example shows. ``` @@ -46,7 +46,7 @@ For an overview of UI automation, see the [UI Automation Overview](https://docs. __Added support for UI Automation patterns and properties__ -Accessibility clients can take advantage of new WinForms accessibility functionality by using common, publicly described invocation patterns. These is not WinForms-specific. For instance, accessibility clients can call the QueryInterface method on the IAccessible interface (MAAS) to obtain an IServiceProvider interface. If this interface is available, clients can use its QueryService method to request an IAccessibleEx interface. For more information, see [Using IAccessibleEx from a Client](https://msdn.microsoft.com/en-us/library/windows/desktop/dd561924(v=vs.85).aspx). Starting with the .NET Framework 4.7.1, IServiceProvider and [IAccessibleEx]( https://msdn.microsoft.com/en-us/library/windows/desktop/dd561898(v=vs.85).aspx) (where applicable) are available for WinForms accessibility objects. +Accessibility clients can take advantage of new WinForms accessibility functionality by using common, publicly described invocation patterns. These patterns are not WinForms-specific. For instance, accessibility clients can call the QueryInterface method on the IAccessible interface (MAAS) to obtain an IServiceProvider interface. If this interface is available, clients can use its QueryService method to request an IAccessibleEx interface. For more information, see [Using IAccessibleEx from a Client](https://msdn.microsoft.com/en-us/library/windows/desktop/dd561924(v=vs.85).aspx). Starting with the .NET Framework 4.7.1, IServiceProvider and [IAccessibleEx]( https://msdn.microsoft.com/en-us/library/windows/desktop/dd561898(v=vs.85).aspx) (where applicable) are available for WinForms accessibility objects. The .NET Framework 4.7.1 adds support for the fillowing UI automation patterns and properties: - The `T:System.Windows.Forms.ToolStripSplitButton` and `T:System.Windows.Forms.ComboBox` controls support the [Expand/Collapse pattern](https://docs.microsoft.com/dotnet/framework/ui-automation/implementing-the-ui-automation-expandcollapse-control-pattern) @@ -101,11 +101,11 @@ __Improved Narrator support__ - -### Affected APIs +### Affected APIs not detectable via API analysis * `M:System.Windows.Forms.ToolStripDropDownButton.CreateAccessibilityInstance` * `P:System.Windows.Forms.DomainUpDown.DomainUpDownAccessibleObject.Name` * `T:Sysetm.Windows.Forms.MonthCalendar.MonthCalendarAccessibleObject` -* + ### Category Windows Forms From 44a4dce334e896b89ad958f237a1b81cb916897a Mon Sep 17 00:00:00 2001 From: Alex Ghiondea Date: Thu, 21 Sep 2017 10:59:51 -0700 Subject: [PATCH 427/872] Create ServiceBase-doesnt-propagate-OnStart-exceptions.md (#483) * Create ServiceBase-doesnt-propagate-OnStart-exceptions.md * Update ServiceBase-doesnt-propagate-OnStart-exceptions.md * Update ServiceBase-doesnt-propagate-OnStart-exceptions.md * Update ServiceBase-doesnt-propagate-OnStart-exceptions.md * Update ServiceBase-doesnt-propagate-OnStart-exceptions.md --- ...ase-doesnt-propagate-OnStart-exceptions.md | 40 +++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 Documentation/compatibility/ServiceBase-doesnt-propagate-OnStart-exceptions.md diff --git a/Documentation/compatibility/ServiceBase-doesnt-propagate-OnStart-exceptions.md b/Documentation/compatibility/ServiceBase-doesnt-propagate-OnStart-exceptions.md new file mode 100644 index 000000000..16a391e81 --- /dev/null +++ b/Documentation/compatibility/ServiceBase-doesnt-propagate-OnStart-exceptions.md @@ -0,0 +1,40 @@ +## ServiceBase doesn't propagate OnStart exceptions + +### Scope + +Minor + +### Version Introduced + +4.7.1 + +### Source Analyzer Status + +NotPlanned + +### Change Description + +In the .NET Framework 4.7 and earlier versions, exceptions thrown on service startup are not propagated to the caller of . + +Starting with applications that target the .NET Framework 4.7.1, the runtime propagates exceptions to for services that fail to start. + +- [x] Quirked +- [ ] Build-time break + +### Recommended Action +On service start, if there is an exception, that exception will be propagated. This should help diagnose cases where services fail to start. + +If this behavior is undesirable, you can opt out of it by adding the following element to the section of your application configuration file: + +```xml + +``` + +If your application targets an earlier version than 4.7.1 but you want to have this behavior, add the following element to the section of your application configuration file: + +```xml + +``` + +### Affected APIs +* `M:System.ServiceProcess.ServiceBase.Run` From 7f2a418a34800fcd7c5275a3891a1b1ab326dfe2 Mon Sep 17 00:00:00 2001 From: merriemcgaw Date: Thu, 21 Sep 2017 14:11:16 -0700 Subject: [PATCH 428/872] Bullets Remove extra bullet --- .../compatibility/winforms-accessibility-changes-471.md | 1 - 1 file changed, 1 deletion(-) diff --git a/Documentation/compatibility/winforms-accessibility-changes-471.md b/Documentation/compatibility/winforms-accessibility-changes-471.md index 3f1e7052d..73afb4d6a 100644 --- a/Documentation/compatibility/winforms-accessibility-changes-471.md +++ b/Documentation/compatibility/winforms-accessibility-changes-471.md @@ -98,7 +98,6 @@ __Improved Narrator support__ - The `T:System.Windows.Forms.DataGridViewCell` control types now correctly report the read-only status to Narrator and other assistive technologies. - Narrator is now able to read the System Menu of child windows in [Multiple-Document Interface](https://docs.microsoft.com/en-us/dotnet/framework/winforms/advanced/multiple-document-interface-mdi-applications) applications. - Narrator is now able to read `T:System.Windows.Forms.ToolStripMenuItem` controls with a `P:System.Windows.Forms.ToolStripItem.Enabled` property set to _false_. Previously, Narrator was unable to focus on disabled menu items to read hte content. -- ### Affected APIs not detectable via API analysis From 4432137109a8466c2ee5d314b4bf7b7d599c4bba Mon Sep 17 00:00:00 2001 From: merriemcgaw Date: Thu, 21 Sep 2017 16:55:47 -0700 Subject: [PATCH 429/872] feedback --- .../compatibility/winforms-accessibility-changes-471.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Documentation/compatibility/winforms-accessibility-changes-471.md b/Documentation/compatibility/winforms-accessibility-changes-471.md index 73afb4d6a..dd1efa42e 100644 --- a/Documentation/compatibility/winforms-accessibility-changes-471.md +++ b/Documentation/compatibility/winforms-accessibility-changes-471.md @@ -27,7 +27,7 @@ __How to opt in or out of these changes__ In order for the application to benefit from these changes, it must run on the .NET Framework 4.7.1 or later. The application can benefit from these changes in either of the following ways: - It is recompiled to target the .NET Framework 4.7.1. These accessibility changes are enabled by default on Windows Forms applications that target the .NET Framework 4.7.1 or later. -- It opts out of the legacy accessibility behaviors by adding the following [AppContext Switch](https://docs.microsoft.com/dotnet/framework/configure-apps/file-schema/runtime/appcontextswitchoverrides-element) to the `````` section of the app config file and setting it to false, as the following example shows. +- It opts out of the legacy accessibility behaviors by adding the following [AppContext Switch](https://docs.microsoft.com/dotnet/framework/configure-apps/file-schema/runtime/appcontextswitchoverrides-element) to the `````` section of the app config.file and setting it to false, as the following example shows. ``` From ea8ea661a6ee296a364e6a7a654e1457fb710125 Mon Sep 17 00:00:00 2001 From: Preeti Krishna Date: Thu, 21 Sep 2017 17:13:49 -0700 Subject: [PATCH 430/872] Updates for .net framework 4.7.1 early access build 2539 (#479) --- releases/net471/README.md | 4 ++-- releases/net471/dotnet471-changes.md | 4 ++-- releases/net471/dotnet471-known-issues.md | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/releases/net471/README.md b/releases/net471/README.md index cdbf596a5..0d963a460 100644 --- a/releases/net471/README.md +++ b/releases/net471/README.md @@ -1,8 +1,8 @@ # .NET Framework 4.7.1 Release Notes -> These release notes are current for .NET Framework 4.7.1 build 2538, released 2017-08-07. +> These release notes are current for .NET Framework 4.7.1 build 2539, released 2017-09-13. -You can learn about the changes made in the .NET Framework 4.7.1, as of build 2538. +You can learn about the changes made in the .NET Framework 4.7.1, as of build 2539. - [Download](https://github.com/Microsoft/dotnet-framework-earlyaccess) - [Announcement blog post](https://blogs.msdn.microsoft.com/dotnet/2017/08/07/welcome-to-the-net-framework-4-7-1-early-access/) diff --git a/releases/net471/dotnet471-changes.md b/releases/net471/dotnet471-changes.md index 43f44d2f7..b9eaccd68 100644 --- a/releases/net471/dotnet471-changes.md +++ b/releases/net471/dotnet471-changes.md @@ -1,8 +1,8 @@ # .NET Framework 4.7.1 Release Notes -> These release notes are current for .NET Framework 4.7.1 build 2538, released 2017-08-07. +> These release notes are current for .NET Framework 4.7.1 build 2539, released 2017-09-13. -You can learn about the changes made in the .NET Framework 4.7.1, as of build 2538. +You can learn about the changes made in the .NET Framework 4.7.1, as of build 2539. .NET Framework release notes describe product improvements grouped by product area. Each change includes a Microsoft-internal VSTS bug ID, the primary binary that was updated and whether the change was a bug or a feature. diff --git a/releases/net471/dotnet471-known-issues.md b/releases/net471/dotnet471-known-issues.md index c32cc5b8a..3afe4a740 100644 --- a/releases/net471/dotnet471-known-issues.md +++ b/releases/net471/dotnet471-known-issues.md @@ -1,4 +1,4 @@ .NET Framework 4.7.1 Known Issues ================================= -There are no known issues as of build 2538. +There are no known issues as of build 2539. From ccf9e6410ee99f7c225699620def10282d7ba771 Mon Sep 17 00:00:00 2001 From: merriemcgaw Date: Thu, 21 Sep 2017 18:15:54 -0700 Subject: [PATCH 431/872] Tanya's Review Tanya's Review --- .../winforms-accessibility-changes-471.md | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/Documentation/compatibility/winforms-accessibility-changes-471.md b/Documentation/compatibility/winforms-accessibility-changes-471.md index dd1efa42e..7d4db17a5 100644 --- a/Documentation/compatibility/winforms-accessibility-changes-471.md +++ b/Documentation/compatibility/winforms-accessibility-changes-471.md @@ -55,28 +55,28 @@ The .NET Framework 4.7.1 adds support for the fillowing UI automation patterns a - The `T:System.Windows.Forms.ToolStripDropDownItem` control supports [AccessibleEvents](https://docs.microsoft.com/dotnet/api/system.windows.forms.accessibleevents) indicating StateChange and NameChange when drop down is expanded or collapsed. - The `T:System.Windows.Forms.ToolStripDropDownButton` control has a [ControlType](https://docs.microsoft.com/dotnet/framework/ui-automation/ui-automation-support-for-the-menubar-control-type) property value of - The `T:System.Windows.Forms.DataGridViewCheckBoxCell` control supports the [Toggle Pattern](https://docs.microsoft.com/dotnet/api/system.windows.automation.togglepattern) -- The `T:System.Windows.Forms.NumericUpDown` and `T:System.Windows.Forms.DomainUpDown` controls support the [Name](https://docs.microsoft.com/dotnet/api/system.windows.automation.automationelement.nameproperty) and have a [ControlType](https://docs.microsoft.com/dotnet/framework/ui-automation/ui-automation-support-for-the-spinner-control-type) of and have support for the +- The `T:System.Windows.Forms.NumericUpDown` and `T:System.Windows.Forms.DomainUpDown` controls support the [Name](https://docs.microsoft.com/dotnet/api/system.windows.automation.automationelement.nameproperty) and have a [ControlType](https://docs.microsoft.com/dotnet/framework/ui-automation/ui-automation-support-for-the-spinner-control-type) of . __Improvements to PropertyGrid control__ The .NET Framework 4.7.1 adds the following improvements to the PropertyBrowser control: - The __Details__ button in the error dialog that is displayed when the user enters an incorrect value in the `T:System.Windows.Forms.PropertyGrid` control supports the [Expand/Collapse pattern](https://docs.microsoft.com/dotnet/framework/ui-automation/implementing-the-ui-automation-expandcollapse-control-pattern), state and name change notifications, and a [ControlType](https://docs.microsoft.com/dotnet/framework/ui-automation/ui-automation-support-for-the-menubar-control-type) property with a value of . -- The message pane displayed when the __Details__ button of the error dialog is now keyboard accessible and allows Narrator to announce the content of the error message. +- The message pane displayed when the __Details__ button of the error dialog is expanded is now keyboard accessible and allows Narrator to announce the content of the error message. - The [AccessibleRole](https://docs.microsoft.com/dotnet/api/system.windows.forms.accessiblerole) of rows in `T:System.Windows.Forms.PropertyGrid` control have changed from "Row" to "Cell". The cell maps to UIA ControlType "DataItem", which allows it to support appropriate keyboard shortcuts and Narrator announcements. -- The `T:System.Windows.Forms.PropertyGrid` control rows which represent header items when the has a `P:System.Windows.Forms.PropertySort` property set to `F:System.Windows.Forms.PropertySory.Categorized` have a [ControlType](https://docs.microsoft.com/dotnet/framework/ui-automation/ui-automation-support-for-the-menubar-control-type) property value -- The `T:System.Windows.Forms.PropertyGrid` control rows which represent header items when the has a `P:System.Windows.Forms.PropertySort` property set to `F:System.Windows.Forms.PropertySory.Categorized` support the [Expand/Collapse pattern](https://docs.microsoft.com/dotnet/framework/ui-automation/implementing-the-ui-automation-expandcollapse-control-pattern). -- Improved keyboard navigation between the grid and the toolbar above it. Pressing "Shift-Tab" now selects the first ToolBar button, instead of the whole ToolBar -- `T:System.Windows.Forms.PropertyGrid` controls displayed in High Contrast mode will now draw a focus rectangle around the toolstrip button which corresponds to the current `P:System.Windows.Forms.PropertySort` property value. +- The `T:System.Windows.Forms.PropertyGrid` control rows which represent header items when the `T:System.Windows.Forms.PropertyGrid` control has a `P:System.Windows.Forms.PropertySort` property set to `F:System.Windows.Forms.PropertySory.Categorized` have a [ControlType](https://docs.microsoft.com/dotnet/framework/ui-automation/ui-automation-support-for-the-menubar-control-type) property value +- The `T:System.Windows.Forms.PropertyGrid` control rows which represent header items when the `T:System.Windows.Forms.PropertyGrid` control has a `P:System.Windows.Forms.PropertySort` property set to `F:System.Windows.Forms.PropertySory.Categorized` support the [Expand/Collapse pattern](https://docs.microsoft.com/dotnet/framework/ui-automation/implementing-the-ui-automation-expandcollapse-control-pattern). +- Improved keyboard navigation between the grid and the ToolBar above it. Pressing "Shift-Tab" now selects the first ToolBar button, instead of the whole ToolBar +- `T:System.Windows.Forms.PropertyGrid` controls displayed in High Contrast mode will now draw a focus rectangle around the ToolBar button which corresponds to the current `P:System.Windows.Forms.PropertySort` property value. - `T:System.Windows.Forms.PropertyGrid` controls displayed in High Contrast mode and with a `P:System.Windows.Forms.PropertySort` property set to `F:System.Windows.Forms.PropertySory.Categorized` will now display the background of category headers in a highly contrasting color. -- `T:System.Windows.Forms.PropertyGrid` controls better differentiates between toolstrip items with focus and the toolstrip item which indicates the current value of the `P:System.Windows.Forms.PropertySort` property. This fix consists of a High Contrast change and a change for non-High Contrast scenarios. -- `T:System.Windows.Forms.PropertyGrid` control toolstrip items which indicates the current value of the `P:System.Windows.Forms.PropertySort` property support the [Toggle Pattern](https://docs.microsoft.com/dotnet/api/system.windows.automation.togglepattern). +- `T:System.Windows.Forms.PropertyGrid` controls better differentiates between ToolBar items with focus and the ToolBar items which indicate the current value of the `P:System.Windows.Forms.PropertySort` property. This fix consists of a High Contrast change and a change for non-High Contrast scenarios. +- `T:System.Windows.Forms.PropertyGrid` control ToolBar items which indicates the current value of the `P:System.Windows.Forms.PropertySort` property support the [Toggle Pattern](https://docs.microsoft.com/dotnet/api/system.windows.automation.togglepattern). - Improved Narrator support for distinguishing the selected alignment in the Alignment Picker. - When an empty `T:System.Windows.Forms.PropertyGrid` control is displayed on a form, it will now receive focus where previously it would not. __Use of OS-defined colors in High Contrast themes__ - `T:System.Windows.Forms.Button` and `T:System.Windows.Forms.CheckBox` controls with `P:System.Windows.Forms.Control.FlatStyle` set to `F:System.Windows.Forms.FlatStyle.Standard`, which is the default style, now use OS-defined colors in High Contrast theme when selected. Previously, text and background colors were not contrasting and were hard to read. -- `T:System.Windows.Forms.Button`, `T:System.Windows.Forms.CheckBox`, `T:System.Windows.Forms.RadioButton`, `T:System.Windows.Forms.Label`, `T:System.Windows.Forms.LinkLabel` and `T:System.Windows.Forms.GroupBox` with`P:System.Windows.Forms.Control.Enabled` set to _false_, used a shaded color to rendered text in High Contrast themes, resulting in low contrast against the background. Now these controls use "Disabled Text" color defined by the OS. This fix applies to control with `P:System.Windows.Forms.Control.FlatStyle` property set to a value other than `F:System.Windows.Forms.FlatStyle.System`. The latter controls are rendered by the OS. +- `T:System.Windows.Forms.Button`, `T:System.Windows.Forms.CheckBox`, `T:System.Windows.Forms.RadioButton`, `T:System.Windows.Forms.Label`, `T:System.Windows.Forms.LinkLabel` and `T:System.Windows.Forms.GroupBox` with`P:System.Windows.Forms.Control.Enabled` set to _false_, used a shaded color to render text in High Contrast themes, resulting in low contrast against the background. Now these controls use "Disabled Text" color defined by the OS. This fix applies to controls with `P:System.Windows.Forms.Control.FlatStyle` property set to a value other than `F:System.Windows.Forms.FlatStyle.System`. The latter controls are rendered by the OS. - `T:System.Windows.Forms.DataGridView` now renders a visible rectangle around the content of the cell which has the current focus. Previously, this was not visible in certain High Contrast themes. - `T:System.Windows.Forms.ToolStripMenuItem` controls with a `P:System.Windows.Forms.ToolStripItem.Enabled` property set to _false_ now use the "Disabled Text" color defined by the OS. - `T:System.Windows.Forms.ToolStripMenuItem` controls with a `P:System.Windows.Forms.ToolStripItem.Checked` property set to _true_ now render the associated check mark in a contrasting system color. Previously the check mark color was not contrasting enough and not visible in High Contrast themes. @@ -94,7 +94,7 @@ __Improved keyboard navigation__ __Improved Narrator support__ - The `T:System.Windows.Forms.MonthCalendar` control has added support for assistive technologies to access the control, including the ability for Narrator to read the value of the control when previously it could not. - The `T:System.Windows.Forms.CheckedListBox` control now notifies Narrator when the `P:System.Windows.Forms.CheckState` property has been changed. Previously, Narrator did not recieve notification and as a result users would not be informed that the `P:System.Windows.Forms.CheckState` had been updated. -- The `T:System.Windows.Forms.LinkLabel` control has changed the way it notifies Narrator of the text of in the control. Previously, Narrator announced this text twice and read "&" symbols as real text even though they are not visible to a user. The duplicated text was removed from the Narrator announcements, as well as unnecessary & symbols. +- The `T:System.Windows.Forms.LinkLabel` control has changed the way it notifies Narrator of the text of in the control. Previously, Narrator announced this text twice and read "&" symbols as real text even though they are not visible to a user. The duplicated text was removed from the Narrator announcements, as well as unnecessary "&" symbols. - The `T:System.Windows.Forms.DataGridViewCell` control types now correctly report the read-only status to Narrator and other assistive technologies. - Narrator is now able to read the System Menu of child windows in [Multiple-Document Interface](https://docs.microsoft.com/en-us/dotnet/framework/winforms/advanced/multiple-document-interface-mdi-applications) applications. - Narrator is now able to read `T:System.Windows.Forms.ToolStripMenuItem` controls with a `P:System.Windows.Forms.ToolStripItem.Enabled` property set to _false_. Previously, Narrator was unable to focus on disabled menu items to read hte content. From 6b03879cc5c61c7b25d25b70705677de736dd30b Mon Sep 17 00:00:00 2001 From: Hong Li Date: Mon, 25 Sep 2017 17:18:07 -0700 Subject: [PATCH 432/872] Add ASPNET Accessibility Compat Document (#484) * Add ASPNET Accessibility Compat Document * Update ASPNET Accessibility Improvement.md * Update ASPNET Accessibility Improvement.md @rpetrusha incorporated feedback * ASPNET Accessibility Improvement.md * minor fixups --- .../ASPNET Accessibility Improvement.md | 50 +++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 Documentation/compatibility/ASPNET Accessibility Improvement.md diff --git a/Documentation/compatibility/ASPNET Accessibility Improvement.md b/Documentation/compatibility/ASPNET Accessibility Improvement.md new file mode 100644 index 000000000..5b96ad6ba --- /dev/null +++ b/Documentation/compatibility/ASPNET Accessibility Improvement.md @@ -0,0 +1,50 @@ +## ASP.NET Accessibility Improvement in .NET 4.7.1 + +### Scope +Minor + + +### Version Introduced +.NET 4.7.1 + + +### Source Analyzer Status +NotPlanned + + +### Change Description +ASP.NET is improving how ASP.NET Web Controls work with accessibility technology in Visual Studio to better support ASP.NET customers. These include the following changes: +- Changes to implement missing UI accessibility patterns in controls, like the Add Field dialog in the Details View wizard. +- Changes to improve the display in High Contrast mode, like the Data Pager Fields Editor. +- Changes to improve the keyboard navigation experiences for controls, like the Configure Object Context Window or the Configure Data Source Window. + +- [x] Quirked +- [ ] Build-time break + + +### Recommended Action +__How to opt in or out of these changes__ + +In order for the Visual Studio Designer to benefit from these changes, it must run on the .NET Framework 4.7.1 or later. The web application can benefit from these changes in either of the following ways: +- Install Visual Studio 2017 15.3 or later, which supports the new accessibility features with the following AppContext Switch by default. +- Opt out of the legacy accessibility behaviors by adding the __Switch.UseLegacyAccessibility__ AppContext Switch to the `````` section in the devenv.exe.config file and setting it to ```false```, as the following example shows. +``` + + + + ... + + + ... + + +``` +Applications that target the .NET Framework 4.7.1 or later and want to preserve the legacy accessibility behavior can opt in to the use of legacy accessibility features by explicitly setting this AppContext switch to ```true```. + +### Affected APIs + * Not detectable via API analysis + +### Category +ASP.NET + + From 2c44ead939d802a92742864860f8fa5c88c07a1e Mon Sep 17 00:00:00 2001 From: merriemcgaw Date: Tue, 26 Sep 2017 16:57:24 -0700 Subject: [PATCH 433/872] Update xrefs Found some missing punctuation and updated the xref:s to displayProperty=nameWithType --- .../winforms-accessibility-changes-471.md | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/Documentation/compatibility/winforms-accessibility-changes-471.md b/Documentation/compatibility/winforms-accessibility-changes-471.md index 7d4db17a5..d78949cbe 100644 --- a/Documentation/compatibility/winforms-accessibility-changes-471.md +++ b/Documentation/compatibility/winforms-accessibility-changes-471.md @@ -27,7 +27,7 @@ __How to opt in or out of these changes__ In order for the application to benefit from these changes, it must run on the .NET Framework 4.7.1 or later. The application can benefit from these changes in either of the following ways: - It is recompiled to target the .NET Framework 4.7.1. These accessibility changes are enabled by default on Windows Forms applications that target the .NET Framework 4.7.1 or later. -- It opts out of the legacy accessibility behaviors by adding the following [AppContext Switch](https://docs.microsoft.com/dotnet/framework/configure-apps/file-schema/runtime/appcontextswitchoverrides-element) to the `````` section of the app config.file and setting it to false, as the following example shows. +- It opts out of the legacy accessibility behaviors by adding the following [AppContext Switch](https://docs.microsoft.com/dotnet/framework/configure-apps/file-schema/runtime/appcontextswitchoverrides-element) to the `````` section of the app.config file and setting it to false, as the following example shows. ``` @@ -49,21 +49,21 @@ __Added support for UI Automation patterns and properties__ Accessibility clients can take advantage of new WinForms accessibility functionality by using common, publicly described invocation patterns. These patterns are not WinForms-specific. For instance, accessibility clients can call the QueryInterface method on the IAccessible interface (MAAS) to obtain an IServiceProvider interface. If this interface is available, clients can use its QueryService method to request an IAccessibleEx interface. For more information, see [Using IAccessibleEx from a Client](https://msdn.microsoft.com/en-us/library/windows/desktop/dd561924(v=vs.85).aspx). Starting with the .NET Framework 4.7.1, IServiceProvider and [IAccessibleEx]( https://msdn.microsoft.com/en-us/library/windows/desktop/dd561898(v=vs.85).aspx) (where applicable) are available for WinForms accessibility objects. The .NET Framework 4.7.1 adds support for the fillowing UI automation patterns and properties: -- The `T:System.Windows.Forms.ToolStripSplitButton` and `T:System.Windows.Forms.ComboBox` controls support the [Expand/Collapse pattern](https://docs.microsoft.com/dotnet/framework/ui-automation/implementing-the-ui-automation-expandcollapse-control-pattern) -- The `T:System.Windows.Forms.ToolStripMenuItem` control has a [ControlType](https://docs.microsoft.com/dotnet/framework/ui-automation/ui-automation-support-for-the-menubar-control-type) property value -- The `T:System.Windows.Forms.ToolStripItem` control supports the [Name](https://docs.microsoft.com/dotnet/api/system.windows.automation.automationelement.nameproperty) property and [Expand/Collapse pattern](https://docs.microsoft.com/dotnet/framework/ui-automation/implementing-the-ui-automation-expandcollapse-control-pattern) +- The `T:System.Windows.Forms.ToolStripSplitButton` and `T:System.Windows.Forms.ComboBox` controls support the [Expand/Collapse pattern](https://docs.microsoft.com/dotnet/framework/ui-automation/implementing-the-ui-automation-expandcollapse-control-pattern). +- The `T:System.Windows.Forms.ToolStripMenuItem` control has a [ControlType](https://docs.microsoft.com/dotnet/framework/ui-automation/ui-automation-support-for-the-menubar-control-type) property value . +- The `T:System.Windows.Forms.ToolStripItem` control supports the [Name](https://docs.microsoft.com/dotnet/api/system.windows.automation.automationelement.nameproperty) property and [Expand/Collapse pattern](https://docs.microsoft.com/dotnet/framework/ui-automation/implementing-the-ui-automation-expandcollapse-control-pattern). - The `T:System.Windows.Forms.ToolStripDropDownItem` control supports [AccessibleEvents](https://docs.microsoft.com/dotnet/api/system.windows.forms.accessibleevents) indicating StateChange and NameChange when drop down is expanded or collapsed. -- The `T:System.Windows.Forms.ToolStripDropDownButton` control has a [ControlType](https://docs.microsoft.com/dotnet/framework/ui-automation/ui-automation-support-for-the-menubar-control-type) property value of -- The `T:System.Windows.Forms.DataGridViewCheckBoxCell` control supports the [Toggle Pattern](https://docs.microsoft.com/dotnet/api/system.windows.automation.togglepattern) -- The `T:System.Windows.Forms.NumericUpDown` and `T:System.Windows.Forms.DomainUpDown` controls support the [Name](https://docs.microsoft.com/dotnet/api/system.windows.automation.automationelement.nameproperty) and have a [ControlType](https://docs.microsoft.com/dotnet/framework/ui-automation/ui-automation-support-for-the-spinner-control-type) of . +- The `T:System.Windows.Forms.ToolStripDropDownButton` control has a [ControlType](https://docs.microsoft.com/dotnet/framework/ui-automation/ui-automation-support-for-the-menubar-control-type) property value of . +- The `T:System.Windows.Forms.DataGridViewCheckBoxCell` control supports the [Toggle Pattern](https://docs.microsoft.com/dotnet/api/system.windows.automation.togglepattern). +- The `T:System.Windows.Forms.NumericUpDown` and `T:System.Windows.Forms.DomainUpDown` controls support the [Name](https://docs.microsoft.com/dotnet/api/system.windows.automation.automationelement.nameproperty) and have a [ControlType](https://docs.microsoft.com/dotnet/framework/ui-automation/ui-automation-support-for-the-spinner-control-type) of . __Improvements to PropertyGrid control__ The .NET Framework 4.7.1 adds the following improvements to the PropertyBrowser control: -- The __Details__ button in the error dialog that is displayed when the user enters an incorrect value in the `T:System.Windows.Forms.PropertyGrid` control supports the [Expand/Collapse pattern](https://docs.microsoft.com/dotnet/framework/ui-automation/implementing-the-ui-automation-expandcollapse-control-pattern), state and name change notifications, and a [ControlType](https://docs.microsoft.com/dotnet/framework/ui-automation/ui-automation-support-for-the-menubar-control-type) property with a value of . +- The __Details__ button in the error dialog that is displayed when the user enters an incorrect value in the `T:System.Windows.Forms.PropertyGrid` control supports the [Expand/Collapse pattern](https://docs.microsoft.com/dotnet/framework/ui-automation/implementing-the-ui-automation-expandcollapse-control-pattern), state and name change notifications, and a [ControlType](https://docs.microsoft.com/dotnet/framework/ui-automation/ui-automation-support-for-the-menubar-control-type) property with a value of . - The message pane displayed when the __Details__ button of the error dialog is expanded is now keyboard accessible and allows Narrator to announce the content of the error message. - The [AccessibleRole](https://docs.microsoft.com/dotnet/api/system.windows.forms.accessiblerole) of rows in `T:System.Windows.Forms.PropertyGrid` control have changed from "Row" to "Cell". The cell maps to UIA ControlType "DataItem", which allows it to support appropriate keyboard shortcuts and Narrator announcements. -- The `T:System.Windows.Forms.PropertyGrid` control rows which represent header items when the `T:System.Windows.Forms.PropertyGrid` control has a `P:System.Windows.Forms.PropertySort` property set to `F:System.Windows.Forms.PropertySory.Categorized` have a [ControlType](https://docs.microsoft.com/dotnet/framework/ui-automation/ui-automation-support-for-the-menubar-control-type) property value +- The `T:System.Windows.Forms.PropertyGrid` control rows which represent header items when the `T:System.Windows.Forms.PropertyGrid` control has a `P:System.Windows.Forms.PropertySort` property set to `F:System.Windows.Forms.PropertySory.Categorized` have a [ControlType](https://docs.microsoft.com/dotnet/framework/ui-automation/ui-automation-support-for-the-menubar-control-type) property value of - The `T:System.Windows.Forms.PropertyGrid` control rows which represent header items when the `T:System.Windows.Forms.PropertyGrid` control has a `P:System.Windows.Forms.PropertySort` property set to `F:System.Windows.Forms.PropertySory.Categorized` support the [Expand/Collapse pattern](https://docs.microsoft.com/dotnet/framework/ui-automation/implementing-the-ui-automation-expandcollapse-control-pattern). - Improved keyboard navigation between the grid and the ToolBar above it. Pressing "Shift-Tab" now selects the first ToolBar button, instead of the whole ToolBar - `T:System.Windows.Forms.PropertyGrid` controls displayed in High Contrast mode will now draw a focus rectangle around the ToolBar button which corresponds to the current `P:System.Windows.Forms.PropertySort` property value. @@ -75,7 +75,7 @@ The .NET Framework 4.7.1 adds the following improvements to the PropertyBrowser __Use of OS-defined colors in High Contrast themes__ -- `T:System.Windows.Forms.Button` and `T:System.Windows.Forms.CheckBox` controls with `P:System.Windows.Forms.Control.FlatStyle` set to `F:System.Windows.Forms.FlatStyle.Standard`, which is the default style, now use OS-defined colors in High Contrast theme when selected. Previously, text and background colors were not contrasting and were hard to read. +- `T:System.Windows.Forms.Button` and `T:System.Windows.Forms.CheckBox` controls with `P:System.Windows.Forms.Control.FlatStyle` set to , which is the default style, now use OS-defined colors in High Contrast theme when selected. Previously, text and background colors were not contrasting and were hard to read. - `T:System.Windows.Forms.Button`, `T:System.Windows.Forms.CheckBox`, `T:System.Windows.Forms.RadioButton`, `T:System.Windows.Forms.Label`, `T:System.Windows.Forms.LinkLabel` and `T:System.Windows.Forms.GroupBox` with`P:System.Windows.Forms.Control.Enabled` set to _false_, used a shaded color to render text in High Contrast themes, resulting in low contrast against the background. Now these controls use "Disabled Text" color defined by the OS. This fix applies to controls with `P:System.Windows.Forms.Control.FlatStyle` property set to a value other than `F:System.Windows.Forms.FlatStyle.System`. The latter controls are rendered by the OS. - `T:System.Windows.Forms.DataGridView` now renders a visible rectangle around the content of the cell which has the current focus. Previously, this was not visible in certain High Contrast themes. - `T:System.Windows.Forms.ToolStripMenuItem` controls with a `P:System.Windows.Forms.ToolStripItem.Enabled` property set to _false_ now use the "Disabled Text" color defined by the OS. From 1e071bd00da52068638524b8eb2c3e8cc5cad4ee Mon Sep 17 00:00:00 2001 From: fanliang11 <137629448@qq.com> Date: Thu, 28 Sep 2017 06:59:51 +0800 Subject: [PATCH 434/872] Add the open source project named surging (#490) * Add the open source project named surging * Correct the problem changes to Libraries * Update dotnet-developer-projects.md --- dotnet-developer-projects.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 41401037d..dd1b5f5da 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -92,7 +92,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [MassTransit](https://github.com/MassTransit/MassTransit) - A distributed application framework for RabbitMQ and Azure Service Bus. * [NServiceBus](https://github.com/Particular/NServiceBus) - The most popular service bus for .NET * [RestBus](https://github.com/tenor/RestBus) - Easy Asynchronous Messaging and Queueing for .NET - + ## Libraries * [Albedo](https://github.com/ploeh/Albedo) - A .NET library targeted at making Reflection programming more consistent, using a common set of abstractions and utilities. * [Algorithmia](https://github.com/SolutionsDesign/Algorithmia) - Algorithms and Data structures @@ -171,6 +171,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [Strongly Typed Client API Generators for ASP.NET Web API](https://webapiclientgen.codeplex.com/) - Strongly Typed Client API Generators generate strongly typed client API in TypeScript and C# codes supporting desktop, Universal Windows, Android and iOS. * [Stuntman](https://github.com/ritterim/stuntman) - OWIN middleware for quickly mocking authentication/authorization use case scenarios locally. Supports Cookie Authentication and Bearer Token Authentication. * [SuperSocket](https://github.com/kerryjiang/SuperSocket) - An extensible socket server engine which supports .NET and Mono + * [surging](https://github.com/dotnetcore/surging) - The distributed micro service framework based on .NET Core provides high-performance RPC Communications * [Sweet.Jayson](https://github.com/ocdogan/Sweet.Jayson) - Fast, reliable, easy to use, fully json.org compliant, thread safe C# JSON library for server side and desktop operations. * [VkSharp](https://github.com/kasthack/vksharp) - VK client library * [TomP2P.NET](https://github.com/tomp2p/TomP2P.NET) - A P2P-based high performance key-value pair storage library for .NET From 6a2e3d6a464900c2aaee6bea227357fef08dac42 Mon Sep 17 00:00:00 2001 From: Alicia Li Date: Wed, 27 Sep 2017 16:17:51 -0700 Subject: [PATCH 435/872] WCF 4.7.1 fixes with appcontext switch document --- ...ion-if-an-addressHeader-element-is-null.md | 27 ++++++++++++++++++ ...shAlgorithm-default-value-is-now-SHA256.md | 27 ++++++++++++++++++ ...ection.GetHashAlgorithm-now-uses-SHA256.md | 28 +++++++++++++++++++ 3 files changed, 82 insertions(+) create mode 100644 Documentation/compatibility/WCF-AddressHeaderCollection-now-throws-an-ArgumentException-if-an-addressHeader-element-is-null.md create mode 100644 Documentation/compatibility/WCF-MsmqSecureHashAlgorithm-default-value-is-now-SHA256.md create mode 100644 Documentation/compatibility/WCF-PipeConnection.GetHashAlgorithm-now-uses-SHA256.md diff --git a/Documentation/compatibility/WCF-AddressHeaderCollection-now-throws-an-ArgumentException-if-an-addressHeader-element-is-null.md b/Documentation/compatibility/WCF-AddressHeaderCollection-now-throws-an-ArgumentException-if-an-addressHeader-element-is-null.md new file mode 100644 index 000000000..3cacba05f --- /dev/null +++ b/Documentation/compatibility/WCF-AddressHeaderCollection-now-throws-an-ArgumentException-if-an-addressHeader-element-is-null.md @@ -0,0 +1,27 @@ +##WCF AddressHeaderCollection now throws an ArgumentException if an addressHeader element is null + +###Scope +Minor +###Version Introduced +.NET Framework 4.7.1 +###Source Analyzer Status +NotPlanned +###Change Description +In .NET Framework 4.7 and earlier versions, there is a bug in one of the public constructors of AddressHeaderCollection where elements of the IEnumerable argument aren�t checked for null. Starting with .NET 4.7.1 the public constructor of AddressHeaderCollection(IEnumerable addressHeaders) now throws an ArgumentException if one of the elements is null. +###Recommended Action: +If you run into compatibility issue with this change on .Net 4.7.1 or later version, you may opt-out the change by adding the following configuration in App config file: + + + + + + + + +##Affected APIs +* Not detectable via API analysis + + \ No newline at end of file diff --git a/Documentation/compatibility/WCF-MsmqSecureHashAlgorithm-default-value-is-now-SHA256.md b/Documentation/compatibility/WCF-MsmqSecureHashAlgorithm-default-value-is-now-SHA256.md new file mode 100644 index 000000000..811213b30 --- /dev/null +++ b/Documentation/compatibility/WCF-MsmqSecureHashAlgorithm-default-value-is-now-SHA256.md @@ -0,0 +1,27 @@ +##WCF MsmqSecureHashAlgorithm default value is now SHA256 + +###Scope +Minor +###Version Introduced +.NET Framework 4.7.1 +###Source Analyzer Status +NotPlanned +###Change Description +In .NET Framework 4.7 and earlier versions, the default hash algorithm used in WCF to sign Msmq messages was SHA1. Starting with .NET 4.7.1 the default message signing algorithm in WCF for Msmq messages has been changed to use a SHA256. +###Recommended Action: +If you run into compatibility issue with this change on .Net 4.7.1 or later version, you may opt-out the change by adding the following configuration in App config file: + + + + + + + + +##Affected APIs +* Not detectable via API analysis + + diff --git a/Documentation/compatibility/WCF-PipeConnection.GetHashAlgorithm-now-uses-SHA256.md b/Documentation/compatibility/WCF-PipeConnection.GetHashAlgorithm-now-uses-SHA256.md new file mode 100644 index 000000000..b99c1cba7 --- /dev/null +++ b/Documentation/compatibility/WCF-PipeConnection.GetHashAlgorithm-now-uses-SHA256.md @@ -0,0 +1,28 @@ +##WCF PipeConnection.GetHashAlgorithm now uses SHA256 + +###Scope +Minor +###Version Introduced +.NET Framework 4.7.1 +###Source Analyzer Status +NotPlanned +###Change Description +In .NET Framework 4.7 and earlier versions, WCF generated random NamedPipe names by creating a SHA1 hash. Starting with .NET 4.7.1, WCF will use a SHA256 to generate the name for the NamedPipe. +###Recommended Action: +If you run into compatibility issue with this change on .Net 4.7.1 or later version, you may opt-out the change by adding the following configuration in App config file: + + + + + + + + +##Affected APIs +* Not detectable via API analysis + + + From fd3c303a3e60bd84874cbf02bdc4a16a510553ae Mon Sep 17 00:00:00 2001 From: Jos van der Til Date: Tue, 3 Oct 2017 20:29:43 +0200 Subject: [PATCH 436/872] Fix typo in compatibility README.md (#497) --- Documentation/compatibility/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Documentation/compatibility/README.md b/Documentation/compatibility/README.md index 70842603d..ada7d93a7 100644 --- a/Documentation/compatibility/README.md +++ b/Documentation/compatibility/README.md @@ -30,7 +30,7 @@ Please help us improve the [.NET Framework Application Compatibility documents]( ## .NET Framework 4.6.2 -- [AesCrytpServiceProvider decryptor provides a reusable transform](aescryptoserviceprovider-decryptor-provides-a-reusable-transform.md) +- [AesCryptoServiceProvider decryptor provides a reusable transform](aescryptoserviceprovider-decryptor-provides-a-reusable-transform.md) - [Calls to ClaimsIdentity constructors](calls-to-claimsidentity-constructors.md) - [Changes in path normalization](changes-in-path-normalization.md) - [Changing the IsEnabled property of the parent of a TextBlock control affects any child controls](changing-the-isenabled-property-of-the-parent-of-a-textblock-control-affects-any-child-controls.md) From 04027efedb860e825e58ee032a2c0cf6ee883b3b Mon Sep 17 00:00:00 2001 From: Alex Ghiondea Date: Tue, 3 Oct 2017 11:52:40 -0700 Subject: [PATCH 437/872] Create SerialPort-background-thread-exceptions.md (#485) * Create SerialPort-background-thread-exceptions.md * Update SerialPort-background-thread-exceptions.md * Update SerialPort-background-thread-exceptions.md * Update SerialPort-background-thread-exceptions.md * Update SerialPort-background-thread-exceptions.md --- ...SerialPort-background-thread-exceptions.md | 49 +++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 Documentation/compatibility/SerialPort-background-thread-exceptions.md diff --git a/Documentation/compatibility/SerialPort-background-thread-exceptions.md b/Documentation/compatibility/SerialPort-background-thread-exceptions.md new file mode 100644 index 000000000..91aecf871 --- /dev/null +++ b/Documentation/compatibility/SerialPort-background-thread-exceptions.md @@ -0,0 +1,49 @@ +## SerialPort background thread exceptions + +### Scope +Minor + +### Version Introduced +4.7.1 + +### Source Analyzer Status +NotPlanned + +### Change Description +Background threads created with `T:System.IO.Ports.SerialPort` streams no longer terminate the process when OS exceptions are thrown. + +In applications that target the .NET Framework 4.7 and earlier versions, a process is terminated when an operating system exception is thrown on a background thread created with a T:System.IO.Ports.SerialPort stream. + +In applications that target the .NET Framework 4.7.1 or a later version, background threads wait for OS events related to the active serial port and could crash in some cases, such as sudden removal of the serial port. + +- [X] Quirked +- [ ] Build-time break + +### Recommended Action + +For apps that target the .NET Framework 4.7.1, you can opt out of the exception handling if it is not desirable by adding the following to to the `` section of your `app.config` file: + + ```xml + + + + ``` + +For apps that target earlier versions of the .NET Framework but run on the .NET Framework 4.7.1 or later, you can opt in to the exception handling by adding the following to to the `` section of your `app.config` file: + + ```xml + + + + ``` + +### Affected APIs + +* `T:System.IO.Ports.SerialPort` + +### Category +Core + + From cf72ecb13bf6e015cb58e0906adbd0eec067a407 Mon Sep 17 00:00:00 2001 From: Ron Petrusha Date: Tue, 3 Oct 2017 12:20:10 -0700 Subject: [PATCH 438/872] Reviewed WCF app compat topics (#496) --- ...ion-if-an-addressHeader-element-is-null.md | 25 +++++++++++-------- ...shAlgorithm-default-value-is-now-SHA256.md | 22 ++++++++++------ ...ection.GetHashAlgorithm-now-uses-SHA256.md | 23 ++++++++++------- 3 files changed, 43 insertions(+), 27 deletions(-) diff --git a/Documentation/compatibility/WCF-AddressHeaderCollection-now-throws-an-ArgumentException-if-an-addressHeader-element-is-null.md b/Documentation/compatibility/WCF-AddressHeaderCollection-now-throws-an-ArgumentException-if-an-addressHeader-element-is-null.md index 3cacba05f..46a163d0c 100644 --- a/Documentation/compatibility/WCF-AddressHeaderCollection-now-throws-an-ArgumentException-if-an-addressHeader-element-is-null.md +++ b/Documentation/compatibility/WCF-AddressHeaderCollection-now-throws-an-ArgumentException-if-an-addressHeader-element-is-null.md @@ -7,21 +7,26 @@ Minor ###Source Analyzer Status NotPlanned ###Change Description -In .NET Framework 4.7 and earlier versions, there is a bug in one of the public constructors of AddressHeaderCollection where elements of the IEnumerable argument aren�t checked for null. Starting with .NET 4.7.1 the public constructor of AddressHeaderCollection(IEnumerable addressHeaders) now throws an ArgumentException if one of the elements is null. -###Recommended Action: -If you run into compatibility issue with this change on .Net 4.7.1 or later version, you may opt-out the change by adding the following configuration in App config file: +Starting with the .NET Framework 4.7.1, the `M:System.ServiceModel.Channels.AddressHeaderCollection.#ctor(System.Collections.Generic.IEnumerable{System.ServiceModel.Channels.AddressHeader})` constructor throws an `T:System.ArgumentException` if one of the elements is `null`. In the .NET Framework 4.7 and earlier versions, no exception is thrown. - - - - - +###Recommended Action: +If you encounter compatibility issues with this change on the .NET Framework 4.7.1 or a later version, you can opt-out of it by adding the following line to the `` section of the app.config file:: +```xml + + + + + +``` ##Affected APIs -* Not detectable via API analysis +* `M:System.ServiceModel.Channels.AddressHeaderCollection.#ctor(System.Collections.Generic.IEnumerable{System.ServiceModel.Channels.AddressHeader})` + +### Category +* Windows Communication Foundation (WCF) \ No newline at end of file +--> \ No newline at end of file diff --git a/Documentation/compatibility/WCF-MsmqSecureHashAlgorithm-default-value-is-now-SHA256.md b/Documentation/compatibility/WCF-MsmqSecureHashAlgorithm-default-value-is-now-SHA256.md index 811213b30..51244ade9 100644 --- a/Documentation/compatibility/WCF-MsmqSecureHashAlgorithm-default-value-is-now-SHA256.md +++ b/Documentation/compatibility/WCF-MsmqSecureHashAlgorithm-default-value-is-now-SHA256.md @@ -7,21 +7,27 @@ Minor ###Source Analyzer Status NotPlanned ###Change Description -In .NET Framework 4.7 and earlier versions, the default hash algorithm used in WCF to sign Msmq messages was SHA1. Starting with .NET 4.7.1 the default message signing algorithm in WCF for Msmq messages has been changed to use a SHA256. +Starting with the .NET Framework 4.7.1, the default message signing algorithm in WCF for Msmq messages is SHA256. In the .NET Framework 4.7 and earlier versions, the default message signing algorithm is SHA1. + ###Recommended Action: -If you run into compatibility issue with this change on .Net 4.7.1 or later version, you may opt-out the change by adding the following configuration in App config file: +If you run into compatibility issues with this change on the .NET Framework 4.7.1 or later, you can opt-out the change by adding the following line to the ``section of your app.config file: - - - - - +```xml + + + + + +``` ##Affected APIs * Not detectable via API analysis +### Category +* Windows Communication Foundation (WCF) + +--> diff --git a/Documentation/compatibility/WCF-PipeConnection.GetHashAlgorithm-now-uses-SHA256.md b/Documentation/compatibility/WCF-PipeConnection.GetHashAlgorithm-now-uses-SHA256.md index b99c1cba7..2432257fb 100644 --- a/Documentation/compatibility/WCF-PipeConnection.GetHashAlgorithm-now-uses-SHA256.md +++ b/Documentation/compatibility/WCF-PipeConnection.GetHashAlgorithm-now-uses-SHA256.md @@ -7,22 +7,27 @@ Minor ###Source Analyzer Status NotPlanned ###Change Description -In .NET Framework 4.7 and earlier versions, WCF generated random NamedPipe names by creating a SHA1 hash. Starting with .NET 4.7.1, WCF will use a SHA256 to generate the name for the NamedPipe. -###Recommended Action: -If you run into compatibility issue with this change on .Net 4.7.1 or later version, you may opt-out the change by adding the following configuration in App config file: +Starting with the .NET Framework 4.7.1, Windows Communication Foundation uses a SHA256 hash to generate random names for named pipes. In the .NET Framework 4.7 and earlier versions, it used a SHA1 hash. - - - - - +###Recommended Action: +If you run into compatibility issue with this change on the .NET Framework 4.7.1 or later, you can opt-out it by adding the following line to the `` section of your app.config file: +```xml + + + + + +``` ##Affected APIs * Not detectable via API analysis +### Category +* Windows Communication Foundation (WCF) + +--> From 5ac4b5b4038e06359eea9bbb690d044e138fbaa6 Mon Sep 17 00:00:00 2001 From: Alex Ghiondea Date: Wed, 4 Oct 2017 12:43:01 -0700 Subject: [PATCH 439/872] Add breaking change docs (#487) * Add breaking change docs * Update Change-SignedXML-and-SignedCMS-default-algorithms-to-SHA256.md * Update Change-SignedXML-and-SignedCMS-default-algorithms-to-SHA256.md * Update RSACng-and-DSACng-not-usable-in-Partial-Trust-scenarios.md * Update SignedXml.GetPublicKey-returns-RSACng-on-net462.md * Update docs for SignedXML fixes * Remove unclosed comment in doc * Fixup some SignedXml docs * Fixup some SignedXml docs --- ...-SignedCMS-default-algorithms-to-SHA256.md | 47 +++++++++++++++++++ ...g-not-usable-in-Partial-Trust-scenarios.md | 42 +++++++++++++++++ ...l.GetPublicKey-returns-RSACng-on-net462.md | 36 ++++++++++++++ 3 files changed, 125 insertions(+) create mode 100644 Documentation/compatibility/Change-SignedXML-and-SignedCMS-default-algorithms-to-SHA256.md create mode 100644 Documentation/compatibility/RSACng-and-DSACng-not-usable-in-Partial-Trust-scenarios.md create mode 100644 Documentation/compatibility/SignedXml.GetPublicKey-returns-RSACng-on-net462.md diff --git a/Documentation/compatibility/Change-SignedXML-and-SignedCMS-default-algorithms-to-SHA256.md b/Documentation/compatibility/Change-SignedXML-and-SignedCMS-default-algorithms-to-SHA256.md new file mode 100644 index 000000000..aeeb4a545 --- /dev/null +++ b/Documentation/compatibility/Change-SignedXML-and-SignedCMS-default-algorithms-to-SHA256.md @@ -0,0 +1,47 @@ +## Default SignedXML and SignedXMS algorithms changed to SHA256 + +### Scope +Minor + +### Version Introduced +4.7.1 + +### Source Analyzer Status +NotPlanned + +### Change Description +In the .NET Framework 4.7 and earlier, SignedXML and SignedCMS default to SHA1 for some operations. + +Starting with the .NET Framework 4.7.1, SHA256 is enabled by default for these operations. This change is necessary because SHA1 is no longer considered to be secure. + +- [X] Quirked +- [ ] Build-time break + +### Recommended Action +There are two new context switch values to control whether SHA1 (insecure) or SHA256 is used by default: + +- Switch.System.Security.Cryptography.Xml.UseInsecureHashAlgorithms +- Switch.System.Security.Cryptography.Pkcs.UseInsecureHashAlgorithms + +For applications that target the .NET Framework 4.7.1 and later versions, if the use of SHA256 is undesirable, you can restore the default to SHA1 by adding the following configuration switch to the [runtime](https://docs.microsoft.com/en-us/dotnet/framework/configure-apps/file-schema/runtime/runtime-element) section of your app config file: + +```xml + +``` +For applications that target the .NET Framework 4.7 and earlier versions, you can opt into this change by adding the following configuration switch to the [runtime](https://docs.microsoft.com/en-us/dotnet/framework/configure-apps/file-schema/runtime/runtime-element) section of your app config file: + +```xml + +``` + +### Affected APIs +* `T:System.Security.Cryptography.Pkcs.CmsSigner` +* `T:System.Security.Cryptography.Xml.SignedXml` +* `T:System.Security.Cryptography.Xml.Reference` + +### Category +Security + + diff --git a/Documentation/compatibility/RSACng-and-DSACng-not-usable-in-Partial-Trust-scenarios.md b/Documentation/compatibility/RSACng-and-DSACng-not-usable-in-Partial-Trust-scenarios.md new file mode 100644 index 000000000..df4eb8efe --- /dev/null +++ b/Documentation/compatibility/RSACng-and-DSACng-not-usable-in-Partial-Trust-scenarios.md @@ -0,0 +1,42 @@ +## RSACng and DSACng are once again usable in Partial Trust scenarios + +### Scope +Edge + +### Version Introduced +4.6.2 + +### Version Reverted +4.7.1 + +### Source Analyzer Status +NotPlanned + +### Change Description +CngLightup (used in several higher-level crypto apis, such as `T:System.Security.Cryptography.Xml.EncryptedXml`) and `T:System.Security.Cryptography.RSACng` in some cases rely on full trust. These include P/Invokes without asserting `F:System.Security.Permissions.SecurityPermissionFlag.UnmanagedCode` permissions, and code paths where `T:System.Security.Cryptography.CngKey` has permission demands for `F:System.Security.Permissions.SecurityPermissionFlag.UnmanagedCode`. Starting with the .NET Framework 4.6.2, CngLightup was used to switch to `T:System.Security.Cryptography.RSACng` wherever possible. As a result, partial trust apps that successfully used `T:System.Security.Cryptography.Xml.EncryptedXml` began to fail and throw `T:System.Security.SecurityException` exceptions. + +This change adds the required asserts so that all functions using CngLightup have the required permissions. + +- [ ] Quirked +- [ ] Build-time break + +### Recommended Action +If this change in the .NET Framework 4.6.2 has negatively impacted your partial trust apps, upgrade to the .NET Framework 4.7.1. + +### Affected APIs +* `M:System.Security.Cryptography.DSACng.#ctor(System.Security.Cryptography.CngKey)` +* `P:System.Security.Cryptography.DSACng.Key` +* `P:System.Security.Cryptography.DSACng.LegalKeySizes` +* `M:System.Security.Cryptography.DSACng.CreateSignature(System.Byte[])` +* `M:System.Security.Cryptography.DSACng.VerifySignature(System.Byte[],System.Byte[])` +* `M:System.Security.Cryptography.RSACng.#ctor(System.Security.Cryptography.CngKey)` +* `P:System.Security.Cryptography.RSACng.Key` +* `M:System.Security.Cryptography.RSACng.Decrypt(System.Byte[], System.Security.Cryptography.RSAEncryptionPadding)` +* `M:System.Security.Cryptography.RSACng.SignHash(System.Byte[], System.Security.Cryptography.HashAlgorithmName, System.Security.Cryptography.RSASignaturePadding)` + +### Category +Security + + diff --git a/Documentation/compatibility/SignedXml.GetPublicKey-returns-RSACng-on-net462.md b/Documentation/compatibility/SignedXml.GetPublicKey-returns-RSACng-on-net462.md new file mode 100644 index 000000000..1d3f8f49b --- /dev/null +++ b/Documentation/compatibility/SignedXml.GetPublicKey-returns-RSACng-on-net462.md @@ -0,0 +1,36 @@ +## SignedXml.GetPublicKey returns RSACng on net462 (or lightup) without retargeting change + +### Scope +Edge + +### Version Introduced +4.6.2 + +### Version Reverted +4.7.1 + +### Source Analyzer Status +NotPlanned + +### Change Description +Starting with the .NET Framework 4.6.2, the concrete type of the object returned by the `` method changed (without a quirk) from a CryptoServiceProvider implementation to a Cng implementation. This is because the implementation changed from using certificate.PublicKey.Key to using the internal certificate.GetAnyPublicKey which forwards to ``. + +- [x] Quirked +- [ ] Build-time break + +### Recommended Action +Starting with apps running on the .NET Framework 4.7.1, you can use the CryptoServiceProvider implementation used by default in the .NET Framework 4.6.1 and earlier versions by adding the following configuration switch to the [runtime](https://docs.microsoft.com/en-us/dotnet/framework/configure-apps/file-schema/runtime/runtime-element) section of your app config file: + +```xml + +``` + +### Affected APIs +* `M:System.Security.Cryptography.SignedXml.CheckSignatureReturningKey(System.Security.Cryptography.AsymmetricAlgorithm)` + +### Category +Security + + From 53c428f0b59365e7f2baa3ee8927a3b5934076c4 Mon Sep 17 00:00:00 2001 From: Lemon Date: Thu, 5 Oct 2017 03:56:28 +0800 Subject: [PATCH 440/872] Added AspectCore to .NET Open Source Developer Projects (#495) AspectCore is an Aspect-Oriented Programming based cross platform framework for .NET Core and .NET Framework. Core support for aspect-interceptor,dependency injection integration , web applications , and more. --- dotnet-developer-projects.md | 1 + 1 file changed, 1 insertion(+) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index dd1b5f5da..8040f36e4 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -100,6 +100,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [ArcGIS.PCL](https://github.com/davetimmins/ArcGIS.PCL) - Call ArcGIS Server REST API resources. You can also convert between ArcGIS features and GeoJSON. * [Argument](https://github.com/ashmind/Argument) - Argument validation microframework that does one thing in the simplest way possible. * [AshMind.Extensions](https://github.com/ashmind/ashmind-extensions) - A set of very conservative extension methods most of which closely follow naming and design patterns of .NET Base Class Library. + * [AspectCore](https://github.com/dotnetcore/AspectCore-Framework) - AspectCore is an Aspect-Oriented Programming based cross platform framework for .NET Core and .NET Framework. * [ASP.NET MVC Boilerplate Framework](https://github.com/ASP-NET-MVC-Boilerplate/Framework) - ASP.NET MVC Extensions and Helper NuGet packages. * [AsyncCollections](https://github.com/HellBrick/AsyncCollections) - A set of lock-free thread-safe collections designed to be used asynchronously. * [Automatonymous](https://github.com/MassTransit/Automatonymous) - An asynchronous state machine engine with messaging support. From e231176cc46c15cdc52c7a3736322e2669468c13 Mon Sep 17 00:00:00 2001 From: Dustin Metzgar Date: Wed, 4 Oct 2017 15:41:59 -0700 Subject: [PATCH 441/872] WF A11y documentation (#488) * WF A11y changes * Revising for PR comments * More revisions from PR comments --- .../workflow-designer-accessibility.md | 123 ++++++++++++++++++ 1 file changed, 123 insertions(+) create mode 100644 Documentation/compatibility/workflow-designer-accessibility.md diff --git a/Documentation/compatibility/workflow-designer-accessibility.md b/Documentation/compatibility/workflow-designer-accessibility.md new file mode 100644 index 000000000..f47ee8964 --- /dev/null +++ b/Documentation/compatibility/workflow-designer-accessibility.md @@ -0,0 +1,123 @@ +## Accessibility improvements in Windows Workflow Foundation (WF) workflow designer + +### Scope +Minor + +### Version Introduced +4.7.1 + +### Source Analyzer Status +NotPlanned + +### Change Description +The Windows Workflow Foundation (WF) workflow designer is improving how it works with accessibility technologies. These improvements include the following changes: +- The tab order is changed to left to right and top to bottom in some controls: + - The initialize correlation window for setting correlation data for the `T:System.ServiceModel.Activities.InitializeCorrelation` activity + - The content definition window for the `T:System.ServiceModel.Activities.Receive`, `T:System.ServiceModel.Activities.Send`, `T:System.ServiceModel.Activities.SendReply`, and `T:System.ServiceModel.Activities.ReceiveReply` activities +- More functions are available via the keyboard: + - When editing the properties of an activity, property groups can be collapsed by keyboard the first time they are focused. + - Warning icons are now accessible by keyboard. + - The More Properties button in the Properties window is now accessible by keyboard. + - Keyboard users now can access the header items in the Arguments and Variables panes of the Workflow Designer. +- Improved visibility of items with focus, such as when: + - Adding rows to data grids used by the Workflow Designer and activity designers. + - Tabbing through fields in the `T:System.ServiceModel.Activities.ReceiveReply` and `T:System.ServiceModel.Activities.SendReply` activities. + - Setting default values for variables or arguments +- Screen readers can now correctly recognize: + - Breakpoints set in the workflow designer. + - The `T:System.Activities.Statements.FlowSwitch`, `T:System.Activities.Statements.FlowDecision`, and `T:System.ServiceModel.Activities.CorrelationScope` activities. + - The contents of the `T:System.ServiceModel.Activities.Receive` activity. + - The Target Type for the `T:System.Activities.Statements.InvokeMethod` activity. + - The Exception combobox and the Finally section in the `T:System.Activities.Statements.TryCatch` activity. + - The Message Type combobox, the splitter in the Add Correlation Initializers window, the Content Definition window, and the CorrelatesOn Defintion window in the messaging activities (`T:System.ServiceModel.Activities.Receive`, `T:System.ServiceModel.Activities.Send`, `T:System.ServiceModel.Activities.SendReply`, and `T:System.ServiceModel.Activities.ReceiveReply`). + - State machine transitions and transitions destinations. + - Annotations and connectors on `T:System.Activities.Statements.FlowDecision` activities. + - The context (right-click) menus for activities. + - The property value editors, the Clear Search button, the By Category and Alphabetical sort buttons, and the Expression Editor dialog in the properties grid. + - The zoom percentage in the Workflow Designer. + - The separator in `T:System.Activities.Statements.Parallel` and `T:System.Activities.Statements.Pick` activities. + - The `T:System.Activities.Statements.InvokeDelegate` activity. + - The Select Types window for dictionary activities (`T:Microsoft.Activities.AddToDictionary`, `T:Microsoft.Activities.RemoveFromDictionary`, etc.). + - The Browse and Select .NET Type window. + - Breadcrumbs in the Workflow Designer. +- Users who choose High Contrast themes will see many improvements in the visibility of the Workflow Designer and its controls like better contrast ratios between elements and more noticeable selection boxes used for focus elements. + + +- [x] Quirked +- [ ] Build-time break + +### Recommended Action +If you have an application with a re-hosted workflow designer, your application can benefit from these changes by performing either of these actions: +- Recompile your application to target the .NET Framework 4.7.1. These accessibility changes are enabled by default. +- If your application targets the .NET Framework 4.7 or earlier but is running on the .NET Framework 4.7.1, you can opt out of these legacy accessibility behaviors by adding the following [AppContext switch](https://docs.microsoft.com/dotnet/framework/configure-apps/file-schema/runtime/appcontextswitchoverrides-element) to the `` section of the app.config file and set it to `false`, as the following example shows. +``` + + + + + + + + + + +``` +Applications that target the .NET Framework 4.7.1 or later and want to preserve the legacy accessibility behavior can opt in to the use of legacy accessibility features by explicitly setting this AppContext switch to `true`. + + +### Affected APIs + * Not detectable via API analysis + +### Category +Windows Workflow Foundation (WF) + + + + From 4aed3df6b3f5114778c5fd6a62a666e8b9a48fd6 Mon Sep 17 00:00:00 2001 From: miguep <32345992+miguep@users.noreply.github.com> Date: Wed, 4 Oct 2017 15:43:11 -0700 Subject: [PATCH 442/872] Miguep/471 (#493) * wpf-accessibility improvements * Revert "wpf-accessibility improvements" This reverts commit 6cf1980b76d1e38b29534f0687ced346760ec325. * wpf accessibility improvements wpf accessibility improvements * Adressing feedback * Fixed references --- .../wpf-accessibility-improvements.MD | 101 ++++++++++++++++++ 1 file changed, 101 insertions(+) create mode 100644 Documentation/compatibility/wpf-accessibility-improvements.MD diff --git a/Documentation/compatibility/wpf-accessibility-improvements.MD b/Documentation/compatibility/wpf-accessibility-improvements.MD new file mode 100644 index 000000000..0d7d838fc --- /dev/null +++ b/Documentation/compatibility/wpf-accessibility-improvements.MD @@ -0,0 +1,101 @@ +## 195: Accessibility improvements in WPF + +### Scope +Major + +### Version Introduced +4.7.1 + +### Source Analyzer Status +NotPlanned + +### Change Description +__High Contrast improvements__ + +- The focus for the `T:System.Windows.Controls.Expander` control is now visible. In previous versions of the .NET Framework, it was not. +- The text in `T:System.Windows.Controls.CheckBox` and `T:System.Windows.Controls.RadioButton` controls when they are selected is now easier to see than in previous .NET Framework versions. +- The border of a disabled `T:System.Windows.Controls.ComboBox` is now the same color as the disabled text. In previous versions of the .NET Framework, it was not. +- Disabled and focused buttons now use the correct theme color. In previous versions of the .NET Framework, they did not. +- The dropdown button is now visible when a `T:System.Windows.Controls.ComboBox` control's style is set to , In previous versions of the .NET Framework, it was not. +- The sort indicator arrow in a `T:System.Windows.Controls.DataGrid` control now uses theme colors. In previous versions of the .NET Framework, it did not. +- The default hyperlink style now changes to the correct theme color on mouse over. In previous versions of the .NET Framework, it did not. +- The Keyboard focus on radio buttons is now visible. In previous versions of the .NET Framework, it was not. +- The `T:System.Windows.Controls.DataGrid` control's checkbox column now uses the expected colors for keyboard focus feedback. In previous versions of the .NET Framework, it did not. +- the Keyboard focus visuals are now visible on `T:System.Windows.Controls.ComboBox` and `T:System.Windows.Controls.ListBox`. In previous versions of the .NET Framework, it was not. + + +__Screen reader interaction improvements__ + +- `T:System.Windows.Controls.Expander` controls are now correctly announced as groups (expand/collapse) by screen readers. +- `T:System.Windows.Controls.DataGridCell` controls are now correctly announced as data grid cell (localized) by screen readers. +- Screen readers will now announce the name of an editable `T:System.Windows.Controls.ComboBox`. +- `T:System.Windows.Controls.PasswordBox` controls are no longer announced as “no item in view” by screen readers. + + +__LiveRegion support__ + +Screen readers such as Narrator help people know the UI contents of an application, usually by describing something about the UI that’s currently focused, because that is probably the element of most interest to the user. However, if a UI element changes somewhere in the screen and it does not have the focus, the user may not be informed and miss important information. +LiveRegions are meant to solve this problem. A developer can use them to inform the screen reader or any other [UI Automation][UI Automation Overview](https://docs.microsoft.com/dotnet/framework/ui-automation/ui-automation-overview) client that an important change has been made to a UI element. The screen reader can then decide how and when to inform the user of this change. +The LiveSetting property also lets the screen reader know how important it is to inform the user of the change made to the UI. + + +- [x] Quirked +- [ ] Build-time break + +### Recommended Action +__How to opt in or out of these changes__ + +In order for the application to benefit from these changes, it must run on the .NET Framework 4.7.1 or later. The application can benefit from these changes in either of the following ways: +- It is recompiled to target the .NET Framework 4.7.1. These accessibility changes are enabled by default on WPF applications that target the .NET Framework 4.7.1 or later. +- It opts out of the legacy accessibility behaviors by adding the following [AppContext Switch](https://docs.microsoft.com/dotnet/framework/configure-apps/file-schema/runtime/appcontextswitchoverrides-element) in the `````` section of the app config file and setting it to false, as the following example shows. +``` + + + + + + + + + + +``` +Applications that target the .NET Framework 4.7.1 or later and want to preserve the legacy accessibility behavior can opt in to the use of legacy accessibility features by explicitly setting this AppContext switch to ```true```. + +For an overview of UI automation, see the [UI Automation Overview](https://docs.microsoft.com/dotnet/framework/ui-automation/ui-automation-overview). + +### Affected APIs +* `F:System.windows.Automation.AutomationElementIdentifiers.LiveSettingProperty` +* `F:System.windows.Automation.AutomationElementIdentifiers.LiveRegionChangedEvent` +* `F:System.Windows.Automation.AutomationProperties.LiveSetting` +* `M:System.Windows.Automation.AutomationProperties.SetLiveSetting` +* `M:System.Windows.Automation.AutomationProperties.GetLiveSetting` +* `M:System.Windows.Automation.Peers.AutomationPeer.GetLiveSettingCore` +* `T:System.Windows.Automation.AutomationLiveSetting` + + +### Category +WPF + + + + From aa152e3d686eb1eaec9f5657ceefd2bfac5dea18 Mon Sep 17 00:00:00 2001 From: Rob LaDuca Date: Wed, 4 Oct 2017 15:56:47 -0700 Subject: [PATCH 443/872] Known issues for WPF Touch bugs that did not make 4.7.1 RS3 (#494) * Known issues for WPF Touch bugs that did not make 4.7.1 RS3 * Known issues for WPF Touch bugs that did not make 4.7.1 RS3 * Adding InvalidCastException bug for 4.7.1 known issues * Addressing Feedback --- ...s Working After Prolonged Use of Popups.md | 12 +++++++ ...eferenceException in ProcessInputReport.md | 12 +++++++ ... AccessViolation in GetPenEventMultiple.md | 12 +++++++ ...tion when displaying a checked MenuItem.md | 35 +++++++++++++++++++ 4 files changed, 71 insertions(+) create mode 100644 releases/net471/KnownIssues/479874-WPF Touch Stops Working After Prolonged Use of Popups.md create mode 100644 releases/net471/KnownIssues/481090-WPF Touch generates NullReferenceException in ProcessInputReport.md create mode 100644 releases/net471/KnownIssues/489937-WPF Touch and Stylus AccessViolation in GetPenEventMultiple.md create mode 100644 releases/net471/KnownIssues/493108-WPF InvalidCastException when displaying a checked MenuItem.md diff --git a/releases/net471/KnownIssues/479874-WPF Touch Stops Working After Prolonged Use of Popups.md b/releases/net471/KnownIssues/479874-WPF Touch Stops Working After Prolonged Use of Popups.md new file mode 100644 index 000000000..1d0e73424 --- /dev/null +++ b/releases/net471/KnownIssues/479874-WPF Touch Stops Working After Prolonged Use of Popups.md @@ -0,0 +1,12 @@ +## WPF Touch Stops Working After Rapid/Prolonged Use Of Popups + +### Symptoms +On a touch or stylus-enabled machine, WPF applications may see a loss of touch or stylus after rapid or prolonged use of popups (e.g. ComboBoxes, DropDown Menus). + +### Cause +A change to disposal of HwndSource in .NET 4.7 caused Popups to not correctly cleanup touch resources. This eventually can lead to loss of touch/stylus interaction. + +### Resolution +The fix for this is expected in future servicing update for Windows 10. + +### More information \ No newline at end of file diff --git a/releases/net471/KnownIssues/481090-WPF Touch generates NullReferenceException in ProcessInputReport.md b/releases/net471/KnownIssues/481090-WPF Touch generates NullReferenceException in ProcessInputReport.md new file mode 100644 index 000000000..96145f204 --- /dev/null +++ b/releases/net471/KnownIssues/481090-WPF Touch generates NullReferenceException in ProcessInputReport.md @@ -0,0 +1,12 @@ +## WPF Touch generates a NullReferenceException in WispLogic.ProcessInputReport + +### Symptoms +WPF throws a NullReferenceException in WispLogic.ProcessInputReport and the application may crash. + +### Cause +In WPF applications running on touch or stylus enabled machines, specific hardware and timing issues can cause touch messages to arrive without associated StylusDevices. When this occurs WPF tries to access this null StylusDevice, causing the error. + +### Resolution +The fix for this is expected in future servicing update for Windows 10. + +### More information \ No newline at end of file diff --git a/releases/net471/KnownIssues/489937-WPF Touch and Stylus AccessViolation in GetPenEventMultiple.md b/releases/net471/KnownIssues/489937-WPF Touch and Stylus AccessViolation in GetPenEventMultiple.md new file mode 100644 index 000000000..f1c26b73d --- /dev/null +++ b/releases/net471/KnownIssues/489937-WPF Touch and Stylus AccessViolation in GetPenEventMultiple.md @@ -0,0 +1,12 @@ +## WPF Touch/Stylus Generates AccessViolations and Heap Corruption in GetPenEventMultiple + +### Symptoms +On a touch or stylus-enabled machine, WPF applications may sometimes corrupt memory and crash in the internal function GetPenEventMultiple in the PenIMC2_v0400 DLL. + +### Cause +This is due to the release of a COM object that is later used in the WPF touch stack. + +### Resolution +The fix for this is expected in future servicing update for Windows 10. + +### More information \ No newline at end of file diff --git a/releases/net471/KnownIssues/493108-WPF InvalidCastException when displaying a checked MenuItem.md b/releases/net471/KnownIssues/493108-WPF InvalidCastException when displaying a checked MenuItem.md new file mode 100644 index 000000000..77cf47471 --- /dev/null +++ b/releases/net471/KnownIssues/493108-WPF InvalidCastException when displaying a checked MenuItem.md @@ -0,0 +1,35 @@ +## WPF InvalidCastException when displaying a checked MenuItem + +### Symptoms +WPF throws an InvalidCastException when an application displays a MenuItem, +provided the following conditions are all met: + + * The application is running on a server. + * The MenuItem is checked (MenuItem.IsChecked = true). + * The MenuItem is a sub-menu item (MenuItem.Role = SubmenuItem). + * The MenuItem is a descendant of a RibbonWindow. + * The RibbonWindow comes from the out-of-band ("toolkit") version of the WPF ribbon control library. + +The InvalidCastException's message is akin to + + Unable to cast object of type 'System.Windows.Style' to type 'System.Windows.Media.Geometry' + +and the callstack begins with + + at System.Windows.Shapes.Path.get_Data() + at System.Windows.Shapes.Path.get_DefiningGeometry() + at System.Windows.Shapes.Shape.GetNaturalSize() + at System.Windows.Shapes.Shape.MeasureOverride() + +### Cause +The exception is due to a resource key conflict between the ribbon library and the theme +file for server machines (PresentationFramework.AeroLite.dll). Both declare resources +using the same key. The theme file includes a DynamicResource reference intended to find +the Geometry describing the MenuItem's checkmark, but in the circumstances described above +the reference resolves to the ribbon library's resource. This effectively sets the value +of Path.Data to an object of type Style. The next measure pass then encounters the exception. + +### Resolution +The fix for this is expected in a future servicing update for Windows 10. + +### More information From 29a78b2b974eba2bd1a2a76ba3b1b076ba1f8ed3 Mon Sep 17 00:00:00 2001 From: Josh Free Date: Thu, 5 Oct 2017 18:15:17 -0700 Subject: [PATCH 444/872] .NET Native 2.0 initial draft --- releases/UWP/README.md | 1 + releases/UWP/net-native2.0/README.md | 68 +++++++++++++++++++ releases/UWP/net-native2.0/funceval.md | 1 + .../net-native2.0/incremental-compilation.md | 1 + 4 files changed, 71 insertions(+) create mode 100644 releases/UWP/net-native2.0/README.md create mode 100644 releases/UWP/net-native2.0/funceval.md create mode 100644 releases/UWP/net-native2.0/incremental-compilation.md diff --git a/releases/UWP/README.md b/releases/UWP/README.md index 85fc598c8..e21b6ef65 100644 --- a/releases/UWP/README.md +++ b/releases/UWP/README.md @@ -6,6 +6,7 @@ You can learn about Microsoft.NETCore.UniversalWindowsPlatform [releases](#relea You can see what was included in each .NET Native (Microsoft.NETCore.UniversalWindowsPlatform) release. +- [.NET Native 2.0 (UWP 6.0.x)](net-native2.0/README.md) - [.NET Native 1.7 (UWP 5.4.x)](net-native1.7/README.md) - [.NET Native 1.6 (UWP 5.3.x)](net-native1.6/README.md) - [.NET Native 1.4 (UWP 5.2.x)](net-native1.4/README.md) diff --git a/releases/UWP/net-native2.0/README.md b/releases/UWP/net-native2.0/README.md new file mode 100644 index 000000000..f1a869f3a --- /dev/null +++ b/releases/UWP/net-native2.0/README.md @@ -0,0 +1,68 @@ +# .NET Native 2.0 (UWP 6.0.x) Release Notes + +You can see what was included in each .NET Native 2.0 ([Microsoft.NETCore.UniversalWindowsPlatform 6.0.x](https://www.nuget.org/packages/Microsoft.NETCore.UniversalWindowsPlatform)) release, below. + +When using Visual Studio these packages require Visual Studio version 15.4 or later. + +### 6.0.1 (October 5, 2017) + + +#### .NET Standard 2.0 Support + +- The Windows Fall Creators Update brings support for�.NET Standard 2.0�to UWP development. In order to leverage the new APIs with .NET Standard 2.0, you need to set the�minimum�version target of your application to the Windows Fall Creators Update SDK preview. You will then have the ability to reference .NET Standard 2.0 NuGet packages, class libraries, and APIs directly from your UWP application. +- More information is available on .NET Standard 2.0 support [here](https://docs.microsoft.com/en-us/dotnet/standard/net-standard). + +#### Improvements to Program Optimization, Throughput and Debuggability. + +- This release of the .NET Native code generator includes substantial improvements to optimization, throughput and debuggability. This includes many new features from the Visual C++ compiler in Visual Studio 2017. For example, a new SSA optimizer has been enabled and adapted to managed code and carefully tuned. +- This release also includes .NET language targeted improvements in + - native pointer tracking + - static initialization of scalars and arrays + - loop unrolling and vectorization + - write barrier and interference analysis + - code motion in the presence of exception handling + - iterative devirtualization-inlining which allows deeper inlining of small routines in common scenarios like class iterators. +- The code generator also generates accurate optimized debugging support for dead parameters, inlined functions, and default value initialization. There are 78 code generator improvements in this release, including 8 GC-hole bug fixes which improved the quality and reliability of the compiler itself. + +#### Changes to the Debug Runtime (CoreCLR) + +- The Debug runtime (CoreCLR) is now based on the open source .NET Core, including the RyuJIT code generator. Users might notice slight differences in behavior, such as floating-point precision in the x86 runtime, but most code should run just as it did in earlier releases. + + +#### .NET Native Incremental Build Support (Preview) + +- This release contains an opt-in preview for .NET Native incremental compilation support. +- More information is available on incremental compilation support [here](incremental-compilation.md). + +#### .NET Native Function Evaluation Debugger Support (Preview) + +- This release contains an opt-in preview for .NET Native Function Evaluation (aka "FuncEval") Debugger support. +- More information is available on FuncEval support [here](funceval.md). + + +#### Known Issues and Workarounds + +- **.NET Standard 2.0 and other .NET Library NuGet Packages** + - While the vast majority of .NET Standard 2.0 APIs will work normally on the .NET Native platform, there are a small number of exceptions where the .NET Native platform could not fully support the expected behavior, typically because it would require JIT compilation or it is restricted by the app sandbox (AppContainer). An example is reading and writing process information with the Process class. As well, there are also some limitations in certain API that is not part of .NET Standard 2.0. See [https://github.com/dotnet/corefx/wiki/UWP-Compat](https://github.com/dotnet/corefx/wiki/UWP-Compat) for more details. + - Although NuGet will now allow you to reference packages that expect the desktop .NET Framework, it cannot determine whether those libraries use an API that is not available on .NET Native. To warn you of this, NuGet and Visual Studio will display a warning like, "NU1701: Package �PackageNameHere 1.0.0� was restored using �.NETFramework,Version=v4.6.1� instead of the project target framework �.NETStandard,Version=v2.0�. This package may not be fully compatible with your project.". When you receive this warning, you will want to make sure through testing or by reference to the library author that the package will indeed work in your .NET Native project. Over time, we expect many of these packages to re-package to avoid the warning. + - System.Diagnostics.Debugger.Log and System.Diagnostics.Debugger.IsLogging do not report the message to the debugger on Release (.NET Native) builds. Debug (CoreCLR) builds function as expected. [405171] + - System.Net.HttpWebRequest behavior change regarding POST'ing empty content with entity body related request headers (i.e. 'Content-Type', et. al.) from prior .NET Native releases. See [https://github.com/dotnet/corefx/wiki/ApiCompat](https://github.com/dotnet/corefx/wiki/ApiCompat) for more details. + - Exception thrown from C# dynamic binder when calling interface methods on WinRT objects. [476163] + - Exception: Microsoft.CSharp.RuntimeBinder.RuntimeBinderException:The call is ambiguous between the following methods or properties: 'System.Collections.Generic.IDictionary.Add(string, object)' and 'System.Collections.Generic.IDictionary.Add(string, object)' + - Workaround: The recommended fix would be to cast the dynamic object to the desired interface type and just make a call statically. + - Example: dynamicObject.Add("key", value); + - Fix: ((IDictionary)dynamicObject).Add("key", value); + +- **Build Warnings and other Compilation Changes** + - App developers encountering an OutOfMemoryException during Release compilation can specify true in their project properties. This will run part of the toolchain on a single thread reducing the amount of memory used, and it may prevent the exception. + - App sizes and build times have increased by approximately 20% due to support for additional .NET Standard 2.0 APIs + - MCG0004:InternalAssert Assert Failed: unexpectedly found non-native type during [UNKNOWN] Caused by an interop-eligible struct(outer) containing a second struct(inner) as a field with explicit layout and one or more static fields. The workaround is to declare all the static fields of the inner struct before the instance fields. [484367] + - Clicking "Enable static analysis for .NET Native" option in UWP project properties fails with the error: Could not find file 'x86\ilc\lib\Facades' + - Workaround: Uncheck the "Enable static analysis for .NET Native" option in project properties under the Build pane + +## Resources + +- [Getting Started with .NET Native](https://docs.microsoft.com/en-us/dotnet/framework/net-native/getting-started-with-net-native) +- [Microsoft.NETCore.UniversalWindowsPlatform NuGet Package Details](https://www.nuget.org/packages/Microsoft.NETCore.UniversalWindowsPlatform) +- [Windows Dev Center](https://developer.microsoft.com/en-us/windows/apps/getstarted) +- [Downloads and tools for Windows 10](https://developer.microsoft.com/en-us/windows/downloads) diff --git a/releases/UWP/net-native2.0/funceval.md b/releases/UWP/net-native2.0/funceval.md new file mode 100644 index 000000000..8b1378917 --- /dev/null +++ b/releases/UWP/net-native2.0/funceval.md @@ -0,0 +1 @@ + diff --git a/releases/UWP/net-native2.0/incremental-compilation.md b/releases/UWP/net-native2.0/incremental-compilation.md new file mode 100644 index 000000000..8b1378917 --- /dev/null +++ b/releases/UWP/net-native2.0/incremental-compilation.md @@ -0,0 +1 @@ + From 6ce59f0b4a5f3845e77fc6de5bb351913a9b5e0b Mon Sep 17 00:00:00 2001 From: Hong Li Date: Fri, 6 Oct 2017 09:38:44 -0700 Subject: [PATCH 445/872] Fixes based on feedback and rename the file. (#501) * Add ASPNET Accessibility Compat Document * Update ASPNET Accessibility Improvement.md * Update ASPNET Accessibility Improvement.md @rpetrusha incorporated feedback * ASPNET Accessibility Improvement.md * minor fixups * Add more details and rename the file --- .../ASPNET-accessibility-improvement.md | 50 +++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 Documentation/compatibility/ASPNET-accessibility-improvement.md diff --git a/Documentation/compatibility/ASPNET-accessibility-improvement.md b/Documentation/compatibility/ASPNET-accessibility-improvement.md new file mode 100644 index 000000000..d9495b903 --- /dev/null +++ b/Documentation/compatibility/ASPNET-accessibility-improvement.md @@ -0,0 +1,50 @@ +## ASP.NET Accessibility Improvement in .NET 4.7.1 + +### Scope +Minor + + +### Version Introduced +.NET 4.7.1 + + +### Source Analyzer Status +NotPlanned + + +### Change Description +Starting with the .NET Framework 4.7.1, ASP.NET has improved how ASP.NET Web Controls work with accessibility technology in Visual Studio to better support ASP.NET customers. These include the following changes: +- Changes to implement missing UI accessibility patterns in controls, like the Add Field dialog in the Details View wizard, or the Configure ListView dialog of the ListView wizard. +- Changes to improve the display in High Contrast mode, like the Data Pager Fields Editor. +- Changes to improve the keyboard navigation experiences for controls, like the Fields dialog in the Edit Pager Fields wizard of the DataPager control, the Configure ObjectContext dialog, or the Configure Data Selction dialog of the Configure Data Source wizard. + +- [x] Quirked +- [ ] Build-time break + + +### Recommended Action +__How to opt in or out of these changes__ + +In order for the Visual Studio Designer to benefit from these changes, it must run on the .NET Framework 4.7.1 or later. The web application can benefit from these changes in either of the following ways: +- Install Visual Studio 2017 15.3 or later, which supports the new accessibility features with the following AppContext Switch by default. +- Opt out of the legacy accessibility behaviors by adding the __Switch.UseLegacyAccessibility__ AppContext Switch to the `````` section in the devenv.exe.config file and setting it to ```false```, as the following example shows. +``` + + + + ... + + + ... + + +``` +Applications that target the .NET Framework 4.7.1 or later and want to preserve the legacy accessibility behavior can opt in to the use of legacy accessibility features by explicitly setting this AppContext switch to ```true```. + +### Affected APIs + * Not detectable via API analysis + +### Category +ASP.NET + + From 2c0a87838e08efc3c4aac09a144925038cb19a94 Mon Sep 17 00:00:00 2001 From: Josh Free Date: Fri, 6 Oct 2017 09:56:40 -0700 Subject: [PATCH 446/872] Update README.md formatting --- releases/UWP/net-native2.0/README.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/releases/UWP/net-native2.0/README.md b/releases/UWP/net-native2.0/README.md index f1a869f3a..cc50d22f8 100644 --- a/releases/UWP/net-native2.0/README.md +++ b/releases/UWP/net-native2.0/README.md @@ -9,7 +9,7 @@ When using Visual Studio these packages require Visual Studio version 15.4 or la #### .NET Standard 2.0 Support -- The Windows Fall Creators Update brings support for�.NET Standard 2.0�to UWP development. In order to leverage the new APIs with .NET Standard 2.0, you need to set the�minimum�version target of your application to the Windows Fall Creators Update SDK preview. You will then have the ability to reference .NET Standard 2.0 NuGet packages, class libraries, and APIs directly from your UWP application. +- The Windows Fall Creators Update brings support for .NET Standard 2.0 to UWP development. In order to leverage the new APIs with .NET Standard 2.0, you need to set the minimum version target of your application to the Windows Fall Creators Update SDK preview. You will then have the ability to reference .NET Standard 2.0 NuGet packages, class libraries, and APIs directly from your UWP application. - More information is available on .NET Standard 2.0 support [here](https://docs.microsoft.com/en-us/dotnet/standard/net-standard). #### Improvements to Program Optimization, Throughput and Debuggability. @@ -44,21 +44,21 @@ When using Visual Studio these packages require Visual Studio version 15.4 or la - **.NET Standard 2.0 and other .NET Library NuGet Packages** - While the vast majority of .NET Standard 2.0 APIs will work normally on the .NET Native platform, there are a small number of exceptions where the .NET Native platform could not fully support the expected behavior, typically because it would require JIT compilation or it is restricted by the app sandbox (AppContainer). An example is reading and writing process information with the Process class. As well, there are also some limitations in certain API that is not part of .NET Standard 2.0. See [https://github.com/dotnet/corefx/wiki/UWP-Compat](https://github.com/dotnet/corefx/wiki/UWP-Compat) for more details. - - Although NuGet will now allow you to reference packages that expect the desktop .NET Framework, it cannot determine whether those libraries use an API that is not available on .NET Native. To warn you of this, NuGet and Visual Studio will display a warning like, "NU1701: Package �PackageNameHere 1.0.0� was restored using �.NETFramework,Version=v4.6.1� instead of the project target framework �.NETStandard,Version=v2.0�. This package may not be fully compatible with your project.". When you receive this warning, you will want to make sure through testing or by reference to the library author that the package will indeed work in your .NET Native project. Over time, we expect many of these packages to re-package to avoid the warning. + - Although NuGet will now allow you to reference packages that expect the desktop .NET Framework, it cannot determine whether those libraries use an API that is not available on .NET Native. To warn you of this, NuGet and Visual Studio will display a warning like, "NU1701: Package ‘PackageNameHere 1.0.0’ was restored using ‘.NETFramework,Version=v4.6.1’ instead of the project target framework ‘.NETStandard,Version=v2.0’. This package may not be fully compatible with your project.". When you receive this warning, you will want to make sure through testing or by reference to the library author that the package will indeed work in your .NET Native project. Over time, we expect many of these packages to re-package to avoid the warning. - System.Diagnostics.Debugger.Log and System.Diagnostics.Debugger.IsLogging do not report the message to the debugger on Release (.NET Native) builds. Debug (CoreCLR) builds function as expected. [405171] - System.Net.HttpWebRequest behavior change regarding POST'ing empty content with entity body related request headers (i.e. 'Content-Type', et. al.) from prior .NET Native releases. See [https://github.com/dotnet/corefx/wiki/ApiCompat](https://github.com/dotnet/corefx/wiki/ApiCompat) for more details. - Exception thrown from C# dynamic binder when calling interface methods on WinRT objects. [476163] - - Exception: Microsoft.CSharp.RuntimeBinder.RuntimeBinderException:The call is ambiguous between the following methods or properties: 'System.Collections.Generic.IDictionary.Add(string, object)' and 'System.Collections.Generic.IDictionary.Add(string, object)' + - Exception: Microsoft.CSharp.RuntimeBinder.RuntimeBinderException:The call is ambiguous between the following methods or properties: ```System.Collections.Generic.IDictionary.Add(string, object)``` and ```System.Collections.Generic.IDictionary.Add(string, object)``` - Workaround: The recommended fix would be to cast the dynamic object to the desired interface type and just make a call statically. - - Example: dynamicObject.Add("key", value); - - Fix: ((IDictionary)dynamicObject).Add("key", value); + - Example: ```dynamicObject.Add("key", value);``` + - Fix: ```((IDictionary)dynamicObject).Add("key", value);``` - **Build Warnings and other Compilation Changes** - - App developers encountering an OutOfMemoryException during Release compilation can specify true in their project properties. This will run part of the toolchain on a single thread reducing the amount of memory used, and it may prevent the exception. + - App developers encountering an OutOfMemoryException during Release compilation can specify ```true``` in their project properties. This will run part of the toolchain on a single thread reducing the amount of memory used, and it may prevent the exception. - App sizes and build times have increased by approximately 20% due to support for additional .NET Standard 2.0 APIs - MCG0004:InternalAssert Assert Failed: unexpectedly found non-native type during [UNKNOWN] Caused by an interop-eligible struct(outer) containing a second struct(inner) as a field with explicit layout and one or more static fields. The workaround is to declare all the static fields of the inner struct before the instance fields. [484367] - Clicking "Enable static analysis for .NET Native" option in UWP project properties fails with the error: Could not find file 'x86\ilc\lib\Facades' - - Workaround: Uncheck the "Enable static analysis for .NET Native" option in project properties under the Build pane + - Workaround: Uncheck the ```"Enable static analysis for .NET Native"``` option in project properties under the Build pane ## Resources From de8e1bf8b42402aea9e22d370c9a12dcd14019b3 Mon Sep 17 00:00:00 2001 From: Josh Free Date: Fri, 6 Oct 2017 09:59:57 -0700 Subject: [PATCH 447/872] Update README.md formatting --- releases/UWP/net-native2.0/README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/releases/UWP/net-native2.0/README.md b/releases/UWP/net-native2.0/README.md index cc50d22f8..93222d3ff 100644 --- a/releases/UWP/net-native2.0/README.md +++ b/releases/UWP/net-native2.0/README.md @@ -44,11 +44,11 @@ When using Visual Studio these packages require Visual Studio version 15.4 or la - **.NET Standard 2.0 and other .NET Library NuGet Packages** - While the vast majority of .NET Standard 2.0 APIs will work normally on the .NET Native platform, there are a small number of exceptions where the .NET Native platform could not fully support the expected behavior, typically because it would require JIT compilation or it is restricted by the app sandbox (AppContainer). An example is reading and writing process information with the Process class. As well, there are also some limitations in certain API that is not part of .NET Standard 2.0. See [https://github.com/dotnet/corefx/wiki/UWP-Compat](https://github.com/dotnet/corefx/wiki/UWP-Compat) for more details. - - Although NuGet will now allow you to reference packages that expect the desktop .NET Framework, it cannot determine whether those libraries use an API that is not available on .NET Native. To warn you of this, NuGet and Visual Studio will display a warning like, "NU1701: Package ‘PackageNameHere 1.0.0’ was restored using ‘.NETFramework,Version=v4.6.1’ instead of the project target framework ‘.NETStandard,Version=v2.0’. This package may not be fully compatible with your project.". When you receive this warning, you will want to make sure through testing or by reference to the library author that the package will indeed work in your .NET Native project. Over time, we expect many of these packages to re-package to avoid the warning. - - System.Diagnostics.Debugger.Log and System.Diagnostics.Debugger.IsLogging do not report the message to the debugger on Release (.NET Native) builds. Debug (CoreCLR) builds function as expected. [405171] - - System.Net.HttpWebRequest behavior change regarding POST'ing empty content with entity body related request headers (i.e. 'Content-Type', et. al.) from prior .NET Native releases. See [https://github.com/dotnet/corefx/wiki/ApiCompat](https://github.com/dotnet/corefx/wiki/ApiCompat) for more details. + - Although NuGet will now allow you to reference packages that expect the desktop .NET Framework, it cannot determine whether those libraries use an API that is not available on .NET Native. To warn you of this, NuGet and Visual Studio will display a warning like, ```NU1701: Package 'PackageNameHere 1.0.0' was restored using '.NETFramework,Version=v4.6.1' instead of the project target framework '.NETStandard,Version=v2.0'. This package may not be fully compatible with your project.```. When you receive this warning, you will want to make sure through testing or by reference to the library author that the package will indeed work in your .NET Native project. Over time, we expect many of these packages to re-package to avoid the warning. + - ```System.Diagnostics.Debugger.Log``` and ```System.Diagnostics.Debugger.IsLogging``` do not report the message to the debugger on Release (.NET Native) builds. Debug (CoreCLR) builds function as expected. [405171] + - ```System.Net.HttpWebRequest``` behavior change regarding POST'ing empty content with entity body related request headers (i.e. 'Content-Type', et. al.) from prior .NET Native releases. See [https://github.com/dotnet/corefx/wiki/ApiCompat](https://github.com/dotnet/corefx/wiki/ApiCompat) for more details. - Exception thrown from C# dynamic binder when calling interface methods on WinRT objects. [476163] - - Exception: Microsoft.CSharp.RuntimeBinder.RuntimeBinderException:The call is ambiguous between the following methods or properties: ```System.Collections.Generic.IDictionary.Add(string, object)``` and ```System.Collections.Generic.IDictionary.Add(string, object)``` + - Exception: ```Microsoft.CSharp.RuntimeBinder.RuntimeBinderException:The call is ambiguous between the following methods or properties: System.Collections.Generic.IDictionary.Add(string, object) and System.Collections.Generic.IDictionary.Add(string, object)``` - Workaround: The recommended fix would be to cast the dynamic object to the desired interface type and just make a call statically. - Example: ```dynamicObject.Add("key", value);``` - Fix: ```((IDictionary)dynamicObject).Add("key", value);``` From c8fb3f0a44b1dc98d06f45ab2f119ea008c03e02 Mon Sep 17 00:00:00 2001 From: Josh Free Date: Fri, 6 Oct 2017 10:02:15 -0700 Subject: [PATCH 448/872] Update README.md formatting --- releases/UWP/net-native2.0/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/releases/UWP/net-native2.0/README.md b/releases/UWP/net-native2.0/README.md index 93222d3ff..3c7648d53 100644 --- a/releases/UWP/net-native2.0/README.md +++ b/releases/UWP/net-native2.0/README.md @@ -56,8 +56,8 @@ When using Visual Studio these packages require Visual Studio version 15.4 or la - **Build Warnings and other Compilation Changes** - App developers encountering an OutOfMemoryException during Release compilation can specify ```true``` in their project properties. This will run part of the toolchain on a single thread reducing the amount of memory used, and it may prevent the exception. - App sizes and build times have increased by approximately 20% due to support for additional .NET Standard 2.0 APIs - - MCG0004:InternalAssert Assert Failed: unexpectedly found non-native type during [UNKNOWN] Caused by an interop-eligible struct(outer) containing a second struct(inner) as a field with explicit layout and one or more static fields. The workaround is to declare all the static fields of the inner struct before the instance fields. [484367] - - Clicking "Enable static analysis for .NET Native" option in UWP project properties fails with the error: Could not find file 'x86\ilc\lib\Facades' + - ```MCG0004:InternalAssert Assert Failed: unexpectedly found non-native type during [UNKNOWN] Caused by an interop-eligible struct(outer) containing a second struct(inner) as a field with explicit layout and one or more static fields.``` The workaround is to declare all the static fields of the inner struct before the instance fields. [484367] + - Clicking ```"Enable static analysis for .NET Native"``` option in UWP project properties fails with the error: ```Could not find file 'x86\ilc\lib\Facades'``` - Workaround: Uncheck the ```"Enable static analysis for .NET Native"``` option in project properties under the Build pane ## Resources From 30923a0e318bfb7e28c23b72279e152ee5e8df38 Mon Sep 17 00:00:00 2001 From: Josh Free Date: Fri, 6 Oct 2017 11:35:17 -0700 Subject: [PATCH 449/872] Correct name of Visual Studio 2017 Version 15.4 --- releases/UWP/net-native2.0/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/releases/UWP/net-native2.0/README.md b/releases/UWP/net-native2.0/README.md index 3c7648d53..e66ddd355 100644 --- a/releases/UWP/net-native2.0/README.md +++ b/releases/UWP/net-native2.0/README.md @@ -2,7 +2,7 @@ You can see what was included in each .NET Native 2.0 ([Microsoft.NETCore.UniversalWindowsPlatform 6.0.x](https://www.nuget.org/packages/Microsoft.NETCore.UniversalWindowsPlatform)) release, below. -When using Visual Studio these packages require Visual Studio version 15.4 or later. +When using Visual Studio these packages require Visual Studio 2017 Version 15.4 or later. ### 6.0.1 (October 5, 2017) @@ -14,7 +14,7 @@ When using Visual Studio these packages require Visual Studio version 15.4 or la #### Improvements to Program Optimization, Throughput and Debuggability. -- This release of the .NET Native code generator includes substantial improvements to optimization, throughput and debuggability. This includes many new features from the Visual C++ compiler in Visual Studio 2017. For example, a new SSA optimizer has been enabled and adapted to managed code and carefully tuned. +- This release of the .NET Native code generator includes substantial improvements to optimization, throughput and debuggability. This includes many new features from the Visual C++ compiler in Visual Studio 2017 Version 15.4. For example, a new SSA optimizer has been enabled and adapted to managed code and carefully tuned. - This release also includes .NET language targeted improvements in - native pointer tracking - static initialization of scalars and arrays From 3f70aca8cce2fb304c688938c1e0d2148e049d54 Mon Sep 17 00:00:00 2001 From: Josh Free Date: Fri, 6 Oct 2017 13:34:01 -0700 Subject: [PATCH 450/872] Update funceval.md --- releases/UWP/net-native2.0/funceval.md | 60 ++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) diff --git a/releases/UWP/net-native2.0/funceval.md b/releases/UWP/net-native2.0/funceval.md index 8b1378917..000ad312b 100644 --- a/releases/UWP/net-native2.0/funceval.md +++ b/releases/UWP/net-native2.0/funceval.md @@ -1 +1,61 @@ +# .NET Native 2.0 Function Evaluation Debugger Support (Preview) +As part o the [.NET Native 2.0 release](README.md), we have shipped a preview of the FuncEval feature that aims to improve diagnostics and overall debugging experience for UWP Applications compiled with the .NET Native 2.0 toolchain. Please note that since this is only a public preview of the feature, it is turned off by default and can be turned on by setting a registry key. Once FuncEval support is enabled, you should be able to inspect WinRT Properties under the debugger, that you previously could not. + +## How to use Function Evaluation (FuncEval) in Visual Studio 2017 15.4 + +1. Start by creating a blank UWP Application +2. Switch the application to use **Debug Configuration** and select **Compile with .NET Native tool chain** in the project property page + + ![Visual Studio FuncEval Config](images/funceval-0.png) + +3. Create a TextBox and a Button and then write the following code : + ```private void Button_Click(object sender, RoutedEventArgs e) + { + this.TextField.Text = this.TextField.Text + "Blah"; + } + ``` +4. Set a breakpoint in the Button_Click event handler + - Inspecting the ```this.TextField.Text``` will report ```Evaluation of method Windows.UI.Xaml.Controls.TextBox.get_Text requires reading field.System.RuntimeTypeHandle._value, which is not available in this context.``` + + ![Visual Studio FuncEval Disabled](images/funceval-1.png) + +5. Now enable FuncEval support by setting the NetNativeFuncEvalEnabled registry key + - Open a command prompt and execute: + - ```"C:\Program Files (x86)\Microsoft Visual Studio\Enterprise\Common7\IDE\VsRegEdit.exe" set "C:\Program Files (x86)\Microsoft Visual Studio\Enterprise" HKCU Debugger NetNativeFuncEvalEnabled DWORD 1``` + - Note that you will have to change the Visual Studio Path (```"C:\Program Files (x86)\Microsoft\Visual Studio\Enterprise"```) to match your local environment. + +6. There is no need to close or restart Visual Studio, just run the command and debug again. Now the debugger autos menu will show you the contents of this.TextField.Text: + +![Visual Studio FuncEval Enabled](images/funceval-2.png) + +## How to disable Function Evaluation (FuncEval) in Visual Studio 2017 15.4 + +- If the FuncEval preview is causing any problems, you can turn it off by changing the registry key value to zero (0) + - Open a command prompt and execute: + - ```"C:\Program Files (x86)\Microsoft Visual Studio\Enterprise\Common7\IDE\VsRegEdit.exe" set "C:\Program Files (x86)\Microsoft Visual Studio\Enterprise" HKCU Debugger NetNativeFuncEvalEnabled DWORD 0``` + - Again, you will have to change the Visual Studio Path (```"C:\Program Files (x86)\Microsoft\Visual Studio\Enterprise"```) to match your local environment. + + +## Windows.UI.Xaml.UnhandledExceptionEventArgs + +One particular property that developers really want to inspect is the Exception field on the Windows.UI.Xaml.UnhandledExceptionEventArgs object. To do so, add the following to your Default.rd.xml: + +``` + + + + + + +``` + +With the Default.rd.xml setup and the FuncEval feature enabled you can inspect the expection object now. In general, this approach should work for all properties that you would like to inspect. + +## Known Issues + +- The FuncEval Preview currently does not support inspection of generic functions or properties. + +## Provide Feedback + +Please continue to send questions and suggestions to dotnetnative@microsoft.com. We look forward to hearing from you and seeing what great things you will build. From b6d19d9482e9a09ccac35a3e0e11aa25c6ce3556 Mon Sep 17 00:00:00 2001 From: Josh Free Date: Fri, 6 Oct 2017 13:44:52 -0700 Subject: [PATCH 451/872] FuncEval release notes Add VS screen shots for funceval notes --- .../UWP/net-native2.0/images/funceval-0.png | Bin 0 -> 101597 bytes .../UWP/net-native2.0/images/funceval-1.png | Bin 0 -> 607829 bytes .../UWP/net-native2.0/images/funceval-2.png | Bin 0 -> 557254 bytes 3 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 releases/UWP/net-native2.0/images/funceval-0.png create mode 100644 releases/UWP/net-native2.0/images/funceval-1.png create mode 100644 releases/UWP/net-native2.0/images/funceval-2.png diff --git a/releases/UWP/net-native2.0/images/funceval-0.png b/releases/UWP/net-native2.0/images/funceval-0.png new file mode 100644 index 0000000000000000000000000000000000000000..644eef5f28c0123d8b0d4d75403dfde1be37cc12 GIT binary patch literal 101597 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 literal 0 HcmV?d00001 diff --git a/releases/UWP/net-native2.0/images/funceval-1.png b/releases/UWP/net-native2.0/images/funceval-1.png new file mode 100644 index 0000000000000000000000000000000000000000..0fb99b19ca561517b1ff6b55ca5c96ddcd9e631e GIT binary patch literal 607829 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 z z4mllj$GGPA)zO{#&z!L$^f56E4c4q5= z-JU@kZ0XT_Ns&jQT1gPGPaH$;L-JtASRt5oGLB!XlgYp|y^?$b=SvdFv2Z??4( z9K0>ad`|=HKI!{#6d+4v7+#W2GT0DsXcj*i-xE>-j-`5jN2VHVwKo|ppJDmy5WNP^ z_~E;4`LKtWlE$VQ9JN{vs#asmH0=YL}C$EGvD&SvtDtqc+tQm{7W z;TpMMYq`vOLs5xX0zD#pKcg=`U&K)df!NTj11{%IKwlV!M>nG5(5*&$#IRYVR!%Pr zKYx|JUZMp%gdhBQ`NX62IFI+!5$Fue;fkq8NZyuY2R&}z+A~sBN%_%6Z8;r8orR9y zPn-*zp}mDvW$GU_q3NeDIy@1~HUs4rG_b?7OWdC_JpUD!?#}%yU=I(CzKEUvJ+6bB zVpZGQ$A@VC9CQ!}zM;9>7~NU<^;sh6&m10%o`3dOtjutNrxt6-x<;SuN1%aSWc}#Z&orNZskyU{Z4hdRv+wOk+B_@kly2ob@L20hWw1 zI69gkVG-;hl{Rav_rvP znM~8i$6A}5XB)0nte>g;(U+y%!6Ye(0&FbRl3Q3ZXAjqvRxvin7Twe!%I)e86nRrr z^dI|=@~ZCbG_rN;F639j6UzlK1Fs;s$^JZ4)3c0&^N)iT9s66eM#$JowAg>)msJfQ zTmvkzBhzH~&r2_9Z)-#tUd|lrk{gD%cub7RMkWD8xfY4HSjLD822yL|y`K;&NE{tZ zaiJpblk~Lho-^~P%8|v%6kmWMQ9v7OnmGh;=z{2W)dfSXMzeBKlH)1Wg6?z__+>@73DqXr&PGFWu0 zprDCxv-=xXPQ+gUA8^~3`)Ejt986D75bfd%+XzQeUZHO7?0&$y(=1g zZ|s}qNJaCP(~0c)Pn6@8T$QU=>28|M+ij z1uIg)P^Lv|nI#IG=3yG7{U$o?_3|~3bgQh%x z83}H0@S&uCgm5UP=;vj<%&!w437^4!Sp;viri3Tz?f0_BdTeXX*6UGq#qYl)Nk6tO z+_U2Kjo5PR&|Pyg!Am+0)e@6oZuU(-9J5A`DL%8BO;`SUAo~rIJ3P>19GDT-4VGV1 zn#_*{J+T>sYQYNX(NwSwhv(i8FoaJY^c~~z9AiQTqq?@Q%CvFDdy+#k4WxP2-!xa) zGQx{LM)~-@Dn5x>B2#i$7FFoe!PZoRvu&ljPrysB=C{7TsMawlFw2o-N#iGfTY5C* zRsl>lD?>F6E!GWdYG76P;bv4ZsQYHtJqD>h7L~$ov5(Q`{3zds+9Hqs9Pw2$QFXf* zmg*sWs?|$ChkF}ga$kF64%4|kHq*t07LhsFhJ#uYw=#K>t(w=2fS5g$`Ij=r_GQDf z3%6rLO1Q;KQ6sgDkuxLAz$)(DpU`%;;-{KR3oM=)w3SGcyOQrSP}UUHk~M40Lg5WV z9*NEI%3#yWh=cQ*R7EFkemlQuX>;P1_Ae5_3jIp2F{EPe2`iW#^ zRlya%D18P(s$p4DSP=doGqScDDMTgf;$sigQ1>Q=4NT1RP`gBi{P%#_GseadX=vXp zX@}x?w5-#+ICZd@L9tMOH@HKluaP4?fK)Tt`wE}n&O=XT*U}d2mQwIxOqSuK3#{Ua(oHNQR z&VjjDa{rK*V~j`swd6QZJV;KbH;kp<{z20~Pah~A!`A-eTVaprpuxO1xzw~b*>ByN zf44K-%7+`LAJj)KA$X%2z6{zmO`fXHP!jqfF4}Q@Ds1s;Z z(U2dEP6+&w zED$gHANAqJ1*WQ!;yE!AtDkkfEAJT%%w&CK-Z&VY_^y2AsG4nT#|2Q912mMNG9$}$ zzDfp4(h@R#Tz@qUs9dLa9h?OksitGfYfM!7q>!!6GCj)VGic7s((2iNMc8S}+QXTD zQtJzaeJ>{x^~OfcR;xcb`|?ixk3Gj)ZQ%| z0cz_17KL@OGt~Lh)J0oP?UqeCv2`sa;oMLY{X_9gX}jebtG>fUULOvY-jOv$h67|8 zvv+6$+MIPRp**(|y9tCdi@Dqp-J((D1BoPl5_h&;d-_>bS7smskF3o|On=B7Lg(@>j1I-@AqOQ4l+t+tbts(wc|FfFeDijQe5cjxqv$qcp}esge8y{(Fq0?Jsb~#Z3R$u1L1J)H0hCSX@A*R+!lN_Q zeAq@;pog2m2KEG5>TAiCY64TY(A=P3HdHp3Rakfn!{#iFa#BcWfyo4xQ!UeQ6nK_Q zA`phBK-qJDmdwewkG%OK7I+u@*nh~B4~SIGC>E6-qomE;WsQRt+NLq`#Ne>R3~TG^nMi9>J%}CFdYF4{{ck{)OABDx=Um|1o zyyV1bz^Z!X*FUILLZ7z=35!3JT3A29hDnZmXidbYLKyOI*yuQ<({7{+;ojN=3!JNs zi-Xx=4y=to7(-2V(t=ciUtxL_YxHvfw`4xIq%4ozlm7h`1h{)rg2Sv}LK>(* z3>MZM?X38Pv$W+2^9>WQsQ{?Gs2gwMdL5Rl4GXit zqg*5w)3L)L(9WJyunZ*-+^FTVnp+4l0*sxuX(;l0MCB9jG;CvKJW&2(Tb6|vIBJ6*_GVwh=% z>ni0qgdoj)nSv$KxVM;fvucGjEN5O!`~NGu8TlH$f6NITS1fn3m2jE?@5HNU1G0DL zi4-`qlFWZ`g5#cPMA)XGZ&8}STEx>&--3{a&Y{fBQl1Q3I1QUYz4`nZ@mCejsVrJ0 zd!|iON+6q`>6fyEI14Ss!>6G)ZEDop^^<|JlYv%9F(;%gDI5kpxmkJD8)%1VhT|w* zbh@Yfdd{CEHG+)oaarq&onJO;qn1eZxbyL#SP1A$TbCtgCJS^}cBtV7C$!9R=)sG| z&A6V%wF`2Jl3O%xkuzy4v85vr1jM(*G?xp&XW!b#i} zd)l15$lA-Sb5Xh36x_^O(7Jm+ZjG>ty~NHk3I?1)=4$yF5-+*E?(ZmtCu* zR1j9CzmxL>yg?3gaYq9&bzE1KBYYa8ANyadh9{~4@0o8a5at&GBhOF0lHr=O?4$Jf zOK1G!c|O>oOOa@JOEPHYI(FV9hdmdq*EL)-gJq5}j^ug6-|>GDpkfKo5)Vq#urV;s zD`0zcw#?m&t0y<%23O)?qjNY;Wr;E2cD+3WEXj}*pv897ZWO?`yFfp3n)nD4P>|UZ zDay2*(K1>A3$Yat=2X3?MTfrrhqWrKqj*f-7|6Z%roQvg33W@z?$r;d#>4sAG~JmoW9e}JIm92?>p zs>uJGnH5vE?znnU4Yg8TlVugBo{w@qV^0h{Vk>#9|7E$DX|y;*4ZHFu;^C*0)lfrn zf&=@CjMOx_*GL&{YMBC=gtALealuoXY5gj>)RE>u3)Z z2<6K=%BzP{wk>b*oC5M_C6e>scz2gSWKgobMga%_uG%-pa44etRv@pMGOOaRZMW|~ zXN@o!<^I)RX}5Mtn=X!Pbj)!b+*&-zonuM3tzd#WYJ_vr#2+@!`y?1gt5V8swfmk$ zCcN90L;quuPr|sr;va7Dl-2E&ybH;;t=HyE8g{}biXA6{ef*w;x$&M3k(A4$cN}5v zb5G)ZRmL}k_reHdq%tNw*vCInj_8CMI1r%8mmFXOtzy0f4uc|7kuC#QnCbMC8HDeh zCy&1p>~Yp(?>W`m=~;a`5IQrar2AwZZHv-x(#mA&r=ASBs-db9RL`sHQ$`cs_h22E zbjf8C_gHdt7BNRqDZ0xb&FPkNKeNDoo1|MxaGR}Pl2hlC9!c%7+8#=iuwv7xHkg7P zh;q(G!hQ7ZrOCZa<>Q5o44FbZ+=PX#lPIwj>@!3AIl}U>-dCD| zZVv+c62Kp^Av=vNUY2_uWIR#1O%exLJ{C(!C5-7cF~)3mkg2-1I)#1I`l?^Ev43wt z2=#K2OO&QA4nhSd$9X=DYB$qE!i9;Y^67Igkwj3UJAe&TZj&Fxtjpv_CIqLOBK?b zz;t2PyY=KHPJMG3DLpdoOJTzkqwAz*$s2V-o;i7`0GP2T9B2Hb)}yM1gRkvI#Gj;Lu19kp89Y=Hz{Yd;7~!Ju5i9vJo?kS=!XYpN8x(AX4F&|* z>KxB}M_D*!WTSGx!uVZy4^Jdca$qHk>aY3P{?#bsIikhnud>iJLnBCufp#abf@-72 z)B3Eg6eb1a*wFRN4+o*L`iPYq^Vbf zmDFIG6T(oE3k70n_9?jb{;Q}D^Ju(0Gbd5ea2v-ml8_cIr|BhliP}9&+FO)2D9Mz{ zRb&D7N)MPicpr|~7n!}y##Je7$g4XtLeEWqb(WA0X8ASD+}yY&I07}V{uUc@C3_?Y5yWRY`uA2E zEAi`a&C)v9fa-IR7l*mce3%8X-IXh0C2b^>V&+9!qMOzR~)Wc(Z5O4l0W{_q`d+eNKPf8 zic;V}L6fv3B&fwf1PJAvni8cThrrK8Ew?3?>ZP|#QLpZMUYa_+!5Osg{GqIp-fr)Z z2#o(5U$r+;Og?GTSq=igG=SkZpmGc1izOw_&6B5GNl0S5 z%9kM7$_z$=B|(7;U>I|=p%L{snWFptFv7XDp83w4N0C?Kj@@>ejlY~+YlF&Q86x%{ zVkOZGGm%3pavYP`kGm`-)FXEWKDNpLB&d6FDQM9oapD6INHvz-Ynuzi`@!9VnX3OB zzPH|KIVWa!N(bPZ-l5{ciOxo3VDw0>L{^9T)9P(4O*&1T`q=ABzkoqitZWvO>iQKA zdfNk4y7V8^LBRm#>6uX6J8L`w3Ne9_USZGm@**V*hC_Izgl3{pri6o@KCUv#Zwnoz z(9J`{ed1V8A3;!%HsX%^K+Gi80?5#kN4d4c`J$?Q614GT-+X$bf36>CqyP5oMKGcn z;e*EwdhIB2KX1{OfJPkDz^*OGh}>MBMDhHC2Qn9k${CWqpuBUK^q4~FQr$Q6uPE(5 zZk5;%flb$yE;7BcW0cg6sXSrUQbpN{+u<^_4k~59-7T*vCliVFEbXka%F&7{_iOa< zW@R})F@_oAvf=k0P-$OF>&WV=+hEl<)>W-8ULc~F4fl(7;UtE@o$AbHaBj8jIuP8h z*8}m4(3jPSd1iyB5Vpg)$_T#$l3%0Udf-oTIRlo*pmfc!Zk?zZ$)RKVrPkaVGz+BH zuVwhbrZ~w7Q*E2OXHd+`T6b9keu2pWnvUPrJ zi{WxCMVM~r#X_i~@5@M&1J@;}#Hi!!SBViK_UhWbxl~RP3=UNr+C&BQ*i&vlOozrt z$r!8z+6ifP!r1s24?m#&U|TkI`=sJ~jaf0gXtr5xGbTR|5a!t6%8T}@zCBFYpSp3! zphD)gxWZ}DISJX&qz@`7MYnrh(jOstx$1w$+o*Lo5^~n%i;gd|I;1ZVc~B1KlR0AD z6(;yn)p393e3Tcf`~lwPQE|KR{o=*wdJIgHWH##9;qja#dJeh7OSwEnLbFsP}?AWjv zJ_u~xWPOb|+7P=s&vu`wF}v>pI=z!f!R^}~hTrskU%2o5d81c*Za5BE&Dys47Aw~c z$NlWczD+Uvi{N8^s`Xm^HP#o>IZn{%$TH%aj@7#4?u z>_MbHYzEEY5c>*r%fcRhY!mFdcXCAzk!L`B~?qy2ofUCI27 z6c^)zfkHzwd<~%=dM|;&723Zq*EddYJghcm#jM5M!HAXUEunEQ(w8vaYow1kaqWw< z-Qfm??{{xWD$<)_*f7Wwm{JLY(Sti#^rq{?;kHo|Y1O;N!?Zp(v1pq%$+~gla;s&r zU9$`5L63MT+EYvUtEdA8_<0!SJ!)y8Vp6kZ_x^*8Rox)3M&8YYOoT5=jFP}J`hE)G zb#M?x1^j-*xb%AXLb@MABJZCG1|J}_W}vq%u$5~cC7m@aOCV-6X^~nKDN+n6Tmha% zJK_lwOM1GH$i`3Lp3-&RY<*8cWb;>oo{WnMr{F{KmdJdd>`M<^hZ-wnPnVbjWg~Kb zTO3Av<6G3-{fJ$`X+gd0kt$T-ef?;Urw%@A*dvA*W-hiQ)q{6J@s%xM4z>WH?P9vB zY)pZp<1a}hMaqid!E9h|+YUYgAiAF-Fp0AC+h0uRSoIY(w2^qWV0=>fXo>R3h|2{1 z5|Yh&Im^J`J%KSPS)Gt&KETfRgZp(v{u9La`IP7}YSF-OiVQY5m@-|XHej-THjWCb zZ1V0c@D{91DVBij$EL=49#{8&M$+5h098*e4vnC)FEO+5Xpc(|6PTB6kS3aAaSB7)YS} zHswCBmHC@jEnaZxxU1FallYaa01_Q686mMo9UKTV9M4?Nb3SGGx{}uK_X9k7So^$! zxL-`;XtNHmAyUCxl6S=eEW50|5WaRnyoxr9SvRx;1?W=fEBecBd{Ok@$JrT_Tp{=# zo4sn%bLiaYCRM+P$DDn-H*Yai^2+$a$h)6vURV6y)BztW1mZ(6?E8LzK8V^{%4j}kA!$|rjkJVkmxP0pUQta8Yc|F+i+ITivkg9g~If^Q1!5&b?uiR)uyU3V|b;DIx-+E)vdkN{NZ7dYndIgzG z$?j0x!wCi+NnE6IvyY$TNRbyGTyZ$aNW}h>NCK~!`zot}iq(MB7hi#(9E09S9Vlgm zI0Sz6&B)tiiQ%f34t>2(PDoH8s!~NPiQo3Nde!r!jdF*%-lw_u#yIa6OH6VVPcjVE z5@{ZyLmJJ#BtYXJYfc0!6Z%I)d7Y~!N(9W254|iM`jjArc+f~3fgsW|nJ^kL>{!P# zd-#us(JoZrb^LnN#|b-WrqkN0Ik_IAS3LZrlvumw&6=4Skbb%)#k|9)oIYt*A9r>& zN567kn_@v60~L=@KrFRfy%y3{;obVe`;t$*=nvVGba6+73R^CNj<_~?@Ipk#WRbx2 z3n4iiP{;Wc-bD z*s;7@GrneW1esL!WW%L@orp1-HG@#=Ik+Q7(93Y~6*YK2;X$DUA-kf3VV`M5;1 zsX(X8`C+59iC}hwc^gq}HY*IK%50M6{r3wDl<*<>(?0vTa6~E_Ynoc zW{k~)5GpDv#ZItju-1);bEEph%cNwrP$s7zsAVmHwR_VET1r7hJ-ZyEK&JC4?EN1m z!L_)b8+Xo*8)^|;(|Y*B{k_tW)b{1css@4Yy zhp@2lsV#qm-{)Y7!*mb2-ByQ^hgtfXOTT2Nt~}^faB%Q>DtV$S-va18wCR1;wA(ZD z#=qtGMaI;CljH3in^{Gy-t-#(c&Ms^u{lAXoG?;l)5+(9!wuIH18IAO=~Qng1GStg zSCQ`QnHCVX@6UmQ@$b{qQoaXwFkAW-k0Ze*xmVMy`cKCPlg)%q)4;d-3p)Mt1J_>7 zFK^4WBYu3j!ujbj)+2e2H?ubgM;JvN{XifyV;R!tKBqHfy)=Whl3|bcjG3m z+Z@pNRpf0}Zg-!JZwFm+XWnAN?bpe@k+86O0II%4#e0Uc_T*WCc*PO2;De9EkODa~ zKN9Gop_3gt&1djrw18gPX;Ut>yIQ1|<+o@4+Cp%NLNsX}ZD{#5#*XF&cvWYh586*K zT2xV&1UO1#rHKe^e+W{61S0F7choZIgHq5F&(%hqL`@8&wEbd%_?eHVkRfJKz@)JA zq7-xtYuFtR29%H9wJ~7exev}|tG)fg^03g_s5MkV_Wwe9Xz{b?MUe?nKuV^)CXM3a z4;r_PA{jD^nC3+pCiX!iX$0QBlbc+kx_OM$!p<9$Za`SJ*)!@JyyU7^IP4h}yE3XX zV@#sXu-3r+x2%|Co{ggJ$#9%Uw=NJ9GaZ?jj4OfLLU2{@o{>0o9#ne`$@hDTJ|k6WDem*s(j1KMsw`?*?TDjZ{hF-~M5aWwlJ3P*2I3QFjIg^dzq z#Dej%Hl_x!g84|%qCvJoEy&8#^fZT?;}js2B~DGdCK@JV?x@KVEdwiC{v!xMch?^T z{Yj9SD&S1A5gEj)0Z7OW}Q%VPJPH>k; zAWh&4`tteQp+M(^Z%b+BV;@`?0333${uVox+aTLqUe52iOmsLFeMtIA=}a`*wQfr7 zn&*0sET@YX*Pj?JWPt0D!vmQ6{?fm7)9o$n!Pj0^JqRb@4Maj}^t-@A*w6X69uY?1 z4H}o=Chkg|LpgSokqiQ(gk4Llvb5)tPE%pCP;a7nQT>Q}d{eBqAVDYBvIi)UgNv6S zM#&OgQi}cahT6W5aod%(^MEOzkghX&f?sr(J9t~r)o=s8exIknFyYwtpI&bI?nR$U zX=p{%#WQ98+FdnI-%0$MVBZQI2f`MeJs|Vf(cB+EtZp}7zVOt=e!1`5d{LeosoQsZ zL0et>a(^v+_<~ujR1Q5i!8kNE;k|T!Ak^~p;E-#-D|TNK0ebviePwib1Df>^uD_dh zMz+g+ad~!(i(IXGX;*aSVu2JVsv`kwqG||SU zQoS1F=CjLQ=k%bp>2V@gsj1<=oHC(=(B^(3{)K~$qHbU2g-ZS0jo0(}#cuiKT4^<0 z1arcG{bW3L+;N9<K+=4vOj zTXI3u-OTKtH|MpccHl`aA0&(Qpg14EYPIeP{&K4cZmbWz@ln>`?AfcfyBHQmT^eVj z4vyRPT44Irv=Ls$@Fdd@#!e5f|LZ_qrhDgoZ_&wciOc)8#TNt^=pSxxx~O$I!S8fX zhtuQn##fHtXh2JP>-5?{&f5Ow;417)-Fl;b9j)oYx>&9nsg90p`h*>Ea`?{Ni59=! z38rvV0yX9tdv)wV9#2=HG z+F|M~k1*MSyqzGn+2BJt4f&m2pfI%L<@YJv`Vixy^t@5$AW7R^t=Bs%f}6kp2Qco% z7qqhV`#O`Y+=!a)s@vG)m#Q?74Wo)H&+COd@zVYC#_MFmVWb$Y)yo(qCYLidysR{N zzbaV#wa4xPI?HEIQ3nsk@a~y?mxRC_W?A~}W~~vm3Pav_Uit4z&qJX5K$qKiq#ZNc z@~^8LPoDc(9}Q|_5mCvXA?@08yc~v#T`m%!k+-u0cD<)(Be$=2bk=JPU>LFZgS+mq zMbXs2k9}XF(bTHA@v7&6wBpfW-|m7)VKZ#^_5M+7+|ihNwNY0{8iA79uF!1(!nXXw z9OdctHq&kQ@-7fFQiAuGepvjgW=Bv~Vms4~?{9~z-AK0A&Ctir3mvGZ{H}@HFNDs| zK=+-R%b^fiHv?5&IyoJS1$}b6-`-;sLeU+y9Yhg8n+TEJP`0~88O99$^-z0o+v||O zQ>lhG`?V(i(2H+7!PCZe6asH6v^YY}P+-r~&h7A)Rh`)u_3e_EhD`KzQx0|!Z@lhj!~#pShz z_ac)N5E@^P%BF;ZEm=C18|`Sysj<7GZF2c!{rR0W=rx<+HnN7^2O}R0nAC%IJr_uq zZEob-&$~4S9?=lue$T2&RoxicnF;RuXAi57+us2@t!|ttmFs`A@2A@@t~(Tvx+0wL zNXmcY5~SsC>Q0ihKHUJv@NZDn&lx+d{&zb_NopIne^QB`#QF3SxHyBx)%U7-rRN+B z2)N$eLws4aW(Wo(CIb^paqhSY0C<&UR>L)2SGud+o_PBpBXews!^v~Volm@WgFvGF zPvE*8XtYQ*V@qYmXCgO^m4yLf^4*cHGufv{y?S+spHd-Nf z6XJKfc3%kA6tVlk#wB%++xp3z2iiz@r$gz>hJbTmt)!0VB)*9qEz~R&rveMaKUAq6 zuGR(OT23_^pD_%F+QC|#uR(_g7=arn;QXE;?1qec+>yQ%pi-*ZLB2obw`0U}y#?!U zSf#kJDPizSgiQ%Bl+IdMe+ec<%51Hz1)t>l;q!KNX~`v7mWeb@0AYT*EWed(js{7~ z2TPlokeCUe?>rS+|B#%gs1WfXiSTd+-&M;6so4%DL`x$|9roeC=6{T<3d`&(;*Hw$ z_veugsL0r8{t<#$T&V3Mv^3uIh$iQ4?`$Y_^hX7J0(T4m(7!&!zcKJT-KZmYe4XXQ zYV&$yUrVc(gdI$OUwdwml#a>**kQ_lDjtUOU65 z2K0bChex3DMN@+85!}YnaRcRjlHS1au-|e!=J$?F*Z8EZVuuHe%)1}=LeXgVzy&Mm z!DOW5*_Wfy>oJ;xzTZ#8V?6$ITvO|`azp9f3Ght;hp@fH+`D{|oKwnpwZMrRUSe`=V^270{1x7w!ij zmeWm!0@w&Js6<2X-{#(q_yI=TABK%C{q}0{^JY}}j^56$_hF7oa?%NwgW*yZ&bRD( zK`yB8YI5JT0YmzJxcnSz@OCDiZXH{|O`UV9TBf2dugUD6&|-35puj~sV0;cr8X}g=gq4B*xAQZGU65{3iea$>JKbl*JYd$yu!LuJ7 zGv4?ZmeWPGyxFHH=kOFN@Cy z`_l%)-n0|GLp@2mTfkBk50FhS;qe8>_mY^n>av5Q09?yxl=!;V(*1YF`>&x?T&4m9a|mS@4lYK2L{Dg^(`Y3HTTSg?-S;u# z#|v&iwBUDi{N6>pKz#H#EIi^Zn4SSp_vSD-QfTk{@B5keD=X+H0_DXV_3@o)dvXI4g(_b)^{djk$ z=Y#xX{QI5zCGB#EmtdP#L`Myr(_Vf&O;`X)79-_g{n}q)hd1w=IDX)Ty}H`#$nW95 zJj(wKeE_HS<~xhc*eB=Yx03Jj*ktGuFFjWbnNEcb4xFnipZ5;;R4sX3LA+!+jHJC# zL=QwykpRYfm9WhQFCHJ;0k5hbr(z)6uiGA^M0XnwJ=d$ZVd%=fceDPO0k0h`a{_pX)n8sO`8Ix)VV1iyb6zAOaf*SX?zRO`mG>Kkp& ztHsuiM_;fe|LcnX>J36m8WymSj>%)akd>4dY#3S@J+V*m>~ zP&m$lb_z@r(qNVo#&8RjLoJ7&szyY;#faOExV}9~WWyWrBzF;>$z= z`WOd*_yATsF2|qr^qR=AVs0fSPxfT$;SE&N^8HBFj;(fbdTQ9G_oNQDEGb^bSeJ2y zj)UHZm`6ko)7}-)$a>tYzZZC0ezd=YBh}qYFqEKkMwjH zb=Z0QdReI>$%Gk?1mU~CtUGAR`=k^2KIQH@0P776W#_EirRhIEik=TRwrYM>wDj{J z5Qq&Nt1(3OWvE6mOF&V&&7Myb}$W(3<1jwCIbT>6RF>j){D`h5wxp*@`xTTX{1TJ8;Twb`O= z@KczLzI=iHcgb|t?cUC-pYO}(bsr111#C@sVS^=O+_hjGZF8894v-=qj5@0?#UJkz zHAiN5?;bq)XR=bWh+-+QEM9NUe}Mkv9WhsAuR;%yvwVc_=k6Uyc`9_19Bv| z+i;N_Du-KpAMM6{YVZ058ce4#Y_*%fU%An>bS!3WIsv;cT$@`#1=;4+4k-QRUhFeD zd||b$7EB3LBfxM`gOND1LUudTrOj*P7?%P8cSKJER@WeX8(oga{D4l%F`bB0F4QHM z$<2h1Q++EE=B&)e7}G}}3*Sp$u&2}a>^wJtFd4?6*y@i$705@3B1>LB7}VD)CFL%# zBT+jpSL(>etQDir0Ur1qo(K+_A4fU3h@n4ER>QqwpaFq2X2m-Ji@(N+aRy+`Pey2i z(gah&MQ8cKdcUVEZpRh|pNzv%E8b+(Rf2imgg!p=8 z&;wxzFi{9GMU=C-KkyVh4R}KPl_DR83vpBA|A#pSp0@@Y`Ig0D?guHLTaqIv zSa2sMC$&dZfY*~K;Fak09OVH~AM&dK9rBfREi3O6u=<^fMt|xb7Tnk;S zH(7^pp`Z(LlA)@K+}!%7sIyb@gxED&tWadsV1}aJRL`ZUHZ^PYB-rq{*K1oZ#2Qzr zyA}jB)Qc)%s#d=jZ12sSPP^p?h#^{e8k71TOReqS#XBFn_7&r87hC|u>qU!q_ZnC% z^+6ueNZj5Zq$F&2z5^daKN$Xa7}?f?6&)DFc>A(|0DFT{7n&*`Sh?_EUZE`O_Ts|Q z5KJq<4gvSLr{}huXyoz=SJNG$w6`|I%Xgk>o+z3Jx>v95#4$)n`!Xj?Ox&Tlk6GI_33z(H!{pizW7s~^cmW>~Z zd@-tu{$K&0s{yg`e*3JR$EK2yv&vTJ;FK!WNZT+zBbqQ+<11_IN(G)UM!F4Har{fdEQe;p>ME=OC|A(9sz%03{>m zi*n-QBsC%Y2gGahnvK68|8Fo)0eYn(r;3O zJ{OrqTax}k0blb*DRn)BguagCPksl<9mY59(JY8uyPKd>Z|(x4 zAIDW?j8J2}P4eq!VI_=*V_aANL^-q=XL!uF)tDV#>~7FBKz`UtntZ2hTHC^2?ugJm_P1!zS+O_?svpCl#aQE zdwl=Bmi^Rez^__m95`=;CJ4BST7Uy^?j^47#9v|d2K${%tuA{>z-Z1l+B!3ZS_IrU zyxb<*NB^xE77O4-%*E+T#kZ-a_BNxSuQ)SH!;mN1EsG+vnfVVDn}bN4k4CyrcM&N|U|B|Kz0RnCYddT}NT z&Bh7MI8BAS6Yub~&w_)=ZY1hLAErPkR`tLhFNm~91PElAQNkW$|NLlQKw&9;6rkMD z*8Y`Nz%rLcI&PE@~G8H+gE9Wg_B$XcRII=Ko5;|FWLXj2wCfaN)rkCgf~a#$R48c;7B zGKdW5H6anbmwOV+7L1yO*QGhif!p~Y&KP}nPE_595ODyl5%edZ?D_P=qku?yL^~7Ez?bFvKz^O0zYNdz#1GEq4IRl^IGtNF zstZi~#6|i(hNK1S=#D^z8A+BP<_zGA-0tUykpQEDr(oveW`IcU)A|RYc8q!OMQ<~| z!v1@HGj#27ck4#_qfJdq>kiFi3kD?-#xppBP^)cu*UKIXvDIV)cRQrg6L-d7n(rXK zYMh55N9;O<@FcGLwVoDbBy~wP&CQ^Y~6MV&%?_*e_b=Og^RiWFQe)2 zuD|x~VMWyiyo9f;kPvg?gTpBvOYZf+~)k${MZE!z@m=X9TGni}Be}=369LX`12WaG0kd0ThlU z`m&v_edxMMnyIu93BlqX_7Wz_-r}p5kiA45?}41g>h_pl2b8lW);DYn2022m_2@t= zGaTRB5Nq4!-^g2PY$6mdtsY};8aObWmS{}}iTn#bg;+%E9ynTDww?C&KUy@Xe#g9L zmwm&DL@oAuWrPt@$C@UWGd1PD8E8Sa7Tsy_1vXrmnu-E-mliwsP=5lzLDehaxtF;k z3*U~kmTo5AGg;!U78$S-cWuaxS;J;4di^3Wqm>7Bx%%lkK4$Wq50M zxWmbWGaS66b1VGbh238$#KZGER`$Kr-5HenN?Ou1b)fXr(BAJYt;QKmoIG~Ns>#tO=Qo>BZEO{_|f+z!h&vf z9QH!Du{f%=0~2b4^AKsy@15_Nw*5f129cNOw#sSEo0vD62bvZ~pPT}L+rPgOb=Bd5n-@NBIw1Z=9I3xO4;*O$i8qDlS zK}#Sa$lsk_wP;uDy(vrIB$N{Jf{(H;n3orWHLOxU?V#rWUJY*ZUJEHY;3aNHpTaDe zOz%V2Dv0gHdzCm$U}2Z=^#eZXEH=1C9<9{PUQ2=;B|*Hd1RnxL$PT3STP|;M;&M|FAG5TL# zysSJ2MAZ4+cdmUuppqz#*1O$Hh$S1uC=CC6hCohu1wq#XQPSoJgG*y5FuvDi=HZCz z!Xxy*$U!QquNON8)>Mk)*&3(e;s&x}qjTQYg5D(TTrZnVT=n1DU2P78ae7=qYo-|^CyuPCzt`!IEK#&Z$l;wXT_$A9XNE8ibTfsNOn2wX#6UCd>Q-sOwHJZ>_Br-XY z)JLM?1u3XUa+y|A^czKch&bmsSRBN!@T5H0Bc`_CMtcYU;sZjeB$4u4FWF|kU*5T1 za~$>;6a#{4o9Lli4a6>z1;s|kn@D_A*Qu;3+UPN*(|B#9(?-Ipks_K~+{!VMY2TU+ z#^Jw1z4+4@bA=T8!atOLKuo&lbF2iivLIt;%k&ZMVj6y|wVZ%FY=*c% z<@LSBDbwk7z&rTR~d(Z18wXtFs!Us9V$FHJk>zHX=O*Wt&qSUq4Of;irbf-#Ev~ zXfEFmHb@b9&yCNGdaFr=YTYIjR69wxi?g<}pS-K=2koN)F|u~uQmOPKaV6xQ|H=e~ zPHt*6$8Nw#+<=w<;eDE?JX`i;1Gs`D99x4P=+R;@L^*L}d|aV-DNv-|J%l%qz?=;Z z;&~^O@7q{P=CjFp7m7j6+`;}L%6URtxg&?qzv|Gfgo!gdLE8-?e0Q`+M)#%DYhCWx zVY-UDzB^bN_8m~Tsf>M|0leN}_O~m0n<%#H&61E2M{8{^WpcmM_CIEOe&^*~jn3Wt z%;eaL@ARS#tFSL82(&o9 z*V|1}*zUCBB6#I+xz}PM*ti=DTS3ENRQK0*dYF9f)A(M)84ewNF~=Z17uXN_c{-l( zRO>X!-Se;eU@PKt#ZKlVuQi+0EzLvPuGfQ>eCZvYAnrDl#c#DBMZ82?*Sn~*&Jg&b z(A#aDJ}~s@);u*iec}x9#2@HQ5@oJl^&Q7vG?IU(}8#Zi_}qxch9oHQ#s_E0@cW;&BjBlND)Lreud~fv=Y^$3ztxBXuv1-Nx~l8wlLpUu$^wuRa;|&zvx$L);(wDnka&Z8th2JqZTj z&7V?{yt;WV<}Q04hkpkaX-X>pxl`~x-Rce6%!it$h`J9_gXh!hst`@xCpnC3WW!*5Ijqy4Uw!F_j?`z(^I5p8UR2yNZ zYI@#o!corG+tZ2!TR6S=mi2g~Rqw=QU$J`Ly*M?Ko!?wM+l_R@W-0AxA>~0^1b5Gx z>@a%~0xeeah3YSWaKe;ZKXjUvrQH+5H;-(aOYt$>u-0F+E9~Squ?`<-Cf)pF-3P+9 zblj13pN9}JvEX81yY7+TzGyumlIqYpB9XAP3S2w)3IQ;)_nN*RZ&}a@e0)6qU)YYf zW+LZ&1UW)mLG)V7=|ezQ#r)!WsOhD%?@eNjR<}D+=IWtI@jV?yFhENKZ>Wc~OgUh5 zONHZ=GkLY- zv?&EgkG>T3D#i%5{y^%!orV_ttmE25O+NAU4Ccnd&J!ujhvmgQ++BA^(qLrlH_GUg z8{;de?a?@vcJn-@oZa;dKvR#_*q+4S3PI>eO!LfwX*!cdy#SFV8+Ie-Y$y8WBddL(s zmwpoxN<;hcN+V&|7U5{B$nJJ~(DygZ;?D&mimFh3s5Saut(oV3qon3}BffRtEY%7- zeKP~mfWH}ArNCVXvQI~M#Xx0cySR9NimSRI^DtzKHCAIIu$xKAAr2n9MmjC2DH*Fn=HOe45F;Wi%rUVUu^MVc-px=f^gzLByP7k&=mCF6RCz)E&qysa zJ}zG-JYhg9VL{aJDb8~N9T#;nfO*M) zs*;xId?c-noK}nz69W%-&61cj?jURgLNPLGmPCV~;YmK*@_qS35GV0K(KyJkc^uRW zo6uxE!(zom!3f5=de{YZAtHm&!2ny}&hVSE!~c!*Wu!;8gT|utgW2Cmxd5Ib?DwTY zC_?M^R;_o#*@k1P1yQS#ps&cyq)_%?oURO+qA#qf>fV&|%}IVSlcerZv8yQ}TQVxD zj$tbfo~O3K2Yb-30CK{0EAD&D46K#=Q!Xu+w!*==7TzcPp}yIEdpSoWwv2{UQO^9VI!1sXOC@9TM{>3TEj$T-bawHoV-Hm z`GfatE6zmk&E(T0de>prC;zI$iv=%n9tRiV$#Eu<0PyO(k0FI0+`h%jSv+g&(gClZ zfd8#Qn)Utfju4;S(BRJo2~ww-Zesu+^f5ZI;Gt|RR4YpHrKDQ#TFC?x++oHe&x|3) z{atg+zqh0GaSKQbZs#tT@G`PE#jOgm$!Sz!p@|GF@9X#5Ja>$JAY`6!p7a2zbvrpM zCm`sSTjGwCi5%ki0F~M6Bu4s8p~s#)UGk1FR*dbNqpgw$8PIqfZx4EBa}w@1lqMH$ z@w$8>ar?23c(_bA{MVY02MUrIU7Cc7$ zQna9Pzc;QMb^c+X*WrmSp48K8#V#`%xA##(aEQ4|!XW-L?WqqRQVkl#*N1oKVijyM zE6lFiZ<;nNDRmHZAtzA)y2oeZFklJ zq#1Iveiq^6Kh3&ms-fDIwZ*wt1$t_VJbnV*ot6qMMf5sS007Mtq$H)XnnCE}QC~wp zkis`p&{B`XFDg2AFltuDqjX9yIoU?IOwLV3KOTx{^zb~aq(yP7tDB(OiZS0%H71K@ zEOqGS_-<>39#ypUn~~5UfWRAahLnfgrNoq8gB|2kbM_aFT42}RAF9We{f}4Kv026- z$z!FXqmnkyKdPsz`Phf8QeI|p;Sv-;)*3;?*F$CSw>cD`h$O5OlN6DyA(1g4SPzGRB!mC-74g^4^ zbrz3BrVzxH1MEVaaX5aTCF5HhPv;-|-dvoA-s%^EEY$Jpux3M|bZc5u2&Ic^+!+#NQOuoj#qc zk^o&lK_q(MLt^5Y5jSp9*h1Sy23~24Hy@G&##46f4Q;OtfuA|odiPf)O8d&##0(VJ zNKttGgs>*oTx_Q|M4$@RDN@=o+02+yD6pl&uBf+d#niq@PRG@lVd;8*$A1}j3{3`R#l;5}X~%iMp>C^X=+AT0wuwVq?6YQS0X zEQac*cUL86p+eXlPEHa{-EeG|1XLJ0sv=AFSTdig&ZbL9SwdGD1q!nqnF&r(d4yJrAWNaqt0*$5w*9<@0hDiXUuc4B9xQ(lUjIOTSx*+BzxI^r zr9Vu-B?ZM|^)RX@d#hVoOEhVU_FAlLe4(k@AJ$s((}o9UfK5#5EwF!6O1FA=YgY7O$0F$v@oy& z3J{bJ47ExLEH={|VPk5*X5R8^N#KwhWTi!a&?Bbx>l8jOh;uL1DrXVi%aB5DpsWEP z{;z2}>?@+SJ?^^5GNJNG8?=a8Y}Yjj0h#hlpKh3XN=J9{Og*}eI(&&tO>E%9OZ zWPIq*;U64mXnkhb9-G){qQ_sahNx%h@HM@ESYM7e;(F_xXK7l+r-)n47G#@J+X5VR) zLOAdT8ZYJMGR?6v0|rsW+vv}Qwep; z7{XQ5FXv<`IuVUCSX5$*O=x!O&Lk|oT1T@Ik(N_h z8-;!tYh!KFUS0=p!Xp=^h90nQty@L>i+ccTUIYm^ZNsw|7(7^q=aOp;&_ zxVQvtjm4J*zIqqg9~yMucpo(S8`kq4?zy}PC*1DFP>tPX0ojQxzgk{R7wSbfKJLxI=^G|QABh)GV}7KPK|R- zRv3QyY>MHwYox?HU^zlUnn%tmk33ik%hcwbtQ&)DKwyy0=VdgvL@hI89#5&ZVHyUt;%D#_EaDM^BK`U?3CkT$i>E z!g`I^n?}7a?ZHVnD>b6Mw?~U9`*&08UVCxh$2j2i+rrU?h}KWQ3ag#!;9=pX1{U1D zeW=Lh!6NCc@BVc%QE|V9U|J?;NQxFtg=sd7&fG4}wp#g@_ARTZVmvRa`L8~hq=p!b zxV~|)*ho95sR4GW|G#0Np5A%xhb?=hRco7iIPs0lLmm-xkKBA+n1-n0v`CUN<<=Gg zr#o&klGYlBC4ogNCChu@R&sVNYr8(!Dgk_LJZ^*_uV!jILvlWIt;;CFkXOZP4nk}6 zm7Yq!ww7g**vozwQ%3c=@~6 z`BzvtjD%@&z0}G< zKAJX%l-f^CvuH#FbaAtDvJIh{z{%(3)(}Xm0_6rD(whd4A9280$C#6wN*o~MUiHIk z|JTUA#R>b2wmj$0^v;{Pu~!px^5~MWbMccZZimPQQ;|~`wY7?9Hb)C|Iavdi20Z_A zhdTKoNNVQ?Yh&A8>0wM1^Uc{%hOAhKzA~5!N<*_CVVLRdF-{%A+n>nHdF+{9+?+@s z?A`u~amb&rUcT9;z2QwfY3#a}F;l+Hv~Y-473~WlT#k&d*+Fg0!#K$TDne}yjt4ff zUobaibX*;Vt#;i)Q}c@SL%M=ytgFwRh;felGGz&kj}N&LC&- zx}}nl;Dqq${L8}r!|U8GIL&7Ltx0=X+8haBg7`5^WPK0#eE&an_tCA8UI<7 zEjyFa|G?Ifm$6E9oC7r`EZbc7#+L~FG@e%p4+E~_5Qy``~EkZSFw8qxxnAj9mc$8n?|30D8 zO-J3xq4OR9M}9uxR}!2ZxIOqd+esm$KXB$FNlK6mgzMPMF>^*SB& zcwR$%pAF0+T8PKG{NZv@HKA9TJ z-EmS0tAudk{Qd7Ce%-=8imDSjV*6KRxh^zQCmM#jG_RqD-R|)wHIqp7qKQmHWomNy zIpKsMd7bvc{84)*i`*^OYi{voR!E2Ry1puMXr+PZD(Jw zQI9uHVofSBU1WQ9k4A>5z8(GuCEx6y=B6>eq^+3S3~jdNbTTgAU)b$bB)KDYS_1EX z$zwNJoWtF=3)B4Ze6c4^FGzIiWm3d3WC-T-Go;iYP}NGA31m(u3s~IT9@Ep)9Ul*l zA7YSe>K-k~N&FKB(0nH7c6z1+|Mmc=RGc$1So@OZ4hOlas+zpp>keJ6rD|=rplHH%3dr; zR&ceg-65R~xJ-34nYcp}$vm?a=FTq>L+L|#fMd{~E5=*T&lIsZ+WNxF$I44lBm<+e z4?QlPoJP*hD3PY1^wadG*Vi7=-*_|7nNSFi2&GGv97u;do0}g!b{j)q8W};7S6o%zKUlm5Nslm$dUtUWGvZv5IojIeNHO9I>gtf_ z>FGyYIuvsDHxsK#*a^>YtSGa?4DU}m>hgC&Sd?6NC*B8MUgf8rJ(5`*voB=q?C2ZU zdEnt6e0Ex)+BeAp;0~wpv2bwMxc9n$`j&2L1I1!VPlpbFc^qTH4jJ6$^+K2gK{CK44rNU{9|_CJxdf z7I!`|{Ypjq(-;X9iEvvEHL{s zOZPuZBIe}O3OZLh)DG>)D3iW&8PA}^^n7~WF~nP&MVC6I%AWkgx}VX;9bM|tgR1N= z$B>r1-yKuiaY0A~bxbOC+2)IZkN=g#M>Oi4dZ*&+qTSQaAxF=##~0oEL>P&c9hmBW zL>0ZyNa7EfSJNtUJF$C;A$l4y0@t2Od|pys;J=tJ6_DAW7o`*g=>JSx5Z~BsE+;C_ zPMNZ7<8!l`*aRI7{jg#qJWdI;sD(!(nKAC=&Kha;7!p={O8og~GGwhR18yz^2uZD` z>33FBg@jdI(4>_N-DzH*F2qAmm#?viPVg}ur||ovZ_hQ#{!t3A$I-+xmz~MgsORjm z`1F0ukdV579viO`S6@#1J2~N256vPi^sa0(jf#iHh&sCo1-6liR15t?7Q5UVDIVU) z;KWze-O_|B+=EbJRHEh^gI+HLl~SSWg5$Z@s?CcjChiH5x5gzZ>t3eZFDo+>I6SM0 zvcDraS1~p+GJ*{V4mRdn$@F)97>Ei+k}=)+DMZ!!$fFJ{#Wrte5*Z8lo8%KG{O z$zpwcd_3h@9_B`C^&->adskJlIC&+d7SEQ9*X!Dv)0+QSF=tJbLQ~9Ls~Bm;7KZiV z{1tMi?&1QsQ3s>1ufNjjfJs3yGG)+c%Dvjma8dURdYAp3)R;4m=XB?DGY`V(1U)`p z;>c-UIL%m==e!ua7lm>PCm|9NlWuFbGWfCVAKW6IbcAQ^lL2vmVq$AMMO`GPePPMN zBd&>DNPd)n2I}rCziNPO;X5#(Evir3BP&KCa8lkYd_+52gu{~Jv9M_<9}{ol>pO6m z=SpEmIc^qX&-CG<7nM(*HmNHJxIyM4nPEw&_Mbf4=)IQLC``A&M$-v0Zu5@}nWK3c z4T4x9L_Lp(DWmhymaI_gOB)<}bJn5;NF2F=Kd1&N76o*|A3c91>jjrI%aRq_%C||O zQvqbf3Ln-9N{eHSeC0k_!+@6{onGw#`TAby$yx50m=RT_D_HV31Vz;U&lXUs2EZ;6F_l7x0$!@Q$$Xaq&(3lYad7_J&A#fS1{L z>_9bQ?G8jCVk)KnuD8h}dXX2FVnZ#J)+-hSD+Rv3%M+MUCfkXP)9KSOfr}&}pV>d1 z88sn0+`8dQZZeuQ%Fhi1<}Lp*bU|npTmGSs_23RzCpR3Wkr@dM!|LA|B z$QZ;szM1)r5kL*L6K~E@o@zhS#X9YSW6|lKd;Qp|0!gG#Dj#4sAcuGx!G+MlHkcQc z--^$}PYMw>QPsf8#%7vz%00DrDd}V`b{w8XZ2wmUrB(LCf~B_|n!Bqa+d<^0IbI?I zN56qItTB+3e%}?GN{Z6gS-~n@uJos()ZPIJz`rOGZ_{6VLb0_o!LBU&l@e(kgP>vx zjb>tp7fi%{F$1X1et3M!L=h<-9g*m3NNF5n-`Kr zDG)9TD*0$cUG6WhS>t%JbYUwj!}K+)kaORUI$I)ysr$*AVm2)JR86cHjhhO1Yt z^3U<|D@Q-1#O0_(DL`l#xrS+x=8+kN>62( z_V$yLS$5uiHC-G)=oXyNQe(-kKE0$(JOoQ1-`X=WDq3jpu6(9+$`qI9ykG2RcQrK4 zz1LE+_?Z2Jj=L&O(Xx%sF4vy3p)R8-`6GOv*-gOSSV@Cz5C&lKX zrQ>aFF*ZKfS3{{!xx_DcbBgR*-~MkL_`bLMv8b1JUK*O!~6#sY;tzOgDlzN*l02qBN;P{9|kvKqv6N`7$5pWDXC!i zeU#cH%F;|Hbc5^4dskV7jay zQ^s?dJ%HP>XG!!@Yg%3i!aGnG$ zh%vDTb?Ga?R2+B>qIvf~ zKj~^CBGDoS1T9FK?4(FHA2I447&f~G$zPW=wGnf63?ntJx$JdhCfxi|1sG>I*m7&TQRMeO{_L8obC)_)fP3p0>KY#%`!jkB| z7plpshQhl@f8|$g67kc*l;~L8RCN=<8=surKTf5B3(7mt=Ld5uE3M|U1W^}KAy1B+ zR)FwL@9ALOcRy-CE6NOtH~;Yd({P(2x!voK?=UNX`);PasccQtnR@N~qAcfBVM7 z&BmNFDX$h_cApdN=Zyq8kXm2Or}t%1$A#=t zS69VJ;YktyVY#<5G zUy#?B9e2p`wo^QsoXp>k_6|~zblmdjW*lrf?cFbD`W^u^cZ&%9fHVFEc8@!q9y{1| zk=}}W^75&ldM0JG7D0cTy1Tcw$*Esu%9>J+7k^cX4wr`vKXowYVc>rnyHY`F~by%@yDlgMSKY8upZ zv&4OLvqEiZ&~_0?)e$EReTXe6xxQ2@n%hf+=8LK_QE^oF zK^QX8(Bo=7gV8YMs|}SvGa4ly>sulVtzjxf9%|@)@l#l+s4<)L$yzyFdYYTrivE-= zAC5|7vK_RsaF?W%JgiT^UK-X2(&<<-di1-yPn1QZ^}7SC*$g@x7tH-cvlAS~Q+s*! zYnTfjXe?OzpA?#=-c-|L%4o$4C`XGW`h_35fDv{#rOqk@H4pwTI`S-%Q1=vRCc&B` z!p~DlN1)#F*9E(7gIg8rs^>-qy}6h{rWDR_@EMUiCX(w>3(k=i>@01Cpu9?r#T6@UV%BVi zPFubn4_46r;PKW18H&1H<~}x?R5`q{7Z?3r$LAI734SAuHUeRz?aNmh0q>eLz(4g6 z&lyX2E^^YkjI>Raa-H%Cn_(9-)0-Hj&lN_Uct!gUzNY49Ct(|gNR5Ep=h)%y84oxV~^DePZ!Si!f2c>H*`eS!Jrdu zDOtSBz``d1Obn@70hEw$;R{$Q_=F=-(YQy3PU|A=V@!b9ZnJ!jgugFUm*mY+Akp)( zOv+y@D5k?Pv&DE8(V!4bri;FEG4c6UdoGdT+V`Q`4J2C_0d`-SqEo*?4NZ;G$P-hxXF^ z!+dv)O#h~3BsJLg>(F%``#<1$;viV$D4GCX|n%NnBx}=%>XuBO78Et5zk4=5U!fBMY z)zS|4X{jAp&EpG^H2gQ>!uuXwT2X?SF#v7w*W-)e0N_i^J;?XdUnQt(3l&^QeRuUvcfej z*`3wm>{2D~sH~9#vE48s^z}2#+HIQa2-&i$$nz#bt+d%wYsuYaG%PU-(v?N(TVsgL{>l7E3ky^`C{H&F%B$md&epL6wXu{$Cj8Y~<>$>{XoBq|t|nLIvt&6@iJRwrA+n6dFWl zS*P`dzs6>bqmd;{$ot7N!N=;UM~m+oP>_&vSNJ%1A^`z; ze%V%Qy(2=64K)shCTum5)t_dCpTwy7Z49O44XS|?ynW}if*au!a?Iqta}HOOS|4uT zA255(X9)`o0J-&8;#;+GW%oXjL@oPy+S1!z$oqSvDADp<_m1iW&XVesNEK6Q3RQU7 z{x+4iirOSEhu%w$>NZR6Q4PO&HV%$-rz?q~5>ogLIut93#w=uJ%*jI?B<_VyZ{0lHFpem()EKt_c5d|Kyz)#j{I1B3(7t z7adA@50rrwG0R%GN{3VLu@e;M%^`q4CI6LhQT{A{%e~41;emPa;q*ne!Kf8Bu_Luk zVlSUvDk>@fvpKHmpBuw^%KmHg=;L9Wdg-IVMcB+}`WoU=5>PPdv6m3BJ}x9o36@pw zu>+!;J^|Tuj>#Tkq8T-4$RZ_A#|#D|t+Pos2D!&3H+J^3j7h22nRR9R-lO6Cc=i_% zCDd>lr90PXj*IdKttIYS*x$FU5&9?sGB+4`F!@f5kZ%r7;*XTf9<>CCxP{Wp*<>S% z+Jgc-d2?!heW5upM7Xc#*;a1uCPExtu!jtxg*Pd6IlvXS7oA8^jeyCZV>u<`Wi46} zsuJBm4Qka0zo@yG(oEvo@hLJ4pnkZn_XRdnB1~zrW7TPId|`${D^3jlz=$t851&n{IZ(M(FvWD{EluOn+9_duL4m31|@0}>GgsAG4BXFE6v|0=!@`KBo!h7Cv zng3L)8H@kD)ntFoKISR6@1~E4kh|;5Thw+UTbAQ*KlV@pm^>Y zr=wE&+tNvc7pkP~Z+9AK%1AUvX{IK--fuGKILE*ltA;9(3ty~9mtb&2hE4CtMsV(K zQc+yWqe_-ay2`vw9L8YLziR4b9vl*{ZJk$-XeufzkN_uFO7++Hn3$Qho+fsl?p?9? z^Sx`fB5sDjV(ZWK{|AFWe7}d{A;r7U(Xcsl-VH~i+3JPx4iUL+wWCAx*V)0}$MxyC znvo}`*=<}48A)GNEQNWVE4sntB?L>Mlfk8*S&Oxs)?*w)IJkEgdB!lB>N;&a$GHI) zv>8!`ZmrP^{mG-qLvrMU+ye72XLDZjSUhWBfb)5bYx4-hIL>mJ6edVwbdvR8zA*~3 z38qbvS56>BS_3Rk8mWYC@R4SI#PM$O4=FxIhjl`R8>;xIwLw15vXTEMxcSJjIukM0 zcXAks@jl~&qOY|rraDO2r=7zX%P>G1Nv=oa+kU-ba%Z$Q6^-9qX+7b_Nb9jXS(9Sk z?gpgw4b#~snwtx4sB5`S>*e6$b%B;^f5oHV!=D6cbK8Miw*sHM`AS^Bt_@q(H(<+# zrD$krLq~QJSFCEr#x+gYytWBjFYCa9j(Q9nJ%Pt}3|ZOYT=zt`VDznP{MgXypsr(@dM+Ux^U;)AZg zX2xulfy$#*iWH6;DIc{lcJeJ-g85jRX^kY0)mWPi&P5rhJhchcqk$>5vFqz|M@(ap z{GsvUZCJG78gw1piN2jrv+v2%#5ZOEo%52iL2?_p1JZ1!k>*Y`Uvo3o-}-4Rx%z%| zUV0^4(lRb<#P}oI{g|ablacbrPDN>>U)*~rzT*1$ zg!)SIkVx*_waXqU{q$!(V@imJfAI)*?%ai=M~~r_TW&#HYa4$4^Pi!+TOU5tjZ>9` z30Wrl3%31Dk5cZeH``W=aTMmY~#np@o7BhAsk_*O3FqdkSq zA^yAUO7yi>SbvZY1*MCOgKLRWdAZjh{aWTNo}d$$jSUTGB`=VYD@(bsj{5>BYsK3` zTWCEHEw!D|wDph{hq>ycHqyr%O_9a*ppRoykRq;sV1V+bdt6oXPs&iOEi5|eD^{qK zE28qynq&J~=Bs*XoQYq^SVA9HWzZN=|7_Z{5epW~r=Rvewi@_6bnV(tJXA`$mtJ}a z`}ghlr!Gaum4T(QbfR4Zy|mWp)TR`3Ccmo<*>|>QWS^^lS~+&r7vg)`gSbj*4T}7! zK*8|ZPRDZX5Kq*2P~Fu|+OLSmigzkZerhxI!yxykj*iblrV3OgDHWyg%Q7FegUYSG zl3df)-c~$(Bjv5u0rj;TS0r#ICJJ7QMwln+Gv%l9i@xTf+RLSj5-B$+%4i>0cRwy$ zv5_KG4#N{;7$Ys2d_j*+*PYut;6voGTlIV48M-5g3Qo%&0>f^N2pxVOq94xo~WPKqIP#u{hUT=2w?V*j~IQTVpbtz89kTA^xVxpHFD*&|Zu6A-yEa zYRYwnn>?>^qTJM6hN8nzeswkwh2M-xpt1Zh;r#~=8ACY}Xi|$IiAmVx(mb96^l3#%4E^@Cm>9cpvFp}VRQuv8wMh8P?iw0;lDdimR8tc9KJ zD8Io$En?>vP8oQHCj(QHr9v+8Qp566E|NNpq+Uo0fsAir2{D zczfWb>@aycx58*?t&mZl$rRy9Sepm8Y_hCaqJT^8TZQ({4m6S1XhS3+s<&?dL&Jj_ z)`p-kVpa~crA$vHb)uudanyjWu2Z<-`fXUujmVl+E3jzoGEDY%V{BrSG`XQ=nUfTh z^iD2q##IHb;G{*to3tq2aTBif!3oTL`5H853S5WAE#76@Za^LSaq>hLvY9%@BUSPg zG3R)myqM!Gm8xakxK`>l5JsP|xF$jQS)HY7U_H22*$z&^xoR9L7HL+swXMHg!{lYF zn$|bPmjG(*&Oh%~Ikhp;CZk*#Xer$sqmduBeOxDhSnMOvRF3?JEl7|$GJ`!GL)2zlBD^Y&%(^^x2EPeHMK-bm=Q_1lLVA{P>x zU3{=?%@$Xi?xCSUYbTw)u#A|dx3{-M-+7f#cH!Zo;Zy6Dek$VWKAuy z^HyR0>dSF_?;9BHKY^Mhmt*|Ye)e~@4lhTFn=jq8orsfv$x$+)95{H;!Zm)J zyexwDU$mVupIJdXD9lT_OMPFW;%r`%&q%?fGKG9>?_upC1tmGQ+S&7?a8pDP)E90) zp!}HD=O<$)vApb|I;&meFF8c}7VSGEuj=NC_CaGDr{b+Di{`I#Go^|$^>vX6U+0($ zK1!#;w6RxuJq|8~lz4%7h?I_YvpzZnJuO!+@f)|E>&AiFNlGNi)1fZ1LmMdmmd%^d zIj_^osy>jv0;2H*(R%TP7jf{=VdLL!%$LSTu^znHBX8yl}qcF z6fQy!*MR_=mr)cw*k(+xHVJvlXxxW!p|%UkKtbcf_Mo$b+CnD@RZq=Vm0kN1DFMZc zYiz@hUwjbXf8pDBde@V9ZqHNL ze_|h&cdkS&`S0`lpF+>j>DMoy8S6J+g4%(842> zTY!O+Js4-3&lW?2!)RKx5}Cu}g zCz(cpJV#t#e&otDj(6*{rN)qCr+6ZbtFO5Zu~R#7YLt6-Q<^ednmvwbrJP`z@tjG6 z#@FKNALg4cG~kM@mmxFSgVD(pWmm@Ge2huy7?VOd#{Etn3zlDmPyOB(&^FkO9Y>Fl z3d_qmp&KWI!(*uLT!8rC0rd9dQPYsIF&Pe86ez#ODdUzte8kiYH=d))$VYR+&kaHR z(ByKuLrX_y>>1+hQ=ThWTQz?$X9qQk8cPf*ESj?d(=}au4KBXzcTn3hpEPnf^49Zs z{pVlDiJi}LQJ5t2&S3GCw_^D%pG7>Q(+U>~Vh|ZFxXt!*T-8I$JS{|emxDGR>U1f5 z#4Pnb1u@RRxb-L40P+24mIjSomBZqD#^i=j%ovni@kaws+H03*${r2SVkO3_yW3)v zim!5tMl=`oh28Do20@zyTO?BM5mCj}LahbfEzrubgfUJkDG;(NHsYzDeIGcn8x0gf z7H+u%k3aD^y0(86yLa!xcb^=@SAKp9|M9`Y`12ne#()0)5!9s$XwSxx&QnMiL+1o3 zQFkSj$)wotS?0n0XEIJEnA2U+QFQNq32%P+?_&2OUt^i|PL4bVM!AU3TWzOK)MoBJ zgQq6JjEpE5&m$ezoe46MI5!!re{ymd1-d6PorsN(*ygjYwGGMU7SwWM*W8%p0#vW= zAq~fPT z7tBLbtrH-%Zz!Mnb1-O{X6^w$lQw&m+^=Lc^^M@Jh6QUcfC`2cRdb`$Dr66EFdDsZi#fFGM6-_3KA zk|1x%wsD+M&|-de3Wj_y$8{l3UQf@kJl0}tG19~C)mA!i9~;7^=5VM<21b%Rc_Q%6UKZAin$HmsKy8oJ^3v!DGO+qZAG z(~uwj@V$15Nco>VVrX1+F)sheKS1-MRlJI!p>rv&_~<`C%hGi={APnR=c6`#qa0T? zl#!O-d^Z-X+=ye3K8j!e=YNJ@{f95$(f{Lj@yvhx?~s@n#ggkjkHs6dVD-(PMr+$V zZsMf;(bz5RCnQ@%dvbysuHjq)gZVU)O$)Ge7)siW_lOr`QrMz=WAg=Emzv7AR zWR?3MgW@Tf)&;kbC2i6bZ7GOsGiwnXzi`IQ57k}DQO!$TD?shjN~2T8ot!J3^X6eb zO;dBTNTXj|238n~?sTc?HQGHd1 zV@HqT;K76F?;j}ERgh9qr`fcJ(pQ{yYEVziOhGy6D)9AIQS@gS_)G{Tw?3sQb}eni zv%ZRy$ssbvLwq0Zb23;u_ObSH+7~K~`mMXW8%K^Dv3^wl+j|0iJ^{As_%aoZWhMiT zgJI*9GNPwFqWVQ{wX04Is_)MhDvHLh#*XNzeBygH=H3RlHjkM?a&*)kOi&qS1GS>& z(>UdWBc~2wCHJMD+WL81ck#_Q(sLLC!~G^3%nmWk+jJNH{y+MM`0cwlKnJSN2Wsk@ zkxiwsV9hps>XUb(gL2B5ps~3fSKjaetXsW=^R5-EH*Ch;_uPuMYy1daWh;g;qA3Eo<;T#tPT^^9&#@-Cajcv2>;in`Q=h~Ys}@u4tf$pikJd9itsz@uz{y-1Gj3MOtubtVZW=}4=bi?BFz--Ensp4pn8KMu6Der; z#W-Z^+9^6_Ml9Qc6*v4AYMVRk`oN2iVEecJe>m~d&ydWpv!yL2^q9l4t8YjB@+<86 zLO={c3zB=Bve({`AttLwaCEmtN6QDuWVMLsD0i9@PE3+19RbEQm-^fN7`#;uYwytP z9Do{xWHMroGGf?Th;^J*d5Y0XF(?MA_*%^DP8#z!Mz2gF83l%CjMg8?w(`+W0)?2d z?wVB-K2!NoPBaeeqpzZV{z^2i+KiLW{1CtVm!H9bC;vAJfNyc5Fo0oB*5Ppqbz=z% zfMn)6Sz?UcwojbUF?$?Mqsmv8KWdp67ks821qSu{j+!=P7OqEo$2^Xi6vl=JkgsXN zKz0#^`@2b1%tgnzb=OjN0la8w^;O-u=y4bi7viXEZbNfx2V%*z-Kog6Hlt^J5BBYN z9Q&X7F-E$MvYk1(X(nZnJX`3aLcOO>*-59auH!gztQV=~d1!Audtu}~3(kYOmS#?>9vna3h2uxM z5O1I$T}K`oOQ5Br4e5zNw&6)@&z=FDLiB0pP()>ulvt~HjkD|>OXS7kS9;t?Yk>&^ zCRB=or{bNJG!3LfcIXs>y8ALNMH)AG@hnDiV;D(~V%er8_`u(~6&pWrB?{RB`>e<2 zZdfP8x5PpUg>jM?=4Ndf?)~UpnAe!cpMUww`2LT6il6`D*Le5`TvrbrLDw(^w3=qr zHnn4j47fH^gJ!M`qoWj<()CCuT5+Oh7-{+?5;^oA+l`5MEjDl2f}5|q8okH%qbZ%o zzxZGN4Zin{XSuE{M_(>Q;fw22Lkjad7ojFKh=YgsqI+lp3tKo(S-`=OQEvVVSk_Um zW0U9`7-n1PbbGUVTx*;g4K|2hL9I^KYP6-~Q(MoUKhI8&wR0RVTej35ZPRJ@a9UoE z1v&+UYwghHT1(xPT<%ZwwKnQzl|2SRIb<;3f_*0kv19KD_MA9{!PF3H+sO|l0CJ+R z7*;|``z&k06tns>WuO_K4dH8H`M9;%JUkew7}q86$%_8kZ0ReL+UyrSD_|?BXtQ9p zj+pU*Ghr&Jw+-sI+itrRFTC)gDFn4~)h1u3>7RM#S$yRyU&kA7yuo1VKS-#+VW zJvzN*%VsOv*`a{`JOpXrX)C)htQOcZSBO~1K<#b}f=BthKGl0z;-$BfG2aMaH^}zPMB$5GC1H)RTgOlOzH3` z9wk^|I7Y}n#lw}S#;xcMFb^s1m7kROGIla8+Ml#_<;osFe}x%e-2RhV2t~b?MGfmI+?;9 zm*0s4-TN?@>&3JCpTzZRZbB#bCI?UM$Ekk3Qs6X5w&9kWR^hcrA3^g~w_-(uJD71^ z5X)irGk=3W{r~<24(R>UXMkg)Y25dL8_`O6E)yTabH92R|LgzuZ}H~PVeB97!$hV5 ziF6&tDc@!4>rhA8alCf`BctPNN6JwHqll-H&@vJqKgo4LkF4j(SM*A(81nHN6gbBV z@d@;I^&!_XAF&CY=o?3-xfL~IY`c+u)JT8Cu{bh1f^32^YbrJ+RLnru$Vh@4xx8LgXlix)4p^?c>Zi?Dq8a*nCA z@h_(cE}vtfsj;QeRWzp^Yrh#J(72@ZnDFwJGk#21lh=fC8dXx)VkGV{)R`xC)1uW_ zdDAEDi>?P>dK5c;`0p^;e;k>GmoWVVPV9c!%;;b*S{Qe7xEEb-{>rDW4lVGTHeHR? zt5;cP$*AM>9uhIR>7Y%A7G%{ycSTf(Q7%4WQc9;gFm`v11G}lweN9RWl-;3XJ#Ema z({(MIe-e)L;RGp0wFuczh>U~4oQ(vH;%S4a_d7`V(SoSKXUae_G3DFd(ay!*DRVSH zwLogH>Nu?<P7ZpErg zu0a2;C(*_HQWQvPMr*k_%3zF}yYUhLSY$S=;F9u7E3# zHeuQ@bK*61p!MqeART3vlQy~da?IOwH#)Ak4V_oqiltZHip6WMw7Za6{QG;4;po%f zBy(Ur^^m`{v1}O%kj!YDSuDT#Q6Z_D*U@0=K zi%EmYNLLFge{k^iCop*U4ZG7&DZc8F6Sd=P9uwB4LwB2`01QToz-StcGYKI&ji7Md zk(db@Pwnk(Sjf$<-g_h?;U$yNBe&t*N7bQb(kWKur7^4{@$|JYjbjNBc1PHk)r2jM zt(h==dD7FC=WHGm*1N`9nlc#d>9@N@LQY5eQ+4QQNT9EmeUV6`rJb9s&Nj3(W--C^ zQb5->wV*aOiFj=@Iy+j>P?y2v$dH{#sBLaXYc_@my@Ym(B{Be-b`aKM5i-Y6qQe3T<7j{sC%l^`ZEY1TuAMT?;pqO?v+#+nbAP z=loV~(%3fXTGo3EeS;iR@iZD+8ZbH7hp|`&^V%EHbK;cl(;3g2Y23W8p>|>W*ens7 zaW4BcuFf!fClUM5Z1%6?`HaA{;#cxlzfa~SD4a{du5^xyvyDAFMWB*$93&;MwnK6#}9rMwcX~Ib)Ww>^<}vK!}sBa>#o5c^rp>R6;%eQLpEi8qJ$kNx z99^xs%0o&(Z5DOfXHnfKcApx=_g}8T&yIBB%^kKCEQBc=ktId|LGjGL=hNg4!u4NA#6X@e;`< zx`CZGkT!%aExZM z@|ds`PG9)K@7d`;eVif~)iWr8v@S?lstxk7W5>^mKTq_ZK+n;AXkM}wHH~c;II$lu z|MkD6{Pqm1IDPq|$a79ep3`t&zV%k5x$$}S7hl0}|9(?oB-vaIYi_{GyT6FbZ~OrA z;5?vzg7V1jhrfp0$RH>R(nykWM$KuzzFiZs0#b2~Px8l+e%ANEUe47Tth(+240RpG z&hP)9=s&U>`H4{^3R;&%z!;sU;b?~I(63VPs2}8Z?*#O7lV#C-3G%ky|EH&Gq*VLF zCw|KwAN|pfeuVw|_v6sv!?@%2+fD9%ir`LUKM*X5ZgM!I2rg4AaDr)rWV6MoZ z(poM#QDs%RG#1@_XPdCBLNPtlg*s_X(TDXU>(_B3u04npG@2_qNvE+SrB);N33_r# z`vobB)D9X?;q-JETj4Qbz3X~d?=)xQNa?7<1KNvdf1^Alf9RcldatuSEMnK>uOg!p zGb*Z;*V|M3!JG`NG6@A6E{iP#Ugu>Jo%3pg-eKB9BS+&>DI-owY_aKIR7{902 zJ+^9dz{9tg{T9KwX%_QUdxbrWUTq*b-|85F+D&n01AR0_V^rmq;!kv~4LLT{N16kg z59)V8O6T+am~dz}wTYm-wT{StW@zot|M(r~NVeg|`|rgql*QIG4`bJXW5_46*mUE~=y~-?oXjr4 zy|-V9qdWIvkaFNf8@A%ZAG;4XU$+fgS7q_)u3l`s?QVSduG?|#mMvIV(~q4;hj7D3 zzlaZRUV#-YIW)C(a*q#|^G5V<-+@@B4(+Sg;jY_1fDh9w+prq>y@%~1oedoeDFfbv zWlL7z=G(8s6`R%}(X$^1`pI{>ht6y7nW{%D-HdB)+=iYve~Lq0_1N~&k6_cH<=Ax7 zCT!Sp6Bgu-V|ZLos$_8;>-~w}`ZzYPzYglW3a zkj~<8*C@7ZxdwONLps~GaNZ1Y9v-mqAkj`Q(-EK4oYJco^iiH`uGz}{p3s!d7F`67ig{GRbp96}T-j8CV9pMjT$;ps=3mUmO}5huAL(ozGPU(M zb#MoEKJ*`v>pQ~PI*H+(PvX$e{=8^Tz5G)XMCx1T`;^l|OhydkqKj4(Hx63JXUnkE z72(vM9ut;r?^z?0RlRhr1=bWvV%UD62wiBcXoI3!dzSlID*gxNt}>pakP_ZAr_+dg z_wF?zUyGmyqZAAJGM;S5Jf*<$3w#)iDo-#hpWX+e#alwKUJ$FrNB!g!nXXiBDc0U5 z!GV1e`}Vwsy4U^<-u!>Qgt0@r&>U|;WSbFhgSVVjNvQBZU6dlX~kB}*wrk+EbN>a*G#<_S?Q9o6q;(9ku78~80$k% z>j`A$yZ6;v0&PkePme~#CpaI5xLKRO7&YUEFg8h^IpW52p7VoT7P0XrtX+RK{?XsQ z3lDww+xW(}{u|nsEyfMMbq&@nsYSMR9`5htr#tY#r#^#g*VN!|zV~fxKMq`d(>=JjwZOF{0dgX{>r3(6 z6k1xVjvqgP#~*(Z`}XbU<|~i4-r9jTUf)ihLq5cX#J!8gDaS%@SEZ3<#H%Pi6F)8{iqc%+O zyw0O@Gf#@j*X2Q*@oX(+-jadTUv4w#*4MDviXxQJ61!Ma;L2Z$>*!1Qta0P>v%i1} zI=pl~`kl#K7^saFEm~wsbgg|dI+b_m&=EU<6xI%%lvBS-fu{Gwo*%f4yVefPS;-Vy z7v-lgZAxujA+$zoZcD~GU(k(G)w`OBLhFNMgD{@X7?e>5_B@BzzW0CO@GHN>D}ViO z(YNDi^PepyVi}tssaOs>AO1QX|5u;G&?`SfdU6QKylx=JFxGnn2cCZzeMk4RW0M#d z9Kn%eJs3^5FfS=o+(yd5J6NUS*p=arjbBErt4X3JHjbYCub@{amgg_ns<1hZ=FYxMXui}|!p0S(e%a$+4qmMj_ zW5qH?s|u^_(6qjcYUQuauXdJj4f1o;YE$resU)g|r8<`uIPUy%N=O zm%`2|`<&88GMIf>ud&JAxhe&f%(QUDj1aGui}zJqSbNCHUmEqDUOgpSEvp*|I)SNq zV(XU)VveS-Sq)oot8fTJbTuBNAl5rs+qloOHIZ~RU)9&jCpr$CD@r#&ek!AT zk6PFhSbkO7`%Dn_xKf-HmAZuXvf{-u8sqBkFc!`?R0i<_tpnjhscs#Z9Zn7$$6r75 zSLhk+#>$S>$fjy>QTrMs<4HX9;t%lh!RHz4bY;(A-Bs5hdF(apIeq|7y?hXtZQX`W zzZ|qIzYL%F+;3st=o|RvSN|Ixd!q~YeB!rp*@6txjUBlD1E0Xn8IU&J%p596mlc?8eBxC2X9ZNjHM{XsnV?f*ai@~? zNobO3k<~;K^O+6wZXTU*Xl!4I<`tJyYSP)#B$6E~ky*TDc zuL;#J--M;}JMiLn{~ccW+8^W9KmQ_L`-?xq>;L8NWBAR-kl`jRc8iJ?AeF?$NNy<(TVzWY4MtaL*?91FF6zb z+!XGKir3*$vE2Ulh7B8M^24kG*OSn`bkp; zUbOB~?E3XzqObQP9(sB&R$Y0$R|ay7>Py3%zmpUgb8HiB6t$*n!>dzdKY#dPd%RL# zcGr7mB!IaMmDaP!{Ep18Xpcx2r}fE{fm*w{CXMIQEYr0(@#MF#?EiXWZNB?5Sxo)}J7QHpzKZCK z8+yl>j$hXS|c8M=qLE~ub(nm^Q=KyeY>Bi7t@UaozyHU%3U$1ZN9Q%@IvyT))2Lq^3Yt+Ll&EBG>(!Tj{&+9J4vCD~u6FSTzJ#N)KrRK3GK%n}O4`spVaA=uuR@m#;T zv7!DKP4#P76BVX7&d=?mLi!?%m~&oeI7Og4tP{;t{i-MWG%wZHYA0)x3xLpWx&d^i z?+gssb@EL-wetyFy8Lo1ZC!!u*4}`FT?g>go?l{|a?E08Ekjrq7$~m+9z;S!$eq(1n`g(eB%SV3)y*qz}ryhO`dk^l#vroT_zPfgN z@W#t9Kvq358p9KR^B9ipJBpt@`U|YOxCIUA7_!`Fq%)2;+3c|Sp2Ml`UQFhbc=D02 z<5*80e)-GiaRgahw|*_xo+gYAp2E6i^KkIQF8ut(JvcF#N2ab3t=#8ayzV;gIrrjc zPaQ!jpTge9zmFH5c?zxd-203sOd0t6FMotny*+sO+1Jn;%V25k2zn{EkEh$Y9u%;P zvUMTVf$@o>=%^=;KfVL6y#5B$=1d=<8(sF~51Umt5;Eke;*-xk`y77sqlfU^bI)=8 z-f#0x^H2LOH?G~-4ZR_LV0E^&!OLns)W&%*Z`VYe24^-4sz4J-cT&aFwCKv#wHBk( zVW6iA{ilv2Q{RkrcmE;UF1wBGpF#7|_1N^8Kf$$M_%~+O-1b@0p2W%h+kMKJp@skX z=U>3je)ceS?%ZXKe>y0R76}QewkY|2k-wOgj)Te;DG3c?Y+|t1sp?Bh;5ym-EKl#Q z0>!uP=Z~1Q9qTsZn3clxzCw$m1cdI6>4n?6b7G4K{Yo1R`!7N?H1MT~@^4j;j8 zZq~G^l5iu1q6C~WkWLMWE@(>O{C-FlKYxA&{>>k*z@L3#9sbkrUqy2z z{?iw(z#rYc0=Hk?!af@(lN#Y*V%vFAf-Ae*xawq}8~9ELlp@e_w>oR_;-urH>ElR* z(cLwTY&#jq^mZ~(M%N6KGSCTNOsGv^GK(ue{0F${pZ+DT`^R6$)_?eQTzuPav%S)G zTsb#3h(T^byN(`27dO9Mhj(MJuZIGIW~*u zy=SC&li<Nyf5L$ zNVTEjnVa~g)(I)|by7o*>gZiP;%iDa`>AEIZ7$l$wuE?F9(AcYWX5Xn($8MSPrv*y zc0IiZc}+3O&?eZ6XIds&e`1(SakE=Hio(D_q~>j*Ak~XlitAH;67f-P4hxf9j|b5w zB9lq7B_Z*}(m02>?X zM{HtV&LEr3?Dv*(IY1? za_BII_8&m+0NXvU+Hk!gE%#Rr^-mZFvaP?SMsg`D{B=UCxw*yO`4xg)6kRw|k}H&t zGq&;P!YSd@6agG34k7Mu4(c1-loVF2S{W%@3F^KjOBUH9X?l$F{P4rIVuK```Z|9(m+Zi+irnx3d~kdHV>=nIe@R z<2)gMGg-(fz4bw^d{SQ$)@qnXOG6D3V}02B#)~+0a5s7m?LzAY4zJ$B)z8mY;ueUE*-*WTKSh;EyHgDRDVtzK(Bl;sNBJ((fHKO>$1~1&s%REXvA_Z0y3#)a1}QJ` zF3m~xlQ!Ujo_vzhPB-2pGm9T6uB(%k&?SzdN>-|`c)g%?R`Rdfu33g{=4|(+=Bb#j zPSb$x;7;o~g_inFuQHHZGN3(W#&IoMN<6(1Lf3(+D}(A+yr=?&i{Cp%pJaUXk)Br5 zwY4MH4&|xGp^fKhpJ=&6${(daZC+EM@p5*ko{7pSzN^DFGE?Tkd4z8E=th9rLG@5x zvwLS?2~zkyz2^xWK6wZ|{XLXl`thrskD+Vmr=f9DVJ*$1{D z-LwLCY*~XEJ=(;*>?nESxYsLc9*?qbYq;kZa+3q-kLa$)wBED*s@~dfXvd6?;!W? zJ)EaC7#)e@*s1;8|B)}oGZ-H0CBNi8J4qR}A%}iSd|B=@CWg5Gn9w+NyhlsFo>Y?3 zQ}5=R9Ezik^D-45Ms6a-Ip2%tUi&Vde{Cl&yY5c>@jw4RamTuasLc&opK0_JxX6tq zYcSS#5XVm)$MG@FFVd$}M}DtS5uW{?|{u%!9pZ;T9xq1nbER&uhlWrkrPxrCRTGx23^+0?`H)HffgXUb|qoz*@ z-7kJfo2WIoE|9H<~9DMF4(90#W zjjg!s{{Ig1wmg8ro@3}gwhyUH)*j>2sFY}- zqtur{8K}?gi=j%9rjtmf3HF^`){)-JTSUoK?05rR8Xz=c;=#DQVMFJ;2F%cwhwG{TxQ-_KnL=wkmBsw|3(4T?kgcmnD%*g%#wNBM zqiORuHpsG0psps4`g8#eNiq+nH)Ws-a-N~no>ByA0aBZv%S+0oTI%EI>F(!PcJE5*K6V&;_Uy%;-TScb05|R?ySp!N zYYYkcB6)&if1Ldvl%^LsjG8_EhHwOpGC)4 zB9=fyOB**(gD7x(*XvVcET%nfqIuvU)+d28H#vq8j_(>=jmpTvF&WN0T2pTw_z@{}n9 z$9FTYo4WM}J6LX;e;AY)KhdH-yH zYfNIr;#CxoC^#0fsOfA)JNdcBOs>E=LqRlGXdn;nM}BYs8J#YOX|3UW;Rds|u9owL z8;{|BPJYtkrai{Z%rKdAESE%z8+j=M$$8lxT$k!346^JTp1R4DVQIx{x9@ryfAy1p zhyVJY{tW-&fBHZ1&;Iz&u(vmb6oomiZcZ7<`K~`}C*StrL~U)hmh(2*(YRUw0RQw! zL_t)=5SCX;Smsr{DK;G#q!yRaqt$uNA$xBp>rm5i5f;r~fep8P8f`ax32p1Ppnv!P zoOlKx-@t!@@H@Y#a zI$d_z<+%9b)mG*ZCP+bZ-F4U5hET6Z(W&$E3vP}%XJxb=>rr6WS877?$C`}gt+{== zcln+R^nTqNZ@j_Y8>oC9dg#Y^{P8DjLw~MNo$k8pL-vkBeUwCxcby5++$iY@3HxjZ z`GP(TXUf1-Bi5|H48QZa-@)g9`;)kJ+f`^z1NDg)5 zPIlk_!2PBe_|A8}V<$ZHsMqz^-(Yj*wO3!m>uU^&PpP^9@UE2Br?!g1x44*h|$~rx|E2WwCCMvhxoQmcz zsO&Ua!^AtqE4rB`d{MU;)7L?NL3tT9_C;Z~U+Cvx&I~S;8TF@z9SR!k7QzFKoQoUM#_#2=@f;l`+NC#Xo;pa&wI~gubD`pfRR> zoZfvXg{Rt4`*A5MR6qA#KAl2j9&CqV4NK%pey4%PjrPcTx=ggsWN$qih<;cLE)>N3 zqwk>=&m9^%^T(3+b?w1dp8PWY;?aMPFF*G0@#GHaCT2k+R)mMkscg6If(g-mU)jjvJH(`uKt1o$zW~HQ zJHL7fU$|=<7S>aG^h)gl`C3iKJS=EUus*fOE?9wdJ@@%syHW}6-MA;39HkUV*|!iM z#AMtl15*mmk5MKbM5;c6+|VAp@%Xd&xBuw>gYUgkzyo(&kM;)c`&0+!BR(och31vy zd+D`QcRiM`vEyzilaHD{g>|!5EJ0-z0^ibXGk0;lpxO>7fJ6g;QiG&HggT$cDtY9RHFMr+jkpfX)#nWSg zQ{cxz7#u;-r@^HFeZ^P`57DzhW3ef)F} zls2^qq$g8YFt31xZFQL7q@9fCIaxVjZBlS?$?5$&?u(EElS4SNuM68Q>A)*{PI7Tg zAfD0$5?Nm&W-et5n-|HB7Oc4P!E(NZtH&T;&;UVaxAEL?0SY`E9+U@GR5;-o$DhCURs-PP3^qu2@_ysq$4c{H|X z^8t}^xOa<5@un9pYY~z{E(m~cH&pJiF>R)`8Od0g1f6a=(}nO%Az|cfJ|NQ8R?iM7 zAjPoS#wK($*Py@aBzo)%PDsakLZeSLi%>w4_Sag4=l(b<^6;LrfuqYf<%SSLWceVhor3$ZXKvBm6TyQ^mG+)?7%o4 zxchc2S+M{M7A&ww;6D7(`>|u+KI}ho7v>Ds3y`G!YU3mD(x42g9$A@pbi}SD3 z=HixXN#pfBs)cRb+?o+FuF3|hx4hU6;YOIPdosR##<@1@2A*z!X=CKty+kL*^(#I( zY#^v@-=<)>1V<0=M3#NmPnqQ4o6n=?=mCrl44`L_oAtplbaTFR4~$@7ltN)a zchEU^m9J>hR@qdZ6&J0r4|Peor5i!Ed8Tl0A0d-OtOSf~>1b3oS4RD-UTOoKFyWQT z9R)Ad*BVz^OZ34FZD{Rf>*VEnrHF3&oIG*To&eDL8l`_)_&9HN_u~gU592#;9;|9! z>*~e0ZDMDS{{8`O>>IFl?HW5B7&enqU@cv`6!+Y7CoaGIa@)v$?|a{e9^;z{T32TK z0g(W;t@=PbRr0Dn*rxfa(}?OLwYQW5r&G+S4}{r#K%^4N|Inesc=E|#;jzbli5)w3 zT7RAo=%wcO-g}SD{l$wH*(1vOFve_Qb?$6IgN zxKo>I-nzL<`1Ijdwt4YKf7%d=rd`obUswL{y&uMvS5fv~yx2BeZ*1SrusGux5u*`> zQ58K}wjpDiHZ?XH?QmTJ%SHd*o?iBQE$eWby$Jr_|NDQB-Me;?Z^SugFR~9l{P@Q| z#!mK!#(++~=?Q~S&Oj?bUh>zILi#GYXzEeNmgW{TQFhQf>2z8|$~hY!jITK@h>D%; zqEVRRW1eV$zc%HPZQ9ia;x*zg8VA~w3{e)=p$N5W7&F0E+q?eIhZfzV|DiuZDU@f(Ih0#`U-i)| zAk_X+Y|3bi>8YsjxOS*_AXcPh*}HPcFXZLgIc~gIeWVYhXfv-qlPqi|ow2o|S~CTj zYD*dM3GD~f7U3(;mZP`TCQ{JdaKjCDh~%-y9>aIP`(67;$ez7>?OmyR_UtivPxDAO zsGooSd31H1vc6U!)EeU>zO3{(3;wVA&Btg?!Z6on>Rx>O}P!4Xh# z8HE(J+QaBDgKo;Xr|8_N(sR9WqA@LHiz#PmDz`_;JX=5>_OxlXlq;^qhLLj3h#;wMkMhFt4X+Xy-6V zW*V^W##?cD;~*aV#*cBlkSu;cGD+b)}rr+@x1b`GWRp&M`D_^(A{%UWz(-+%+B z;<$R_#TXt-V9RyeaP=jN@aB_`Vf(QGv@cqMwH-C4hvIqkAxzugArgUXGsE-^A-j4xy!e0WQ1ZYUECGJ>(v4?V2@MbMb1- zYssSb$Sxf08OHLp8*t>+?RaM2VO+dq1+Lw68BX*L;pSUz!-h*Q#*ycLh+RXqSifNv zdS2U(?Z=OzxvdlHnNRnQ7xBi?A+#=Dj@9$)(AY%TZ0QE9yJQ_MTDkz2tY3yboTGaW zpTg**CWB@S`Krx}a>gKTrEz5540m(Y%_zyC#^=5NBCQMaI_xyEKH@65P-9e2Y}z|H zjf^AY=5&R5n{Zx~fnrW-7`O0fagdnoXr2yw4`BEH*D;BtDFk&IP$zk`q0LQ_`5br) zuRr)7(X;(=_RIMZm}Y_&J-d6L_X)5H+E7^Ca{9V3g>Nz#DFU?!sH4?+rJB0IU_Hox zEuK0}VVjal#^j>##|@mo0A)l`ZK?N6s2sK!ae%o5de4M=WMP29b&^ca;KmaFEs`P7 zS77mvb#XC#JPR*jq-GrH$utJK(pWIR2kS0cfXO%)n-~`x<|*Z4evF{YQ3K z8}Q#CI;H+2%A14bIXh*b`b>8GQIP}khR4NVKSzw#1( z_RFVma8w)GQ3^r3(RH#9149!S8tJEix(~;X4xsPwaqQVQMqw_EQ$71}(tPkz^|V98;;$StrPllwerR_p1ZVAZJOD3ytcU_w+|1GUTFQ!N*Tz0unmF5 zcdLes6oJXHetSG@)kpq`DFUDS>Yw1)ul^hQp8X;EkL_l>JTjb@1-)A^NqH!lMLv;1 zF2M~%A;FEX);`JyUID58QF+8$Z@uMKd+bmzbC+4RY?(cRsC7&mY}L@}se(t!FPD{5 z?ZEZV>Zx_V0%2U~LuYm;pLqw_LHSGW(A|8w-5vO;G^T}*s=gSdpgNs7Q$?Vlb>`^N zqsGrxu3U*rFWq3~s;jQVwbyPl1(v>~`@5`aXQK>M1yv3y`^0xumarCz zziK00ZH=nLxhMk#^`Ybejny+vI}1o{v(!3BaVHQTL#CN>$mdYSyplm4urBoX5ua?pL5KVocLNcvxbg2v?s&TAByS|Xq zD+ARZP3#ZmUFr|3xQkbe?|6;Igi{>4&9U|wDvONmJ6M0kQGWIsr$8#u(yv+iDTnQ^ z$R{<1bpldKKi!xa=Dbz=NV%ywuRajXC|n+HkEXn3oRU*dT{)Som@R*-{v5ONmm=`l z=bp2#QtP8G>OURu&{);ebFaVtI_Ksti?5pl{e69|&OT$K>0#upjuoCnP=4#Ap|w5B z7}g{4In~XzKa=?N#I>0@qSmyKQZ9S}JH!tBi`kqLBr8eb8*ah`IaqE}mdpTsDD;+F zZsK}!QJK-)+`s>Tk5z)3V;ZCG5Q_2%ZFMG)Y;|hjBz7F#jyI0Hf+PKhI3{K;tB^^@ z(RXw=UVQNY%8rE$_q)@ay;ODRgt(XWEzHnkzc- z#9u#+$+iaM2anThx_kR@_`rVbJ9HeqNA}>^w@#qGr4iY5 z4*TAE4X?iX8V>hNqPZ@MV>_P3!%x3yr}29S2eAL-AQm@fFmmz$UO3c;*Is$kKD0S8 z+>Kv6^^z$9JKH+&((5nbZytICW3??9>^_NIuf2)ho>LfMTPClgI*KFQd-e8@plj!09PU5C_DgbJjNrgqzs4!_!WNfljkrp!SS6;vpF>v z*{6PT6lBZDU*jbV8T#3L(%8};=a|Nn8*9L3t_xRRbrmjJxx&_(<;#~-CR}c>LeZ-i z45DRp-1-?cCC7zD42!q27@Xj&+-GiFiC;ePlnFSqg(|HDLJU@nQj3HZbun2nirFHT zu0zws*I?ng%^b9ym>3<#@jb8M)Ekdutoty_cm4#X8KHsf7hhwnwm?SwDO`(r8*^m` z8FP*diYUbJ+uJ*=J@gnt32u;B`bZ)v9My(8elGz-3vhU6i4tf4$^?d{caUk33jRJK zi$k|vn#)jDG+ihl>S-gL3rlhWiChYa$uzFtJdS&Az8L9=JkpbTpHl)!ZH{s*6HP3k zul=Slf^odLa|Ef{diB=lTm{0@Ca^ymL4wSYKD`aOXEA#Crt)dTpHQ>h1J|zF--c zit!qQc(!-aPU%I(9N*RN*`F48XFvfB* zjFSB|HgnTHUPF^Z1IwTAoO|*42*la9UWB$@@!WR9*+F{|| zU-1VA2GG{tZvCJSZiV&4qSC}T$78uM6u5R}FS!YE3bQ9(eH__*A7Y~v(bF0GkX1}` zkwU-HiiYx%(McO^CMegNkz^ve;e#iVhumZ1Dwl4&WbNIOr@Bv}u|XSTUtX5g>gR3y zqpi)h6n)wZ*%JsNZh5Ex%AXr&8aoNXbx-Z2e-%!D;Utd2k~H)Vsf)Cxh3H&h=p$Ae zH*UmbmtBgMmS&R~b<#;*?`fB9nT!M9R4WA{{){B})`7A;<63L4$;G$nCq#m+`Rebn`|?!Q(S5XH>3h3?+X5|2(~T<8Ai313@@W~ zTS^Yyv=4g-|us;bO zJ`^8Po0qCmUZ0Ro?Iivi_8<0I8Rj9yp!kU1Kdx~uc|~*9>S^QNH-x#^AFP+!f63w{ z7Dx568{uW`raWB=Qy992RuFluQ?gpQ8KydFtk^nNWqzvcBIanib;0sdAni~;MRPwc zAIFE?h0>}Fc5Od`qhak#GsbmUH_w+WS!(U7gBp^{Y<(czP|l!yoxfl{jvYJZ)^oO} z^00Wux8u-PnFZY}lCnY{gw!cTrH%43E3s(H<%%CEqm+T-TkZz8jN@aRUl!`xSM-#3 zk&X*;@T5u<-(IM%EBUU9DnzPT6{=IUug;5}`l=G@2epy*J>fdd`Pkp@6tS}fdl5IR zy#?2=x)r-lyoJAc@mm;~sPgpRSzz5q{|9`2*+KlPfAcMLdB1?hwb$c+{-fLQ&42hW z@a*9Ef67d+sTs^=u_!~?Y~&PqaZrP=)kg& zj%*c6yg$KfO*z|4ak6RZxERX7xvfkwJ6~8#R|;{q6ttF4T{~x5yS?*3Q_5@_ofad% zLT;!Bx#6B7b=j;=vA-FW6W2%galuhmWu22TDST}tXAnAt;!KlZVYatC z{}D4Pt}_Z`G~=-zS{p(d2Y;b>`twnBVq3y+ET;DsX>*{*d32*rr$*hQcX@m6UCd63 zE|)eI*QU&c$+*oXH?YY`^4JN^3(k!RedtLW4c(~mcARmvX83&Vi|Lc}uWK2B`CEE-^Uc-8e$93uA+?dUi$VxrZ`XdzP5w06#OlP4PO_LX z(Aq&Of}<7UyUm+h^KG-qxu@CZ)`pT{OE{Nbqtt3zyIkuPObIAsr6VnU0aG6!&|H?$ z{MHMn-+JpUQ}BiU4&^Nw-4*6$o^7DAxSLwaSG9KaS01kJis@|gSAb&CmREVW4>QYt zBd}N{R9s#tsQ!WPOWx6q&2S=Qwm4U1;JM(Ps0<9y23JZ}J#wdy7Muw*SI7a_L0*2R zNpSq?9i2lX!yMc5?5m2$jvTR};)aWNxq;_Knj36pxi}uYP(O(;sJj$HCz_I}1m<;g z+G(vLM~>Rq2=oF~In1rGZR6Y7L5a3#(IVSqNfD(FCkV>llz}vQN@xALb@o`c;^^d> z#*XHg9;KF2Wx@OfEK3rH4;^M1*#_cW6;S!3MmKKsUhbvKmYTv*Cn@d2ecUj=`R1F& zlV_paL0O}xpQIQnD)%`5?PfRQ2=3Rlk@AV2B;=3&EljYuKAj+!c(L-4zk<|W=5R@f z;IKeTBjuguqj*-}U!k6%{FT?0(Bs2;bb9fUC8n6Pn;H?mr!v@|@-%v-I@*P&X}_Ml z;`{$%eEa7`u^hpspXKG_7?jW~H$Gin`WHu!q*u7Y2un|tD+9;u#HUV`NqMJJthRo5 zUM(K3KGe1P)%CMWZ~gAalx+K01N&d_S-LV=+2wY2sGt4OHs45`61uenfkm7mAjvaQ&yb|gMwV}-mLT>qK+@A^5N9jZc z3mO-rd$?;>j|k5eYwr2m`1JDQ_`m+_dsCEw4Xd`|zyHEb_~HNhf8d1+pbSKU5>PIM zSWX9h#%RXLo3uw(JJDYUZx~IZZ<1{&Sw%Mt)P{l2CO8L@x_L?&(hT?S&Nz2GX2*(1 zgndC{N;6uzftr(?%DtC#2R61f&i#DRdL;VE#%3fNn(?=P?^DPm#?jy1ht{T6?0ERw z_|7v&xaZgBubliO*;KDNu$xc3wv1E*(sgsz%}eR4;`U(zu7A=~$mrTn4=sr-ymPBe zwE1h-#rf%to4-yT6;IH|ovys{3SPUox;d;F9O7bkYG4@M{W3#1 zMbp(cT(rCThFHEK3=9rK&)FAZDH{(eR}fwVEn#xmmCDTenZk}9Y6CZM=%%enrY*8^baK{TS9uVkbt(f*3a>6)C|tm0cG- z9nSupfkIg>?=ZZ5Wjnjagx_uyFg`kj{sE5Vfk6y#9QATsza8J$n5q66=Tf4Ir@oUm zobO#sH~vcgQ(_c7oI{TSX{@^w67De~<5RLC?&9<-+HN%nDDpVDOO6ucwrd~CAKAuU zO?Y!cnvtQAV4^aTJ=^+W`I(=2`>`is#<|0Z2T4MOf)rE|_>`C8$q2N4Jkd1@qAS6R zG#pI@NC*skTq-v`{^d@V%THy~8ms88NUm)9b5zaC8Sm?U1k2Ud8l}<3QyX+CE$p4U z-oFID7L|K>IERJXU+F69()(%y{ zNNBB??MM77p*e5!)?d3(B&EJi+Kide4QMHOT&NppMd?nKC9WKEE{2QXVNUTW=O?*V z@AZ=+No%6be=`=Xn9}?r9;UQnf7pp!);&DFX*YSXGPx<4|dh9%WMAG`vqR=*nB`}^~e8K$Ps;RkUP(+I-uc;;WB)skD$}PLBhIZ{? zkxCxs(seOIUl%@~=-KxMUU*{mkxCfvIfCb(ehEjpC!boo^8m4b%6QsR zBc`!S+0XichIN)Z%xubUmGLt(uM7;(#5|jc^-h91H@Jl2fDRo|>TAM=LfKz*FzCHK8VIHgq`)Cq9Ov-yOQg-_ zAeAD}4H9+`7aI*=GukxKXdo**3}_=#4N>oDqEtdJ)Yg00Mso#wY!ayq^4zrPk*ZuQ zjY-g^doorsiDVjS#?@oN_K^^lOImc>h}vJIhAM|R4aW(CSwDLCNuZ{4DU2tXQCimq z38SL^P&@}Y7(?$FoE$@fmwNOq6VIDTlaZz4I)RY1jiD5QdUQA>FVPVde-ZH$&P^FO z2jShJ3>4g*^kCkulFTUs-|0AmkwE@oC%cp6queyxV^p5EIWFV4VUhR9rg8j7Ar@-= z?);qzzlNe`MW}NU&Y?$g+(`kjwg$si*HI`Qbf{G zSfs3~jFbpQ+tN9~O>QQ%_)-Xl^-Jk2Z=D?HnxV4UO{0+B{zO*40hT%8!irEbZyQbK zt&{Uo2HHD!Ij7_wZb~VSQhHC*%I7G{<$jH%|Mf2KEGrh{y8M|+{=CrUUw3}h{`v^U zOE0}-k0#oNnC%#dI5KjVtWYMayYrX|^N*wt@czMTO1P&zBg!lHj>eoa@cg4XJ zoYdG2Z7tc;POd7@#%VN-W>4ifD_xhz3_sptK6*@2>!J9jowCv<(85b8UA`q-iW#-P zlyRmAw3B)6;|4O4J49EILQr$d@fk-$CyB!2$l>vP-N-S1A|ch{MPS+5kNK;-ilZG+v_qYZx_DzLipwHgi?+M;Z~>v+)gS7IDX&$s1jP~=Ne36^{C#L;9_H{V=r$_B zHb2=ViUuE42A@Xdal!sKT>CV#tjwgTI%(WAHZ+)0uz#T6#+Aa=RxYjk6T~AlHqBo& zLb2#{6lv^7p7QenGLh>_JD}*4BjPWVF6D9=gzSa#aD|1?3PSG!XwIEH*=77m?;72{ z{VkK1XF_;qp!)Qk2EEd1w2C6op+BrVqO5=9A>nojZ5p@ZlpiM%9+eCD4hc3@E?4a7dtWsXrO04~Vp!lQK{Z`mRT` z3ZavW9UXzZ&GwF92pe4NWNl2+8UFzi-KDi~W#H2|mxFmJKe=7L!I)>%xabc4I-vZD zkjE6y8Ni8PkC?HTNv4xnU?=!gHo2Lf%@?z2%%2{dEKFu;T^qWxhdo$mSa&G`vK(bi zJvaTz?J%5VnJJF1QaqK;nn1!8H@=Rhix=psNaAp&2o$IDP_poAFhb>+QwE+p-aX2| z-wfuIf$tpX#!Yw^+pLYfrl4d*Lt|b2B|*Tkl?X34t|T}6T9+2?f)po2bKd%OuG7It zmq8xP!^V^wS4LldwC&`!Ph|N;2-vm7lWjh9du~t9s0lHgO+VZ4(&kn1CYEf)wWwi? zOMxgJ?aF8hO8N$)A5n>Nd-I`y`Zb=Rdh7Q#QRCncyX z&Mv{^L>iZm+KAVzPft%TcJ112ia-gmZf=t%OMbQA`p|;po|)r(Koa zY~b7C-GDh|;DtsQN&GF2SvOBDwCGncRLf94ZUZ#Tiepu7=S$-^a{P0zq^U?qm`}uC z^GbhV&KDoM)h1FrnYQ_>k60Ybx0tujnYQ?$%~QK3ck+D9!tK|=-28FrPas6Kr5vOxo zBo8?pua(>QazI5sM%*LB_YRU^I{xc%YxRv3XOg3p&eoh_M31uSDJ+CXXcCV1R;2Zp z&WeV4q7~6gn5Hh?ZRL=&7{=Bx{;hhs59mlC;>L>`ukJs@Cqfa_|NIN>DYwg3cF9DO z2Djpt+@)WK@^vw4D&dPV3sg(}&WGMPs}F`qAwN4_Tu1l*Q`_r|B$!*>qZXQ{5?{9Iu62bVq8OfF0H;G>>B84ygIYJQ$%@eU} z(eXxpvLu&=GRT%9v6#$axnI4zI|^OV*ZukQQ&EgzS1Pwoz3X)pvNcAXyvskEdu z;#!Ibrg&T!#ISf9v(h4&$7gQ5=&aru_@06rIlhCP?RbV8grR5LptAmpz=dg%kkN)v zCOobXYzHPROY2bdDktpyT^eIzqD3FMEi9CW#+BmiKv9e|+@GjvGh|S{X1g3*?#^XS zpQ(!GO5!lZ?de2K$j!L|d=4TgFrX9`COo0?gf`G+NEeM`P@Hlf#c}CMltbzO3H|Ep zY*t?dKC}1l%)udS+9a6ku6re(kIJw)oPXrGX*nIL zj!^S-A$m+$V_F+SJ#y{@250zVaU4II0VH)sGoeVA@N+0Smn?t%G1|0rm8V6ZL*y)C zGezc!ue^1 z&>YhhjR}D?5@;`3bwjO+iodT8d>UB*Qvl3IUbHViIyhNL5gs0nwP1 z?jm)f*y{Fsdd$8AziCLppm~-|>NM8{cz@CiaLT}#y&6Yr+IvPB7}@xk%MT|TMbRPT zqiM{~JiaRYi|Im(U6+sJ zQVhDng)3|^AM;i{yjyiw8`wHXxu$x51Ty*!gax_j7xgOQG;5}Z(LD{U^?e_x2v!?q zYa8<@1=nXGT((}NB!!?($m)G$QTWn(@G43w0<8sB1iCFs$m29n{Bn4o$^b{SHwGFg?ij3#RZLsTXj)8(OA=NhZ#!@P z&O|E|?ljN~K3#s!m{vSW*9LExVxe8^!ZnY6EJ-O*S#lbSMu*wnFQjn4YA^ZOkAsWk zLxU^Wp$$Am5|5GaP|MZ*TN$cV!$CE)SRU0P z$}buxpxn<5SJj&q3*t*u;_LSB?9$kdv`;y?DyY&M-lN#o-q>cYXcS>4@{)xV8e(`m zq7aOx7Cl$|5RdtB4lA$9{1wm279dhldXb>hqZHY>$`c!D|7);{&jQi%&EfqA8~YAn zC}`{!5gD$6W^CnHtGte)Y;-XLT|4sS@yq6k$CMfGFN0hilr)o4(o9U6;ys+)a&e;+ zT;9@EOUn za35)!{9S)nB}6ck>4I`ra$PE!vPXs0C)OXPY>O0SI#N*-%QBnD(;%AE==uIvf!Q~{ zd)!GQ!bSIq6kfF52XFK=fF1$X#(r8@qGI6#wUE6lfi9G}EX4?s0!qoJMJY;f`SM0F z#bX*&nRjz||G>`*Ll~9i(Dl?YQi`Q8U5Ot?)5<@XN|fhO79)@|tCF5WrK=b#%v++` zdQ$Rnv2;z&9U(9s7}NfpT}1fSi4s&>aLZ?{E5Mc);r+3kktH?S$Khb+vQ>nDk(o6hJ5YfVKQOdY=1fG~jpj-0t zsmiS?D5VNK+2R({MN^ij2Uq!OQVO3D#c0J$oU8bw2wMAe?IIV~3lEpl<*lHiO-I?a zx5KX?;xwp@Bkirs6veH-@^oPS$ub=Oi}Z(1 zO4>=7QhykoY6Y4WKJt|E%z&Bb`*NuMq3spDR6g%v@U7zeQ17wSyLjExUgbA$4aIbV zqZjoGIYje{(w`9_$+S>}2%TAwEJLwOb9g@@@PpE@ncV;?#R}uk>k-Ty#+2;fj-ot| zYB2(4R~nCKl=9Fy%wZ1iFK7cNK|h=-F~Q%2|EWfggqhoK4&=7YAK8dbLgey}pV%)w19y=f z+(L1E2yP!5jZ?g`NJT67Mo{w65@h@}vP3xQ;je;*cQ`9@5iv!l+`$xs9Zmh%wZ91Q z%w6=aju2F|Ex}ZOgAa?sT`JGYvV@3sWyX9eyuDTYoq|ZbGRRMP`T*DVP7YA>2YJ9J zFB&1(hRO)j8vab{=j{m0dlqI6bI^b-8w(NTl8t3^@YfCLX<@1OqnT#2EkabzGQ*$f z@HNn3&d7MSa5M5N`Kvsde|9R5ekxjsXLElF4gcqZLb&s-4vQ9y;>swX0($(*PQdvx zDWauup=QFhGyHXd=AOO;L@ALsr04If2e0Vq&H(eTg6VP#v_d^ga2HYk;Ewu<-^m@` zA?~@L3pb-5Vro%mMlroJAWn{l8eqG)vOyd#+EGaY8izdG#*lsK3& z%tZBc2)S0td6r}?HTg%;IPYo7`kR3}vpt6*9KZKnWt}v&r$Yak@xjLO>2?c*>-cc( z!hA#_;tUIS)Jw2*W}I6NvlJFF#X&U#qVcPuEPxdKbu@qdS%C8}XUXlaBd|;T_;8oL z3L@T$TBH?B5oH%u!XgQLp5=Zr&Rr2QhdIn)4hAXq^j@QqQqU^~Zs&Fj?c>WZga@Pf{CJ|%s)6Ip(TU`A{uErQ-tz1s|(z%F;0#@F^6j80w=w-e>C>lfVYGy`MM4FN=>QNRj zhdG>Yg!ypV$xTd+bGqR+>Ld^FtnmEhu(etlf^Iscrn z7@rvTt~tzM4(~T)(rL4&@+aq0&dPbg|FF?yL>|zm$d-{jJ8FH zghj_g8OgGXDu|4U2#G1EAmgG&63FS}$eM{%iI|TSja-pWC8EJ)c|`Jem^S8F!qGcT z@eImsj{m>kQ90&jF>=bHFn!r;3gnK`^lpn%LAx^RGY07uNme0dUi_&n5XXbw~1w+N?&lpsSxLw4tM4s&=npuWD|PV@=(SW^U*SCuSA zPU9-%MZp$t4Dm`^7RT#Lh;pOA`z=8r7zwWeALpzv-9keY;-tyoKsoT`pa`5cWn}>4 z2O6a|5F&0*G{mclVxSyOv06@#sFJsSLegUJ4E3HKF5k1pIVL}IoLh#~)<5y{xi6W& zKj7vUQJgCkV<|GX6jB^*k!ayM%u{_SUtjsP$7jV~guo-qQ1Yq9{h}$Vg`YV{BT7bP zHZSF)0GD4W*MQ)|IOZ(HFDqBXIR!m9Q69HjrxKX3GtAnFm%BniOsP8mUicoO% z5?A_G^bmtXX`&(J%Ha~qsA()#W*kXY7PkVGWtalLUYAgr(KIL{>@kaEQ!pj}bHpr* zKOLsq|BR21+XvC+@Lq?;qjyFJQgpn}IKECd0HcHgriouI>Wm05f#)7XQh~$#*WFnC;RB8cvvSSH(p?1O|BT)1sKJl7ROqmT_u$rPs7sR@5_- z$#~ZsqKH@5)|NqYL`s$J?(VtG;~d@<(3ov)Z8cl#)#&J$4-kkdtYu5s!qQ-Klf zznqr@u3nB(oU+(q4NzVzOEIj1Kg|e>s-J3QoE^euP}5yb+42kbPG=(PlMbIEgac<)1;$3~6uBf50KaZntUQymVGp;mNS@`8O#Nqd4Cj;*mV zDHNECPpkwp2D+spl=!5D&329{l}{+XUrJUzeI+-W0tQd1L!@j`I7<92k_?Ve zAZJaFY7r{^L^Bu%Yh}BP#*MUnHL`|k0jF(|BFa)%CaT&-@|jA#+-I8HnN%T0bDAhc z|1bapivHe?qH*`7E_(97#*i1_BAP6()2Gz&41fG>fdZ763xi3 z{g-Slt&X&_T|5V)=>qLq2yx5c$T`PpP?53-`4@FQMKa!DRwM`JFWWYYx^$k?(hhJG zW`bgrQz>3m5O;abjLImdOQLtq%wZ~KqYTu>v9`8$P8m3dcMZf}r3}=~tg*2%qJ(FS4jUvI*-xP!=zXOF&3t@dH8xBFfWA$Hj>ztcEgTQ(;MGN?(qAF<+8p zvS{v8`0Wg2%U6QwBbG=yS7jDc5iQXis$oj&%+y>J4IaILD_O3-z79P-J#)&y_X%Q% zbGUH8kQW8p2k_s1$}xp0=sGg{=}4yZb@deY6-_1^xOc3UhR z_&m$vO#`M0b&;(k#T!0Gx131n%DW=L7CpfH16_|&0qs(7mk}ZX(R4*j^(m#S3=7wa zQ8F&R!f1SA*M3p>fGYXT1ec1x(PV)XQAW-Dy$`MOoScXJipi%s4CPluIiYe?M4l*sF<2{bPKlhBx#EpNg81BdJm-kBhr3elL27TK9y@KLPAK6B#XKh`rud{iX zpB^u>E;m2cJ?84K&85=1^yM9`^h#@j2#v+yk7&8}^DiK0u#r=smBqcV-m>CfpzrSf zm9FJB(oCDri@FH8G!_uGD?kbsHwsrn7gyn>dIvfR2#F#zBTh$D9xk30(_9{Q;e7O4 z7Dj~B)e!X$r3ffpSB8|s)o~7$D0b@%(3lht7#SI{u`!1^ywf2*nayTx-I4-Zd`(|~ z*G&OEG3>Z-fm>wf;$pyGznP^^V4s1H%ZR2u4(I+YU4i_!#8XAf(=%F9yvQw{s$Z8% zgkuyWl!g0o{_?SGc}WgzdD>U&#fyFZdVzhYhl_6n%HZa-r>Tqu(IlOGK4*U6Pqf09 z@m&dB{pq3KDzMea=Rq)Lo81;%uYu{FOf1&I*bm zkhFY?@DyoHsS06k?;ldRJyF=d=tRD2N7oiK7Ln~nfBPc8HJI9wLHrR-*ZxZ5+qGD@ zQtl-eVZkBJOejnBF2!u>Ssm3*i2-oWUA-#&Oix{*=(&X_PN}<_%3pk8?s+)+r!Q@;erc}OnXNM1_y^s zP|$Tg$HkYMCoQ<~65$+4jm?3|l6YL*>#JE%SMWF-?-2+NAngr65ANl&MwLEx2~+d@Qe0 zc@>>BM4!es%*;daopI%_2BkMxevY;vJA_5!xE!53M0Qq4=`hocjA}tML^l+Ls5z8j z?quK`-ir{=ik=LVs&A4!ZBoo#8#eN}B*=?t3gqX7c+%2{zv_lfP@0K3x*4L)Z^9m} zaa@e+!=&Ppa-6(5E+5SerX$rtAqBmDmaHDRi30h)sDv$<+oYDR1m_cIo3H+ZlScC} zL86nBldQ|6rFQEWt7I;DI9q;Je3#tnrZvSBqpV|`*A}Mw`AGWGvg+vSO+WYJ;oY8o zfP5{!!H2klcxQx0FUZ7BE*-KQW?aJ$lUs1M|~8>T?IPU2IL(<38-@A*_JG(FRR)!;rq{z ziv%h0TFSo!y-a8C9k+H5w$D+Qw2Ea8b{Q;YrS+ahu?0eh2v%`77Ai4!GVpzb znKsmK8>WuI)8cf+E|PpZ>Q|-wmTlCZ9#yOPn`{5`q6`f03>37uXfq<=F}l#bTOekr zMN+VJO;>ct9Zp8Hw|AOAt81&G_g8c?iAgSCdZ!?Fc!eb6Fq{#GC?b1u;HK3-Um zkl_}=M1q^TL<+GSAoRyKOL zq`_AGSUTCF8t6GYlvB~2Z30GdF;{>qODMl1T0*!|T1Q>KtT&y?g;ZS}k+J} z#q};(7Ef^f5aP@hE^R>hRV92$=1_t2sSFgq&<5d5p*xd-&&**C=L6z%QDtC)!(8VB z$$rTTX_GIe3lm7uZ63*zweiskA?l@-!dY-p!qph1fqASX(oBZ9n;?lSqO>TX$^+1Uj$HCd6Yq5PkMuR~v9~Y*7 z7a9;koNd>^DLA5Xc>Dc~Xv0hg*T!lsi(UGe7V4*H`<_l2sBwPNO*i81yYHGcKiBJI ze)z)&@#K@g<~R>?XLgWMr=z3O%2W*+kG;LUR$h}!=5WTa`RvDyplKIcQcAKAAWO5? zrX?e|IR01H;tl3@PYlU4H#M9P_-Ck#K-=P(vPRw6trL!{)-eqU1zQYd=UnbWwj!FZ zGIAxBPpMygRCCa%@zmDz)X6`UONL!!>s>6KWE8DmUKvO~`R5BEUflI(UTY@(n2WVy zjQyrMD<55&rP8>v2HU}x%*QLC{OUaiRj=3vt~;VNE`^jZrwn`_A;^-yQB)g+r@>6c zE+hAL)Nh*dTh@NYOFdXpA)p0=%Wi-l#xGyenay#GlY7m3`wGsVuvL zXbWnB3si~=Cl{lFu9+;ZcwByHX<^oBKU<)c*cMFp=VMvh$z=;E!%b-5!e#}a%p9}b zsiP-F%lP<&Q@GH>7S)KLqcoxs{5R+wv$gUf7bca2K~|W`XkP(W`1^4i^#{m(9)1 zShQ%-8JUF(7ox7N`X+D=b2wiRx3tYrg8WhnFY_Un*G7cQ$K3!CPZ!^{AcJvQr4!F) zJe{sHrC#7)dGSaWmlyoeCPw^BCq#4-eBAiAD9M)c#a)L?oC&{D*O{_TMhk=>ery{+ z8m%ARNWN3t;`(3(aW#`Mit?5p9jb>EFOm*&tapxSRYpt01Xfo|=4p9T;?a)2{)_fB zMx`*P|B-EUibnMdZpEMZPch!>rn+y*IMC((qd)d*?O1HzlJQYy4b6d=%(uJt1D`7+3#@ydO*ZqP_xxBNuc(RRk7xHQ2QjiTE*LVT6iCDMG7E#n|%qm*e< zxP|;&9erBHRb9+weir21M!*?YU&5|kT2mT_1a!+%c<|C?F|A!VTTac-aB9=aCc{KV zgRl{2?Jwn?Q}9_kGThDWFkTtN{Y=PIWhyp@8Q=B_mZdmRV*%mX#qlxUyGB;HvPzfQ zLVt6Z!yGOUY|@cyy+fy&lcLT6VkCougJjZqyZh&^2TWP@ZbY7oi`^xg)Lp0&lXU&( ze?0@WMU4wuZ{H~-QWI!ztw9=tIMU4x)Mzad$rQ$7y@(GCQn<)+y-XlmQ>XA&> zqkn81>4|Q81X$~)1dvHK{phfk%5h|pO*q(h2<>g77#rzEVS@SS^a+j16K5Hvq8!)4 zti_Y{vW1#PcjhK&BtXO&OTrT+AYN0jm>k7OA%k>o6cZyuwqWyzE#yu%nzB+0H{8o{-LeE)cNABOTtET~T-#WJQ6ddx4wb*df>4M~iQ^jo=<&J=~YN%HnF zUUMg=bwH=tnU`30A?I#dX&rH!U!BNtr-*H>VwhHqH0!E)X(vT!$JkCH6=x=D!k34oxr@KW* zCsc-phRTdiqq`I7Qi{wBDJFGuNjIfJ{dHQsv9Zzo8X7py8Atx&=^Y&%Sg>Hh8NW;W zd_cTx-I^6|+nO>-zMy%lkA6rYBRNnq890wkx=ZLu7qUO{DamPes*6J@5Ar0YS6msp zdBC}@Hgr&GdNH!ShG0T+A8C_bPoFYOATe~D{9@9SYe~w3G4hcDnZP6kL_HOd*Ap`0 zAiip@8AgeI^}AXMLF2qQr)aACNY># zqd6;iJCDARan#30Sa7xnE1>wQM>5W~wY`Vvvkp1O3r&ef8tfTHR2<381>>8V$#L;X zF-qwkmkOj5d)+#%y6AH*B*_uCsjTgl~d9^>#KIFiH})NO%zmL zARSkKa1X%L`jyd~&|XjLk=oq+rIh1!LS^A~E;r766ry^{M|_=Ou@q8FUrU-fwn197 zyHIWXP96Mnm;nhiF8PztYG?Za5kU(?O-!kO;+W>#*)AAI%!TzkzHY}vXES1!w9 z?}5V@(dzvUfR-;-fSW3oM?0^uYJ~NI!P(kcj7iWCQ{@V}cyT9w`?DXz`iqxisOt!l z3pV59AG{Y^uD=2oZQv&IWDX~WwUBZF1UH4TF0{2=g5UrB58=R$qv#(RYa-p0!xD!3&?YQNGx8u(H??FfGB=(%_ zW8qlH0tL8n3O}Q93IapOrWWHf|LBuwPj=zJf#Vbc>RCT0nCWo}d$*K?EeZ#A8b&8z zR84CJw{YmbTuSe{;%c0i#!-SE7yI^$uEeeDmtugM-ysT-CRj7Agv42j!oX}l{j%V=|` zfN%a85ro8q+1xs2-KMRxb0KcKX&YMVlIZ3T?L!?dTD1=M zeE8$IVdENHvM7UtCr)4pX|mWXHeGcqZol_7+;ZXTEXr;+n=*)HDB&e)ujlap@lD@52!1RwCPm zYj1r3mv$tv>+mV^Q_|pAF#gQBWMhN0jo;HP=mt>pyd}8r6Q9MU?FqcT`zYfiO_8{C z;Rf9H0j^7jkAr(_mcwl(rSL0|Z%a`iC7{+3QwEy<7}qplLdz+0(q>JHz*IVI8`|-S z95>=|WVlwS9VfUJX@hHs zcDfIUh^_SZ4`9uj)poO`8pP*+{NtbC(MNwdYek?G4O%DMsls&8s5~0KdZb_F>g($> z1oc+%!{g_b;GUr+Yeldm!EtY!_)OarU}>H^BH{X&YQ?{w_xkm ztynuhje`ddg5u*DVU+EfN~x_Wk21dr)t5X*C!@i69p}7u{6p_or5BB4LcL2>vZE9= zPRS(2l|Q-3c9zmk9}pQC9Wh0OvaRoCBy74@Td?Z63J1@$g( zDFP*5tG<&oQr78)k5i_xouuH3OUb2Eh)K6jO|m^$k5pRi&YmD0J55Kwg&VHI@87=_ zS8loK(v45zqH8zf zqj%hotsJx0Y}ty&!XRpvUyYC4dnMj{>Lpxy%bmD%Sq%;!J5HH_V^96f`V}TPhS=V# zKlHcop;c+T@cIsn#A~^>uxvEeZkj8qpqQIV;CX|2mAPn2p22!=z}MLjsh``osz01k z)KGGGy9Dt<#h1)5hxag_Pr*CAe!sc$1xfIn${=PTVQF}H$QZG%B?MGM zrgJ$q%#Y!*?|cPc`PPpyvg|he-bZfWqT?g{h7nJ>m%pbZ_^@5H9EY(LY+LjsP*6D0 z;xn0TL2Z2o&%O9Ee$~^3TdrG%(S48N|NiQq;aFlNHh$z5%xlRb71IKlLi2)6xaF4X zuzt;DSiPbR*<=G3&k1x>=s;~d{_gL81}j#tpiq)Rye5kqKYTCl+Axj>|MEZM<(E(4 zcmL>r#EQui*!j#e7#z!@BU?je&Gwd1z>Z8LV@PLW7_3=@mK#2VZCkI#nvH9*d;$9< z#SIzvX~~p?C2qKqDGF&RG-gvsbMe<$(7Ot?SxeW{AX8IoZui)n+9QYN`VF}G`rpAn z{U`r`oBjo8ZqYliT>HoatCpHe5RSaq{Fz^9$kH{7r{UT@&hS z${C1+(u`gJN7#lkkvE#7qtnxQyOAR=(8hD9?-Y(4K7yl1j@i3N&#U5&^J&SFC8*0( z=f~$0!`(;li@*6A{-5vs1YM~mDC~I{U;WBg@q#n&Gf9rFfLj&2{$j~5K zTIb>K|K3LId+nR}^4GqMx-~c9gSTu&zIzmReBz_{)Q7La&%gTu4)^5HURT2nu!MG%$SG)SgF{1KeMgF$u{g4|3Dh=mQ#LY*hD9r}W#bCm^}zM0 z!%3vbd(*YGn7@1pR&)7olcfh$R~fcy{8{@y5Wc|&AEQ1>92BY zjnO)iOmnSbUQ)DZHOXd@#{ccyhHes(-th2<&G(_95&G%9xjLQ5^)|W=oX08hu195C z`0L;;yE2Mys_C&zlViNm_1U1i`xKsi_PMHxzOy|MsNpC@+`M`7s+!Ku&Z5G~VfJO$ z*wT9i^+>VuXlrXT1+`8X%1>*M9yzx6+%>!RXDj|pYfwI(#>NN!9)9!cGfoU2_-y{uduWN5cgYa#J-}dHH&b?Rpen``TCWm9KmS-+T0B^q$%GSq!EK z<(!oADL+wz`fP@CH(iwF^xA-AqM7lsobxqyBUkg&-s{GBEZJGMeQ1MxDkz!NJvI*c zBZW?uG;{d`28Qyu_4aG9YS{{0d&`}u$q!>}sNZf9=r*(zdf9B9DQfllA$PirJd51$Y*nwpHs!Fm!$;9Y-I&Rx@DKj< zf5M9S9b7Z?u5tBk%)-R4rP!NbUiP>>_Yv{54i#u^;aHK}?%P1Q3ED-e9)iaMTuR0VIe;f)Xl`m}&IiR+wNrIfY{l+sfL|>ZNg~@x~BqTtY0u#-baKMe|;S)mcB@_;%2hs%%Pn zo1?D1Oi9k`In3c*4Gr))oE03WJ_l%_mry2#BF5{kXMSg3p)iSo-X3%x-i{wV@+y{Y zxC+ZDbJb{pOJ&heue&@hZnCD%1U8v0HxyAMD2UYiu!gJ;qfi$7YIN7kBT6TuBSM58 zk*%+frYA#Wxm9*OHXx;+#+EH)VU)34L5NP$PR8<>tZhMEeFpun9YEV?JsyAP=lJ%s zZ-G_BYu`SI^=npQerq17_&671E?l*%v2w*?)TJAleh{NWdaPm`P3`k=)14o|l>AYn%~G^~&IIBWQKLDh z4c`3u^X)`PW%!vu@dtamaLi82Y6v>sBs-MX<}dS<9fjh^KZI2aml15PXai7%ju53a zT|22cW+N$u@5z`#cykCwZU?bpUS9>sBI)!Ch-Nu)6IfVMwLf# zD$^@mr`e5<(*z~3wmkCJrfQ~oMv*A=V{DY|#0|!Q-LK=+SR6n9(NFP%pT3Cx<0tXx zSH6!0mvmzJ{Gbfv#-)A(e@+PKlyNxGb!;1<($<3uM@WSA}U zh-3c3HmtjR74oAKI5nBTXipv|k8u-x*Ke`k(-;{a;}$lL=Cn@MN*SolQ_jXjE$3L0 zZJy&AmJe+sn;W>1@ln<-kC&brz(+syJ7}$)XOBe>lU87N;3cYl+l1W88e}(O<3U8jtokG}G$FQD^5oY}+7eFPNDFbV=wPZtN%e*JxAs4iI+aPI6N7p$t!~KVYFaSVa~$pD*9U+88g}g- z!&NKDOA{P_9K$hog8D^$WPO%qy=oh=u(2J@*_iEpmMmR`WJ?2T1D5XEFZ$8fff-iP9OXj$4Bn_6fSS;$Ae%0Dqic) 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

%p3NV8d3NYlUAuw?M!T9E? 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 T(_xkB9b9Ot>Z#Pg?UDZhXH0+% literal 0 HcmV?d00001 diff --git a/releases/UWP/net-native2.0/images/funceval-2.png b/releases/UWP/net-native2.0/images/funceval-2.png new file mode 100644 index 0000000000000000000000000000000000000000..e88a7d0f52d9c9f804c4ea9626f9627c86e307ad GIT binary patch literal 557254 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

VlfQE?TJQD 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 z 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


L+(1d%B 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

mTGCTVBq*QL3y1Idv#~llV3bXBS0` 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.KAfFp@yg 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

Q-@TEm~asZvzObgL$(HXPZNE~&3W&ul3t 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

NGnLCk6M95ByTEm{ec&gXj>#Zw74A)gjGpa` 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 literal 0 HcmV?d00001 From 8426712b727f0d9b37cb488bb2d24bed76a716c1 Mon Sep 17 00:00:00 2001 From: Josh Free Date: Fri, 6 Oct 2017 13:56:14 -0700 Subject: [PATCH 452/872] fix typo --- releases/UWP/net-native2.0/funceval.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/releases/UWP/net-native2.0/funceval.md b/releases/UWP/net-native2.0/funceval.md index 000ad312b..be93a31ab 100644 --- a/releases/UWP/net-native2.0/funceval.md +++ b/releases/UWP/net-native2.0/funceval.md @@ -1,6 +1,6 @@ # .NET Native 2.0 Function Evaluation Debugger Support (Preview) -As part o the [.NET Native 2.0 release](README.md), we have shipped a preview of the FuncEval feature that aims to improve diagnostics and overall debugging experience for UWP Applications compiled with the .NET Native 2.0 toolchain. Please note that since this is only a public preview of the feature, it is turned off by default and can be turned on by setting a registry key. Once FuncEval support is enabled, you should be able to inspect WinRT Properties under the debugger, that you previously could not. +As part of the [.NET Native 2.0 release](README.md), we have shipped a preview of the FuncEval feature that aims to improve diagnostics and overall debugging experience for UWP Applications compiled with the .NET Native 2.0 toolchain. Please note that since this is only a public preview of the feature, it is turned off by default and can be turned on by setting a registry key. Once FuncEval support is enabled, you should be able to inspect WinRT Properties under the debugger, that you previously could not. ## How to use Function Evaluation (FuncEval) in Visual Studio 2017 15.4 From 51b5958ce075b7ae1ae2ebe7a33ba923ff4c8f7b Mon Sep 17 00:00:00 2001 From: Josh Free Date: Fri, 6 Oct 2017 14:39:44 -0700 Subject: [PATCH 453/872] Update incremental-compilation.md --- .../net-native2.0/incremental-compilation.md | 91 +++++++++++++++++++ 1 file changed, 91 insertions(+) diff --git a/releases/UWP/net-native2.0/incremental-compilation.md b/releases/UWP/net-native2.0/incremental-compilation.md index 8b1378917..a6b89d3c3 100644 --- a/releases/UWP/net-native2.0/incremental-compilation.md +++ b/releases/UWP/net-native2.0/incremental-compilation.md @@ -1 +1,92 @@ +# .NET Native 2.0 Incremental Build Support Preview +By default, UWP apps use .NET Core runtime (with its JIT) in Debug builds (F5 scenario) and .NET Native compiler and runtime for Release builds. There are inherent differences between the two runtimes both in behavior (for example reflection) as well as performance characteristics. This means that there might be situations where the code works well with CoreCLR but shows some undesirable behavior on .NET Native. Switching to release build to find these issues is cumbersome. +While it is possible to turn on .NET Native even for Debug builds today, the compilation can take a long time which makes the typical developer cycle slow. As part of the [.NET Native 2.0 release](README.md), .NET Native incremental build support is trying to address this by providing a better Debug build experience while using the .NET Native compiler and runtime. + +This new build mode only recompiles assemblies which have changed or those which have dependencies which have changed. It also intentionally avoids some expensive compilation steps favoring faster compilation time over smaller and faster code (unlike the Release build mode which is the exact opposite). This new behavior can substantially reduce the compilation time of an application using the .NET Native tool chain. +Using .NET Native incremental build mode allows developers to use the .NET Native compiler and runtime for the app development, avoiding issues caused by differences between the CoreCLR and .NET Native runtimes while still maintaining a good developer experience. + +Please note that .NET Native incremental build is a feature preview. While it is much faster in most cases than normal build modes, we still expect to improve the compiler performance as we get closer to the final release of this feature. There are also some known issues which can lead to failures specific to this build mode. Please find the list of known issues below. +As of now the .NET Native incremental build is rather slow when there's a change in the WinRT interop the app uses as it will trigger almost a full rebuild. This is typically the case when the app's XAML or XAML related code is edited. As such we would recommend to keep using the .NET Core runtime based build while iterating on the UI of the app. The experience with .NET Native incremental build in this case would not be ideal. + +## How to enable .NET Native 2.0 Incremental Build Support + +Currently the new build mode is only supported in Debug configurations of UWP apps which use the shared framework package. To turn it on please follow these steps: +1. In the project settings for the UWP app, under the Build tab turn on the "Compile with .NET Native tool chain" for the Debug configuration. +2. Open the project file for the UWP application in a text editor and add this property group: + +``` + + true + +``` +3. After making these changes, please make sure to cleanly Rebuild the entire solution in the Debug configuration first. Subsequent incremental builds should then work as usual. You should be able to develop, build, run and debug the application as usual. + +To go back and forth between .NET Native and .NET Core just use the checkbox in the build configuration tab of the project. + +The incremental build is only supported on .NET Native 2.0, which in turn is only used if the app has its minimum target version of Windows SDK set to the Windows Fall Creators Update SDK preview. + +## Known Issues + +**WCF Proxies with XmlSerializer are not supported** +- ```ILT0042: WCF proxies with types which require use of XmlSerializer are not supported in incremental build mode. Found type '...'``` which requires XmlSerializer and is used by WCF proxy. Please turn off incremental .NET Native build mode for this project. +- No workaround. For such apps please turn incremental build off. + +**Compilation fails due to missing assemblies** +- ```Internal compiler error: MCG0023:UnresolvableAssemblyReference Unresolvable assembly reference 'Assembly(Name=…, Version=…, Culture=…, PublicKeyToken=...)' found. Please check the references in your build system. A reference is either missing or an assembly is missing an expected type.``` +- Incremental build is more sensitive to missing assemblies in the app since it doesn't remove dead code in any way. The solution is to not have missing assemblies in the app. If that is not possible there's no workaround and incremental build should be turned off. + +**Compilation fails due to duplicate assemblies** +- ```RHBIND : error RHB0007: Could not load input file 'SharedLibrary.mdildll'.``` +- .NET Native generates and uses certain assemblies which must not exist in the input application. The incremental build is a little bit more sensitive to this condition than the non-incremental builds. +- Application assemblies should avoid names that begin with ```System.``` as well as ```SharedLibrary.dll.``` +- Workaround: rename the application assembly which causes the problem. + +**WinRT Types or properties on WinRT types which are only accessed through reflection might not work** +- This can show up as various runtime exceptions. MissingMetadataException, NullReferenceException and so on. The code behaves as if the type or property simply doesn't exist most of the time. +- One such example would be: ```typeof(someWinRTType).GetProperty("propertyName")``` +- This would return null even though the property does exist on the type. +- Workarounds (one or the other, or both but it's not necessary): + - Add a new .xr.xml file (the name doesn't matter, only the extension is recognized) into the app and mark the type/property as rooted. For the above sample it would look like this: `````` +``` + + + + + + + +``` +- In the application code reference the property/type directly from the code. There's no need to do anything with them, just have a reference. So for types, having a typeof(someWinRTType) is enough. For properties some type of access to the property is enough. It can be dead code which nobody calls (in fact that's preferable). +- Both approaches should have very minimal effect on non-incremental builds, but should fix the incremental build problem. + +**Non-Generic Marshal API might not work.** +- MissingMetadataException will be thrown during runtime when calling these non-generic Marshal API +- Example: ```Marshal.PtrToStructure(IntPtr, Object)``` +- Workaround: Use generic version Marshal API + +**Bad Pinvoke might not work** +- Fail to launch app +- Example: ```[DllImport("neverexists.dll")] void Func();``` +- Workaround: remove these bad pinvokes or provide a fake dll + +**Object methods Override for WinRT type might not work** +- The result from calling WinRT Types's ToString()/GetHashCode()/Equals() in managed code will be from default implementation Object's ToString()/GetHashCode()/Equals() instead of WinRT's Override methods. +- Example: Create a WinRT interface which contains ToString()/GetHashCode()/Equals() methods, and Create a WinRT class to implements this WinRT interface to override Object default implementation for ToString()/GetHashCode()/Equals(). +- Workaround: Use IStringable to Override Object ToString() behavior + +**Serialize WinRT enum might not work** +- System.Runtime.Serialization.SerializationException:Enum value '0' is invalid for type 'Windows.UI.Xaml.Visibility' and cannot be serialized. +- No workaround. Please turn off incremental build. + +**Lookup of WinRT enum values in WinRT dictionaries might not work** +- System.ArgumentException:Requested value 'Collapsed' was not found. +- No workaround. Please turn off incremental build. + +**Compilation might fail with stack overflow if the app has an attribute class which is used as an attribute on itself** +- For example: ```[ReproAttribute] public class ReproAttribute : Attribute {}``` +- If possible remove the attribute on the attribute class itself. Otherwise there's no workaround and incremental build should be turned off. + +## Provide Feedback + +Please continue to send questions and suggestions to dotnetnative@microsoft.com. We look forward to hearing from you and seeing what great things you will build. From 08f9af41e587bc179c8856207fe2bbe9927ffc46 Mon Sep 17 00:00:00 2001 From: Sam Bent Date: Fri, 6 Oct 2017 15:49:57 -0700 Subject: [PATCH 454/872] Five WPF 4.7.1 breaking change docs. (#500) * Five WPF 4.7.1 breaking change docs. * Reponding to Ron's feedback * Fixed copy-paste error --- ...wpf-chained-popups-with-StaysOpen-false.md | 35 ++++++++++++ .../wpf-hang-when-resizing-a-grid.md | 53 +++++++++++++++++ ...en-removing-item-from-custom-collection.md | 50 ++++++++++++++++ ...ctor-selectionchanged-and-selectedvalue.md | 57 +++++++++++++++++++ ...ol-selectionchanged-and-selectedcontent.md | 52 +++++++++++++++++ 5 files changed, 247 insertions(+) create mode 100644 Documentation/compatibility/wpf-chained-popups-with-StaysOpen-false.md create mode 100644 Documentation/compatibility/wpf-hang-when-resizing-a-grid.md create mode 100644 Documentation/compatibility/wpf-selector-crash-when-removing-item-from-custom-collection.md create mode 100644 Documentation/compatibility/wpf-selector-selectionchanged-and-selectedvalue.md create mode 100644 Documentation/compatibility/wpf-tabcontrol-selectionchanged-and-selectedcontent.md diff --git a/Documentation/compatibility/wpf-chained-popups-with-StaysOpen-false.md b/Documentation/compatibility/wpf-chained-popups-with-StaysOpen-false.md new file mode 100644 index 000000000..453bf4e25 --- /dev/null +++ b/Documentation/compatibility/wpf-chained-popups-with-StaysOpen-false.md @@ -0,0 +1,35 @@ +## Chained Popups with StaysOpen=False + +### Scope +Edge + +### Version Introduced +4.7.1 + +### Source Analyzer Status +NotPlanned + +### Change Description +A Popup with StaysOpen=False is supposed to close when you click outside the Popup. +When two or more such Popups are chained (i.e. one contains another), there were many problems, including: + * Open two levels, click outside P2 but inside P1. Nothing happens. + * Open two levels, click outside P1. Both popups close. + * Open and close two levels. Then try to open P2 again. Nothing happens. + * Try to open three levels. You can't. (Either nothing happens or the first two levels close, depending on where you click.) +These cases (and other variants) now work as expected. + +- [ ] Quirked +- [ ] Build-time break + +### Recommended Action + +### Affected APIs +* `P:System.Windows.Controls.Primitives.Popup.StaysOpen` + +### Category +Windows Presentation Foundation (WPF) + + diff --git a/Documentation/compatibility/wpf-hang-when-resizing-a-grid.md b/Documentation/compatibility/wpf-hang-when-resizing-a-grid.md new file mode 100644 index 000000000..d3df8e919 --- /dev/null +++ b/Documentation/compatibility/wpf-hang-when-resizing-a-grid.md @@ -0,0 +1,53 @@ +## Resizing a Grid can hang + +### Scope +Edge + +### Version Introduced +4.7 + +### Version Reverted +4.7.1 + +### Source Analyzer Status +NotPlanned + +### Change Description +An infinite loop can occur during layout of a `T:System.Windows.Controls.Grid` under the following +circumstances: + +* Row definitions contain two *-rows, both declaring a MinHeight and a MaxHeight. +* Content of the *-rows doesn't exceed the corresponding MaxHeight +* The Grid's available height is exceeded by the first MinHeight (plus any other fixed or Auto rows) +* The app targets .Net 4.7, or opts in to the 4.7 allocation algorithm by setting + `Switch.System.Windows.Controls.Grid.StarDefinitionsCanExceedAvailableSpace=false` + +The loop would also happen with more than two rows, or in the analogous case for columns. + +The issue is fixed in .Net 4.7.1. + +- [ ] Quirked +- [ ] Build-time break + +### Recommended Action +Upgrade to .Net 4.7.1. Alternatively, if you don't need the 4.7 allocation algorithm +you can use the following configuration setting: + +```xml + + + +``` + +### Affected APIs + * Not detectable via API analysis + +### Category +Windows Presentation Foundation (WPF) + + + + diff --git a/Documentation/compatibility/wpf-selector-crash-when-removing-item-from-custom-collection.md b/Documentation/compatibility/wpf-selector-crash-when-removing-item-from-custom-collection.md new file mode 100644 index 000000000..c9032f8ca --- /dev/null +++ b/Documentation/compatibility/wpf-selector-crash-when-removing-item-from-custom-collection.md @@ -0,0 +1,50 @@ +## Crash in Selector when removing an item from a custom INCC collection + +### Scope +Minor + +### Version Introduced +4.7 + +### Version Reverted +4.7.1 + +### Source Analyzer Status +NotPlanned + +### Change Description +An 'T:System.InvalidOperationException` can occur in the following scenario: + * The ItemsSource for a `T:System.Windows.Controls.Primitives.Selector` is a collection with a custom + implementation of `T:System.Collections.Specialized.INotifyCollectionChanged`. + * The selected item is removed from the collection. + * The `T:System.Collections.Specialized.NotifyCollectionChangedEventArgs` has + `P:System.Collections.Specialized.NotifyCollectionChangedEventArgs.OldStartingIndex` = -1 + (indicating an unknown position). + +The exception's callstack begins + at System.Windows.Threading.Dispatcher.VerifyAccess() + at System.Windows.DependencyObject.GetValue(DependencyProperty dp) + at System.Windows.Controls.Primitives.Selector.GetIsSelected(DependencyObject element) + +This exception can occur in .Net 4.5 if the application has more than one Dispatcher thread. +In .Net 4.7 the exception can also occur in applications with a single Dispatcher thread. +The issue is fixed in .Net 4.7.1. + +- [ ] Quirked +- [ ] Build-time break + +### Recommended Action +Upgrade to .Net 4.7.1. + +### Affected APIs + * Not detectable via API analysis + +### Category +Windows Presentation Foundation (WPF) + + + + diff --git a/Documentation/compatibility/wpf-selector-selectionchanged-and-selectedvalue.md b/Documentation/compatibility/wpf-selector-selectionchanged-and-selectedvalue.md new file mode 100644 index 000000000..d91fe18be --- /dev/null +++ b/Documentation/compatibility/wpf-selector-selectionchanged-and-selectedvalue.md @@ -0,0 +1,57 @@ +## Selector SelectionChanged event and SelectedValue property + +### Scope +Minor + +### Version Introduced +4.7.1 + +### Source Analyzer Status +NotPlanned + +### Change Description +Starting with the .Net Framework 4.7.1, a `T:System.Windows.Controls.Primitives.Selector` always updates the value of its +`P:System.Windows.Controls.Primitives.Selector.SelectedValue` property before raising the +`E:System.Windows.Controls.Primitives.Selector.SelectionChanged` event, when its selection changes. +This makes the SelectedValue property consistent with the other selection properties +(`P:System.Windows.Controls.Primitives.Selector.SelectedItem` and +`P:System.Windows.Controls.Primitives.Selector.SelectedIndex`), which are updated before raising the event. + +In the .NET Framework 4.7 and earlier versions, the update to SelectedValue happened before the event in most cases, but it happened +after the event if the selection change was caused by changing the +`P:System.Windows.Controls.Primitives.Selector.SelectedValue` property. + +- [X] Quirked +- [ ] Build-time break + +### Recommended Action +Apps that target the .NET Framework 4.7.1 or later can opt out of this change and use legacy behavior +by adding the following to the `` section of the application configuration file: + + ```xml + + + + ``` + +Apps that target the .NET Framework 4.7 or earlier but are running on the .NET Framework 4.7.1 or later can enable the new behavior by adding the following line to the `` section of the application .configuration file: + + ```xml + + + + ``` + +### Affected APIs +* `P:System.Windows.Controls.TabControl.SelectedContent` +* `E:System.Windows.Controls.Primitives.Selector.SelectionChanged` + +### Category +Windows Presentation Foundation (WPF) + + + + diff --git a/Documentation/compatibility/wpf-tabcontrol-selectionchanged-and-selectedcontent.md b/Documentation/compatibility/wpf-tabcontrol-selectionchanged-and-selectedcontent.md new file mode 100644 index 000000000..1cf1f61c1 --- /dev/null +++ b/Documentation/compatibility/wpf-tabcontrol-selectionchanged-and-selectedcontent.md @@ -0,0 +1,52 @@ +## TabControl SelectionChanged event and SelectedContent property + +### Scope +Minor + +### Version Introduced +4.7.1 + +### Source Analyzer Status +NotPlanned + +### Change Description +Starting with the .NET Framework 4.7.1, a `T:System.Windows.Controls.TabControl` updates the value of its +`P:System.Windows.Controls.TabControl.SelectedContent` property before raising the +`E:System.Windows.Controls.Primitives.Selector.SelectionChanged` event, when its selection changes. + +In the .NET Framework 4.7 and earlier versions, the update to SelectedContent happened after the event. + +- [X] Quirked +- [ ] Build-time break + +### Recommended Action +Apps that target the .NET Framework 4.7.1 or later can opt out of this change and use legacy behavior +by adding the following to the `` section of the application configuration file: + + ```xml + + + + ``` + +Apps that target the .NET Framework 4.7 or earlier but are running on the .NET Framework 4.7.1 or later can enable the new behavior by adding the following line to the `` section of the application .configuration file: + + ```xml + + + + ``` + +### Affected APIs +* `P:System.Windows.Controls.TabControl.SelectedContent` +* `E:System.Windows.Controls.Primitives.Selector.SelectionChanged` + +### Category +Windows Presentation Foundation (WPF) + + + + From d15f3770ec62f1a3fd88d1b48f1959b214d8327e Mon Sep 17 00:00:00 2001 From: jbe2277 Date: Sat, 7 Oct 2017 00:53:19 +0200 Subject: [PATCH 455/872] Update links of Win Application Framework (WAF) and Waf DotNetPad (#503) --- dotnet-developer-projects.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 8040f36e4..1f79669f3 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -223,7 +223,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [Radical](https://github.com/RadicalFx/radical) - An infrastructure framework whose primary role is to help in the development of composite WPF/Silverlight/WP/WinRT applications based on the Model View ViewModel pattern. * [ReactiveUI](https://github.com/reactiveui/ReactiveUI) - An MVVM framework that integrates with the Reactive Extensions for .NET to create elegant, testable User Interfaces that run on any mobile or desktop platform. * [Simple Mvvm Toolkit](http://simplemvvmtoolkit.codeplex.com/) - Provides a simple framework and set of tools for getting up to speed quickly with applications based on the MVVM design pattern. - * [WPF Application Framework (WAF)](http://waf.codeplex.com) - A lightweight Framework that helps you to create well structured WPF Applications. It supports you in applying a Layered Architecture and the Model-View-ViewModel pattern. + * [Win Application Framework (WAF)](https://github.com/jbe2277/waf) - A lightweight Framework that helps you to create well structured XAML Applications. It supports you in applying a Layered Architecture and the Model-View-ViewModel pattern. ## Tools * [API Port](https://github.com/microsoft/dotnet-apiport) - A tool that will analyze code for compatability issues when migrating between .NET Framework releases. @@ -254,7 +254,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [Snoop WPF](https://github.com/cplotts/snoopwpf) - Snoop - The WPF Spy Utility * [Sql Bulk Copy Sync](https://github.com/WCOMAB/SqlBulkSync) * [Vagabond](https://github.com/nessos/Vagabond) - Automated dependency resolution and dynamic assembly compilation framework. - * [Waf DotNetPad](http://dotnetpad.codeplex.com) - The Waf DotNetPad is a simple and fast code editor that makes fun program with C# or Visual Basic. + * [Waf DotNetPad](https://jbe2277.github.io/dotnetpad) - The Waf DotNetPad is a simple and fast code editor that makes fun program with C# or Visual Basic. * [Weighted Selector](https://github.com/kinetiq/Ether.WeightedSelector/) - Easy to use (but high performance!) weighted selection implementation. * [XDav](https://github.com/rezabazargan/xDav) - A .net server mudole for webdav standard. * [ZeroToNine](https://github.com/ploeh/ZeroToNine) - A tool for maintaining .NET Assembly versions across multiple files. From bb8bc5ffae6914072e653cbba2f9cad72ee00d6e Mon Sep 17 00:00:00 2001 From: Josh Free Date: Mon, 9 Oct 2017 09:54:47 -0700 Subject: [PATCH 456/872] Update wording --- releases/UWP/net-native2.0/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/releases/UWP/net-native2.0/README.md b/releases/UWP/net-native2.0/README.md index e66ddd355..a8f02807d 100644 --- a/releases/UWP/net-native2.0/README.md +++ b/releases/UWP/net-native2.0/README.md @@ -15,7 +15,7 @@ When using Visual Studio these packages require Visual Studio 2017 Version 15.4 #### Improvements to Program Optimization, Throughput and Debuggability. - This release of the .NET Native code generator includes substantial improvements to optimization, throughput and debuggability. This includes many new features from the Visual C++ compiler in Visual Studio 2017 Version 15.4. For example, a new SSA optimizer has been enabled and adapted to managed code and carefully tuned. -- This release also includes .NET language targeted improvements in +- This release also includes targeted improvements in - native pointer tracking - static initialization of scalars and arrays - loop unrolling and vectorization From 5bf42ff4c884cefa6a84dfd5e895f9e8df07631b Mon Sep 17 00:00:00 2001 From: jbe2277 Date: Mon, 9 Oct 2017 20:05:32 +0200 Subject: [PATCH 457/872] Update link of Waf Music Manager (#502) * Update link of Waf Music Manager * makes fun --> makes it fun --- dotnet-consumer-projects.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dotnet-consumer-projects.md b/dotnet-consumer-projects.md index 05d6cadce..ec370e229 100644 --- a/dotnet-consumer-projects.md +++ b/dotnet-consumer-projects.md @@ -12,7 +12,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [Banshee](https://github.com/GNOME/banshee) - A cross-platform multimedia player * [Espera](https://github.com/flagbug/Espera) - A media player that plays your music, YouTube videos, SoundCloud songs, has a special "party mode" and an Android remote control. * [Simple Music Player](https://github.com/punker76/simple-music-player) SimpleMP or Simple Music Player is a simple and easy to use music player for free. It plays the most common music files (mp3, ogg, wma, wav) in a simple way. - * [Waf Music Manager](http://wmm.codeplex.com) – is a simple and fast application that makes fun to manage the local music collection. + * [Waf Music Manager](https://jbe2277.github.io/musicmanager) – is a simple and fast application that makes it fun to manage the local music collection. ## Internet/Chat Applications * [Smuxi IM](https://github.com/meebey/smuxi) - free, distributed and user-friendly IRC / Twitter / XMPP / Campfire / JabbR client for Linux, Windows and Mac OS X From 304225239ca3a7f32def456ea2fcb1d9cd11c26a Mon Sep 17 00:00:00 2001 From: Connie Yau Date: Mon, 9 Oct 2017 12:34:23 -0700 Subject: [PATCH 458/872] Fixing version number --- .../compatibility/ASPNET Accessibility Improvement.md | 6 +++--- .../compatibility/ASPNET-accessibility-improvement.md | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/Documentation/compatibility/ASPNET Accessibility Improvement.md b/Documentation/compatibility/ASPNET Accessibility Improvement.md index 5b96ad6ba..4b36b973f 100644 --- a/Documentation/compatibility/ASPNET Accessibility Improvement.md +++ b/Documentation/compatibility/ASPNET Accessibility Improvement.md @@ -5,7 +5,7 @@ Minor ### Version Introduced -.NET 4.7.1 +4.7.1 ### Source Analyzer Status @@ -18,8 +18,8 @@ ASP.NET is improving how ASP.NET Web Controls work with accessibility technology - Changes to improve the display in High Contrast mode, like the Data Pager Fields Editor. - Changes to improve the keyboard navigation experiences for controls, like the Configure Object Context Window or the Configure Data Source Window. -- [x] Quirked -- [ ] Build-time break +- [x] Quirked +- [ ] Build-time break ### Recommended Action diff --git a/Documentation/compatibility/ASPNET-accessibility-improvement.md b/Documentation/compatibility/ASPNET-accessibility-improvement.md index d9495b903..8153414b3 100644 --- a/Documentation/compatibility/ASPNET-accessibility-improvement.md +++ b/Documentation/compatibility/ASPNET-accessibility-improvement.md @@ -5,7 +5,7 @@ Minor ### Version Introduced -.NET 4.7.1 +4.7.1 ### Source Analyzer Status @@ -18,8 +18,8 @@ Starting with the .NET Framework 4.7.1, ASP.NET has improved how ASP.NET Web Con - Changes to improve the display in High Contrast mode, like the Data Pager Fields Editor. - Changes to improve the keyboard navigation experiences for controls, like the Fields dialog in the Edit Pager Fields wizard of the DataPager control, the Configure ObjectContext dialog, or the Configure Data Selction dialog of the Configure Data Source wizard. -- [x] Quirked -- [ ] Build-time break +- [x] Quirked +- [ ] Build-time break ### Recommended Action From da292125bc43a35fcbbda7dc66259658fedce8a6 Mon Sep 17 00:00:00 2001 From: Connie Yau Date: Mon, 9 Oct 2017 13:22:58 -0700 Subject: [PATCH 459/872] Fix broken docId --- .../SignedXml.GetPublicKey-returns-RSACng-on-net462.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Documentation/compatibility/SignedXml.GetPublicKey-returns-RSACng-on-net462.md b/Documentation/compatibility/SignedXml.GetPublicKey-returns-RSACng-on-net462.md index 1d3f8f49b..52a6e7d05 100644 --- a/Documentation/compatibility/SignedXml.GetPublicKey-returns-RSACng-on-net462.md +++ b/Documentation/compatibility/SignedXml.GetPublicKey-returns-RSACng-on-net462.md @@ -22,15 +22,15 @@ Starting with the .NET Framework 4.6.2, the concrete type of the object returned Starting with apps running on the .NET Framework 4.7.1, you can use the CryptoServiceProvider implementation used by default in the .NET Framework 4.6.1 and earlier versions by adding the following configuration switch to the [runtime](https://docs.microsoft.com/en-us/dotnet/framework/configure-apps/file-schema/runtime/runtime-element) section of your app config file: ```xml - + ``` ### Affected APIs -* `M:System.Security.Cryptography.SignedXml.CheckSignatureReturningKey(System.Security.Cryptography.AsymmetricAlgorithm)` +* `M:System.Security.Cryptography.Xml.SignedXml.CheckSignatureReturningKey(System.Security.Cryptography.AsymmetricAlgorithm@)` ### Category Security From 3233f9a463e6728b71bc2723f91cdd34fe961b60 Mon Sep 17 00:00:00 2001 From: Connie Yau Date: Mon, 9 Oct 2017 13:29:32 -0700 Subject: [PATCH 460/872] Fixing DocIds --- ...RSACng-and-DSACng-not-usable-in-Partial-Trust-scenarios.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Documentation/compatibility/RSACng-and-DSACng-not-usable-in-Partial-Trust-scenarios.md b/Documentation/compatibility/RSACng-and-DSACng-not-usable-in-Partial-Trust-scenarios.md index df4eb8efe..135713b65 100644 --- a/Documentation/compatibility/RSACng-and-DSACng-not-usable-in-Partial-Trust-scenarios.md +++ b/Documentation/compatibility/RSACng-and-DSACng-not-usable-in-Partial-Trust-scenarios.md @@ -31,8 +31,8 @@ If this change in the .NET Framework 4.6.2 has negatively impacted your partial * `M:System.Security.Cryptography.DSACng.VerifySignature(System.Byte[],System.Byte[])` * `M:System.Security.Cryptography.RSACng.#ctor(System.Security.Cryptography.CngKey)` * `P:System.Security.Cryptography.RSACng.Key` -* `M:System.Security.Cryptography.RSACng.Decrypt(System.Byte[], System.Security.Cryptography.RSAEncryptionPadding)` -* `M:System.Security.Cryptography.RSACng.SignHash(System.Byte[], System.Security.Cryptography.HashAlgorithmName, System.Security.Cryptography.RSASignaturePadding)` +* `M:System.Security.Cryptography.RSACng.Decrypt(System.Byte[],System.Security.Cryptography.RSAEncryptionPadding)` +* `M:System.Security.Cryptography.RSACng.SignHash(System.Byte[],System.Security.Cryptography.HashAlgorithmName,System.Security.Cryptography.RSASignaturePadding)` ### Category Security From 3d1d70203802cc7abe9504982c3d193dd9bfa4de Mon Sep 17 00:00:00 2001 From: Ron Petrusha Date: Tue, 10 Oct 2017 10:57:29 -0700 Subject: [PATCH 461/872] Fixed 3 broken links --- .../code-contracts-and-string-isnullorempty-compiler-warning.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Documentation/compatibility/code-contracts-and-string-isnullorempty-compiler-warning.md b/Documentation/compatibility/code-contracts-and-string-isnullorempty-compiler-warning.md index 4da1d10fe..2b4d16341 100644 --- a/Documentation/compatibility/code-contracts-and-string-isnullorempty-compiler-warning.md +++ b/Documentation/compatibility/code-contracts-and-string-isnullorempty-compiler-warning.md @@ -10,7 +10,7 @@ Minor Investigating ### Change Description -For apps that target the .NET Framework 4.6.1, if the invariant contract for or the precondition contract for calls the method, the rewriter emits compiler warning CC1036: "Detected call to method 'System.String.IsNullOirWhteSpace(System.String)' without [Pure] in method." This is a compiler warning rather than a compiler error. +For apps that target the .NET Framework 4.6.1, if the invariant contract for or the precondition contract for calls the method, the rewriter emits compiler warning CC1036: "Detected call to method 'System.String.IsNullOrWhteSpace(System.String)' without [Pure] in method." This is a compiler warning rather than a compiler error. - [ ] Quirked - [ ] Build-time break From 6a117cad9af0b6e703cbeebde226f112d24e2b6b Mon Sep 17 00:00:00 2001 From: Rob LaDuca Date: Tue, 10 Oct 2017 13:25:45 -0700 Subject: [PATCH 462/872] Breaking change notification for DDVSO436861 - PackageDigitalSignatureManager.DefaultHashAlgorithm is now SHA256 (#499) * Breaking change notification for DDVSO436861 - PackageDigitalSignatureManager.DefaultHashAlgorithm is now SHA256 * Addressing comments --- ...ager.DefaultHashAlgorithm-is-now-SHA256.md | 41 +++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 Documentation/compatibility/wpf-PackageDigitalSignatureManager.DefaultHashAlgorithm-is-now-SHA256.md diff --git a/Documentation/compatibility/wpf-PackageDigitalSignatureManager.DefaultHashAlgorithm-is-now-SHA256.md b/Documentation/compatibility/wpf-PackageDigitalSignatureManager.DefaultHashAlgorithm-is-now-SHA256.md new file mode 100644 index 000000000..eb9638ab4 --- /dev/null +++ b/Documentation/compatibility/wpf-PackageDigitalSignatureManager.DefaultHashAlgorithm-is-now-SHA256.md @@ -0,0 +1,41 @@ +## The default hash algorithm for WPF PackageDigitalSignatureManager is now SHA256 + +### Scope +Edge + +### Version Introduced +.NET 4.7.1 + +### Source Analyzer Status +NotPlanned + +### Change Description +The `System.IO.Packaging.PackageDigitalSignatureManager` provides functionality for digital signatures in relation to WPF packages. In the .NET Framework 4.7 and earlier versions, the default algorithm () +used for signing parts of a package was SHA1. Due to recent security concerns with SHA1, this default has been changed to SHA256 starting with the .NET Framework 4.7.1. This change affects all package signing, including XPS documents. + +- [X] Quirked +- [ ] Build-time break + +### Recommended Action +A developer who wants to utilize this change while targeting a framework version below .NET 4.7.1 or a developer who requires the previous functionality while targeting .NET 4.7.1 or greater +can set the following AppContext flag appropriately. A value of true will result in SHA1 being used as the default algorithm; false results in SHA256. + +```xml + + + + + +``` + +### Affected APIs +P:System.IO.Packaging.PackageDigitalSignatureManager.DefaultHashAlgorithm + +### Category +Windows Presentation Foundation (WPF) + + + + From bff56f53b77c7944aaebc78a541562e38912835a Mon Sep 17 00:00:00 2001 From: Ron Petrusha Date: Wed, 11 Oct 2017 16:05:46 -0700 Subject: [PATCH 463/872] Added 2 4.5 changes, fixed formatting (#508) --- Documentation/compatibility/README.md | 16 ++++++++ ...ion-if-an-addressHeader-element-is-null.md | 19 +++++---- ...shAlgorithm-default-value-is-now-SHA256.md | 16 ++++---- ...ection.GetHashAlgorithm-now-uses-SHA256.md | 16 ++++---- ...jobinfo-jobstream-must-be-in-xps-format.md | 39 +++++++++++++++++++ ...-deserialization-of-mailmessage-objects.md | 33 ++++++++++++++++ .../winforms-accessibility-changes-471.md | 2 +- 7 files changed, 116 insertions(+), 25 deletions(-) create mode 100644 Documentation/compatibility/data-written-to-printsystemjobinfo-jobstream-must-be-in-xps-format.md create mode 100644 Documentation/compatibility/serialization-deserialization-of-mailmessage-objects.md diff --git a/Documentation/compatibility/README.md b/Documentation/compatibility/README.md index ada7d93a7..3ae0e5c74 100644 --- a/Documentation/compatibility/README.md +++ b/Documentation/compatibility/README.md @@ -4,6 +4,7 @@ The following documents provide information on .NET Framework application compat Please help us improve the [.NET Framework Application Compatibility documents](https://github.com/Microsoft/dotnet/tree/master/Documentation/compatibility). In particular, better titles will improve the index below, both in content and the sort. +- [.NET Framework 4.7.1](#net-framework-471) - [.NET Framework 4.7](#net-framework-47) - [.NET Framework 4.6.2](#net-framework-462) - [.NET Framework 4.6.1](#net-framework-461) @@ -12,6 +13,17 @@ Please help us improve the [.NET Framework Application Compatibility documents]( - [.NET Framework 4.5.1](#net-framework-451) - [.NET Framework 4.5](#net-framework-45) +## .NET Framework 4.7.1 + +- [Accessibility improvements in Windows Forms controls](winforms-accessibility-changes-471.md) +- [ASP.NET Accessibility Improvement in .NET 4.7.1](ASPNET Accessibility Improvement.md) +- [ASP.NET Accessibility Improvement in .NET 4.7.1](ASPNET-accessibility-improvement.md) +- [Default SignedXML and SignedXMS algorithms changed to SHA256](Change-SignedXML-and-SignedCMS-default-algorithms-to-SHA256.md) +- [SerialPort background thread exceptions](SerialPort-background-thread-exceptions.md) +- [WCF AddressHeaderCollection now throws an ArgumentException if an addressHeader element is null](WCF-AddressHeaderCollection-now-throws-an-ArgumentException-if-an-addressHeader-element-is-null.md) +- [WCF MsmqSecureHashAlgorithm default value is now SHA256](WCF-MsmqSecureHashAlgorithm-default-value-is-now-SHA256.md) +- [WCF PipeConnection.GetHashAlgorithm now uses SHA256](WCF-PipeConnection.GetHashAlgorithm-now-uses-SHA256.md) + ## .NET Framework 4.7 - [CspParameters.ParentWindowHandle now expects HWND value](cspparameters_parentwindowhandle-now-expects-hwnd-value.md) @@ -45,9 +57,11 @@ Please help us improve the [.NET Framework Application Compatibility documents]( - [Path colon checks are stricter](path-colon-checks-are-stricter.md) - [Remove Ssl3 from the WCF TransportDefaults](remove-ssl3-from-the-wcf-transportdefaults.md) - [RibbonGroup background is set to transparent in localized builds](ribbongroup-background-is-set-to-transparent-in-localized-builds.md) +- [RSACng and DSACng are once again usable in Partial Trust scenarios](RSACng-and-DSACng-not-usable-in-Partial-Trust-scenarios.md) - [RSACng now correctly loads RSA keys of non-standard key size](rsacng-now-correctly-loads-rsa-keys-of-non-standard-keysize.md) - [RSACng.VerifyHash now returns False for any verification failure](rsacng_verifyhash-now-returns-false-for-any-verification-failure.md) - [SignedXml and EncryptedXml Breaking Changes](xml-documents-are-now-consider-invalid-if-they-contains-transforms-that-are-not-allowed-on-digital-signatures.md) +- [SignedXml.GetPublicKey returns RSACng on net462 (or lightup) without retargeting change](SignedXml.GetPublicKey-returns-RSACng-on-net462.md) - [Unicode standard version 8.0 categories now supported](unicode-data-now-support-standard-v8_0-categories.md) - [WCF transport security supports certificates stored using CNG](wcf-transport-security-supports-certificates-stored-using-cng.md) @@ -136,6 +150,8 @@ Please help us improve the [.NET Framework Application Compatibility documents]( - [Change in behavior in Data Definition Language (DDL) APIs](change-in-behavior-in-data-definition-language-(ddl)-apis.md) - [Compiler support for type forwarding when multi-targeting mscorlib](compiler-support-for-type-forwarding-when-multi-targeting-mscorlib.md) - [ConcurrentQueue<T>.TryPeek can return an erroneous null via its out parameter](concurrentqueue_trypeek-can-return-an-erroneous-null-via-its-out-parameter.md) +- [Data written to PrintSystemJobInfo.JobStream must be in XPS format](data-written-to-printsystemjobinfo-jobstream-must-be-in-xps-format.md) +- [Deserialization of MailMessage objects serialized under the .NET Framework 4.5 may fail](serialization-deserialization-of-mailmessage-objects.md) - [Different exception handling for ObjectContext.CreateDatabase and DbProviderServices.CreateDatabase methods](different-exception-handling-for-objectcontext_createdatabase-and-dbproviderservices_createdatabase-methods.md) - [EncoderParameter ctor is obsolete](encoderparameter-ctor-is-obsolete.md) - [Entity Framework version must match the .NET Framework version](ef-version-must-match-netfx-version.md) diff --git a/Documentation/compatibility/WCF-AddressHeaderCollection-now-throws-an-ArgumentException-if-an-addressHeader-element-is-null.md b/Documentation/compatibility/WCF-AddressHeaderCollection-now-throws-an-ArgumentException-if-an-addressHeader-element-is-null.md index 46a163d0c..9a89f8ad3 100644 --- a/Documentation/compatibility/WCF-AddressHeaderCollection-now-throws-an-ArgumentException-if-an-addressHeader-element-is-null.md +++ b/Documentation/compatibility/WCF-AddressHeaderCollection-now-throws-an-ArgumentException-if-an-addressHeader-element-is-null.md @@ -1,15 +1,18 @@ -##WCF AddressHeaderCollection now throws an ArgumentException if an addressHeader element is null +## WCF AddressHeaderCollection now throws an ArgumentException if an addressHeader element is null -###Scope +### Scope Minor -###Version Introduced -.NET Framework 4.7.1 -###Source Analyzer Status + +### Version Introduced +4.7.1 + +### Source Analyzer Status NotPlanned -###Change Description + +### Change Description Starting with the .NET Framework 4.7.1, the `M:System.ServiceModel.Channels.AddressHeaderCollection.#ctor(System.Collections.Generic.IEnumerable{System.ServiceModel.Channels.AddressHeader})` constructor throws an `T:System.ArgumentException` if one of the elements is `null`. In the .NET Framework 4.7 and earlier versions, no exception is thrown. -###Recommended Action: +### Recommended Action: If you encounter compatibility issues with this change on the .NET Framework 4.7.1 or a later version, you can opt-out of it by adding the following line to the `` section of the app.config file:: ```xml @@ -20,7 +23,7 @@ If you encounter compatibility issues with this change on the .NET Framework 4.7 ``` -##Affected APIs +## Affected APIs * `M:System.ServiceModel.Channels.AddressHeaderCollection.#ctor(System.Collections.Generic.IEnumerable{System.ServiceModel.Channels.AddressHeader})` ### Category diff --git a/Documentation/compatibility/WCF-MsmqSecureHashAlgorithm-default-value-is-now-SHA256.md b/Documentation/compatibility/WCF-MsmqSecureHashAlgorithm-default-value-is-now-SHA256.md index 51244ade9..6d0c0058a 100644 --- a/Documentation/compatibility/WCF-MsmqSecureHashAlgorithm-default-value-is-now-SHA256.md +++ b/Documentation/compatibility/WCF-MsmqSecureHashAlgorithm-default-value-is-now-SHA256.md @@ -1,15 +1,15 @@ -##WCF MsmqSecureHashAlgorithm default value is now SHA256 +## WCF MsmqSecureHashAlgorithm default value is now SHA256 -###Scope +### Scope Minor -###Version Introduced -.NET Framework 4.7.1 -###Source Analyzer Status +### Version Introduced +4.7.1 +### Source Analyzer Status NotPlanned -###Change Description +### Change Description Starting with the .NET Framework 4.7.1, the default message signing algorithm in WCF for Msmq messages is SHA256. In the .NET Framework 4.7 and earlier versions, the default message signing algorithm is SHA1. -###Recommended Action: +### Recommended Action: If you run into compatibility issues with this change on the .NET Framework 4.7.1 or later, you can opt-out the change by adding the following line to the ``section of your app.config file: @@ -21,7 +21,7 @@ If you run into compatibility issues with this change on the .NET Framework 4.7. ``` -##Affected APIs +## Affected APIs * Not detectable via API analysis ### Category diff --git a/Documentation/compatibility/WCF-PipeConnection.GetHashAlgorithm-now-uses-SHA256.md b/Documentation/compatibility/WCF-PipeConnection.GetHashAlgorithm-now-uses-SHA256.md index 2432257fb..5d8473f9d 100644 --- a/Documentation/compatibility/WCF-PipeConnection.GetHashAlgorithm-now-uses-SHA256.md +++ b/Documentation/compatibility/WCF-PipeConnection.GetHashAlgorithm-now-uses-SHA256.md @@ -1,15 +1,15 @@ -##WCF PipeConnection.GetHashAlgorithm now uses SHA256 +## WCF PipeConnection.GetHashAlgorithm now uses SHA256 -###Scope +### Scope Minor -###Version Introduced -.NET Framework 4.7.1 -###Source Analyzer Status +### Version Introduced +4.7.1 +### Source Analyzer Status NotPlanned -###Change Description +### Change Description Starting with the .NET Framework 4.7.1, Windows Communication Foundation uses a SHA256 hash to generate random names for named pipes. In the .NET Framework 4.7 and earlier versions, it used a SHA1 hash. -###Recommended Action: +### Recommended Action: If you run into compatibility issue with this change on the .NET Framework 4.7.1 or later, you can opt-out it by adding the following line to the `` section of your app.config file: ```xml @@ -20,7 +20,7 @@ If you run into compatibility issue with this change on the .NET Framework 4.7.1 ``` -##Affected APIs +## Affected APIs * Not detectable via API analysis ### Category diff --git a/Documentation/compatibility/data-written-to-printsystemjobinfo-jobstream-must-be-in-xps-format.md b/Documentation/compatibility/data-written-to-printsystemjobinfo-jobstream-must-be-in-xps-format.md new file mode 100644 index 000000000..1b23b4d05 --- /dev/null +++ b/Documentation/compatibility/data-written-to-printsystemjobinfo-jobstream-must-be-in-xps-format.md @@ -0,0 +1,39 @@ +## Data written to PrintSystemJobInfo.JobStream must be in XPS format + +### Scope +Minor + +### Version Introduced +4.5 + +### Source Analyzer Status +NotPlanned + +### Change Description +The `P:System.Printing.PrintSystemJobInfo.JobStream` property exposes the stream of a print job. The user can send raw data to the underlying operating system printing components by writing to this stream. + +Starting with the .NET Framework 4.5 on Windows 8 and later versions of the Windows operating system, data written to this stream must be in XPS format as a package stream. + +- [ ] Quirked +- [ ] Build-time break + +### Recommended Action + +To output print content, you can do either of the following: + +- Use the `T:System.Windows.Xps.XpsDocumentWriter` class to output print content. This is the recommended alternative. + +- Ensure that the data sent to the stream returned by the `P:System.Printing.PrintSystemJobInfo.JobStream` property is in XPS format as a package stream. + +### Affected APIs +* `P:System.Printing.PrintSystemJobInfo.JobStream` + +### Category +Printing + + + + diff --git a/Documentation/compatibility/serialization-deserialization-of-mailmessage-objects.md b/Documentation/compatibility/serialization-deserialization-of-mailmessage-objects.md new file mode 100644 index 000000000..0063a167b --- /dev/null +++ b/Documentation/compatibility/serialization-deserialization-of-mailmessage-objects.md @@ -0,0 +1,33 @@ +## Deserialization of MailMessage objects serialized under the .NET Framework 4.5 may fail + +### Scope +Minor + +### Version Introduced +4.5 + +### Source Analyzer Status +Investigating + +### Change Description +Starting with the .NET Framework 4.5, `T:System.Web.Mail.MailMessage` objects can include non-ASCII characters. In the .NET Framework 4, only ASCII characters are supported. `T:System.Web.Mail.MailMessage` objects that contain non-ASCII characters and that are serialized under the .NET Framework 4.5 or later cannot be deserialized under the .NET Framework 4. + +- [ ] Quirked +- [ ] Build-time break + +### Recommended Action + +Ensure that your code provides exception handling when deserializing a `T:System.Web.Mail.MailMessage` object. + +### Affected APIs +`T:System.Web.Mail.MailMessage` + +### Category +Networking + + + + diff --git a/Documentation/compatibility/winforms-accessibility-changes-471.md b/Documentation/compatibility/winforms-accessibility-changes-471.md index d78949cbe..38f719f2d 100644 --- a/Documentation/compatibility/winforms-accessibility-changes-471.md +++ b/Documentation/compatibility/winforms-accessibility-changes-471.md @@ -1,4 +1,4 @@ -## 195: Accessibility improvements in Windows Forms controls +## Accessibility improvements in Windows Forms controls ### Scope Major From ca03ef8defaefac423674cff615c2dbc80bb2ca7 Mon Sep 17 00:00:00 2001 From: Ron Petrusha Date: Fri, 13 Oct 2017 17:24:22 -0700 Subject: [PATCH 464/872] Corrections to WinForms accessibility topic (#511) --- .../winforms-accessibility-changes-471.md | 28 ++++++++++--------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/Documentation/compatibility/winforms-accessibility-changes-471.md b/Documentation/compatibility/winforms-accessibility-changes-471.md index 38f719f2d..3a5b3c7e3 100644 --- a/Documentation/compatibility/winforms-accessibility-changes-471.md +++ b/Documentation/compatibility/winforms-accessibility-changes-471.md @@ -10,7 +10,7 @@ Major NotPlanned ### Change Description -Windows Forms Framework is improving how it works with accessibility technologies to better support Windows Forms customers. These include the following changes: +Windows Forms is improving how it works with accessibility technologies to better support Windows Forms customers. These include the following changes: - Changes to improve display during High Contrast mode. - Changes to improve the property browser experience. Property browser improvements include: - Better keyboard navigation through the various drop-down selection windows. @@ -27,19 +27,21 @@ __How to opt in or out of these changes__ In order for the application to benefit from these changes, it must run on the .NET Framework 4.7.1 or later. The application can benefit from these changes in either of the following ways: - It is recompiled to target the .NET Framework 4.7.1. These accessibility changes are enabled by default on Windows Forms applications that target the .NET Framework 4.7.1 or later. -- It opts out of the legacy accessibility behaviors by adding the following [AppContext Switch](https://docs.microsoft.com/dotnet/framework/configure-apps/file-schema/runtime/appcontextswitchoverrides-element) to the `````` section of the app.config file and setting it to false, as the following example shows. -``` - - - - - - - - - - +- It opts out of the legacy accessibility behaviors by adding the following [AppContext Switch](https://docs.microsoft.com/dotnet/framework/configure-apps/file-schema/runtime/appcontextswitchoverrides-element) to the `````` section of the app.config file and setting it to `false`, as the following example shows. + +```xml + + + + + + + + + + ``` + Applications that target the .NET Framework 4.7.1 or later and want to preserve the legacy accessibility behavior can opt in to the use of legacy accessibility features by explicitly setting this AppContext switch to ```true```. For an overview of UI automation, see the [UI Automation Overview](https://docs.microsoft.com/dotnet/framework/ui-automation/ui-automation-overview). From a658237876bda4a663a3b937d2d0c322d379fd38 Mon Sep 17 00:00:00 2001 From: Joseph Musser Date: Mon, 16 Oct 2017 16:38:18 -0400 Subject: [PATCH 465/872] Removed leftover plural (#515) --- releases/net471/dotnet471-changes.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/releases/net471/dotnet471-changes.md b/releases/net471/dotnet471-changes.md index b9eaccd68..2902190f0 100644 --- a/releases/net471/dotnet471-changes.md +++ b/releases/net471/dotnet471-changes.md @@ -76,7 +76,7 @@ You can learn about the changes made in the .NET Framework 4.7.1, as of build 25 * Removed unnecessary ITuple constraint from TRest on ValueTuple 8. [363866, mscorlib.dll, Bug] * Support for dynamic pattern matching types. [295579, mscorlib.dll, Feature] -* Added serializable attribute on each ValueTuple types. [378419, mscorlib.dll, Feature] +* Added serializable attribute on each ValueTuple type. [378419, mscorlib.dll, Feature] ## Configuration From ad03ad5a553052412d2df7e71efed48400602822 Mon Sep 17 00:00:00 2001 From: Ron Petrusha Date: Mon, 16 Oct 2017 15:19:46 -0700 Subject: [PATCH 466/872] Changes to parallel changes to dotnet/docs repo (#512) --- .../ASPNET Accessibility Improvement.md | 50 ------------------- .../ASPNET-accessibility-improvement.md | 32 +++++++----- ...-SignedCMS-default-algorithms-to-SHA256.md | 2 + ...SerialPort-background-thread-exceptions.md | 24 ++++----- ...l.GetPublicKey-returns-RSACng-on-net462.md | 4 +- ...n-path-separator-character-in-zip-files.md | 2 +- .../compatibility/new-64-bit-jit-compiler.md | 2 +- ...-current-returns-null-in-a-using-clause.md | 8 +-- ...-changes-in-net-framework-4-6-and-later.md | 6 +-- ...s-to-securityprotocoltype.systemdefault.md | 6 +-- ...k-results-when-using-reentrant-services.md | 4 +- ...rity-and-md5-certificate-authentication.md | 2 +- ...essfully-converts-icons-with-png-frames.md | 4 +- .../winforms-accessibility-changes-471.md | 21 ++++---- 14 files changed, 66 insertions(+), 101 deletions(-) delete mode 100644 Documentation/compatibility/ASPNET Accessibility Improvement.md diff --git a/Documentation/compatibility/ASPNET Accessibility Improvement.md b/Documentation/compatibility/ASPNET Accessibility Improvement.md deleted file mode 100644 index 4b36b973f..000000000 --- a/Documentation/compatibility/ASPNET Accessibility Improvement.md +++ /dev/null @@ -1,50 +0,0 @@ -## ASP.NET Accessibility Improvement in .NET 4.7.1 - -### Scope -Minor - - -### Version Introduced -4.7.1 - - -### Source Analyzer Status -NotPlanned - - -### Change Description -ASP.NET is improving how ASP.NET Web Controls work with accessibility technology in Visual Studio to better support ASP.NET customers. These include the following changes: -- Changes to implement missing UI accessibility patterns in controls, like the Add Field dialog in the Details View wizard. -- Changes to improve the display in High Contrast mode, like the Data Pager Fields Editor. -- Changes to improve the keyboard navigation experiences for controls, like the Configure Object Context Window or the Configure Data Source Window. - -- [x] Quirked -- [ ] Build-time break - - -### Recommended Action -__How to opt in or out of these changes__ - -In order for the Visual Studio Designer to benefit from these changes, it must run on the .NET Framework 4.7.1 or later. The web application can benefit from these changes in either of the following ways: -- Install Visual Studio 2017 15.3 or later, which supports the new accessibility features with the following AppContext Switch by default. -- Opt out of the legacy accessibility behaviors by adding the __Switch.UseLegacyAccessibility__ AppContext Switch to the `````` section in the devenv.exe.config file and setting it to ```false```, as the following example shows. -``` - - - - ... - - - ... - - -``` -Applications that target the .NET Framework 4.7.1 or later and want to preserve the legacy accessibility behavior can opt in to the use of legacy accessibility features by explicitly setting this AppContext switch to ```true```. - -### Affected APIs - * Not detectable via API analysis - -### Category -ASP.NET - - diff --git a/Documentation/compatibility/ASPNET-accessibility-improvement.md b/Documentation/compatibility/ASPNET-accessibility-improvement.md index 8153414b3..13d1317e5 100644 --- a/Documentation/compatibility/ASPNET-accessibility-improvement.md +++ b/Documentation/compatibility/ASPNET-accessibility-improvement.md @@ -14,8 +14,11 @@ NotPlanned ### Change Description Starting with the .NET Framework 4.7.1, ASP.NET has improved how ASP.NET Web Controls work with accessibility technology in Visual Studio to better support ASP.NET customers. These include the following changes: + - Changes to implement missing UI accessibility patterns in controls, like the Add Field dialog in the Details View wizard, or the Configure ListView dialog of the ListView wizard. + - Changes to improve the display in High Contrast mode, like the Data Pager Fields Editor. + - Changes to improve the keyboard navigation experiences for controls, like the Fields dialog in the Edit Pager Fields wizard of the DataPager control, the Configure ObjectContext dialog, or the Configure Data Selction dialog of the Configure Data Source wizard. - [x] Quirked @@ -23,22 +26,27 @@ Starting with the .NET Framework 4.7.1, ASP.NET has improved how ASP.NET Web Con ### Recommended Action -__How to opt in or out of these changes__ + +**How to opt in or out of these changes** In order for the Visual Studio Designer to benefit from these changes, it must run on the .NET Framework 4.7.1 or later. The web application can benefit from these changes in either of the following ways: + - Install Visual Studio 2017 15.3 or later, which supports the new accessibility features with the following AppContext Switch by default. -- Opt out of the legacy accessibility behaviors by adding the __Switch.UseLegacyAccessibility__ AppContext Switch to the `````` section in the devenv.exe.config file and setting it to ```false```, as the following example shows. -``` - - - - ... - - - ... - - + +- Opt out of the legacy accessibility behaviors by adding the `Switch.UseLegacyAccessibility` AppContext switch to the `` section in the devenv.exe.config file and setting it to `false`, as the following example shows. + +```xml + + + + ... + + + ... + + ``` + Applications that target the .NET Framework 4.7.1 or later and want to preserve the legacy accessibility behavior can opt in to the use of legacy accessibility features by explicitly setting this AppContext switch to ```true```. ### Affected APIs diff --git a/Documentation/compatibility/Change-SignedXML-and-SignedCMS-default-algorithms-to-SHA256.md b/Documentation/compatibility/Change-SignedXML-and-SignedCMS-default-algorithms-to-SHA256.md index aeeb4a545..e893fa3ee 100644 --- a/Documentation/compatibility/Change-SignedXML-and-SignedCMS-default-algorithms-to-SHA256.md +++ b/Documentation/compatibility/Change-SignedXML-and-SignedCMS-default-algorithms-to-SHA256.md @@ -21,6 +21,7 @@ Starting with the .NET Framework 4.7.1, SHA256 is enabled by default for these o There are two new context switch values to control whether SHA1 (insecure) or SHA256 is used by default: - Switch.System.Security.Cryptography.Xml.UseInsecureHashAlgorithms + - Switch.System.Security.Cryptography.Pkcs.UseInsecureHashAlgorithms For applications that target the .NET Framework 4.7.1 and later versions, if the use of SHA256 is undesirable, you can restore the default to SHA1 by adding the following configuration switch to the [runtime](https://docs.microsoft.com/en-us/dotnet/framework/configure-apps/file-schema/runtime/runtime-element) section of your app config file: @@ -28,6 +29,7 @@ For applications that target the .NET Framework 4.7.1 and later versions, if the ```xml ``` + For applications that target the .NET Framework 4.7 and earlier versions, you can opt into this change by adding the following configuration switch to the [runtime](https://docs.microsoft.com/en-us/dotnet/framework/configure-apps/file-schema/runtime/runtime-element) section of your app config file: ```xml diff --git a/Documentation/compatibility/SerialPort-background-thread-exceptions.md b/Documentation/compatibility/SerialPort-background-thread-exceptions.md index 91aecf871..13071bafc 100644 --- a/Documentation/compatibility/SerialPort-background-thread-exceptions.md +++ b/Documentation/compatibility/SerialPort-background-thread-exceptions.md @@ -10,9 +10,9 @@ Minor NotPlanned ### Change Description -Background threads created with `T:System.IO.Ports.SerialPort` streams no longer terminate the process when OS exceptions are thrown. +Background threads created with streams no longer terminate the process when OS exceptions are thrown. -In applications that target the .NET Framework 4.7 and earlier versions, a process is terminated when an operating system exception is thrown on a background thread created with a T:System.IO.Ports.SerialPort stream. +In applications that target the .NET Framework 4.7 and earlier versions, a process is terminated when an operating system exception is thrown on a background thread created with a stream. In applications that target the .NET Framework 4.7.1 or a later version, background threads wait for OS events related to the active serial port and could crash in some cases, such as sudden removal of the serial port. @@ -23,19 +23,19 @@ In applications that target the .NET Framework 4.7.1 or a later version, backgro For apps that target the .NET Framework 4.7.1, you can opt out of the exception handling if it is not desirable by adding the following to to the `` section of your `app.config` file: - ```xml - - - - ``` +```xml + + + +``` For apps that target earlier versions of the .NET Framework but run on the .NET Framework 4.7.1 or later, you can opt in to the exception handling by adding the following to to the `` section of your `app.config` file: - ```xml - - - - ``` +```xml + + + +``` ### Affected APIs diff --git a/Documentation/compatibility/SignedXml.GetPublicKey-returns-RSACng-on-net462.md b/Documentation/compatibility/SignedXml.GetPublicKey-returns-RSACng-on-net462.md index 52a6e7d05..70443b8b9 100644 --- a/Documentation/compatibility/SignedXml.GetPublicKey-returns-RSACng-on-net462.md +++ b/Documentation/compatibility/SignedXml.GetPublicKey-returns-RSACng-on-net462.md @@ -13,12 +13,14 @@ Edge NotPlanned ### Change Description -Starting with the .NET Framework 4.6.2, the concrete type of the object returned by the `` method changed (without a quirk) from a CryptoServiceProvider implementation to a Cng implementation. This is because the implementation changed from using certificate.PublicKey.Key to using the internal certificate.GetAnyPublicKey which forwards to ``. + +Starting with the .NET Framework 4.6.2, the concrete type of the object returned by the method changed (without a quirk) from a CryptoServiceProvider implementation to a Cng implementation. This is because the implementation changed from using `certificate.PublicKey.Key` to using the internal `certificate.GetAnyPublicKey` which forwards to . - [x] Quirked - [ ] Build-time break ### Recommended Action + Starting with apps running on the .NET Framework 4.7.1, you can use the CryptoServiceProvider implementation used by default in the .NET Framework 4.6.1 and earlier versions by adding the following configuration switch to the [runtime](https://docs.microsoft.com/en-us/dotnet/framework/configure-apps/file-schema/runtime/runtime-element) section of your app config file: ```xml diff --git a/Documentation/compatibility/change-in-path-separator-character-in-zip-files.md b/Documentation/compatibility/change-in-path-separator-character-in-zip-files.md index 4c4547942..a202005df 100644 --- a/Documentation/compatibility/change-in-path-separator-character-in-zip-files.md +++ b/Documentation/compatibility/change-in-path-separator-character-in-zip-files.md @@ -20,7 +20,7 @@ Decompressing a zip file created by an app that targets a previous version of th ### Recommended Action -The impact of this change on .ZIP files that are decompressed on the Windows operating system by APIs in the .NET Framework namespace should be minimal, since these APIs can seamlessly handle either a slash ("/") or a backslash ("\\") as the path separator character. +The impact of this change on .ZIP files that are decompressed on the Windows operating system by APIs in the .NET Framework namespace should be minimal, since these APIs can seamlessly handle either a slash ("/") or a backslash ("\\") as the path separator character. If this change is undesirable, you can opt out of it by adding a configuration setting to the [``](https://docs.microsoft.com/dotnet/framework/configure-apps/file-schema/runtime/runtime-element.md) section of your application configuration file. The following example shows both the `. - Under certain conditions, structures passed to a method are treated as reference types rather than as value types in Release builds. One of the manifestations of this issue is that the individual items in a collection appear in an unexpected order. - Under certain conditions, the comparison of values with their high bit set is incorrect if optimization is enabled. -- Under certain conditions, particularly when initializing array values, memory initialization by the IL instruction may initialize memory with an incorrect value. This can result either in an unhandled exception or incorrect output. +- Under certain conditions, particularly when initializing array values, memory initialization by the IL instruction may initialize memory with an incorrect value. This can result either in an unhandled exception or incorrect output. - Under certain rare conditions, a conditional bit test can return the incorrect value or throw an exception if compiler optimizations are enabled. - Under certain conditions, if an `if` statement is used to test for a condition before entering a `try` block and in the exit from the `try` block, and the same condition is evaluated in the `catch` or `finally` block, the new 64-bit JIT compiler removes the `if` condition from the `catch` or `finally` block when it optimizes code. As a result, code inside the `if` statement in the `catch` or `finally` block is executed unconditionally. diff --git a/Documentation/compatibility/operationcontext-current-returns-null-in-a-using-clause.md b/Documentation/compatibility/operationcontext-current-returns-null-in-a-using-clause.md index 1bdbe164e..f489ff98a 100644 --- a/Documentation/compatibility/operationcontext-current-returns-null-in-a-using-clause.md +++ b/Documentation/compatibility/operationcontext-current-returns-null-in-a-using-clause.md @@ -13,13 +13,13 @@ Investigating ### Change Description - may return `null` and a may result if all of the following conditions are true: + may return `null` and a may result if all of the following conditions are true: -- You retrieve the value of the property in a method that returns a or . +- You retrieve the value of the property in a method that returns a or . - You instantiate the object in a `using` clause. -- You retrieve the value of the property within the `using statement`. For example: +- You retrieve the value of the property within the `using statement`. For example: ```csharp using (new OperationContextScope(OperationContext.Current)) @@ -47,7 +47,7 @@ To address this issue, you can do the following: } ``` -- Install the latest update to the .NET Framework 4.6.2, or upgrade to a later version of the .NET Framework. This disables the flow of the in and restores the behavior of WCF applications in the .NET Framework 4.6.1 and earlier versions. This behavior is configurable; it is equivalent to adding the following app setting to your configuration file: +- Install the latest update to the .NET Framework 4.6.2, or upgrade to a later version of the .NET Framework. This disables the flow of the in and restores the behavior of WCF applications in the .NET Framework 4.6.1 and earlier versions. This behavior is configurable; it is equivalent to adding the following app setting to your configuration file: ```xml diff --git a/Documentation/compatibility/product-versioning-changes-in-net-framework-4-6-and-later.md b/Documentation/compatibility/product-versioning-changes-in-net-framework-4-6-and-later.md index 2f9f75711..fa594ad35 100644 --- a/Documentation/compatibility/product-versioning-changes-in-net-framework-4-6-and-later.md +++ b/Documentation/compatibility/product-versioning-changes-in-net-framework-4-6-and-later.md @@ -21,7 +21,7 @@ The following are the detailed changes: - The and attributes for managed assemblies have Version values in the form 4.6.X.0 for the .NET Framework 4.6 and its point releases, and 4.7.X.0 for the .NET Framework 4.7. -- In the .NET Framework 4.6, 4.6.1, 4.6.2, and 4.7, the property returns the fixed version string `4.0.30319.42000`. In the .NET Framework 4, 4.5, 4.5.1, and 4.5.2, it returns version strings in the format `4.0.30319.xxxxx` (for example, "4.0.30319.18010"). Note that we do not recommend application code taking any new dependency on the Environment.Version property. +- In the .NET Framework 4.6, 4.6.1, 4.6.2, and 4.7, the property returns the fixed version string `4.0.30319.42000`. In the .NET Framework 4, 4.5, 4.5.1, and 4.5.2, it returns version strings in the format `4.0.30319.xxxxx` (for example, "4.0.30319.18010"). Note that we do not recommend application code taking any new dependency on the Environment.Version property. - [ ] Quirked // Uses some mechanism to turn the feature on or off, usually using runtime targeting, AppContext or config files. Needs to be turned on automatically for some situations. - [ ] Build-time break // Causes a break if attempted to recompile @@ -36,9 +36,9 @@ In general, applications should depend on the recommended techniques for detecti > [!IMPORTANT] > The subkey name is `NET Framework Setup`, not `.NET Framework Setup`. -- To determine the directory path to the .NET Framework common language runtime, call the method. +- To determine the directory path to the .NET Framework common language runtime, call the method. -- To get the CLR version, call the method. For the .NET Framework 4 and its point releases (the .NET Framework 4.5, 4.5.1, 4.5.2, and .NET Framework 4.6, 4.6.1, 4.6.2, and 4.7), it returns the string v4.0.30319. +- To get the CLR version, call the method. For the .NET Framework 4 and its point releases (the .NET Framework 4.5, 4.5.1, 4.5.2, and .NET Framework 4.6, 4.6.1, 4.6.2, and 4.7), it returns the string v4.0.30319. ### Affected APIs * Not detectable via API analysis diff --git a/Documentation/compatibility/servicepointmanager.securityprotocol-defaults-to-securityprotocoltype.systemdefault.md b/Documentation/compatibility/servicepointmanager.securityprotocol-defaults-to-securityprotocoltype.systemdefault.md index a386637b1..bd5b72308 100644 --- a/Documentation/compatibility/servicepointmanager.securityprotocol-defaults-to-securityprotocoltype.systemdefault.md +++ b/Documentation/compatibility/servicepointmanager.securityprotocol-defaults-to-securityprotocoltype.systemdefault.md @@ -10,9 +10,9 @@ Minor NotPlanned ### Change Description -Starting with apps that target the .NET Framework 4.7, the default value of the property is . This change allows .NET Framework networking APIs based on SslStream (such as FTP, HTTPS, and SMTP) to inherit the default security protocols from the operating system instead of using hard-coded values defined by the .NET Framework. The default varies by operating system and any custom configuration performed by the system administrator. For information on the default SChannel protocol in each version of the Windows operating system, see [Protocols in TLS/SSL (Schannel SSP)](https://msdn.microsoft.com/library/windows/desktop/mt808159.aspx). +Starting with apps that target the .NET Framework 4.7, the default value of the property is . This change allows .NET Framework networking APIs based on SslStream (such as FTP, HTTPS, and SMTP) to inherit the default security protocols from the operating system instead of using hard-coded values defined by the .NET Framework. The default varies by operating system and any custom configuration performed by the system administrator. For information on the default SChannel protocol in each version of the Windows operating system, see [Protocols in TLS/SSL (Schannel SSP)](https://msdn.microsoft.com/library/windows/desktop/mt808159.aspx). -For applications that target an earlier version of the .NET Framework, the default value of the property depends on the version of the .NET Framework targeted. See [Retargeting Changes in the .NET Framework 4.6](docs.microsoft.com/dotnet/framework/migration-guide/retargeting) for more information. +For applications that target an earlier version of the .NET Framework, the default value of the property depends on the version of the .NET Framework targeted. See [Retargeting Changes in the .NET Framework 4.6](docs.microsoft.com/dotnet/framework/migration-guide/retargeting) for more information. - [X] Quirked - [ ] Build-time break @@ -20,7 +20,7 @@ For applications that target an earlier version of the .NET Framework, the defau ### Recommended Action This change affects applications that target the .NET Framework 4.7 or later versions. -If you prefer to use a defined protocol rather than relying on the system default, you can explicitly set the value of the property. +If you prefer to use a defined protocol rather than relying on the system default, you can explicitly set the value of the property. ### Affected APIs - `P:System.Net.ServicePointManager.SecurityProtocol` diff --git a/Documentation/compatibility/wcf-deadlock-results-when-using-reentrant-services.md b/Documentation/compatibility/wcf-deadlock-results-when-using-reentrant-services.md index e5ef06b33..7fb417ee3 100644 --- a/Documentation/compatibility/wcf-deadlock-results-when-using-reentrant-services.md +++ b/Documentation/compatibility/wcf-deadlock-results-when-using-reentrant-services.md @@ -24,13 +24,13 @@ A deadlock may result in a Reentrant service, which restricts instances of the s To address this issue, you can do the following: -- Set the service's concurrency mode to or . For example: +- Set the service's concurrency mode to or . For example: ```csharp [ServiceBehavior(ConcurrencyMode = ConcurrencyMode.Single)] ``` -- Install the latest update to the .NET Framework 4.6.2, or upgrade to a later version of the .NET Framework. This disables the flow of the in . This behavior is configurable; it is equivalent to adding the following app setting to your configuration file: +- Install the latest update to the .NET Framework 4.6.2, or upgrade to a later version of the .NET Framework. This disables the flow of the in . This behavior is configurable; it is equivalent to adding the following app setting to your configuration file: ```xml diff --git a/Documentation/compatibility/wcf-services-using-nettcp-with-ssl-security-and-md5-certificate-authentication.md b/Documentation/compatibility/wcf-services-using-nettcp-with-ssl-security-and-md5-certificate-authentication.md index dc9ae40c6..35924850d 100644 --- a/Documentation/compatibility/wcf-services-using-nettcp-with-ssl-security-and-md5-certificate-authentication.md +++ b/Documentation/compatibility/wcf-services-using-nettcp-with-ssl-security-and-md5-certificate-authentication.md @@ -48,7 +48,7 @@ You can work around this issue so that a WCF client can connect to a WCF server ``` -- If the binding is dynamically configured in source code, update the property to use TLS 1.1 ( or an earlier version of the protocol in the source code. +- If the binding is dynamically configured in source code, update the property to use TLS 1.1 ( or an earlier version of the protocol in the source code. > [!WARNING] > This workaround is not recommended, since a certificate with the MD5 hash algorithm is considered insecure. diff --git a/Documentation/compatibility/windows-forms-icon-tobitmap-method-successfully-converts-icons-with-png-frames.md b/Documentation/compatibility/windows-forms-icon-tobitmap-method-successfully-converts-icons-with-png-frames.md index 1831bcb41..f0d7ebea4 100644 --- a/Documentation/compatibility/windows-forms-icon-tobitmap-method-successfully-converts-icons-with-png-frames.md +++ b/Documentation/compatibility/windows-forms-icon-tobitmap-method-successfully-converts-icons-with-png-frames.md @@ -11,9 +11,9 @@ Investigating ### Change Description -Starting with the apps that target the .NET Framework 4.6, the method successfully converts icons with PNG frames into Bitmap objects. +Starting with the apps that target the .NET Framework 4.6, the method successfully converts icons with PNG frames into Bitmap objects. -In apps that target the .NET Framework 4.5.2 and earlier versions, the method throws an exception if the Icon object has PNG frames. +In apps that target the .NET Framework 4.5.2 and earlier versions, the method throws an exception if the Icon object has PNG frames. This change affects apps that are recompiled to target the .NET Framework 4.6 and that implement special handling for the that is thrown when an Icon object has PNG frames. When running under the .NET Framework 4.6, the conversion is successful, an is no longer thrown, and therefore the exception handler is no longer invoked. diff --git a/Documentation/compatibility/winforms-accessibility-changes-471.md b/Documentation/compatibility/winforms-accessibility-changes-471.md index 3a5b3c7e3..f434514c5 100644 --- a/Documentation/compatibility/winforms-accessibility-changes-471.md +++ b/Documentation/compatibility/winforms-accessibility-changes-471.md @@ -23,11 +23,14 @@ Windows Forms is improving how it works with accessibility technologies to bette - [ ] Build-time break ### Recommended Action -__How to opt in or out of these changes__ + +**How to opt in or out of these changes** In order for the application to benefit from these changes, it must run on the .NET Framework 4.7.1 or later. The application can benefit from these changes in either of the following ways: + - It is recompiled to target the .NET Framework 4.7.1. These accessibility changes are enabled by default on Windows Forms applications that target the .NET Framework 4.7.1 or later. -- It opts out of the legacy accessibility behaviors by adding the following [AppContext Switch](https://docs.microsoft.com/dotnet/framework/configure-apps/file-schema/runtime/appcontextswitchoverrides-element) to the `````` section of the app.config file and setting it to `false`, as the following example shows. + +- It opts out of the legacy accessibility behaviors by adding the following [AppContext Switch](https://docs.microsoft.com/dotnet/framework/configure-apps/file-schema/runtime/appcontextswitchoverrides-element) to the `` section of the app.config file and setting it to `false`, as the following example shows. ```xml @@ -46,7 +49,7 @@ Applications that target the .NET Framework 4.7.1 or later and want to preserve For an overview of UI automation, see the [UI Automation Overview](https://docs.microsoft.com/dotnet/framework/ui-automation/ui-automation-overview). -__Added support for UI Automation patterns and properties__ +**Added support for UI Automation patterns and properties** Accessibility clients can take advantage of new WinForms accessibility functionality by using common, publicly described invocation patterns. These patterns are not WinForms-specific. For instance, accessibility clients can call the QueryInterface method on the IAccessible interface (MAAS) to obtain an IServiceProvider interface. If this interface is available, clients can use its QueryService method to request an IAccessibleEx interface. For more information, see [Using IAccessibleEx from a Client](https://msdn.microsoft.com/en-us/library/windows/desktop/dd561924(v=vs.85).aspx). Starting with the .NET Framework 4.7.1, IServiceProvider and [IAccessibleEx]( https://msdn.microsoft.com/en-us/library/windows/desktop/dd561898(v=vs.85).aspx) (where applicable) are available for WinForms accessibility objects. @@ -59,11 +62,11 @@ The .NET Framework 4.7.1 adds support for the fillowing UI automation patterns a - The `T:System.Windows.Forms.DataGridViewCheckBoxCell` control supports the [Toggle Pattern](https://docs.microsoft.com/dotnet/api/system.windows.automation.togglepattern). - The `T:System.Windows.Forms.NumericUpDown` and `T:System.Windows.Forms.DomainUpDown` controls support the [Name](https://docs.microsoft.com/dotnet/api/system.windows.automation.automationelement.nameproperty) and have a [ControlType](https://docs.microsoft.com/dotnet/framework/ui-automation/ui-automation-support-for-the-spinner-control-type) of . -__Improvements to PropertyGrid control__ +**Improvements to the PropertyGrid control** The .NET Framework 4.7.1 adds the following improvements to the PropertyBrowser control: -- The __Details__ button in the error dialog that is displayed when the user enters an incorrect value in the `T:System.Windows.Forms.PropertyGrid` control supports the [Expand/Collapse pattern](https://docs.microsoft.com/dotnet/framework/ui-automation/implementing-the-ui-automation-expandcollapse-control-pattern), state and name change notifications, and a [ControlType](https://docs.microsoft.com/dotnet/framework/ui-automation/ui-automation-support-for-the-menubar-control-type) property with a value of . -- The message pane displayed when the __Details__ button of the error dialog is expanded is now keyboard accessible and allows Narrator to announce the content of the error message. +- The **Details** button in the error dialog that is displayed when the user enters an incorrect value in the `T:System.Windows.Forms.PropertyGrid` control supports the [Expand/Collapse pattern](https://docs.microsoft.com/dotnet/framework/ui-automation/implementing-the-ui-automation-expandcollapse-control-pattern), state and name change notifications, and a [ControlType](https://docs.microsoft.com/dotnet/framework/ui-automation/ui-automation-support-for-the-menubar-control-type) property with a value of . +- The message pane displayed when the **Details** button of the error dialog is expanded is now keyboard accessible and allows Narrator to announce the content of the error message. - The [AccessibleRole](https://docs.microsoft.com/dotnet/api/system.windows.forms.accessiblerole) of rows in `T:System.Windows.Forms.PropertyGrid` control have changed from "Row" to "Cell". The cell maps to UIA ControlType "DataItem", which allows it to support appropriate keyboard shortcuts and Narrator announcements. - The `T:System.Windows.Forms.PropertyGrid` control rows which represent header items when the `T:System.Windows.Forms.PropertyGrid` control has a `P:System.Windows.Forms.PropertySort` property set to `F:System.Windows.Forms.PropertySory.Categorized` have a [ControlType](https://docs.microsoft.com/dotnet/framework/ui-automation/ui-automation-support-for-the-menubar-control-type) property value of - The `T:System.Windows.Forms.PropertyGrid` control rows which represent header items when the `T:System.Windows.Forms.PropertyGrid` control has a `P:System.Windows.Forms.PropertySort` property set to `F:System.Windows.Forms.PropertySory.Categorized` support the [Expand/Collapse pattern](https://docs.microsoft.com/dotnet/framework/ui-automation/implementing-the-ui-automation-expandcollapse-control-pattern). @@ -75,7 +78,7 @@ The .NET Framework 4.7.1 adds the following improvements to the PropertyBrowser - Improved Narrator support for distinguishing the selected alignment in the Alignment Picker. - When an empty `T:System.Windows.Forms.PropertyGrid` control is displayed on a form, it will now receive focus where previously it would not. -__Use of OS-defined colors in High Contrast themes__ +**Use of OS-defined colors in High Contrast themes** - `T:System.Windows.Forms.Button` and `T:System.Windows.Forms.CheckBox` controls with `P:System.Windows.Forms.Control.FlatStyle` set to , which is the default style, now use OS-defined colors in High Contrast theme when selected. Previously, text and background colors were not contrasting and were hard to read. - `T:System.Windows.Forms.Button`, `T:System.Windows.Forms.CheckBox`, `T:System.Windows.Forms.RadioButton`, `T:System.Windows.Forms.Label`, `T:System.Windows.Forms.LinkLabel` and `T:System.Windows.Forms.GroupBox` with`P:System.Windows.Forms.Control.Enabled` set to _false_, used a shaded color to render text in High Contrast themes, resulting in low contrast against the background. Now these controls use "Disabled Text" color defined by the OS. This fix applies to controls with `P:System.Windows.Forms.Control.FlatStyle` property set to a value other than `F:System.Windows.Forms.FlatStyle.System`. The latter controls are rendered by the OS. @@ -89,11 +92,11 @@ NOTE: Windows10 has changed values for some high contrast system colors. Windows         ``` -__Improved keyboard navigation__ +**Improved keyboard navigation** - When a `T:System.Windows.Forms.ComboBox` control has `P:System.Windows.Forms.ComboBox.DropDownStyle` set to `F:System.Windows.Forms.DropDownStyle.DropDownList` and is the first control in the tab order on the form, it now displays a focus rectangle when the parent form is opened using the keyboard. Before this change, keyboard focus was on this control, but a focus indicator was not rendered. -__Improved Narrator support__ +**Improved Narrator support** - The `T:System.Windows.Forms.MonthCalendar` control has added support for assistive technologies to access the control, including the ability for Narrator to read the value of the control when previously it could not. - The `T:System.Windows.Forms.CheckedListBox` control now notifies Narrator when the `P:System.Windows.Forms.CheckState` property has been changed. Previously, Narrator did not recieve notification and as a result users would not be informed that the `P:System.Windows.Forms.CheckState` had been updated. - The `T:System.Windows.Forms.LinkLabel` control has changed the way it notifies Narrator of the text of in the control. Previously, Narrator announced this text twice and read "&" symbols as real text even though they are not visible to a user. The duplicated text was removed from the Narrator announcements, as well as unnecessary "&" symbols. From 2418934cc0257d69ad517cc4162753b83afbd23d Mon Sep 17 00:00:00 2001 From: Ron Petrusha Date: Mon, 16 Oct 2017 15:23:52 -0700 Subject: [PATCH 467/872] Revised for 4.7.1, fixed some formatting issues (#514) * Revised for 4.7.1, fixed some formatting issues * replaced 'and its point releases' for 4.7.1 --- ...-changes-in-net-framework-4-6-and-later.md | 20 ++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/Documentation/compatibility/product-versioning-changes-in-net-framework-4-6-and-later.md b/Documentation/compatibility/product-versioning-changes-in-net-framework-4-6-and-later.md index 2f9f75711..782a85dea 100644 --- a/Documentation/compatibility/product-versioning-changes-in-net-framework-4-6-and-later.md +++ b/Documentation/compatibility/product-versioning-changes-in-net-framework-4-6-and-later.md @@ -11,20 +11,22 @@ NotPlanned ### Change Description -Product versioning has changed from the previous releases of the .NET Framework, and particularly the .NET Framework 4, 4.5, 4.5.1, and 4.5.2. +Product versioning has changed from the previous releases of the .NET Framework, and particularly from the .NET Framework 4, 4.5, 4.5.1, and 4.5.2. The following are the detailed changes: -- The value of the `Version` entry in the `HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full` key has changed to `4.6.xxxxx` for the .NET Framework 4.6 and its point releases, and to `4.7.xxxxx` for the .NET Framework 4.7. In the .NET Framework 4.5, 4.5.1, and 4.5.2, it had the format `4.5.xxxxx`. +- The value of the `Version` entry in the `HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full` key has changed to `4.6.xxxxx` for the .NET Framework 4.6 and its point releases, and to `4.7.xxxxx` for the .NET Framework 4.7 and 4.7.1. In the .NET Framework 4.5, 4.5.1, and 4.5.2, it had the format `4.5.xxxxx`. -- The file and product versioning for .NET Framework files has changed from the earlier versioning scheme of 4.0.30319.x to 4.6.X.0 for the .NET Framework 4.6 and its point releases, and to 4.7.X.0 for the .NET Framework 4.7 and its point releases. You can see these new values when you view the file's Properties after right-clicking on a file. +- The file and product versioning for .NET Framework files has changed from the earlier versioning scheme of 4.0.30319.x to 4.6.X.0 for the .NET Framework 4.6 and its point releases, and to 4.7.X.0 for the .NET Framework 4.7 and 4.7.1. You can see these new values when you view the file's Properties after right-clicking on a file. -- The and attributes for managed assemblies have Version values in the form 4.6.X.0 for the .NET Framework 4.6 and its point releases, and 4.7.X.0 for the .NET Framework 4.7. +- The and attributes for managed assemblies have Version values in the form 4.6.X.0 for the .NET Framework 4.6 and its point releases, and 4.7.X.0 for the .NET Framework 4.7 and 4.7.1. -- In the .NET Framework 4.6, 4.6.1, 4.6.2, and 4.7, the property returns the fixed version string `4.0.30319.42000`. In the .NET Framework 4, 4.5, 4.5.1, and 4.5.2, it returns version strings in the format `4.0.30319.xxxxx` (for example, "4.0.30319.18010"). Note that we do not recommend application code taking any new dependency on the Environment.Version property. +- In the .NET Framework 4.6, 4.6.1, 4.6.2, 4.7, and 4.7.1, the property returns the fixed version string `4.0.30319.42000`. In the .NET Framework 4, 4.5, 4.5.1, and 4.5.2, it returns version strings in the format `4.0.30319.xxxxx` (for example, "4.0.30319.18010"). Note that we do not recommend application code taking any new dependency on the Environment.Version property. -- [ ] Quirked // Uses some mechanism to turn the feature on or off, usually using runtime targeting, AppContext or config files. Needs to be turned on automatically for some situations. -- [ ] Build-time break // Causes a break if attempted to recompile +For more information, see [How to: Determine which .NET Framework Versions Are Installed](https://docs.microsoft.com/dotnet/framework/migration-guide/how-to-determine-which-versions-are-installed). + +- [ ] Quirked +- [ ] Build-time break ### Recommended Action In general, applications should depend on the recommended techniques for detecting such things as the runtime version of the .NET Framework and the installation directory: @@ -36,9 +38,9 @@ In general, applications should depend on the recommended techniques for detecti > [!IMPORTANT] > The subkey name is `NET Framework Setup`, not `.NET Framework Setup`. -- To determine the directory path to the .NET Framework common language runtime, call the method. +- To determine the directory path to the .NET Framework common language runtime, call the method. -- To get the CLR version, call the method. For the .NET Framework 4 and its point releases (the .NET Framework 4.5, 4.5.1, 4.5.2, and .NET Framework 4.6, 4.6.1, 4.6.2, and 4.7), it returns the string v4.0.30319. +- To get the CLR version, call the method. For the .NET Framework 4 and its point releases (the .NET Framework 4.5, 4.5.1, 4.5.2, and .NET Framework 4.6, 4.6.1, 4.6.2, 4.7, and 4.7.1), it returns the string v4.0.30319. ### Affected APIs * Not detectable via API analysis From dd87eec18a1ad4b00ec262b53334ab3b2c4c6db3 Mon Sep 17 00:00:00 2001 From: Ron Petrusha Date: Mon, 16 Oct 2017 17:07:29 -0700 Subject: [PATCH 468/872] Added 4.7 JIT issue (#516) * Added JIT issue * Added JIT issue * Added readme.md * Added link to GitHub issue --- Documentation/compatibility/README.md | 1 + ...hen-passing-and-comparing-uint16-values.md | 35 +++++++++++++++++++ 2 files changed, 36 insertions(+) create mode 100644 Documentation/compatibility/incorrect-code-generation-when-passing-and-comparing-uint16-values.md diff --git a/Documentation/compatibility/README.md b/Documentation/compatibility/README.md index 3ae0e5c74..734c53cbf 100644 --- a/Documentation/compatibility/README.md +++ b/Documentation/compatibility/README.md @@ -28,6 +28,7 @@ Please help us improve the [.NET Framework Application Compatibility documents]( - [CspParameters.ParentWindowHandle now expects HWND value](cspparameters_parentwindowhandle-now-expects-hwnd-value.md) - [Default value of ServicePointManager.SecurityProtocol is SecurityProtocolType.System.Default](servicepointmanager.securityprotocol-defaults-to-securityprotocoltype.systemdefault.md) +- [Incorrect code generation when passing and comparing UInt16 values](incorrect-code-generation-when-passing-and-comparing-uint16-values.md) - [NullReferenceException in exception handling code from ImageSourceConverter.ConvertFrom](wpf-nullreferenceexception-in-exception-handling-code-from-imagesourceconverter_convertfrom.md) - [Serialization of control characters with DataContractJsonSerializer is now compatible with ECMAScript V6 and V8](serialization-of-control-characters-with-datacontractjsonserializer-is-now-compatible-with-ecmascript-v6-and-v8.md) - [SslStream supports TLS Alerts](sslstream-support-for-tls-alerts.md) diff --git a/Documentation/compatibility/incorrect-code-generation-when-passing-and-comparing-uint16-values.md b/Documentation/compatibility/incorrect-code-generation-when-passing-and-comparing-uint16-values.md new file mode 100644 index 000000000..05a34c4fe --- /dev/null +++ b/Documentation/compatibility/incorrect-code-generation-when-passing-and-comparing-uint16-values.md @@ -0,0 +1,35 @@ +## Incorrect code generation when passing and comparing UInt16 values + +### Scope +Edge + +### Version Introduced +4.7 + +### Version Reverted +4.7.1 + +### Source Analyzer Status +NotPlanned + +### Change Description +Because of changes introduced in the .NET Framework 4.7, in some cases the code generated by the JIT compiler in applications running on the .NET Framework 4.7 incorrectly compares two `T:System.UInt16` values. For more information, see [Issue #11508: Silent bad codegen when passing and comparing ushort args](https://github.com/dotnet/coreclr/issues/11508) on GitHub.com. + +- [ ] Quirked +- [ ] Build-time break + +### Recommended Action + +If you encounter issues in the comparison of 16-bit unsigned values in the .NET Framework 4.7, upgrade to the .NET Framework 4.7.1. + +### Affected APIs +- * Not detectable via API analysis + +### Category +JIT + + + + From e9aa75eb666c77fd7761d77d701673931831baea Mon Sep 17 00:00:00 2001 From: Ron Petrusha Date: Tue, 17 Oct 2017 10:02:05 -0700 Subject: [PATCH 469/872] Merge master to net471 (#519) * Add headers to dotnet-consumer-projects.md * Tanya's content and Ron's feedback * Next round of changes Second round of feedback plus a couple of bugs. * Fixed version reverted * More bugs * PropertyGrid changes Additional changes for the Property Grid plus some additional tweaks. * Added UIAutomation blurb Added blurb for Nikola's bug and overall UIAutomation improvements. * Incorporating feedback * Bullets Remove extra bullet * feedback * Updates for .net framework 4.7.1 early access build 2539 (#479) * Tanya's Review Tanya's Review * Add ASPNET Accessibility Compat Document (#484) * Add ASPNET Accessibility Compat Document * Update ASPNET Accessibility Improvement.md * Update ASPNET Accessibility Improvement.md @rpetrusha incorporated feedback * ASPNET Accessibility Improvement.md * minor fixups * Update xrefs Found some missing punctuation and updated the xref:s to displayProperty=nameWithType * Add the open source project named surging (#490) * Add the open source project named surging * Correct the problem changes to Libraries * Update dotnet-developer-projects.md * WCF 4.7.1 fixes with appcontext switch document * Fix typo in compatibility README.md (#497) * Create SerialPort-background-thread-exceptions.md (#485) * Create SerialPort-background-thread-exceptions.md * Update SerialPort-background-thread-exceptions.md * Update SerialPort-background-thread-exceptions.md * Update SerialPort-background-thread-exceptions.md * Update SerialPort-background-thread-exceptions.md * Reviewed WCF app compat topics (#496) * Add breaking change docs (#487) * Add breaking change docs * Update Change-SignedXML-and-SignedCMS-default-algorithms-to-SHA256.md * Update Change-SignedXML-and-SignedCMS-default-algorithms-to-SHA256.md * Update RSACng-and-DSACng-not-usable-in-Partial-Trust-scenarios.md * Update SignedXml.GetPublicKey-returns-RSACng-on-net462.md * Update docs for SignedXML fixes * Remove unclosed comment in doc * Fixup some SignedXml docs * Fixup some SignedXml docs * Added AspectCore to .NET Open Source Developer Projects (#495) AspectCore is an Aspect-Oriented Programming based cross platform framework for .NET Core and .NET Framework. Core support for aspect-interceptor,dependency injection integration , web applications , and more. * .NET Native 2.0 initial draft * Fixes based on feedback and rename the file. (#501) * Add ASPNET Accessibility Compat Document * Update ASPNET Accessibility Improvement.md * Update ASPNET Accessibility Improvement.md @rpetrusha incorporated feedback * ASPNET Accessibility Improvement.md * minor fixups * Add more details and rename the file * Update README.md formatting * Update README.md formatting * Update README.md formatting * Correct name of Visual Studio 2017 Version 15.4 * Update funceval.md * FuncEval release notes Add VS screen shots for funceval notes * fix typo * Update incremental-compilation.md * Update links of Win Application Framework (WAF) and Waf DotNetPad (#503) * Update wording * Update link of Waf Music Manager (#502) * Update link of Waf Music Manager * makes fun --> makes it fun * Fixing version number * Fix broken docId * Fixing DocIds * Fixed 3 broken links * Added 2 4.5 changes, fixed formatting (#508) * Corrections to WinForms accessibility topic (#511) * Removed leftover plural (#515) * Changes to parallel changes to dotnet/docs repo (#512) * Added 4.7 JIT issue (#516) * Added JIT issue * Added JIT issue * Added readme.md * Added link to GitHub issue --- .../ASPNET-accessibility-improvement.md | 58 +++++++ ...-SignedCMS-default-algorithms-to-SHA256.md | 49 ++++++ Documentation/compatibility/README.md | 19 ++- ...g-not-usable-in-Partial-Trust-scenarios.md | 42 +++++ ...SerialPort-background-thread-exceptions.md | 49 ++++++ ...l.GetPublicKey-returns-RSACng-on-net462.md | 38 +++++ ...ion-if-an-addressHeader-element-is-null.md | 35 ++++ ...shAlgorithm-default-value-is-now-SHA256.md | 33 ++++ ...ection.GetHashAlgorithm-now-uses-SHA256.md | 33 ++++ ...inapppath-throws-nullreferenceexception.md | 2 +- ...n-path-separator-character-in-zip-files.md | 2 +- ...d-string-isnullorempty-compiler-warning.md | 2 +- ...jobinfo-jobstream-must-be-in-xps-format.md | 39 +++++ ...hen-passing-and-comparing-uint16-values.md | 35 ++++ .../compatibility/new-64-bit-jit-compiler.md | 2 +- ...-current-returns-null-in-a-using-clause.md | 8 +- ...-changes-in-net-framework-4-6-and-later.md | 1 + ...-deserialization-of-mailmessage-objects.md | 33 ++++ ...s-to-securityprotocoltype.systemdefault.md | 6 +- ...k-results-when-using-reentrant-services.md | 4 +- ...rity-and-md5-certificate-authentication.md | 2 +- ...essfully-converts-icons-with-png-frames.md | 4 +- .../winforms-accessibility-changes-471.md | 157 ++++++++++++++++++ dotnet-consumer-projects.md | 16 +- dotnet-developer-projects.md | 8 +- releases/UWP/README.md | 1 + releases/UWP/net-native2.0/README.md | 68 ++++++++ releases/UWP/net-native2.0/funceval.md | 61 +++++++ .../UWP/net-native2.0/images/funceval-0.png | Bin 0 -> 101597 bytes .../UWP/net-native2.0/images/funceval-1.png | Bin 0 -> 607829 bytes .../UWP/net-native2.0/images/funceval-2.png | Bin 0 -> 557254 bytes .../net-native2.0/incremental-compilation.md | 92 ++++++++++ releases/net471/README.md | 4 +- releases/net471/dotnet471-changes.md | 6 +- releases/net471/dotnet471-known-issues.md | 2 +- 35 files changed, 877 insertions(+), 34 deletions(-) create mode 100644 Documentation/compatibility/ASPNET-accessibility-improvement.md create mode 100644 Documentation/compatibility/Change-SignedXML-and-SignedCMS-default-algorithms-to-SHA256.md create mode 100644 Documentation/compatibility/RSACng-and-DSACng-not-usable-in-Partial-Trust-scenarios.md create mode 100644 Documentation/compatibility/SerialPort-background-thread-exceptions.md create mode 100644 Documentation/compatibility/SignedXml.GetPublicKey-returns-RSACng-on-net462.md create mode 100644 Documentation/compatibility/WCF-AddressHeaderCollection-now-throws-an-ArgumentException-if-an-addressHeader-element-is-null.md create mode 100644 Documentation/compatibility/WCF-MsmqSecureHashAlgorithm-default-value-is-now-SHA256.md create mode 100644 Documentation/compatibility/WCF-PipeConnection.GetHashAlgorithm-now-uses-SHA256.md create mode 100644 Documentation/compatibility/data-written-to-printsystemjobinfo-jobstream-must-be-in-xps-format.md create mode 100644 Documentation/compatibility/incorrect-code-generation-when-passing-and-comparing-uint16-values.md create mode 100644 Documentation/compatibility/serialization-deserialization-of-mailmessage-objects.md create mode 100644 Documentation/compatibility/winforms-accessibility-changes-471.md create mode 100644 releases/UWP/net-native2.0/README.md create mode 100644 releases/UWP/net-native2.0/funceval.md create mode 100644 releases/UWP/net-native2.0/images/funceval-0.png create mode 100644 releases/UWP/net-native2.0/images/funceval-1.png create mode 100644 releases/UWP/net-native2.0/images/funceval-2.png create mode 100644 releases/UWP/net-native2.0/incremental-compilation.md diff --git a/Documentation/compatibility/ASPNET-accessibility-improvement.md b/Documentation/compatibility/ASPNET-accessibility-improvement.md new file mode 100644 index 000000000..13d1317e5 --- /dev/null +++ b/Documentation/compatibility/ASPNET-accessibility-improvement.md @@ -0,0 +1,58 @@ +## ASP.NET Accessibility Improvement in .NET 4.7.1 + +### Scope +Minor + + +### Version Introduced +4.7.1 + + +### Source Analyzer Status +NotPlanned + + +### Change Description +Starting with the .NET Framework 4.7.1, ASP.NET has improved how ASP.NET Web Controls work with accessibility technology in Visual Studio to better support ASP.NET customers. These include the following changes: + +- Changes to implement missing UI accessibility patterns in controls, like the Add Field dialog in the Details View wizard, or the Configure ListView dialog of the ListView wizard. + +- Changes to improve the display in High Contrast mode, like the Data Pager Fields Editor. + +- Changes to improve the keyboard navigation experiences for controls, like the Fields dialog in the Edit Pager Fields wizard of the DataPager control, the Configure ObjectContext dialog, or the Configure Data Selction dialog of the Configure Data Source wizard. + +- [x] Quirked +- [ ] Build-time break + + +### Recommended Action + +**How to opt in or out of these changes** + +In order for the Visual Studio Designer to benefit from these changes, it must run on the .NET Framework 4.7.1 or later. The web application can benefit from these changes in either of the following ways: + +- Install Visual Studio 2017 15.3 or later, which supports the new accessibility features with the following AppContext Switch by default. + +- Opt out of the legacy accessibility behaviors by adding the `Switch.UseLegacyAccessibility` AppContext switch to the `` section in the devenv.exe.config file and setting it to `false`, as the following example shows. + +```xml + + + + ... + + + ... + + +``` + +Applications that target the .NET Framework 4.7.1 or later and want to preserve the legacy accessibility behavior can opt in to the use of legacy accessibility features by explicitly setting this AppContext switch to ```true```. + +### Affected APIs + * Not detectable via API analysis + +### Category +ASP.NET + + diff --git a/Documentation/compatibility/Change-SignedXML-and-SignedCMS-default-algorithms-to-SHA256.md b/Documentation/compatibility/Change-SignedXML-and-SignedCMS-default-algorithms-to-SHA256.md new file mode 100644 index 000000000..e893fa3ee --- /dev/null +++ b/Documentation/compatibility/Change-SignedXML-and-SignedCMS-default-algorithms-to-SHA256.md @@ -0,0 +1,49 @@ +## Default SignedXML and SignedXMS algorithms changed to SHA256 + +### Scope +Minor + +### Version Introduced +4.7.1 + +### Source Analyzer Status +NotPlanned + +### Change Description +In the .NET Framework 4.7 and earlier, SignedXML and SignedCMS default to SHA1 for some operations. + +Starting with the .NET Framework 4.7.1, SHA256 is enabled by default for these operations. This change is necessary because SHA1 is no longer considered to be secure. + +- [X] Quirked +- [ ] Build-time break + +### Recommended Action +There are two new context switch values to control whether SHA1 (insecure) or SHA256 is used by default: + +- Switch.System.Security.Cryptography.Xml.UseInsecureHashAlgorithms + +- Switch.System.Security.Cryptography.Pkcs.UseInsecureHashAlgorithms + +For applications that target the .NET Framework 4.7.1 and later versions, if the use of SHA256 is undesirable, you can restore the default to SHA1 by adding the following configuration switch to the [runtime](https://docs.microsoft.com/en-us/dotnet/framework/configure-apps/file-schema/runtime/runtime-element) section of your app config file: + +```xml + +``` + +For applications that target the .NET Framework 4.7 and earlier versions, you can opt into this change by adding the following configuration switch to the [runtime](https://docs.microsoft.com/en-us/dotnet/framework/configure-apps/file-schema/runtime/runtime-element) section of your app config file: + +```xml + +``` + +### Affected APIs +* `T:System.Security.Cryptography.Pkcs.CmsSigner` +* `T:System.Security.Cryptography.Xml.SignedXml` +* `T:System.Security.Cryptography.Xml.Reference` + +### Category +Security + + diff --git a/Documentation/compatibility/README.md b/Documentation/compatibility/README.md index 70842603d..734c53cbf 100644 --- a/Documentation/compatibility/README.md +++ b/Documentation/compatibility/README.md @@ -4,6 +4,7 @@ The following documents provide information on .NET Framework application compat Please help us improve the [.NET Framework Application Compatibility documents](https://github.com/Microsoft/dotnet/tree/master/Documentation/compatibility). In particular, better titles will improve the index below, both in content and the sort. +- [.NET Framework 4.7.1](#net-framework-471) - [.NET Framework 4.7](#net-framework-47) - [.NET Framework 4.6.2](#net-framework-462) - [.NET Framework 4.6.1](#net-framework-461) @@ -12,10 +13,22 @@ Please help us improve the [.NET Framework Application Compatibility documents]( - [.NET Framework 4.5.1](#net-framework-451) - [.NET Framework 4.5](#net-framework-45) +## .NET Framework 4.7.1 + +- [Accessibility improvements in Windows Forms controls](winforms-accessibility-changes-471.md) +- [ASP.NET Accessibility Improvement in .NET 4.7.1](ASPNET Accessibility Improvement.md) +- [ASP.NET Accessibility Improvement in .NET 4.7.1](ASPNET-accessibility-improvement.md) +- [Default SignedXML and SignedXMS algorithms changed to SHA256](Change-SignedXML-and-SignedCMS-default-algorithms-to-SHA256.md) +- [SerialPort background thread exceptions](SerialPort-background-thread-exceptions.md) +- [WCF AddressHeaderCollection now throws an ArgumentException if an addressHeader element is null](WCF-AddressHeaderCollection-now-throws-an-ArgumentException-if-an-addressHeader-element-is-null.md) +- [WCF MsmqSecureHashAlgorithm default value is now SHA256](WCF-MsmqSecureHashAlgorithm-default-value-is-now-SHA256.md) +- [WCF PipeConnection.GetHashAlgorithm now uses SHA256](WCF-PipeConnection.GetHashAlgorithm-now-uses-SHA256.md) + ## .NET Framework 4.7 - [CspParameters.ParentWindowHandle now expects HWND value](cspparameters_parentwindowhandle-now-expects-hwnd-value.md) - [Default value of ServicePointManager.SecurityProtocol is SecurityProtocolType.System.Default](servicepointmanager.securityprotocol-defaults-to-securityprotocoltype.systemdefault.md) +- [Incorrect code generation when passing and comparing UInt16 values](incorrect-code-generation-when-passing-and-comparing-uint16-values.md) - [NullReferenceException in exception handling code from ImageSourceConverter.ConvertFrom](wpf-nullreferenceexception-in-exception-handling-code-from-imagesourceconverter_convertfrom.md) - [Serialization of control characters with DataContractJsonSerializer is now compatible with ECMAScript V6 and V8](serialization-of-control-characters-with-datacontractjsonserializer-is-now-compatible-with-ecmascript-v6-and-v8.md) - [SslStream supports TLS Alerts](sslstream-support-for-tls-alerts.md) @@ -30,7 +43,7 @@ Please help us improve the [.NET Framework Application Compatibility documents]( ## .NET Framework 4.6.2 -- [AesCrytpServiceProvider decryptor provides a reusable transform](aescryptoserviceprovider-decryptor-provides-a-reusable-transform.md) +- [AesCryptoServiceProvider decryptor provides a reusable transform](aescryptoserviceprovider-decryptor-provides-a-reusable-transform.md) - [Calls to ClaimsIdentity constructors](calls-to-claimsidentity-constructors.md) - [Changes in path normalization](changes-in-path-normalization.md) - [Changing the IsEnabled property of the parent of a TextBlock control affects any child controls](changing-the-isenabled-property-of-the-parent-of-a-textblock-control-affects-any-child-controls.md) @@ -45,9 +58,11 @@ Please help us improve the [.NET Framework Application Compatibility documents]( - [Path colon checks are stricter](path-colon-checks-are-stricter.md) - [Remove Ssl3 from the WCF TransportDefaults](remove-ssl3-from-the-wcf-transportdefaults.md) - [RibbonGroup background is set to transparent in localized builds](ribbongroup-background-is-set-to-transparent-in-localized-builds.md) +- [RSACng and DSACng are once again usable in Partial Trust scenarios](RSACng-and-DSACng-not-usable-in-Partial-Trust-scenarios.md) - [RSACng now correctly loads RSA keys of non-standard key size](rsacng-now-correctly-loads-rsa-keys-of-non-standard-keysize.md) - [RSACng.VerifyHash now returns False for any verification failure](rsacng_verifyhash-now-returns-false-for-any-verification-failure.md) - [SignedXml and EncryptedXml Breaking Changes](xml-documents-are-now-consider-invalid-if-they-contains-transforms-that-are-not-allowed-on-digital-signatures.md) +- [SignedXml.GetPublicKey returns RSACng on net462 (or lightup) without retargeting change](SignedXml.GetPublicKey-returns-RSACng-on-net462.md) - [Unicode standard version 8.0 categories now supported](unicode-data-now-support-standard-v8_0-categories.md) - [WCF transport security supports certificates stored using CNG](wcf-transport-security-supports-certificates-stored-using-cng.md) @@ -136,6 +151,8 @@ Please help us improve the [.NET Framework Application Compatibility documents]( - [Change in behavior in Data Definition Language (DDL) APIs](change-in-behavior-in-data-definition-language-(ddl)-apis.md) - [Compiler support for type forwarding when multi-targeting mscorlib](compiler-support-for-type-forwarding-when-multi-targeting-mscorlib.md) - [ConcurrentQueue<T>.TryPeek can return an erroneous null via its out parameter](concurrentqueue_trypeek-can-return-an-erroneous-null-via-its-out-parameter.md) +- [Data written to PrintSystemJobInfo.JobStream must be in XPS format](data-written-to-printsystemjobinfo-jobstream-must-be-in-xps-format.md) +- [Deserialization of MailMessage objects serialized under the .NET Framework 4.5 may fail](serialization-deserialization-of-mailmessage-objects.md) - [Different exception handling for ObjectContext.CreateDatabase and DbProviderServices.CreateDatabase methods](different-exception-handling-for-objectcontext_createdatabase-and-dbproviderservices_createdatabase-methods.md) - [EncoderParameter ctor is obsolete](encoderparameter-ctor-is-obsolete.md) - [Entity Framework version must match the .NET Framework version](ef-version-must-match-netfx-version.md) diff --git a/Documentation/compatibility/RSACng-and-DSACng-not-usable-in-Partial-Trust-scenarios.md b/Documentation/compatibility/RSACng-and-DSACng-not-usable-in-Partial-Trust-scenarios.md new file mode 100644 index 000000000..135713b65 --- /dev/null +++ b/Documentation/compatibility/RSACng-and-DSACng-not-usable-in-Partial-Trust-scenarios.md @@ -0,0 +1,42 @@ +## RSACng and DSACng are once again usable in Partial Trust scenarios + +### Scope +Edge + +### Version Introduced +4.6.2 + +### Version Reverted +4.7.1 + +### Source Analyzer Status +NotPlanned + +### Change Description +CngLightup (used in several higher-level crypto apis, such as `T:System.Security.Cryptography.Xml.EncryptedXml`) and `T:System.Security.Cryptography.RSACng` in some cases rely on full trust. These include P/Invokes without asserting `F:System.Security.Permissions.SecurityPermissionFlag.UnmanagedCode` permissions, and code paths where `T:System.Security.Cryptography.CngKey` has permission demands for `F:System.Security.Permissions.SecurityPermissionFlag.UnmanagedCode`. Starting with the .NET Framework 4.6.2, CngLightup was used to switch to `T:System.Security.Cryptography.RSACng` wherever possible. As a result, partial trust apps that successfully used `T:System.Security.Cryptography.Xml.EncryptedXml` began to fail and throw `T:System.Security.SecurityException` exceptions. + +This change adds the required asserts so that all functions using CngLightup have the required permissions. + +- [ ] Quirked +- [ ] Build-time break + +### Recommended Action +If this change in the .NET Framework 4.6.2 has negatively impacted your partial trust apps, upgrade to the .NET Framework 4.7.1. + +### Affected APIs +* `M:System.Security.Cryptography.DSACng.#ctor(System.Security.Cryptography.CngKey)` +* `P:System.Security.Cryptography.DSACng.Key` +* `P:System.Security.Cryptography.DSACng.LegalKeySizes` +* `M:System.Security.Cryptography.DSACng.CreateSignature(System.Byte[])` +* `M:System.Security.Cryptography.DSACng.VerifySignature(System.Byte[],System.Byte[])` +* `M:System.Security.Cryptography.RSACng.#ctor(System.Security.Cryptography.CngKey)` +* `P:System.Security.Cryptography.RSACng.Key` +* `M:System.Security.Cryptography.RSACng.Decrypt(System.Byte[],System.Security.Cryptography.RSAEncryptionPadding)` +* `M:System.Security.Cryptography.RSACng.SignHash(System.Byte[],System.Security.Cryptography.HashAlgorithmName,System.Security.Cryptography.RSASignaturePadding)` + +### Category +Security + + diff --git a/Documentation/compatibility/SerialPort-background-thread-exceptions.md b/Documentation/compatibility/SerialPort-background-thread-exceptions.md new file mode 100644 index 000000000..13071bafc --- /dev/null +++ b/Documentation/compatibility/SerialPort-background-thread-exceptions.md @@ -0,0 +1,49 @@ +## SerialPort background thread exceptions + +### Scope +Minor + +### Version Introduced +4.7.1 + +### Source Analyzer Status +NotPlanned + +### Change Description +Background threads created with streams no longer terminate the process when OS exceptions are thrown. + +In applications that target the .NET Framework 4.7 and earlier versions, a process is terminated when an operating system exception is thrown on a background thread created with a stream. + +In applications that target the .NET Framework 4.7.1 or a later version, background threads wait for OS events related to the active serial port and could crash in some cases, such as sudden removal of the serial port. + +- [X] Quirked +- [ ] Build-time break + +### Recommended Action + +For apps that target the .NET Framework 4.7.1, you can opt out of the exception handling if it is not desirable by adding the following to to the `` section of your `app.config` file: + +```xml + + + +``` + +For apps that target earlier versions of the .NET Framework but run on the .NET Framework 4.7.1 or later, you can opt in to the exception handling by adding the following to to the `` section of your `app.config` file: + +```xml + + + +``` + +### Affected APIs + +* `T:System.IO.Ports.SerialPort` + +### Category +Core + + diff --git a/Documentation/compatibility/SignedXml.GetPublicKey-returns-RSACng-on-net462.md b/Documentation/compatibility/SignedXml.GetPublicKey-returns-RSACng-on-net462.md new file mode 100644 index 000000000..70443b8b9 --- /dev/null +++ b/Documentation/compatibility/SignedXml.GetPublicKey-returns-RSACng-on-net462.md @@ -0,0 +1,38 @@ +## SignedXml.GetPublicKey returns RSACng on net462 (or lightup) without retargeting change + +### Scope +Edge + +### Version Introduced +4.6.2 + +### Version Reverted +4.7.1 + +### Source Analyzer Status +NotPlanned + +### Change Description + +Starting with the .NET Framework 4.6.2, the concrete type of the object returned by the method changed (without a quirk) from a CryptoServiceProvider implementation to a Cng implementation. This is because the implementation changed from using `certificate.PublicKey.Key` to using the internal `certificate.GetAnyPublicKey` which forwards to . + +- [x] Quirked +- [ ] Build-time break + +### Recommended Action + +Starting with apps running on the .NET Framework 4.7.1, you can use the CryptoServiceProvider implementation used by default in the .NET Framework 4.6.1 and earlier versions by adding the following configuration switch to the [runtime](https://docs.microsoft.com/en-us/dotnet/framework/configure-apps/file-schema/runtime/runtime-element) section of your app config file: + +```xml + +``` + +### Affected APIs +* `M:System.Security.Cryptography.Xml.SignedXml.CheckSignatureReturningKey(System.Security.Cryptography.AsymmetricAlgorithm@)` + +### Category +Security + + diff --git a/Documentation/compatibility/WCF-AddressHeaderCollection-now-throws-an-ArgumentException-if-an-addressHeader-element-is-null.md b/Documentation/compatibility/WCF-AddressHeaderCollection-now-throws-an-ArgumentException-if-an-addressHeader-element-is-null.md new file mode 100644 index 000000000..9a89f8ad3 --- /dev/null +++ b/Documentation/compatibility/WCF-AddressHeaderCollection-now-throws-an-ArgumentException-if-an-addressHeader-element-is-null.md @@ -0,0 +1,35 @@ +## WCF AddressHeaderCollection now throws an ArgumentException if an addressHeader element is null + +### Scope +Minor + +### Version Introduced +4.7.1 + +### Source Analyzer Status +NotPlanned + +### Change Description +Starting with the .NET Framework 4.7.1, the `M:System.ServiceModel.Channels.AddressHeaderCollection.#ctor(System.Collections.Generic.IEnumerable{System.ServiceModel.Channels.AddressHeader})` constructor throws an `T:System.ArgumentException` if one of the elements is `null`. In the .NET Framework 4.7 and earlier versions, no exception is thrown. + +### Recommended Action: +If you encounter compatibility issues with this change on the .NET Framework 4.7.1 or a later version, you can opt-out of it by adding the following line to the `` section of the app.config file:: + +```xml + + + + + +``` + +## Affected APIs +* `M:System.ServiceModel.Channels.AddressHeaderCollection.#ctor(System.Collections.Generic.IEnumerable{System.ServiceModel.Channels.AddressHeader})` + +### Category +* Windows Communication Foundation (WCF) + + \ No newline at end of file diff --git a/Documentation/compatibility/WCF-MsmqSecureHashAlgorithm-default-value-is-now-SHA256.md b/Documentation/compatibility/WCF-MsmqSecureHashAlgorithm-default-value-is-now-SHA256.md new file mode 100644 index 000000000..6d0c0058a --- /dev/null +++ b/Documentation/compatibility/WCF-MsmqSecureHashAlgorithm-default-value-is-now-SHA256.md @@ -0,0 +1,33 @@ +## WCF MsmqSecureHashAlgorithm default value is now SHA256 + +### Scope +Minor +### Version Introduced +4.7.1 +### Source Analyzer Status +NotPlanned +### Change Description +Starting with the .NET Framework 4.7.1, the default message signing algorithm in WCF for Msmq messages is SHA256. In the .NET Framework 4.7 and earlier versions, the default message signing algorithm is SHA1. + +### Recommended Action: +If you run into compatibility issues with this change on the .NET Framework 4.7.1 or later, you can opt-out the change by adding the following line to the ``section of your app.config file: + + +```xml + + + + + +``` + +## Affected APIs +* Not detectable via API analysis + +### Category +* Windows Communication Foundation (WCF) + + diff --git a/Documentation/compatibility/WCF-PipeConnection.GetHashAlgorithm-now-uses-SHA256.md b/Documentation/compatibility/WCF-PipeConnection.GetHashAlgorithm-now-uses-SHA256.md new file mode 100644 index 000000000..5d8473f9d --- /dev/null +++ b/Documentation/compatibility/WCF-PipeConnection.GetHashAlgorithm-now-uses-SHA256.md @@ -0,0 +1,33 @@ +## WCF PipeConnection.GetHashAlgorithm now uses SHA256 + +### Scope +Minor +### Version Introduced +4.7.1 +### Source Analyzer Status +NotPlanned +### Change Description +Starting with the .NET Framework 4.7.1, Windows Communication Foundation uses a SHA256 hash to generate random names for named pipes. In the .NET Framework 4.7 and earlier versions, it used a SHA1 hash. + +### Recommended Action: +If you run into compatibility issue with this change on the .NET Framework 4.7.1 or later, you can opt-out it by adding the following line to the `` section of your app.config file: + +```xml + + + + + +``` + +## Affected APIs +* Not detectable via API analysis + +### Category +* Windows Communication Foundation (WCF) + + + diff --git a/Documentation/compatibility/asp-net-httpruntime-appdomainapppath-throws-nullreferenceexception.md b/Documentation/compatibility/asp-net-httpruntime-appdomainapppath-throws-nullreferenceexception.md index b0b79d8aa..5915c46f3 100644 --- a/Documentation/compatibility/asp-net-httpruntime-appdomainapppath-throws-nullreferenceexception.md +++ b/Documentation/compatibility/asp-net-httpruntime-appdomainapppath-throws-nullreferenceexception.md @@ -7,7 +7,7 @@ Edge 4.6.2 ### Version Reverted -4.6.3 +4.7 ### Source Analyzer Status NotPlanned diff --git a/Documentation/compatibility/change-in-path-separator-character-in-zip-files.md b/Documentation/compatibility/change-in-path-separator-character-in-zip-files.md index 4c4547942..a202005df 100644 --- a/Documentation/compatibility/change-in-path-separator-character-in-zip-files.md +++ b/Documentation/compatibility/change-in-path-separator-character-in-zip-files.md @@ -20,7 +20,7 @@ Decompressing a zip file created by an app that targets a previous version of th ### Recommended Action -The impact of this change on .ZIP files that are decompressed on the Windows operating system by APIs in the .NET Framework namespace should be minimal, since these APIs can seamlessly handle either a slash ("/") or a backslash ("\\") as the path separator character. +The impact of this change on .ZIP files that are decompressed on the Windows operating system by APIs in the .NET Framework namespace should be minimal, since these APIs can seamlessly handle either a slash ("/") or a backslash ("\\") as the path separator character. If this change is undesirable, you can opt out of it by adding a configuration setting to the [``](https://docs.microsoft.com/dotnet/framework/configure-apps/file-schema/runtime/runtime-element.md) section of your application configuration file. The following example shows both the ` or the precondition contract for calls the method, the rewriter emits compiler warning CC1036: "Detected call to method 'System.String.IsNullOirWhteSpace(System.String)' without [Pure] in method." This is a compiler warning rather than a compiler error. +For apps that target the .NET Framework 4.6.1, if the invariant contract for or the precondition contract for calls the method, the rewriter emits compiler warning CC1036: "Detected call to method 'System.String.IsNullOrWhteSpace(System.String)' without [Pure] in method." This is a compiler warning rather than a compiler error. - [ ] Quirked - [ ] Build-time break diff --git a/Documentation/compatibility/data-written-to-printsystemjobinfo-jobstream-must-be-in-xps-format.md b/Documentation/compatibility/data-written-to-printsystemjobinfo-jobstream-must-be-in-xps-format.md new file mode 100644 index 000000000..1b23b4d05 --- /dev/null +++ b/Documentation/compatibility/data-written-to-printsystemjobinfo-jobstream-must-be-in-xps-format.md @@ -0,0 +1,39 @@ +## Data written to PrintSystemJobInfo.JobStream must be in XPS format + +### Scope +Minor + +### Version Introduced +4.5 + +### Source Analyzer Status +NotPlanned + +### Change Description +The `P:System.Printing.PrintSystemJobInfo.JobStream` property exposes the stream of a print job. The user can send raw data to the underlying operating system printing components by writing to this stream. + +Starting with the .NET Framework 4.5 on Windows 8 and later versions of the Windows operating system, data written to this stream must be in XPS format as a package stream. + +- [ ] Quirked +- [ ] Build-time break + +### Recommended Action + +To output print content, you can do either of the following: + +- Use the `T:System.Windows.Xps.XpsDocumentWriter` class to output print content. This is the recommended alternative. + +- Ensure that the data sent to the stream returned by the `P:System.Printing.PrintSystemJobInfo.JobStream` property is in XPS format as a package stream. + +### Affected APIs +* `P:System.Printing.PrintSystemJobInfo.JobStream` + +### Category +Printing + + + + diff --git a/Documentation/compatibility/incorrect-code-generation-when-passing-and-comparing-uint16-values.md b/Documentation/compatibility/incorrect-code-generation-when-passing-and-comparing-uint16-values.md new file mode 100644 index 000000000..05a34c4fe --- /dev/null +++ b/Documentation/compatibility/incorrect-code-generation-when-passing-and-comparing-uint16-values.md @@ -0,0 +1,35 @@ +## Incorrect code generation when passing and comparing UInt16 values + +### Scope +Edge + +### Version Introduced +4.7 + +### Version Reverted +4.7.1 + +### Source Analyzer Status +NotPlanned + +### Change Description +Because of changes introduced in the .NET Framework 4.7, in some cases the code generated by the JIT compiler in applications running on the .NET Framework 4.7 incorrectly compares two `T:System.UInt16` values. For more information, see [Issue #11508: Silent bad codegen when passing and comparing ushort args](https://github.com/dotnet/coreclr/issues/11508) on GitHub.com. + +- [ ] Quirked +- [ ] Build-time break + +### Recommended Action + +If you encounter issues in the comparison of 16-bit unsigned values in the .NET Framework 4.7, upgrade to the .NET Framework 4.7.1. + +### Affected APIs +- * Not detectable via API analysis + +### Category +JIT + + + + diff --git a/Documentation/compatibility/new-64-bit-jit-compiler.md b/Documentation/compatibility/new-64-bit-jit-compiler.md index c9a55b05a..9f7a58cc6 100644 --- a/Documentation/compatibility/new-64-bit-jit-compiler.md +++ b/Documentation/compatibility/new-64-bit-jit-compiler.md @@ -18,7 +18,7 @@ The known differences include the following: - In some cases, execution of production code in a large method body may throw a . - Under certain conditions, structures passed to a method are treated as reference types rather than as value types in Release builds. One of the manifestations of this issue is that the individual items in a collection appear in an unexpected order. - Under certain conditions, the comparison of values with their high bit set is incorrect if optimization is enabled. -- Under certain conditions, particularly when initializing array values, memory initialization by the IL instruction may initialize memory with an incorrect value. This can result either in an unhandled exception or incorrect output. +- Under certain conditions, particularly when initializing array values, memory initialization by the IL instruction may initialize memory with an incorrect value. This can result either in an unhandled exception or incorrect output. - Under certain rare conditions, a conditional bit test can return the incorrect value or throw an exception if compiler optimizations are enabled. - Under certain conditions, if an `if` statement is used to test for a condition before entering a `try` block and in the exit from the `try` block, and the same condition is evaluated in the `catch` or `finally` block, the new 64-bit JIT compiler removes the `if` condition from the `catch` or `finally` block when it optimizes code. As a result, code inside the `if` statement in the `catch` or `finally` block is executed unconditionally. diff --git a/Documentation/compatibility/operationcontext-current-returns-null-in-a-using-clause.md b/Documentation/compatibility/operationcontext-current-returns-null-in-a-using-clause.md index 1bdbe164e..f489ff98a 100644 --- a/Documentation/compatibility/operationcontext-current-returns-null-in-a-using-clause.md +++ b/Documentation/compatibility/operationcontext-current-returns-null-in-a-using-clause.md @@ -13,13 +13,13 @@ Investigating ### Change Description - may return `null` and a may result if all of the following conditions are true: + may return `null` and a may result if all of the following conditions are true: -- You retrieve the value of the property in a method that returns a or . +- You retrieve the value of the property in a method that returns a or . - You instantiate the object in a `using` clause. -- You retrieve the value of the property within the `using statement`. For example: +- You retrieve the value of the property within the `using statement`. For example: ```csharp using (new OperationContextScope(OperationContext.Current)) @@ -47,7 +47,7 @@ To address this issue, you can do the following: } ``` -- Install the latest update to the .NET Framework 4.6.2, or upgrade to a later version of the .NET Framework. This disables the flow of the in and restores the behavior of WCF applications in the .NET Framework 4.6.1 and earlier versions. This behavior is configurable; it is equivalent to adding the following app setting to your configuration file: +- Install the latest update to the .NET Framework 4.6.2, or upgrade to a later version of the .NET Framework. This disables the flow of the in and restores the behavior of WCF applications in the .NET Framework 4.6.1 and earlier versions. This behavior is configurable; it is equivalent to adding the following app setting to your configuration file: ```xml diff --git a/Documentation/compatibility/product-versioning-changes-in-net-framework-4-6-and-later.md b/Documentation/compatibility/product-versioning-changes-in-net-framework-4-6-and-later.md index 782a85dea..aed97ef9a 100644 --- a/Documentation/compatibility/product-versioning-changes-in-net-framework-4-6-and-later.md +++ b/Documentation/compatibility/product-versioning-changes-in-net-framework-4-6-and-later.md @@ -21,6 +21,7 @@ The following are the detailed changes: - The and attributes for managed assemblies have Version values in the form 4.6.X.0 for the .NET Framework 4.6 and its point releases, and 4.7.X.0 for the .NET Framework 4.7 and 4.7.1. + - In the .NET Framework 4.6, 4.6.1, 4.6.2, 4.7, and 4.7.1, the property returns the fixed version string `4.0.30319.42000`. In the .NET Framework 4, 4.5, 4.5.1, and 4.5.2, it returns version strings in the format `4.0.30319.xxxxx` (for example, "4.0.30319.18010"). Note that we do not recommend application code taking any new dependency on the Environment.Version property. For more information, see [How to: Determine which .NET Framework Versions Are Installed](https://docs.microsoft.com/dotnet/framework/migration-guide/how-to-determine-which-versions-are-installed). diff --git a/Documentation/compatibility/serialization-deserialization-of-mailmessage-objects.md b/Documentation/compatibility/serialization-deserialization-of-mailmessage-objects.md new file mode 100644 index 000000000..0063a167b --- /dev/null +++ b/Documentation/compatibility/serialization-deserialization-of-mailmessage-objects.md @@ -0,0 +1,33 @@ +## Deserialization of MailMessage objects serialized under the .NET Framework 4.5 may fail + +### Scope +Minor + +### Version Introduced +4.5 + +### Source Analyzer Status +Investigating + +### Change Description +Starting with the .NET Framework 4.5, `T:System.Web.Mail.MailMessage` objects can include non-ASCII characters. In the .NET Framework 4, only ASCII characters are supported. `T:System.Web.Mail.MailMessage` objects that contain non-ASCII characters and that are serialized under the .NET Framework 4.5 or later cannot be deserialized under the .NET Framework 4. + +- [ ] Quirked +- [ ] Build-time break + +### Recommended Action + +Ensure that your code provides exception handling when deserializing a `T:System.Web.Mail.MailMessage` object. + +### Affected APIs +`T:System.Web.Mail.MailMessage` + +### Category +Networking + + + + diff --git a/Documentation/compatibility/servicepointmanager.securityprotocol-defaults-to-securityprotocoltype.systemdefault.md b/Documentation/compatibility/servicepointmanager.securityprotocol-defaults-to-securityprotocoltype.systemdefault.md index a386637b1..bd5b72308 100644 --- a/Documentation/compatibility/servicepointmanager.securityprotocol-defaults-to-securityprotocoltype.systemdefault.md +++ b/Documentation/compatibility/servicepointmanager.securityprotocol-defaults-to-securityprotocoltype.systemdefault.md @@ -10,9 +10,9 @@ Minor NotPlanned ### Change Description -Starting with apps that target the .NET Framework 4.7, the default value of the property is . This change allows .NET Framework networking APIs based on SslStream (such as FTP, HTTPS, and SMTP) to inherit the default security protocols from the operating system instead of using hard-coded values defined by the .NET Framework. The default varies by operating system and any custom configuration performed by the system administrator. For information on the default SChannel protocol in each version of the Windows operating system, see [Protocols in TLS/SSL (Schannel SSP)](https://msdn.microsoft.com/library/windows/desktop/mt808159.aspx). +Starting with apps that target the .NET Framework 4.7, the default value of the property is . This change allows .NET Framework networking APIs based on SslStream (such as FTP, HTTPS, and SMTP) to inherit the default security protocols from the operating system instead of using hard-coded values defined by the .NET Framework. The default varies by operating system and any custom configuration performed by the system administrator. For information on the default SChannel protocol in each version of the Windows operating system, see [Protocols in TLS/SSL (Schannel SSP)](https://msdn.microsoft.com/library/windows/desktop/mt808159.aspx). -For applications that target an earlier version of the .NET Framework, the default value of the property depends on the version of the .NET Framework targeted. See [Retargeting Changes in the .NET Framework 4.6](docs.microsoft.com/dotnet/framework/migration-guide/retargeting) for more information. +For applications that target an earlier version of the .NET Framework, the default value of the property depends on the version of the .NET Framework targeted. See [Retargeting Changes in the .NET Framework 4.6](docs.microsoft.com/dotnet/framework/migration-guide/retargeting) for more information. - [X] Quirked - [ ] Build-time break @@ -20,7 +20,7 @@ For applications that target an earlier version of the .NET Framework, the defau ### Recommended Action This change affects applications that target the .NET Framework 4.7 or later versions. -If you prefer to use a defined protocol rather than relying on the system default, you can explicitly set the value of the property. +If you prefer to use a defined protocol rather than relying on the system default, you can explicitly set the value of the property. ### Affected APIs - `P:System.Net.ServicePointManager.SecurityProtocol` diff --git a/Documentation/compatibility/wcf-deadlock-results-when-using-reentrant-services.md b/Documentation/compatibility/wcf-deadlock-results-when-using-reentrant-services.md index e5ef06b33..7fb417ee3 100644 --- a/Documentation/compatibility/wcf-deadlock-results-when-using-reentrant-services.md +++ b/Documentation/compatibility/wcf-deadlock-results-when-using-reentrant-services.md @@ -24,13 +24,13 @@ A deadlock may result in a Reentrant service, which restricts instances of the s To address this issue, you can do the following: -- Set the service's concurrency mode to or . For example: +- Set the service's concurrency mode to or . For example: ```csharp [ServiceBehavior(ConcurrencyMode = ConcurrencyMode.Single)] ``` -- Install the latest update to the .NET Framework 4.6.2, or upgrade to a later version of the .NET Framework. This disables the flow of the in . This behavior is configurable; it is equivalent to adding the following app setting to your configuration file: +- Install the latest update to the .NET Framework 4.6.2, or upgrade to a later version of the .NET Framework. This disables the flow of the in . This behavior is configurable; it is equivalent to adding the following app setting to your configuration file: ```xml diff --git a/Documentation/compatibility/wcf-services-using-nettcp-with-ssl-security-and-md5-certificate-authentication.md b/Documentation/compatibility/wcf-services-using-nettcp-with-ssl-security-and-md5-certificate-authentication.md index dc9ae40c6..35924850d 100644 --- a/Documentation/compatibility/wcf-services-using-nettcp-with-ssl-security-and-md5-certificate-authentication.md +++ b/Documentation/compatibility/wcf-services-using-nettcp-with-ssl-security-and-md5-certificate-authentication.md @@ -48,7 +48,7 @@ You can work around this issue so that a WCF client can connect to a WCF server ``` -- If the binding is dynamically configured in source code, update the property to use TLS 1.1 ( or an earlier version of the protocol in the source code. +- If the binding is dynamically configured in source code, update the property to use TLS 1.1 ( or an earlier version of the protocol in the source code. > [!WARNING] > This workaround is not recommended, since a certificate with the MD5 hash algorithm is considered insecure. diff --git a/Documentation/compatibility/windows-forms-icon-tobitmap-method-successfully-converts-icons-with-png-frames.md b/Documentation/compatibility/windows-forms-icon-tobitmap-method-successfully-converts-icons-with-png-frames.md index 1831bcb41..f0d7ebea4 100644 --- a/Documentation/compatibility/windows-forms-icon-tobitmap-method-successfully-converts-icons-with-png-frames.md +++ b/Documentation/compatibility/windows-forms-icon-tobitmap-method-successfully-converts-icons-with-png-frames.md @@ -11,9 +11,9 @@ Investigating ### Change Description -Starting with the apps that target the .NET Framework 4.6, the method successfully converts icons with PNG frames into Bitmap objects. +Starting with the apps that target the .NET Framework 4.6, the method successfully converts icons with PNG frames into Bitmap objects. -In apps that target the .NET Framework 4.5.2 and earlier versions, the method throws an exception if the Icon object has PNG frames. +In apps that target the .NET Framework 4.5.2 and earlier versions, the method throws an exception if the Icon object has PNG frames. This change affects apps that are recompiled to target the .NET Framework 4.6 and that implement special handling for the that is thrown when an Icon object has PNG frames. When running under the .NET Framework 4.6, the conversion is successful, an is no longer thrown, and therefore the exception handler is no longer invoked. diff --git a/Documentation/compatibility/winforms-accessibility-changes-471.md b/Documentation/compatibility/winforms-accessibility-changes-471.md new file mode 100644 index 000000000..f434514c5 --- /dev/null +++ b/Documentation/compatibility/winforms-accessibility-changes-471.md @@ -0,0 +1,157 @@ +## Accessibility improvements in Windows Forms controls + +### Scope +Major + +### Version Introduced +4.7.1 + +### Source Analyzer Status +NotPlanned + +### Change Description +Windows Forms is improving how it works with accessibility technologies to better support Windows Forms customers. These include the following changes: +- Changes to improve display during High Contrast mode. +- Changes to improve the property browser experience. Property browser improvements include: + - Better keyboard navigation through the various drop-down selection windows. + - Reduced unnecessary tab stops. + - Better reporting of control types. + - Improved narrator behavior. +- Changes to implement missing UI accessibility patterns in controls. + +- [x] Quirked +- [ ] Build-time break + +### Recommended Action + +**How to opt in or out of these changes** + +In order for the application to benefit from these changes, it must run on the .NET Framework 4.7.1 or later. The application can benefit from these changes in either of the following ways: + +- It is recompiled to target the .NET Framework 4.7.1. These accessibility changes are enabled by default on Windows Forms applications that target the .NET Framework 4.7.1 or later. + +- It opts out of the legacy accessibility behaviors by adding the following [AppContext Switch](https://docs.microsoft.com/dotnet/framework/configure-apps/file-schema/runtime/appcontextswitchoverrides-element) to the `` section of the app.config file and setting it to `false`, as the following example shows. + +```xml + + + + + + + + + + +``` + +Applications that target the .NET Framework 4.7.1 or later and want to preserve the legacy accessibility behavior can opt in to the use of legacy accessibility features by explicitly setting this AppContext switch to ```true```. + +For an overview of UI automation, see the [UI Automation Overview](https://docs.microsoft.com/dotnet/framework/ui-automation/ui-automation-overview). + +**Added support for UI Automation patterns and properties** + +Accessibility clients can take advantage of new WinForms accessibility functionality by using common, publicly described invocation patterns. These patterns are not WinForms-specific. For instance, accessibility clients can call the QueryInterface method on the IAccessible interface (MAAS) to obtain an IServiceProvider interface. If this interface is available, clients can use its QueryService method to request an IAccessibleEx interface. For more information, see [Using IAccessibleEx from a Client](https://msdn.microsoft.com/en-us/library/windows/desktop/dd561924(v=vs.85).aspx). Starting with the .NET Framework 4.7.1, IServiceProvider and [IAccessibleEx]( https://msdn.microsoft.com/en-us/library/windows/desktop/dd561898(v=vs.85).aspx) (where applicable) are available for WinForms accessibility objects. + +The .NET Framework 4.7.1 adds support for the fillowing UI automation patterns and properties: +- The `T:System.Windows.Forms.ToolStripSplitButton` and `T:System.Windows.Forms.ComboBox` controls support the [Expand/Collapse pattern](https://docs.microsoft.com/dotnet/framework/ui-automation/implementing-the-ui-automation-expandcollapse-control-pattern). +- The `T:System.Windows.Forms.ToolStripMenuItem` control has a [ControlType](https://docs.microsoft.com/dotnet/framework/ui-automation/ui-automation-support-for-the-menubar-control-type) property value . +- The `T:System.Windows.Forms.ToolStripItem` control supports the [Name](https://docs.microsoft.com/dotnet/api/system.windows.automation.automationelement.nameproperty) property and [Expand/Collapse pattern](https://docs.microsoft.com/dotnet/framework/ui-automation/implementing-the-ui-automation-expandcollapse-control-pattern). +- The `T:System.Windows.Forms.ToolStripDropDownItem` control supports [AccessibleEvents](https://docs.microsoft.com/dotnet/api/system.windows.forms.accessibleevents) indicating StateChange and NameChange when drop down is expanded or collapsed. +- The `T:System.Windows.Forms.ToolStripDropDownButton` control has a [ControlType](https://docs.microsoft.com/dotnet/framework/ui-automation/ui-automation-support-for-the-menubar-control-type) property value of . +- The `T:System.Windows.Forms.DataGridViewCheckBoxCell` control supports the [Toggle Pattern](https://docs.microsoft.com/dotnet/api/system.windows.automation.togglepattern). +- The `T:System.Windows.Forms.NumericUpDown` and `T:System.Windows.Forms.DomainUpDown` controls support the [Name](https://docs.microsoft.com/dotnet/api/system.windows.automation.automationelement.nameproperty) and have a [ControlType](https://docs.microsoft.com/dotnet/framework/ui-automation/ui-automation-support-for-the-spinner-control-type) of . + +**Improvements to the PropertyGrid control** + +The .NET Framework 4.7.1 adds the following improvements to the PropertyBrowser control: +- The **Details** button in the error dialog that is displayed when the user enters an incorrect value in the `T:System.Windows.Forms.PropertyGrid` control supports the [Expand/Collapse pattern](https://docs.microsoft.com/dotnet/framework/ui-automation/implementing-the-ui-automation-expandcollapse-control-pattern), state and name change notifications, and a [ControlType](https://docs.microsoft.com/dotnet/framework/ui-automation/ui-automation-support-for-the-menubar-control-type) property with a value of . +- The message pane displayed when the **Details** button of the error dialog is expanded is now keyboard accessible and allows Narrator to announce the content of the error message. +- The [AccessibleRole](https://docs.microsoft.com/dotnet/api/system.windows.forms.accessiblerole) of rows in `T:System.Windows.Forms.PropertyGrid` control have changed from "Row" to "Cell". The cell maps to UIA ControlType "DataItem", which allows it to support appropriate keyboard shortcuts and Narrator announcements. +- The `T:System.Windows.Forms.PropertyGrid` control rows which represent header items when the `T:System.Windows.Forms.PropertyGrid` control has a `P:System.Windows.Forms.PropertySort` property set to `F:System.Windows.Forms.PropertySory.Categorized` have a [ControlType](https://docs.microsoft.com/dotnet/framework/ui-automation/ui-automation-support-for-the-menubar-control-type) property value of +- The `T:System.Windows.Forms.PropertyGrid` control rows which represent header items when the `T:System.Windows.Forms.PropertyGrid` control has a `P:System.Windows.Forms.PropertySort` property set to `F:System.Windows.Forms.PropertySory.Categorized` support the [Expand/Collapse pattern](https://docs.microsoft.com/dotnet/framework/ui-automation/implementing-the-ui-automation-expandcollapse-control-pattern). +- Improved keyboard navigation between the grid and the ToolBar above it. Pressing "Shift-Tab" now selects the first ToolBar button, instead of the whole ToolBar +- `T:System.Windows.Forms.PropertyGrid` controls displayed in High Contrast mode will now draw a focus rectangle around the ToolBar button which corresponds to the current `P:System.Windows.Forms.PropertySort` property value. +- `T:System.Windows.Forms.PropertyGrid` controls displayed in High Contrast mode and with a `P:System.Windows.Forms.PropertySort` property set to `F:System.Windows.Forms.PropertySory.Categorized` will now display the background of category headers in a highly contrasting color. +- `T:System.Windows.Forms.PropertyGrid` controls better differentiates between ToolBar items with focus and the ToolBar items which indicate the current value of the `P:System.Windows.Forms.PropertySort` property. This fix consists of a High Contrast change and a change for non-High Contrast scenarios. +- `T:System.Windows.Forms.PropertyGrid` control ToolBar items which indicates the current value of the `P:System.Windows.Forms.PropertySort` property support the [Toggle Pattern](https://docs.microsoft.com/dotnet/api/system.windows.automation.togglepattern). +- Improved Narrator support for distinguishing the selected alignment in the Alignment Picker. +- When an empty `T:System.Windows.Forms.PropertyGrid` control is displayed on a form, it will now receive focus where previously it would not. + +**Use of OS-defined colors in High Contrast themes** + +- `T:System.Windows.Forms.Button` and `T:System.Windows.Forms.CheckBox` controls with `P:System.Windows.Forms.Control.FlatStyle` set to , which is the default style, now use OS-defined colors in High Contrast theme when selected. Previously, text and background colors were not contrasting and were hard to read. +- `T:System.Windows.Forms.Button`, `T:System.Windows.Forms.CheckBox`, `T:System.Windows.Forms.RadioButton`, `T:System.Windows.Forms.Label`, `T:System.Windows.Forms.LinkLabel` and `T:System.Windows.Forms.GroupBox` with`P:System.Windows.Forms.Control.Enabled` set to _false_, used a shaded color to render text in High Contrast themes, resulting in low contrast against the background. Now these controls use "Disabled Text" color defined by the OS. This fix applies to controls with `P:System.Windows.Forms.Control.FlatStyle` property set to a value other than `F:System.Windows.Forms.FlatStyle.System`. The latter controls are rendered by the OS. +- `T:System.Windows.Forms.DataGridView` now renders a visible rectangle around the content of the cell which has the current focus. Previously, this was not visible in certain High Contrast themes. +- `T:System.Windows.Forms.ToolStripMenuItem` controls with a `P:System.Windows.Forms.ToolStripItem.Enabled` property set to _false_ now use the "Disabled Text" color defined by the OS. +- `T:System.Windows.Forms.ToolStripMenuItem` controls with a `P:System.Windows.Forms.ToolStripItem.Checked` property set to _true_ now render the associated check mark in a contrasting system color. Previously the check mark color was not contrasting enough and not visible in High Contrast themes. + + +NOTE: Windows10 has changed values for some high contrast system colors. Windows Forms Framework is based on the Win32 framework. For the best experience, run on the latest version of Windows and opt in to the latest OS changes by adding an app.manifest file in a test application and uncommenting the following code: +``` +     +     +``` +**Improved keyboard navigation** + +- When a `T:System.Windows.Forms.ComboBox` control has `P:System.Windows.Forms.ComboBox.DropDownStyle` set to `F:System.Windows.Forms.DropDownStyle.DropDownList` and is the first control in the tab order on the form, it now displays a focus rectangle when the parent form is opened using the keyboard. Before this change, keyboard focus was on this control, but a focus indicator was not rendered. + +**Improved Narrator support** +- The `T:System.Windows.Forms.MonthCalendar` control has added support for assistive technologies to access the control, including the ability for Narrator to read the value of the control when previously it could not. +- The `T:System.Windows.Forms.CheckedListBox` control now notifies Narrator when the `P:System.Windows.Forms.CheckState` property has been changed. Previously, Narrator did not recieve notification and as a result users would not be informed that the `P:System.Windows.Forms.CheckState` had been updated. +- The `T:System.Windows.Forms.LinkLabel` control has changed the way it notifies Narrator of the text of in the control. Previously, Narrator announced this text twice and read "&" symbols as real text even though they are not visible to a user. The duplicated text was removed from the Narrator announcements, as well as unnecessary "&" symbols. +- The `T:System.Windows.Forms.DataGridViewCell` control types now correctly report the read-only status to Narrator and other assistive technologies. +- Narrator is now able to read the System Menu of child windows in [Multiple-Document Interface](https://docs.microsoft.com/en-us/dotnet/framework/winforms/advanced/multiple-document-interface-mdi-applications) applications. +- Narrator is now able to read `T:System.Windows.Forms.ToolStripMenuItem` controls with a `P:System.Windows.Forms.ToolStripItem.Enabled` property set to _false_. Previously, Narrator was unable to focus on disabled menu items to read hte content. + + +### Affected APIs not detectable via API analysis +* `M:System.Windows.Forms.ToolStripDropDownButton.CreateAccessibilityInstance` +* `P:System.Windows.Forms.DomainUpDown.DomainUpDownAccessibleObject.Name` +* `T:Sysetm.Windows.Forms.MonthCalendar.MonthCalendarAccessibleObject` + + +### Category +Windows Forms + + + + + diff --git a/dotnet-consumer-projects.md b/dotnet-consumer-projects.md index a7fa923f9..ec370e229 100644 --- a/dotnet-consumer-projects.md +++ b/dotnet-consumer-projects.md @@ -4,20 +4,20 @@ This community maintained list showcases .NET open source consumer projects. It Please sort projects alphabetically and provide a one-line description. GitHub/CodePlex (or other source) links are preferred, but feel free to also include marketing sites. Create new sections, as appropriate. -* Media Streaming/Media file Editor +## Media Streaming/Media file Editor * [Media Browser](https://github.com/mediabrowser/) - [www.mediabrowser.tv](http://www.mediabrowser.tv) - A client/server application that allows you to easily manage your own media content and present it in an eye catching way. Server runs on Windows, Linux and Mac. Clients are for WP, Android, iOS, Media Centre, Windows, Roku, etc. * [Pinta](https://github.com/PintaProject/Pinta) - simple drawing/editing program modeled after Paint.NET -* Audio players +## Audio players * [Banshee](https://github.com/GNOME/banshee) - A cross-platform multimedia player * [Espera](https://github.com/flagbug/Espera) - A media player that plays your music, YouTube videos, SoundCloud songs, has a special "party mode" and an Android remote control. * [Simple Music Player](https://github.com/punker76/simple-music-player) SimpleMP or Simple Music Player is a simple and easy to use music player for free. It plays the most common music files (mp3, ogg, wma, wav) in a simple way. - * [Waf Music Manager](http://wmm.codeplex.com) – is a simple and fast application that makes fun to manage the local music collection. + * [Waf Music Manager](https://jbe2277.github.io/musicmanager) – is a simple and fast application that makes it fun to manage the local music collection. -* Internet/Chat Applications +## Internet/Chat Applications * [Smuxi IM](https://github.com/meebey/smuxi) - free, distributed and user-friendly IRC / Twitter / XMPP / Campfire / JabbR client for Linux, Windows and Mac OS X -* Utilities +## Utilities * [Gmail Notifier Plus](https://github.com/shellscape/Gmail-Notifier-Plus) - An app to monitor multiple Gmail and Google Apps for Work Gmail accounts from a single, compact point, sitting in Windows 7/8/8.1 taskbar. * [YouCast](https://github.com/I3arnon/YouCast) - YouCast allows you to subscribe to video feeds on YouTube as podcasts in any standard podcatcher like iTunes, BeyondPod on Adroid or even Zune PC and so forth. * [Ember](https://github.com/Embershot/Ember) - Simple & Beautiful Screenshot App @@ -25,13 +25,13 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [Waf File Hash Generator](http://fhg.codeplex.com) - is a simple tool to generate the hash values of one or more files. It supports: SHA512, SHA256, SHA1 and MD5 in hexadecimal or Base64 format. * [Zero Install](https://github.com/0install/0install-win) - [0install.de](http://0install.de/) - is a decentralized cross-platform software-installation system. Run apps with a single click or control every detail. -* Administration +## Administration * [OpenPetra](https://github.com/openpetra/openpetra) - [www.openpetra.org](https://www.openpetra.org) - An administration software for charities that can be used to manage personnel, supporters, book keeping, gift receipting, accounts payable, conferences etc. -* Crypto Currency +## Crypto Currency * [CoiniumServ](https://github.com/CoiniumServ/CoiniumServ) - a high performance, extremely efficient, platform-agnostic, easy to setup bitcoin & alt-coin pool server implementation. It features stratum services, reward, payment, share processors, vardiff & ban managers, user-friendly embedded web-server & front-end and a full-stack API. -* Online Algorithm Competitions +## Online Algorithm Competitions * [OpenJudgeSystem](https://github.com/NikolayIT/OpenJudgeSystem) - an open source system for online algorithm competitions. The algorithm competitions (currently available in C#, C++, JavaScript, Java and PHP programming languages) are timed contests where all contestants compete online and are given the same algorithmic problems to solve under the same time and memory constraints. This list is just a starting point - also take a look at all the projects on [CodePlex](http://www.codeplex.com/) and on [GitHub Trending C#](https://github.com/trending?l=csharp). diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 41401037d..1f79669f3 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -92,7 +92,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [MassTransit](https://github.com/MassTransit/MassTransit) - A distributed application framework for RabbitMQ and Azure Service Bus. * [NServiceBus](https://github.com/Particular/NServiceBus) - The most popular service bus for .NET * [RestBus](https://github.com/tenor/RestBus) - Easy Asynchronous Messaging and Queueing for .NET - + ## Libraries * [Albedo](https://github.com/ploeh/Albedo) - A .NET library targeted at making Reflection programming more consistent, using a common set of abstractions and utilities. * [Algorithmia](https://github.com/SolutionsDesign/Algorithmia) - Algorithms and Data structures @@ -100,6 +100,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [ArcGIS.PCL](https://github.com/davetimmins/ArcGIS.PCL) - Call ArcGIS Server REST API resources. You can also convert between ArcGIS features and GeoJSON. * [Argument](https://github.com/ashmind/Argument) - Argument validation microframework that does one thing in the simplest way possible. * [AshMind.Extensions](https://github.com/ashmind/ashmind-extensions) - A set of very conservative extension methods most of which closely follow naming and design patterns of .NET Base Class Library. + * [AspectCore](https://github.com/dotnetcore/AspectCore-Framework) - AspectCore is an Aspect-Oriented Programming based cross platform framework for .NET Core and .NET Framework. * [ASP.NET MVC Boilerplate Framework](https://github.com/ASP-NET-MVC-Boilerplate/Framework) - ASP.NET MVC Extensions and Helper NuGet packages. * [AsyncCollections](https://github.com/HellBrick/AsyncCollections) - A set of lock-free thread-safe collections designed to be used asynchronously. * [Automatonymous](https://github.com/MassTransit/Automatonymous) - An asynchronous state machine engine with messaging support. @@ -171,6 +172,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [Strongly Typed Client API Generators for ASP.NET Web API](https://webapiclientgen.codeplex.com/) - Strongly Typed Client API Generators generate strongly typed client API in TypeScript and C# codes supporting desktop, Universal Windows, Android and iOS. * [Stuntman](https://github.com/ritterim/stuntman) - OWIN middleware for quickly mocking authentication/authorization use case scenarios locally. Supports Cookie Authentication and Bearer Token Authentication. * [SuperSocket](https://github.com/kerryjiang/SuperSocket) - An extensible socket server engine which supports .NET and Mono + * [surging](https://github.com/dotnetcore/surging) - The distributed micro service framework based on .NET Core provides high-performance RPC Communications * [Sweet.Jayson](https://github.com/ocdogan/Sweet.Jayson) - Fast, reliable, easy to use, fully json.org compliant, thread safe C# JSON library for server side and desktop operations. * [VkSharp](https://github.com/kasthack/vksharp) - VK client library * [TomP2P.NET](https://github.com/tomp2p/TomP2P.NET) - A P2P-based high performance key-value pair storage library for .NET @@ -221,7 +223,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [Radical](https://github.com/RadicalFx/radical) - An infrastructure framework whose primary role is to help in the development of composite WPF/Silverlight/WP/WinRT applications based on the Model View ViewModel pattern. * [ReactiveUI](https://github.com/reactiveui/ReactiveUI) - An MVVM framework that integrates with the Reactive Extensions for .NET to create elegant, testable User Interfaces that run on any mobile or desktop platform. * [Simple Mvvm Toolkit](http://simplemvvmtoolkit.codeplex.com/) - Provides a simple framework and set of tools for getting up to speed quickly with applications based on the MVVM design pattern. - * [WPF Application Framework (WAF)](http://waf.codeplex.com) - A lightweight Framework that helps you to create well structured WPF Applications. It supports you in applying a Layered Architecture and the Model-View-ViewModel pattern. + * [Win Application Framework (WAF)](https://github.com/jbe2277/waf) - A lightweight Framework that helps you to create well structured XAML Applications. It supports you in applying a Layered Architecture and the Model-View-ViewModel pattern. ## Tools * [API Port](https://github.com/microsoft/dotnet-apiport) - A tool that will analyze code for compatability issues when migrating between .NET Framework releases. @@ -252,7 +254,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [Snoop WPF](https://github.com/cplotts/snoopwpf) - Snoop - The WPF Spy Utility * [Sql Bulk Copy Sync](https://github.com/WCOMAB/SqlBulkSync) * [Vagabond](https://github.com/nessos/Vagabond) - Automated dependency resolution and dynamic assembly compilation framework. - * [Waf DotNetPad](http://dotnetpad.codeplex.com) - The Waf DotNetPad is a simple and fast code editor that makes fun program with C# or Visual Basic. + * [Waf DotNetPad](https://jbe2277.github.io/dotnetpad) - The Waf DotNetPad is a simple and fast code editor that makes fun program with C# or Visual Basic. * [Weighted Selector](https://github.com/kinetiq/Ether.WeightedSelector/) - Easy to use (but high performance!) weighted selection implementation. * [XDav](https://github.com/rezabazargan/xDav) - A .net server mudole for webdav standard. * [ZeroToNine](https://github.com/ploeh/ZeroToNine) - A tool for maintaining .NET Assembly versions across multiple files. diff --git a/releases/UWP/README.md b/releases/UWP/README.md index 85fc598c8..e21b6ef65 100644 --- a/releases/UWP/README.md +++ b/releases/UWP/README.md @@ -6,6 +6,7 @@ You can learn about Microsoft.NETCore.UniversalWindowsPlatform [releases](#relea You can see what was included in each .NET Native (Microsoft.NETCore.UniversalWindowsPlatform) release. +- [.NET Native 2.0 (UWP 6.0.x)](net-native2.0/README.md) - [.NET Native 1.7 (UWP 5.4.x)](net-native1.7/README.md) - [.NET Native 1.6 (UWP 5.3.x)](net-native1.6/README.md) - [.NET Native 1.4 (UWP 5.2.x)](net-native1.4/README.md) diff --git a/releases/UWP/net-native2.0/README.md b/releases/UWP/net-native2.0/README.md new file mode 100644 index 000000000..a8f02807d --- /dev/null +++ b/releases/UWP/net-native2.0/README.md @@ -0,0 +1,68 @@ +# .NET Native 2.0 (UWP 6.0.x) Release Notes + +You can see what was included in each .NET Native 2.0 ([Microsoft.NETCore.UniversalWindowsPlatform 6.0.x](https://www.nuget.org/packages/Microsoft.NETCore.UniversalWindowsPlatform)) release, below. + +When using Visual Studio these packages require Visual Studio 2017 Version 15.4 or later. + +### 6.0.1 (October 5, 2017) + + +#### .NET Standard 2.0 Support + +- The Windows Fall Creators Update brings support for .NET Standard 2.0 to UWP development. In order to leverage the new APIs with .NET Standard 2.0, you need to set the minimum version target of your application to the Windows Fall Creators Update SDK preview. You will then have the ability to reference .NET Standard 2.0 NuGet packages, class libraries, and APIs directly from your UWP application. +- More information is available on .NET Standard 2.0 support [here](https://docs.microsoft.com/en-us/dotnet/standard/net-standard). + +#### Improvements to Program Optimization, Throughput and Debuggability. + +- This release of the .NET Native code generator includes substantial improvements to optimization, throughput and debuggability. This includes many new features from the Visual C++ compiler in Visual Studio 2017 Version 15.4. For example, a new SSA optimizer has been enabled and adapted to managed code and carefully tuned. +- This release also includes targeted improvements in + - native pointer tracking + - static initialization of scalars and arrays + - loop unrolling and vectorization + - write barrier and interference analysis + - code motion in the presence of exception handling + - iterative devirtualization-inlining which allows deeper inlining of small routines in common scenarios like class iterators. +- The code generator also generates accurate optimized debugging support for dead parameters, inlined functions, and default value initialization. There are 78 code generator improvements in this release, including 8 GC-hole bug fixes which improved the quality and reliability of the compiler itself. + +#### Changes to the Debug Runtime (CoreCLR) + +- The Debug runtime (CoreCLR) is now based on the open source .NET Core, including the RyuJIT code generator. Users might notice slight differences in behavior, such as floating-point precision in the x86 runtime, but most code should run just as it did in earlier releases. + + +#### .NET Native Incremental Build Support (Preview) + +- This release contains an opt-in preview for .NET Native incremental compilation support. +- More information is available on incremental compilation support [here](incremental-compilation.md). + +#### .NET Native Function Evaluation Debugger Support (Preview) + +- This release contains an opt-in preview for .NET Native Function Evaluation (aka "FuncEval") Debugger support. +- More information is available on FuncEval support [here](funceval.md). + + +#### Known Issues and Workarounds + +- **.NET Standard 2.0 and other .NET Library NuGet Packages** + - While the vast majority of .NET Standard 2.0 APIs will work normally on the .NET Native platform, there are a small number of exceptions where the .NET Native platform could not fully support the expected behavior, typically because it would require JIT compilation or it is restricted by the app sandbox (AppContainer). An example is reading and writing process information with the Process class. As well, there are also some limitations in certain API that is not part of .NET Standard 2.0. See [https://github.com/dotnet/corefx/wiki/UWP-Compat](https://github.com/dotnet/corefx/wiki/UWP-Compat) for more details. + - Although NuGet will now allow you to reference packages that expect the desktop .NET Framework, it cannot determine whether those libraries use an API that is not available on .NET Native. To warn you of this, NuGet and Visual Studio will display a warning like, ```NU1701: Package 'PackageNameHere 1.0.0' was restored using '.NETFramework,Version=v4.6.1' instead of the project target framework '.NETStandard,Version=v2.0'. This package may not be fully compatible with your project.```. When you receive this warning, you will want to make sure through testing or by reference to the library author that the package will indeed work in your .NET Native project. Over time, we expect many of these packages to re-package to avoid the warning. + - ```System.Diagnostics.Debugger.Log``` and ```System.Diagnostics.Debugger.IsLogging``` do not report the message to the debugger on Release (.NET Native) builds. Debug (CoreCLR) builds function as expected. [405171] + - ```System.Net.HttpWebRequest``` behavior change regarding POST'ing empty content with entity body related request headers (i.e. 'Content-Type', et. al.) from prior .NET Native releases. See [https://github.com/dotnet/corefx/wiki/ApiCompat](https://github.com/dotnet/corefx/wiki/ApiCompat) for more details. + - Exception thrown from C# dynamic binder when calling interface methods on WinRT objects. [476163] + - Exception: ```Microsoft.CSharp.RuntimeBinder.RuntimeBinderException:The call is ambiguous between the following methods or properties: System.Collections.Generic.IDictionary.Add(string, object) and System.Collections.Generic.IDictionary.Add(string, object)``` + - Workaround: The recommended fix would be to cast the dynamic object to the desired interface type and just make a call statically. + - Example: ```dynamicObject.Add("key", value);``` + - Fix: ```((IDictionary)dynamicObject).Add("key", value);``` + +- **Build Warnings and other Compilation Changes** + - App developers encountering an OutOfMemoryException during Release compilation can specify ```true``` in their project properties. This will run part of the toolchain on a single thread reducing the amount of memory used, and it may prevent the exception. + - App sizes and build times have increased by approximately 20% due to support for additional .NET Standard 2.0 APIs + - ```MCG0004:InternalAssert Assert Failed: unexpectedly found non-native type during [UNKNOWN] Caused by an interop-eligible struct(outer) containing a second struct(inner) as a field with explicit layout and one or more static fields.``` The workaround is to declare all the static fields of the inner struct before the instance fields. [484367] + - Clicking ```"Enable static analysis for .NET Native"``` option in UWP project properties fails with the error: ```Could not find file 'x86\ilc\lib\Facades'``` + - Workaround: Uncheck the ```"Enable static analysis for .NET Native"``` option in project properties under the Build pane + +## Resources + +- [Getting Started with .NET Native](https://docs.microsoft.com/en-us/dotnet/framework/net-native/getting-started-with-net-native) +- [Microsoft.NETCore.UniversalWindowsPlatform NuGet Package Details](https://www.nuget.org/packages/Microsoft.NETCore.UniversalWindowsPlatform) +- [Windows Dev Center](https://developer.microsoft.com/en-us/windows/apps/getstarted) +- [Downloads and tools for Windows 10](https://developer.microsoft.com/en-us/windows/downloads) diff --git a/releases/UWP/net-native2.0/funceval.md b/releases/UWP/net-native2.0/funceval.md new file mode 100644 index 000000000..be93a31ab --- /dev/null +++ b/releases/UWP/net-native2.0/funceval.md @@ -0,0 +1,61 @@ +# .NET Native 2.0 Function Evaluation Debugger Support (Preview) + +As part of the [.NET Native 2.0 release](README.md), we have shipped a preview of the FuncEval feature that aims to improve diagnostics and overall debugging experience for UWP Applications compiled with the .NET Native 2.0 toolchain. Please note that since this is only a public preview of the feature, it is turned off by default and can be turned on by setting a registry key. Once FuncEval support is enabled, you should be able to inspect WinRT Properties under the debugger, that you previously could not. + +## How to use Function Evaluation (FuncEval) in Visual Studio 2017 15.4 + +1. Start by creating a blank UWP Application +2. Switch the application to use **Debug Configuration** and select **Compile with .NET Native tool chain** in the project property page + + ![Visual Studio FuncEval Config](images/funceval-0.png) + +3. Create a TextBox and a Button and then write the following code : + ```private void Button_Click(object sender, RoutedEventArgs e) + { + this.TextField.Text = this.TextField.Text + "Blah"; + } + ``` +4. Set a breakpoint in the Button_Click event handler + - Inspecting the ```this.TextField.Text``` will report ```Evaluation of method Windows.UI.Xaml.Controls.TextBox.get_Text requires reading field.System.RuntimeTypeHandle._value, which is not available in this context.``` + + ![Visual Studio FuncEval Disabled](images/funceval-1.png) + +5. Now enable FuncEval support by setting the NetNativeFuncEvalEnabled registry key + - Open a command prompt and execute: + - ```"C:\Program Files (x86)\Microsoft Visual Studio\Enterprise\Common7\IDE\VsRegEdit.exe" set "C:\Program Files (x86)\Microsoft Visual Studio\Enterprise" HKCU Debugger NetNativeFuncEvalEnabled DWORD 1``` + - Note that you will have to change the Visual Studio Path (```"C:\Program Files (x86)\Microsoft\Visual Studio\Enterprise"```) to match your local environment. + +6. There is no need to close or restart Visual Studio, just run the command and debug again. Now the debugger autos menu will show you the contents of this.TextField.Text: + +![Visual Studio FuncEval Enabled](images/funceval-2.png) + +## How to disable Function Evaluation (FuncEval) in Visual Studio 2017 15.4 + +- If the FuncEval preview is causing any problems, you can turn it off by changing the registry key value to zero (0) + - Open a command prompt and execute: + - ```"C:\Program Files (x86)\Microsoft Visual Studio\Enterprise\Common7\IDE\VsRegEdit.exe" set "C:\Program Files (x86)\Microsoft Visual Studio\Enterprise" HKCU Debugger NetNativeFuncEvalEnabled DWORD 0``` + - Again, you will have to change the Visual Studio Path (```"C:\Program Files (x86)\Microsoft\Visual Studio\Enterprise"```) to match your local environment. + + +## Windows.UI.Xaml.UnhandledExceptionEventArgs + +One particular property that developers really want to inspect is the Exception field on the Windows.UI.Xaml.UnhandledExceptionEventArgs object. To do so, add the following to your Default.rd.xml: + +``` + + + + + + +``` + +With the Default.rd.xml setup and the FuncEval feature enabled you can inspect the expection object now. In general, this approach should work for all properties that you would like to inspect. + +## Known Issues + +- The FuncEval Preview currently does not support inspection of generic functions or properties. + +## Provide Feedback + +Please continue to send questions and suggestions to dotnetnative@microsoft.com. We look forward to hearing from you and seeing what great things you will build. diff --git a/releases/UWP/net-native2.0/images/funceval-0.png b/releases/UWP/net-native2.0/images/funceval-0.png new file mode 100644 index 0000000000000000000000000000000000000000..644eef5f28c0123d8b0d4d75403dfde1be37cc12 GIT binary patch literal 101597 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 literal 0 HcmV?d00001 diff --git a/releases/UWP/net-native2.0/images/funceval-1.png b/releases/UWP/net-native2.0/images/funceval-1.png new file mode 100644 index 0000000000000000000000000000000000000000..0fb99b19ca561517b1ff6b55ca5c96ddcd9e631e GIT binary patch literal 607829 zcmYhiQ*>odv_0JEbZi?P`@}}awmZh@I33%zopfy5woh!^Hox5ayWbf9hduVLdZ>q8 zwdR_&=3Jo)a^eWExUk>8eM69x5K;Q}4FdezH}D>4$gdfxruNOR7nr@0xX`!CN&Mrl z!4DHbS;24LYNFxZ3?RP7Fg6mJ_TRoC_WsWUhCwCe^X=Pbfux9_ii_^qJCqN>kRt`G zH;4SBDxXpGwdBijRuIySc9Z$o zf{et6@bDCe_|_jF=hD}WPUk;9V9*L=MO~>Um6bLpDrd@vYO3xEO>CjYs1p6x8}7;5 z(t01x%{JS;fpAz1+W+szPD8NSXm=Lh%MYQPm^5QQ-5sbjR^}|a;=KLcYv}E}br%@= z(@YqI)K(zrIUTzRwz%6ex*ja*bu-ZZzvT{)+WE79=~*e4m!DeH(j7C~_b)NY$$&=9 z0FY})0DYDTTR^Im>2Ix6BPO}@@8jRn6J&noXSSQ?#zK=AqB5&XlA$KGu_y|=Anxg` zeNTx?F3W>8oxgFOe5^h2UldO(oIyj)FSJ**;!XWn2EiKy7yO$_nCtA- zj$+Td=M*NiqV;zf7u|8e9t|@JEW+xe8TWT>9FsRP#m50NOK-Yzd9$0JX=bm7ukf3@ zsT*B;`t9X5Pk9TXL^7V#2dZTwB}?TO)>9YajRVG6W_ z3O5tdRKBpTWv0iDL+qs<@12$Y#fV&O`QOeBya|%wHdx-G-M+tPWhhR%S@lxJ$L{Pf zpN>Fm-@D%PThL}#^MxN)B=o_^ox;$(dl(i&=i?9&p|NBtp%yB8ncc!;aRjFxnAFYx z5LVnCcO}Q*EbUK)%hppM*pCz{p3yHLv z7cfi5gt&g+BNSE*5v&er>4(UfCBsU~{8#Nsg%xW3Sdw#x%Ya;8vBhl3xJn$zttS^! z&8yUO7F z1pohHf@!lGX2N68!~3&swEG$1Ff248i80;93PQ>qRPa77s@Bvy92xeD=A9(Ang-mc zCZ&>LL=Ezfe2jK`Z}xn=i1y&p-00*POnH5l3g7ST$Q{8CY&CxnFP_Yz*GdxDSn9DI z1hK0`Ki39m%8v7~p?u}TgWr=wA=Ye$0uY2G7mJg&8>-im(ee*0xObUxBzKD3=GBABm zNUa@bSfZ@@>yU`ym|{fKc_;zRG|Qca%UU__M3$@XB?f;DU74~PzI5I1#`m1DS`!2q z8IUx5|G)^DODS$rfsya4SDf;i+e-ChjkK7qOY|N2vEdF@*5eFy7*lKuwr5|Ifdr zG0&jyHUlM$67b{5{$V&bL1bX-ucC$g=0#)Tqx*&Yq(e}D!sd^!eY>CCK4Zl5v9IMS-paefxH$bKH$uY z*@W)=K!PbqqvNZw^zlTRN`utkJxp}iu0|-y{__&S+Wqboe0XF+(8XM;-3pk!JrKmE zgPE^ntC46Z_TnHV%Cuo_+mC6?KLIh?AqtA!S&M;{lTH&n{nM_DwK^|EZj&triZ@$Ab17tFdif z9^EiHU?Q6Pq1iex39qU|Vu25?j#FNoTi+=`y_O_KB3bpsFfkHhZ2kBj4ZC0|U?M@5 z#{<^vf8g5Wktn4QJ|px`P~H>^S)gD|{*H$8{VZdN&mxrOsFZPI@uUI=1QZyESC8WC ze=+}n@*tksl)_lP<^WF{xb+4Jv@Xh*)hZRY$umk8Tp7SRD7{T zHEV=frTy_QUJ~JiEXEgadt|^dmgY~}8bJ({s?##;w-(B0@bI}jnxQ?eNfx4A7(T%G z0ny;*iAgTIH1wGFBh9G)~ z4axk8@`~X$v~rE>m|i$P42-5wq)- zE%h;iwC}~+EG{S^MI%;8uMxvi!nr9L<5ip`O{!6daZV}db7^7vifrnE@jlPa+Vywy zY36{pc%J*Jld-m!bWV2Qtz{#Nb&em$D0N$xB320u$m_S4d93{E8%5>(VI`oi3%Ez~qBP^iWl1JH>_l zUY;>Z)jyisGe9#_O>}x={%c!Ewr1IG;@c6hnc9dF#s&=uO?0}q6!=zr8D#?Xh)iiJ zufhCvoDD<^Q?B#?SEv6cNe|HfIvJ<(hkw>HA^M~APr_4sDikkqj9xR-xL<>V&1{J^ zwGsFaEY&unS&Zxp(^X<;dRtPBy#8pFza)s|N`0$L+0C%Fvs232y-umT%1BF_QFV|* zixg2k7W1Y-XpS?n^uR~4%?gSLYvPi$jXws#)V~cF+RDJ_ux~0bhUilTjFd>qMw>00 z*+Y;DqRy<4w~8kQm1Z=er!PYFX`ri^nZjd)PUpVh zA9uaQ#M8V$yvYtaKn0nsSJTZ3?4@+}^7Ls`AAx?%D*y8hJv+4M>u-t#XQ6zC?Ui}1 zml9?u#MMAL7=~Dg)KROi^RAAF_6m}1<63m&;U>{VVr^4|C?7* zqPJSJpCj&Ge4j&~RX#69yN|P*1>&Rnjzyj`!~|0Gy`N*&|5VCSmW3A()$xtjb(D&z zL;ThnZ*J|+G-b|&NyX4(QZLkAL;pi#ho?6ET7luy8p*yjv@;N{S~A$oGO<1`#n)B2 zwo8IqxzT2`-OfA4t8^we?s##SQI=+PptyH%5Hd0lS0Igo{NdM=J?U9;w3VT%{t{|t zX4Zqjq+(jE)OV2nX;|68tZ+~j^~`8cxu7!~%VAgKobz|KQSjyL@56HH2~d>1=d61{ z$Bdg!Mz1}?-c>8sY;(3cOE%-w|1Ugk)S4;F_1RN9=Q}-5tQ5~bOxOB(6$A0(>pXqOA_hwirChjgYx+@F7 zT-U9XS*IVq`m&iN9I|d-C1~PMNt)@@@+UB#3evM|L7oIUn7{!hwG%BHFS~@c>A-7K zRVhjyD);{_#2<5#fvDechTt+sj>>0oj+U=-sz34u)B0Nv?CKjGkFpQYSV$!#Xcwir z=cwq->C^+&IvGU@kA(*l1jpWEIe7in-JMRW1Uou9P6lOSA&nTz2i37C_brz`I1FlG z#p-tcW76Y1oSRLzpz*KGrVf4v8%^foYFUVf6SD9QqR?O4rx8;>8V(?(&zhAVM{xSr z0$C&!Xb+QlIVf3dbvCl!5PJ?XSzKebpSWo<*YLv@^)=(*;^Hc0-Oc!G?1G&~N{Wqx zGw`&;NkKv3;0sN81`!A`ocOUkJL~`P0TwBpzY;kmE%?0kWOZE-I^(alTRLTMZ95IE!_v3_)^ZIGI~CG6WXI z8Vxg&vo)jg`kM_A_i{@GhFkTk3cn?-3CJbUEIvqdG6#FZ^JMy^-Vs)x=jQSo#UBz^ zR&eJQ7jx?C(F=g&*h&1n%-p%7PMCmAoI;Nlnv`AV@zT!n8#Rui8hVazq48m{vU=Sw zUTljj&xbS?^f(sd+gNGGm6yN=EZbT9-}6P!s!$!{Avo%gcFU~lka5jU=y>LAA_zL- zIXv0dd!Uar)MUE)c z)ss|UW?qEXyFO~KV1hja?z@Wwr=QJWs&5bz%RZ~y$TTwlJK0nD(s>)lC(a2Lxuor4((A{!+#$q??%6G*|h73xPglKm&H!_Ncq&zUet*Qs&s^`S&kT=k@*Ht!v6m zh3|#$X&>8<5R3)1;6({ktLe8H(hCW$qve!=ZsS{-2n7~&86OEtSstqDD{KXvfGhszJis!Oc$SOLdp>eLJP$E8k+HL0n@?oFBM{Ne|L z;^g({Bs$!}Fg+4rrphfCq$}X_N47%sN4Qf)A^T>FZ=y|vpl20b&6Mpkvh=d`G;6(? zav)Oy0pL(b`uC-(*!Z};lmB>_xR^qHeZeB4qb+c`i-846J;{6_obbP{QH~o?- zys$`=#69?Xhx^1h`>EEywBfa)l)aoJ<`>=%vg5s&v=w_pwcUWB^oO7Yle$??GmqwG zerD+CnZ3&|77j~2Vi*3#b?fBnJ5%mznJ1IC|SAQ$`~;HJLfR4OoumY&;WZwH;m zd}fr)?`}Y2#5n&P`cHz?PWJTJIr2gymctnD3b~DibQvK^H6lC&5sSAdjmO|EMCbU9g_Wp6v#I$ zI!>&&Khab*B($B{LM3TBg{jJ}NVy9tPXq^Y^x(U`;X&``b#{J>Cq2v3b$JsK=l(;2 zsqQxZs=^A}HQobfNZ9{ILDWc;RUdJu_fZ^x=A38A@tolO8z;b*E%UspdZ#oz$b`#{ zk@_uBZN8UdI=C1h?q4@2Ls!YlK1vewIJ%^yp%D@ri=z5;xW8{`ZYSi&1P^kENV!7g z0szPY$4pp06eKYcJfxFi)72v&5JXe(Sp+U>ct-$ZDWlYxc#<0>GB88A(0hj@QONBh zt{-41Woj7`Z7J;CAHoB(JEGxNlg^!JkL%7vVPRqQ-gozpIk~w)j$B~g$WTaxbM`{Z ziybqK%i^3)@sKcelO|$GZDtNH94yI*8muOWr1bJD7iY(l1kP(UIG1jVJT=B6sH_}- zaYlUgOqU%=+Pw+l^~1U1a6v&Y{?XCVYL8_*y5Do<@A+kA;Y`Tzkart%^~hyvm2)*z zycl9+xYNyxG=Ehg)1a);8WVlNR3TT0ZEutRjLt>sDp%8ntw?;>rDP=+Np(H8AM!m_ zAbD$epC6x{^jKVhwGz-L9%U-*_Ju^(<1C=9y^(k|qgYn1U#M}#+r$V2 z?R5F)3)v(DI#4>RI=fn!aD$ZZGOOjl{r}Q!dm&Sop3lOZHKEbR+$TU7=ji$c8P#{a zyp$zK3ak>d)eCB5&;^e0wu<*5H4?Yn#9=0w4z;l&iH(;SRdhTriCCp+|WR!T;K6TSk( zcgh;=c|(52xT%UZ@_~V)sLqY+=4PuWE;xtTpA!Q@*B!EspX)S63=AOQt1GKJ}jc?g@ zJD93AdAU_W&>=EzT2gK&Q^<#0WpP|4#UN!S*zxKvn&RGmvf*-=;a#IFG!B4wCw2=q zmof3%3~3+-&G+12Gd~{<477=o~M0+}uqRA=kMI7 z|J(Dr`RS!2>3O^(N}xQl`Eq}H?fr51sr;l>IjTW86thsI>2UXF7K8M&jtYEY^cQ&K zzR$fS1{DH^yK%syK5_AQ9JP0Mu)tfNK))~&e*ii2Q^oHF+Es6ARPtF(2qQr#!VS&c7tkNeUPe!PMwmX|AUZr$_?({S zY<09TA0nih^Z&mn+56@Nej)~efo$VvoViFa#ZuuCGM?Y)onb~; z_ndLuokSeWgv81*r_nd8CgfS^CA*pvg(d?#U5ZZhB=Y7DE_E!0u!8UWOVK zJ1Zm_FhwKr=WGe%^LsPcHKSJYV|7^NrG&}#pxp?j1SY@mQQzh>qK;4Wg*BWaW1ovI z7I*NiT1Gb@BxV~-9=60u&rp1_w#U%Ndn+e#6Jf=Z-b?JK@jW7n7b4Fk>eHb`U!910 z-jc`+zj;xi$iABrFUu#B?!E|9RTPV95=Tsapge_H)D*X3%feypESqG-Uz?(%?V?0P z#ySJi78wLXS&K>}WM-fxG@*596g|1(7D-f8U#GlMO=P9`Mzf}sf28J;$%vM!i_vH6 z3!*JBlnJWpe;bn1QT!*usS-F(8*sSo6(K9rqplEnfLlUI?XC5A^}FAa2zk1-@uD?X z>E!W?Q`G=ZF?k=BjGhJ;yP_r;sGDp=)CcG_YgL@RGI?D`@9-K$ss9e{kN)z?53Zl1 z0{Yfz{JYo@1k`4GO!e7G1lL$LWRWNWq z`~k$`W>Z32SqII>cQMk{5EBdIedc}Zg+@+~0^>kixH{(eo^LQwk@`d@ zYWBI9t{p(U%>cKlHF8A&f6cl*V}I|zL~Q(PgD)Yv2$IM4Y)dhtb0)a=g?y>D5a;=4 zY7CSgv!HDD{v8uOw;N{Pv=E(M6D&fanA!22_w@iNr_B{SH>4O7BWswxAlRsMI9(3E z&uFU@`ko8pj6g*3@I;TkggW@iYV@V8YgF|8ZhtJP)ag=*nzq@wh=JnI6AN0OW|_=D z4Z0$1S1x|K;tC;2!OG`p0S-N&Yvp)q8g?)Uq#CR(+D|k`EgfEC-LBEp(&r|6o8+a1 zw_3mWsC`^Wfy$sOr?8QGRv@+leQ5md`QA$3oKvHC;Q3t2sqdakQeD<2ors`EltQBkSa9j_9g^FYHZ~m?}RxH)n zQ#xI4RICz~le4}~a1Lz`8u0J&!t<81d14?|@#%gWY-NThEq zC-R4=^jsiG6FvH$`q4>h$ab&;IbxsLOb}>+gs97zv^F@=VR&tz7_6W|<|O@8bHsrx zDIG^NTy5&%L<9JVBbl^zvf@OUYJQ`gK>#U>H?HjLHk33Ua}c`v95FVI8iZJJJ6NRS zyoi}YaUd~YQRiCX zqvQ_wo|Kqq@oYc1E!&SwRr*Vj&}PeqXRtha$sto90__}4qt3zig!QF$C1$ux%=P0u ztEhcOAC!E?^D3xook?THm1W-Hrn)NX>Kb_BP%H!7WT2;=?HuzGtFF+P2$hv2zN1TH zx4cAG+SuvaQW|-ibxJ1@!~SF~_ZnrrpN36OT|@Af>VhJ4`S!Ts9$g7f2LPzQf+MX( zH&`r6X|a2r7x>Vb*9->&t-~Z3FfVz%qOB6Vvfj^3uAg?Jcdh=q<9$4SK6YJKI(OhD zGwAkG@?XO^I69t$X`RqHG*tgIJ~F}S^^i@0ARl~YGtj{qzL^!O_bwaFH0<)oy4Z_O1b9aR99`1JBH$OWaFZ6T^SisMFl0_UcdCiTea+RGmOT++WvmO;Q2`O zS9hh^UHHW^0h!Zks2jxQ7Bu(jrMhC;@?70>3W2v(a zH({gsf74XI1ppGFS0E6I=>YTXdk6bR*_?~*dr4__xM$~cdT2V$HnD-4UO1V6tqY&$ z$Y#s4Mk4nXDV4d$g3(07ob*xDewDaFjDS`6NfqD{HO)L$Om zrvku}h*PZb@%_WbMacCsK(M1|wRw=@p~z$2zENmF4i?|Dne~szur43WT|8y48vo{z z8}ZAi3c4QQ_;>#7uvgc&$JL;~)B zU?MLK0l#YC7^bSyjYV&(xje-@Z)aF7g?iHR`EFVLH%~xzuZ|%Qbbz!_kX6Us-_N7Os z0G>_RPB3bcpJj>92RHj=Td}Uk!^L`|Q~nFmo*K1=FbgBR#zsNCE@QQv%Q|VSyd0dc%nqp!UDZc@ZgPh zC|d8RV|uljCcSxDnxfha)pZyX)plVoils&u=BZkhh?yp}xy32+Eu?~yray3BP=%c% zufAGw?@5UoBqDvv!M<#6r!?N;It?_(FU263plorirwMWQ;smnd)oCvVG54Z%`TI)5!RXM< zAI*XP+)BMaAFB*EJ56f5Kkdz3?g*NG2|TXZ;~o^0!`BaC*aJ5-fBc4CiB`SbXAvm9 z5+(^oBwDEGalc#%ubF0gd*Ad%O=i$j3T%Df4aZH-#HKupOQ{^J_rxd0xjiH%+b-Xk zXCY?LZ4LPnRJNS?Z&2ROH$Uh%-jX;@nJ+(|yFMsCx&%Hyr)F343|e4AFnaVjG<@FN zt~?*t!ylp$Gm@Y1vzciW;T=0y3vM3&8%21T3;E;EvV|XSp+w3%CL;) zOB08$!O0P5Ys?iZ%*x~bm;nhM&ep?$jx0mYJNvpVD(m(5c*zTsDUU5aZ#QQ?GwCrU zC2N{>K&*?67Tez*-Xq^F+fD^7H4VH{OU!>$0J2)s4{i&3@y7dVMI(<|ZLovobp&}8 z0@#?bllFnk{Vxn!?KrFI9Mqfab~NcVj;ELj82bi^?GkupVRTtq{;4aG0!81-*w6dJ z0_VA#U+ivxF{QCREFnQai)jtd_lFdO!q{=7pL^1!H);L~V0iD+ztG=Ancqbz8pDGM zENmY$35o&iUHwe!y`zxjS`8{UxKnRy<5i4r7_&&~C`bQG0=>AdM#(79M@506)OL35 z*hE=#bqVmz=711CKc$4kz`L{3ob9_Gb6Dd8wFp|(7K`j_EshwYxBl3dr^1^W*rLpe z4C62)Rk_;6@yJ2$uZ+xQh)7v5uKSKl?N;eCEA6ddt|PV%@Zu;@;rQ`~qQqU$sZ&yeP{gbcXJtdJaH)9;ce#wz z;;$JA7O$Ob{hM`NCy9$!&;9K15?M&|W-5b&6tvVS9<^Q;t^iY#fRk3kCq6Hin^8r@t)awl ztgG9h%-(^dcxLx|(yrv-pC-v0fCk)u`^tcOgK+z>bjE zV_rLv#;lB#8Km3R=Bzv9J<~3Fbt2-@>dwO@t||TU%AI(gFap?4lLO>H{5*9hU=mM6N%&9zOK?+BWVP zsGSAm{&827dEjKyLf*H_1|FA8maVHlH4^K5Xy~hfF$cU!z9c4M6ql9FTQz3@YWbft z_kzuC^8v@BIzg0OFAOAt!XSk%Hd8CBzG&|^w708Z0jX5snT5p)Eq{UMc!Aziz0WDx z30bS9eZxahD>rp0903nEe4^6;SbDN%_ISzTtVRBR7A|nx=^@!DoK7?bHaQ zq}GCkUHLdCeQyY^FJ_f$FB6Vw8#m82=<^Mvq@Z47yX%JV3HZDLxZF*P-{b#c7H72Q zW|RzK&}$7?6nLxl;!D9$F~j zD=H)(gg!=zrhPxZrV-v#R>Z{o^LUs@ok*wM1?3QwHB=)E*pfL#Rx4lk8SPb{#8gh& zP22@-9}6Fzn|BzNaQI@P>Th1(Miu$3Vn*PpZ7 zapiTqT9dtfRx)T3_HvAX-p9(TsS!-w9^_Z<&Ul=L0Xxe&CU~y>Rgt9Bfhv?#yp1S{Jm`Ph_~6XJ##ix;V9W&QcsqD zB+upG%YGzt3edBbFD86RA^jk*u%bcd<#VD!!r?yyhOSeH%~DVxpityVN)77zZHJl;SDqsxjPn5^+~*i-Js1_j!>@ zN??JVRNOC-bRq=^AP(jI$X127EKyA3Z>wwH*GQNdtRWZaJsQEv2u%NJp=p~LY2)E^giKjj8d!sSN(!9rJ_#o5UymEdCN8orR5W(`G;41XhG z61d^D{Q*nMxV-7R(C8#17l;xmshg4+gGWHjR`vqM+j% zK})1Y>N}XiLOk>D?L(?O=fQc?K^STej*93;1>8xwQsjHVB1a*T{B%mvB*R>Ip}5Q_ zs?e;%lrFfy!%eTYzBfNxuK|ZUJ>3o;@vtKE^9%BLYENw|wOqPotqfw>t>o`~Fu4CB zqp$D3E8UV?KezsRAiFh!%insS4d})nb#de~-?u?iOYP9vff64x{yX#(Z>+!>&u|*cV z&%NkR>^{=Ir?zNM8PH#k+w{%yHfydyTXGf*U;Mvk&h0|SzcFvUzZ`Nxq}WrX<1i9S zZ>jPGw-LY0gRlU)5k}(C(o6YXW}=ZuSi1e>I7=?p#9d1X zN{}?0$E-5!TvmQuQAW5;zV*|usNSC1@gH+>d&71!59wt#p^RO`rC53MayM5PYR`y zaSwLD@pLh#cJ7V2=P>b}*D(YvZH?KgTtSoTErsP$HCQ-Sf|*98xmK%rh4pTy zeKPzDGq$yEoy0Nb0{y_v7uT9%(5=&a?1@JlGZ3|JC^2Db2`pflF)_KkI9UL0mCxb@ z4qjfw3bulk)IHfrRX5Wh5hQaf0d+NK9qX%gU6@>}^lE?K_JNt*$8jgHmUq7(oI1>} zuK?j3zR}WD^}blSvyETywbh@cd{v7(Y+4#+Un(?zSDA6Hr^+)3CqKp{>D`V-YG~_4 zVc<2M3U-ezT29elXfHS0DMk)b4qp!cLJ~uLHl<;aPL9tpoJ-!%soRf(Ugf9LsD*^1 zfo0{ZblEc)q~?F)`dxLu?~1$lJkC4MTGd^-9&~w6i_0cZ=j&fBAWi`#O2N?c(O@$I zJ0aaS`c?9>g`hFV+=_}UyT{V>TQxg38LV5~&Fp9^IG-aGFgxKY$`)BwGN{yh-b%W4 zT+K()+}BZ6<7DxUD{2)jVD?-{Gq0AB*`sK#<<9Mlzh#EVF zBc1(u$z$jbomK-PPowoOTQ7w)1=-RLYt1II`L6#Q?csX3B3=Z?W&<_;;#a+JP*-<# z!L|kND#lQ|1W58bGbQn+cnObsGXS)V`nbpt*~s1ToWtw-;Z_i@H!L`s3OWVT(ne@# z{;-%VTXAWn4<&Qh#)iTB%7G>JrA1%(YnJkFDEY=xW}EUR*+kz&wj^f8mEfo`dSpyR zMI{nu)I?vV`o~azpLm9@VHgjh+iz}CPwaOD6@zv*hJS3iAtHOjt!A3wHI&J)s#x<+ zCK^LxOLO6+TC&0c&4~($zB%}GrW)B{)}vD@drMmG=Rv)V`GX2lKUH6GCWzm&dAb4^ zqAmVMI=$lQdgpPY!%(NC*R93wy2k5@`rQ3|5>QZ63sa_)-?=+hcI(U_OeEi0OQgj} zWyeT(z@M+@=~JcfqO3JxdAaWbpt@FN8>6^%F*6SW5QiNuWOJ$1ncg8bLB6F<;y$ zQ5ErD2Q5n>MC#eO2Rj90oOe55ydUvd+52m*I$&I^sH(v1&15d6gHe1w6dd_~u0zj5 zZ+>Q7XFPJiEpe|$(&obr_b;CVm1mQ>I>_t7KC4eYU#9Eruil`Ez$=%>4jNIi6IV$X zRp!`86%vaV?h0dF_g#MoPomFTjgQd}fuJ5$Z|VFhJ9TVt&SAi?x+qx}OAkP9wxYRN z<9%6fm}M11Jp4|t)ua<$;jiIAwppK@Z6)?z4LAovnW@aR1lN)OeNx?W>W z%yJBW7!vrf#pm}B!P?_{?vHnQUEPSimQYR3dR#AK3iF*eic^>&=Dy!_+GVWIi!RVk) zhPkh9I%3u9pq^z9*owSOyZUTrksqHtr_nVMD}uF~~OL=XcTse?H^ zxv@ETGQj7wRfH^Q(3sUWKo@t6q#9-eP-Qj^*#o5P^WkqstL;}Qp2VtleBd2aa<7z+ z;KF3Uw@wBRl(vSq`#7C$c*C&h#O-B63zPMfd{;)55Y$(iVau?Rc6U`EH^HB**8T^w=}&ij>Yr|h_t+l&k1-$y#w2} zwCFMFN|jm`$D7S=cxvkIYywbG8Qn`N@LUBA8g2Dp!aB*el?6~Oi4#kWt^`3Va?%~0 zKH)lOOU-6^mE&~9ntu1;Wi}6cD3Jo(II6ApV;n}F$|!O~0s(!&h@^4q(FAzvu+b>> z+PvWlle!r^j_{PAG>ojZ-!?Bx2HKXVP0g$!G7%v*0uillbroD)&G_UWk{Oq{vvvoX zA>vG9YBPWQmOflj(w8KhluR+-meqr31JW|LtLJi%DPr)ApljDZ1g&~f7I%M z3nJnSnl|o)mRj)b=|w_P*-zTe2n$^D8gh%M&zisC-((76!@K;Y8aon}~XsF}) z3uMmawu3K3K2LQeI-j*G<*m*$_$+OP85av9kz;VWU{zYKyJ4)BS9?AW(2Yce-?^$` z!G1*Fj*7HE#xd>j?W5eH)(L2sI4G0}{dc}qgli$u zr{$HS^{__&pZvp}Mv^k!Izkg0WQEBD0X{sLy;a{2uP;gAxIfb#mu3TXjlVRkj5Tz; z=(NWgUb|tG{+Wx}Ao)3au{=hz+2-fQ`-Ssq&nxd@ltar{0GgY1$1c+Go}leI84fWI zGRCgh;~>{l|5C`^aY%j}eByiqw;+HX&^wbDnSzTg^x6$g!Q?AJ7ocIlG-y1jsk<$# zDM=XTDtbjZ6xbyxBT9;Wd?qX^OgdV68WY2>K}ekCb$6%Nt1K@N87PZ4RbLGQ+y`Q3 zVK3Uh^~PaUB?yY#T)?T3j=B#AOBmvp;c;Yp+8~1uV`L7yM~wqKQ;yDmF*f1O-^0Z! z#{_4OkL2LMJ!qQAxA-%w34o~L+T1c5A@(_{+g1(hsaQ)=CFBD)D z&s-F1^3{rx=wDiX2N8g(F6O34W+cmd5p3dtKd?VhTy7>LGuY3WFK3*oa3Y^w-5-8& zq4*^HQ)Tpx?I^s5);>NZcytJxw}vsUMtff#RE)0c08yWhIf@|FLLPGk%NHGhM)iE z_IgTuPizzDdY<^Zji>hs$^R;!H6ZXYE3osG5mLt^U+-Q~4&I6NTjD7G4vKDJuSO1F z!(=-SwET-eS;HK^h1PS~7JVOefolrUYc1!I1L$@7jj1#2hOMoxuA+pB6#T{MKzEcp zh&1?2Mc1Wi{&w)_b?JO9?tK?befzT5HF?v4fy_|BJZ)Ih{HLYnZE3Tazy)-{*ZTby z#Q$RQ)#I0&X(r`y6Q9+O6BF;NtbUNH zCzJmcQl%IP8= zsQg5MNWue&=h+o~%WGcY^Aj=te%=T3RYH)2x+3A`Dh(@~o@R=8Y}obCB04!aiAhdr zDK!+TDlV5gR`e~>6Eg2850@-DG*KSn2WkVx{Vy=JJrX=Dn{IC z57_V`?GHRlbq(`GDP!>@cW3|+k9lGiuJvlnw=^ZkTm^qenc{2hMl9=ju812 z)jmI(*K^_qWQlpVL&KTV)DwPh5p`S8aj+BFt;=Yhe;s{hIU>qLUdiM1JYn_QkHn3- zM~`KmZG-1jF}4tZjy|nJ+YtGou2tEqUi%C5KvhyM>e8&0m?T%-VY5$&;mJ<4`2Do# zuPOe$^n(6v&^#3_t*~#qr3v_Rv&#;#SIs3dq@tfy+rx>Jvh_qEqmY{u|DW#=MK2Kd zA&AdtwB>wF<4wf!EEx$KLe5FmzE~jq}q%BkT=u$ zbFJc>UY-q{*HK%`<_)SlrMd8=d5@mIAoJFAbgn@TP|Y=~!<=DgklH$!`6(9Z7q#>i~|dwi!- zl^ko*`N_!nv)jjdtiaB|S4Oubq<@3NL%A9c6)*5j8Kpnk&BnTiH8@zDb!k+!Oi@uc zXGoNZdeUSB$+<;Q5vZ1AHf5n7^i6H$ZX1@eGGo6b>kxDoriDC~R57(K{^fBRs8y96 zj^#fAFen4Jp5X|nOtnLJE|#JOq{o<;=lpXd@IU&Sr_y?jWe!S<81#9Qe%;eg>T_WR(+FgmxF~?&e@eY zu!o2Z`Xj9f&7YI=RP^zk`J=x86vq6bz^yPR_P`xni@eJ&x}XkpFjiNaYJW62oKC2ui^FjmyGF( z7BcW|%H{e!Sah@Q|I}KqKi>pC0sJr1pS}XGm)?a3 zdEOL{0eNZwDv`#l**QUoZDk`$gsg+-2eTSGQ2H?iU{yq|Bk)VKdGJ+L-E z9-LV(n=siyh4`l9;%@F&9Nw=@PyLkqC9CnNCSHo^9mz&ZU#7gGE4|NC?}5N@tS{4d z$uz#;eoCijVWE7dsb`L5{t4GvTm=j#V1fM}TDzqyD=-h(m6cxyoi zFFtXhEYBax*XEp8R3!e$Ln|x1;KvBKt7mwobb`FTIqjD0B5ZB-*d)6;;$AtA$jP85o3lZV`}L56k#+Q^`X=*i$-1$?*(uCQ9ZSw?VtCyg;? z%=8thh6c7UYeY#6{II(>g4VWba$HrTqmwKBE;aiQLCPE}m)@?h%!y~!N(s!)-4Vy@ z^l{c=I+oq*!3sOU+O(`bGw~C^k!AZsvsnCQ*hk{Yw+d1sUI9ALGs0u&4wzQUanlYKf`955X&pT1?B@hFSrUfbS_Ck+qWp2I`^6mC8pxp@Y zqDrhkfFEmz(A zXFPT=k!8s_yvA07oroGy&w_u&xN85&{-K^PhW_KqgAopIlH7#WBciZTM)HGmH1#}| z^#Hc8M>TqFv>zks$7)+e#(^|dS3CcFS5m_36bEb43EKaW)Un6_8Id+_?r9cI$kZ$o zlGJV+y(TX{dlHh`;&$PxD~~m4f{-8fu|!v8-tHzy6h>kjG9!UPv^e3}ZSORd_4RqG z6dm+@Mh|sQunzYK{&1N}p!YoHoF-Gr<`U}BUj7Jp_^qAg+avSK|Bt70V6Oy9 zx^;KQwvCQ$+qUg=Y$qMtcG9tJ+qP|6C&@iC-#qsx9PHY=YOVFwpuNyxIYmoE@NYSw zBGUc0d73YXGv2)2aSo67{kkREpB90_0U}DpR)$SR!C}SkeZeTIc!&Xc6jP5SV3Q^? zGL@hbmApQ;!Qgy+k=#aQF)AkNd^1ja;YkC-W@CluP^A1_8C^E?A)t2Bs+BdhB4pL9 zRXN&`I9bG*y#jU02yK{=dTjoow$0H{sd>Hyhq7gPn2dpIIhOe(_TaGWz>{yU%(&zh zpiFNdaCod5sh&qekFZ61;&45vn8ojd4goX}jo|yBtJgICD`)~ck!v2` z`bjQ_JHnW*kJmFBkkjnM;RGNiD;AquSc%l<`C^G7;4jl=jSmYLNtK6t+PmyKxn1oZ zsr@b^ces7Sm|b^NeSi1~cmzsPZ6^qZxwlTIyNbLARaFIO@_e5#owxf9Oe6eJfuS*b zk67s|uyT9-V-FTM_(_~i2q;Q!=5n|L$@mSeMGXZY@_Y|8dK~rw9+$1_5ewom`7Wgx zf|M(F@rGGkj*#jf4XvW8 z=n2r@q^bk5!$0pblbol4e&w-`d|?hkZ~mvq+%eob;n+~Eu2y_7G#KYTxE>C`y0|B4 zk?aoKJi&+ON3GosU-p6zP~RLW;d`Q_T&R8ZiWbrxU-vFtnjBiQd<0>O%4H(`qdXIG zX6jj7+A06IMf9E3G8Cle)b*YFlC zYm`XHBlWr%TB9k^$&$r15O^GI*kN!1*iz8oD&R`eA7ee=UY|y{ODSyLFC9B8riJR- z+N?Ut#wgd_C-_zF=uF80WzLUAX{?vyOXVs~;6Xvs@1hb=#46`~V?HwnCm%V(^1k;J z@O%%T({8YN#iZ(>bog9<;3dt>%0|-uF)5sSB_5|nhe2BWygN~Ys79PXldt}pY1QSJ zx0fPGn}{XQGb}n0hjTrDl@4$*Z0*7M$lZ!1$M^ds&-X?OpM9|i{osIOmY+W$MNd7s zbgK-A{0T->fO*LG)S1VrAGkrz+g4PDpms}LKlDa~b-XX({+nPfE(d4C9k2@ZvK-p! zq#hN=*886knF(3F1}$_iCW^c<{FI_DF77qQdp$JlLXC9O_4n&8{Y{z_ zyw~X^B4TpI{c3s-)Z>gGT|myT>@}TCE{7ThpjC58v4s(H4&6Xay@lyzQ$eM*U!Fq518Th>4jkQkqAqy1n^FM-{U+g|6fSY{Qrs zSthw*3;)Wdf92Q100+yaTrRysmXs(?{GH*IKEyMB;<>)KTuWin+W)Vsr}pgdUG_gl z=v^m1Mjaakz_x}CLTkT=4o>mdZ=Mg`>EU~BiF4N6aCHL*&SxGzvyQz>svc3=Iu4j} zc3yCEJg!OKhZibPS#;9@1Uy?IlJWGH=H%I*^!NjZi=e;m;R*0D2L&ZxJmM9#!QV*( z)DLIzd0M^^b9}CUthalLcC%wCU@bCP&e}#%eGW=d_OhkhhsX*S`D8X9<+6n&jDs{z z_;8)tYU*zK)@o(FSP7nsS|!+soySD<9*o3Z^e4p6#YYX1v4c`aSfY6Yb(6hX->%pF zU>FY1N6eh97J`qQwUUmN)~094^nwJ4k3eUYKXIWK#%B0%H%39=EmdR(I!G8JCMK}P zi3R0=tT;}omeKpr>70Rw8J~`Y(J_W5c^CzZ=@qXer++R+1{c$&rxKWM@NjTa-&P7IM+!#cDV3@xHUEKZF}0kF zOT0!Z3!dK*rJ)R{tVY(tO8nHv2RE(m_sHZYyl>7m?{+9zBzzz8A;uN3bbvELQM6yo zXJXiWGW=r=DvXpniAEkj&@kfjQ}>CTjgRaBj({vwjDhM1aWUH)KMDcPhy|ZzT!6CJ zohLkP^qyBY8&VNVqo3eC5OTE8#97Az0fC4ZB$YoWQsS>u8sWWBBG7F0Gy+$17{4LX zhQ~#(ek{{R=;`H&RFt52p1YCuCMZNj;?tj51)H=<(xb5H)T$kELO0H{k2t)Q=`=rA^@BDLY_0ul8-MZKl5)BYM3LIN*On@&5MO5jQnWZp5JinG$y_ z4cZ?Ok@)Kq!(vr4}L27E*)P8t9ew0Be^q1RSNmU(k#=kdbN(~sTo&$3bRtSM21tqQGu*Ip|5#kI|A#!B)`Qq8a zD{y>JErsy$a5p46^j;THeQm2t|p-XVg7wG+IMO4SMa1!vz{JFVd|_ zVh9#!i|ab2XsYPr*;VPVac~qh6$5fAPG%Vy`~maWH087b>f=F==NILSYfeyAyuz3- zsfI)UfOnoXRmDYZt%HBgm|JrZ4p_gHDn%6al~1XSR>Y|RwPy%f6RZ`+_(QL%&J~uZ zucQmO571~~j<0u>xu`FD9?{jhn$h-t<(Zez*jDzlKsR-kAKiZuJOjtk{%}^3mzhpQ zDe%1?wA%TRGIxm+NvCx)f-(2d+@Y(p^l(T;GqhX?p}&vmi5$T?5H|}O=sna_`m12e zmyt>%YE-G+!j-sV8i@m>Db;NBjf8&8uFpj}cyQhc7&c$j*E`baEe6Fzmdwtvm%DW4 zIS>uE(;Hh5lNq(B&)6T9JQpbL>7KLV)D;p?tJMfLUZBS4p3gN`9#I`-VV()FC`A2^ z%w&2yy%eQU2@!>%Dx!pF%CVw~oLlky>4PEwf}ol5tkIGO72RZddSl(!n}i_?Q$Dxs z2&T-Fq|wV@>JnLNc4V|g+~=yXu?l-*4>R5T^5ZSJl#+UujgM4F)YgLpJt^&hCKH3T zfCsg&3`SklK0Lq9gHZ~`DNbD>YW*F2G3hw(b6hm)w_{yxKDaI|1_K9E*^#oU8Y#V+ z@^;$k(Ah)kk!d9jCC?bgu#c!lQ=uTV@Oaxl?5TPDw~CFk30+FVNxGZ69BNG5*fV+p zR%y1pIvxzs-$xpBS00r$XeHX7doXAe1U9s(z>rKh(q0MB&TdLA%KcZ;X?}LoInaNc>0o1-LT^rnXzs$}fSojml<* zkVNEXG-LO@X`FFf=8VeQ;lfX4hbsGhYQKenGb{yS5iF8U;6!Wfz4Gd2P{x){&y}Ox zpNWDWd@L5$9s}znDht3ImcEGMXv(edp%Z6|qGF;T*%zDa?CiQbxz@np{K^o6%NZaH zfv|TvSHR(W$q^D7N*XQ$wtHz8NFzr|IKzKPCH$2(O@GF<(R^PW;{Qf-R@yO`INGi; zG+t3YDBBzLc=dX2`bNF@XIyNcR)2OUgJEX8Dg6%7gPuwZfqj#+A_m(ocPz$|4ElicU8 zn-nDR`zZ)YUZyOmiQ7MKYqs~~=uI1L2f!gFrft9;e2nHv zOC`ydyf2%9z(9=rOvr)H#`D!`r)2}aPOHTnF)#*QCKRAgxnF}mBr57jH~5Ul z{U|-S8Tgfb9x}VM)HkQ`1=6nX zZS9QNw@D29>~f**|E~*!0XwEIS3d$~1fig(gdpAkK0=yWK{tMI$tl~jxPR6FK`ytW z5?hVjNZA+@6T1(!=RFCmyA_)H95Lg(uU7*!-X2rY^0K@Ntr-FWR+fqiwT|-f8R7h# z&$amOj?wuU{=5c5XKrzQtpq~kes(DZ#(a+dPxFshxMw4tbJ5uwQ9Cz?_4V~RRtB=e z;U{Bs$xo3E2w}i)pdt3w0B8M!oPl%J-~W!naW$V@Y>t&Bc;5gub;AoO6L(;CmT-7@ zAPu!=+aGDwd{Wq1YF)P~l#UAu&YGMz|O5Cf4Gt#(vmyny23-=2J-cfQ<#pZkHa8w>L!o{+3 z4mnbKM(^w4BW=grZDC`No=)3(NO;*Jbo1?D>v6g*XF{kopT-QzT;Z~lzI@5!7~9q~ zGwXaP(U_maJO=`BL=)Hu6qdv?y*@GqpZ4#C`8z7XjXxq>P`8PL8*4_vM7 zL=>%I8oS_;8kd32Czs~^$s$)9;YyeeD?F~vDivt+=zX4arN`s$bne7SJ>zvXv+HAq&%z{FqmBFFvF;|l0=`K?<2>TU9qvTW6HTVW$H^| zrDYbt@Nsm{QtSwA1RX6kTH)yBLj25;CbvC%jHZf=g|&JQ*$mEMrYpciRXx72bAd zBSDi^fvmqyyu-XNgl!`v>>v7RA`z~ENImkqSa4f1^-=YX>d5ZC&%k@RBDvfDzHFv* zL6l>^r!W!!hN;g(j7z>ow>BqTnpS&^`6G<(y51RW^Hb8eMuypx;wtNkMz#3tUM{&Q zXz3lPU|fI^Hs8?30(1g#dcV2fbn(Xq*hREj6%O}5|M`}!wB|a?)hK6uOG2wZ8hq!( zY2o_H*jT1aaA)q6^(l&_L#^%#Ey*PQ3NpK0FEmTEKZvkcG~c)+CY$G__r;48?Nyas zT+jlLeMe%hJb##*nigf$%_-tpczJrMLXCnLm8oE3V=Fz(3L^kRpUkg=Bm6P!Jx8?d z0VfywA6)n!L&nQL<6_`TL4Fb8Ez^sE&(76B-J%?OX!bew%$`wp?{~H`kc3;Bip4 z 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%0Dqic) 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

%p3NV8d3NYlUAuw?M!T9E? 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 T(_xkB9b9Ot>Z#Pg?UDZhXH0+% literal 0 HcmV?d00001 diff --git a/releases/UWP/net-native2.0/images/funceval-2.png b/releases/UWP/net-native2.0/images/funceval-2.png new file mode 100644 index 0000000000000000000000000000000000000000..e88a7d0f52d9c9f804c4ea9626f9627c86e307ad GIT binary patch literal 557254 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

VlfQE?TJQD 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 z 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


L+(1d%B z?3Qvh6}sTabI2#{yop9*%YJO#uo`viT4a`3eYpdJ!=v!ePr_8Q9lJ{1_~uhDV%8f* zG~hvhv=sLq-i?jK5AUR(8yKW(7DOB6+1v3NhNpeWdgb$>iE(;nuE(KWt*EAP&FbcD z7&}elmOeH6ox$tVC5kp-TV)(wvqo&Ja^m#K^9aNun46wNEWaN2QG4cR@!GHki7|t4S>rFtkS(WtTzw~G+t@PitblZ3AkXh0fE?$tb^DIBv z5QoOS$B!SE8Hn}u_1Lz3JIn0d`h}(tEQuIK#%HlG zyMVp>_Mxli24-gGaPZIpQT*{|==>S`jT^mE-@MMD)D>MTA}qxb!_eL7ep$S2klh62 z7Px6Lbw4puax5Y*BN*x)PTqC$0sp{n}pkl`5_N(Tdg~zEk+^5_swy$c&SUff-?!BvY3<}aoNChEJsnpO@flR8R=VM<-|)umehf2{K(Q`K#R+riDlC* z&lGbb-8Yddssoqek&g5?n=P84j!CD}B7)l@Zr;IZF(h{;so6FQ87uI>p&C4}cQ?X` z1-y2u7q4BNz`4Hpq)g*a&v=%J-=DcL2oK~6X;2b#l;UH*`|CLIw||Sv)H!7?0|CFp zX9eQn-~4ZAnR*6ad6ovr6vi)c7Up?vAVo(9&wk;-ioPH?pCb~G&ztyDu6Wp&4C6KU zcnuupk@?8WvBK-|in}P^DGwKZgUm`%pVv!#*x_=T;a>1ad3duBrprh_U!0E)t22)V z$XvG(gyZzEiYmT%K)@S5aeiFZ1MhwuMV+6==bsypbWEEUK4*k{^Y8}K2AEl7@kXU4+9JXMGTRwJ+F6_9fAr<1(nrm=hzKKxJ% zp8VpMFgU9^@+{`>xc@u&r|+Jo`XYHp^f?~}=dUX} zxU5c#>R0Oiy4>WQJ#~4@kXeG%x8=N|)Sq6MS1*G^o~F@vyB9DPht=jRYBTYOxf)V^10Ukv^<{Bf*XzYbHAlQ?zyw0wHJXU}eY^rIie@bIv_5aBU! ze_ucT`mg^+HoLs%o_o;R+KTzP1$^z_zJ`vDPW8faKnBHeEQS>7nOGc;ZO*z?ORb-*C3mr^!N4R3;*ZyB$M;- z*suK>`Pbu5{^bA0rArs(x^w@E6%H()+08luA}&T7fvfs=*zw8V{RH~@`tb5g$MLC8 z{T|jfG~vqSt7zZWj{oO>{NL#8?!+Jc@gL&HKmIX#dT!v+_dO~zV^5ztP3=2Ec@VX< z@(A=IEyki~S^Vt4pMn1}Ai?YD-4+(N;YH_5+OE2jo91F^`i|%3-S7ZlUtdBEL zU%`c{RW;bQy$vNiyPKEgpyx!$8bKe)v(slUVrq5)29h(PP-jZoJO7{&u-{C_0;aFf`IR}0ou9N#)`jgDp9*@=yJiX#pBm@?RRFYHcwV`Rb>VcqQ7I z{G`WPK96)P6C;yc8dl2x_HgsmDpZf7+8DD!c9O-+I4fb95(#dV?u{TlFOB7&Iap4t zgqyK=+x3%9BqPys)NfApbyeAlkrxF>mg)Jb@Kh|-iR2d}+yUdat?Xt$mW}$G({v=M zk%Qflu%9~aZp==*;ipdP$lNeaoSZ<%jTzZBO-D2wT+;Dp7!o9xctD+7iaopAFm~cO zT$`MufnFdL-)KhNwgag2cHo8cH>kr%vRGfka1o-^!A<9z&$+YBh($sfVfvdX2J^vk zT6gnKMm63TU@2sy`v4D*-4o#S=4+G z@7R=sA3ggrCfupKI31fX&xg+4`8=f|=qUH(Qw>2XQ+NBO0=3g^68{_%M%uz=i}?buXi z#FZN(61F1WnoQH_a=)5qBv~q&ao4swTs`r$%*@v5r{}MO%evTKmz(MGmXU}>l5vx3 z+7g!1SF)J-%g8J3oMpZqpZR7!bVc$?^tcZ7^d{;b_h0YCtas_R#_>ovNlOQ}75({> zs?W^2NY9t!-cI{slm2X6QZ6d9&Wm2J%cbMGUHpuFBlVi%lgcagwe-2janv(5ktz?t zRY_pHxJ1<^DAQVNA+Fy#7RQ?%QR4=@=$X$0I!|c@;aQ6D7 z7U`|S?acs8djZRxX^tX>2G^91H=E$EHq10$J$LS$?C!gN|32jA=HTMROCrBm;kseN zhUD6SPd@ow*+HFm>wWAakKsE{Jb`a~c3_(5@Wh+0?k-%tc2z!ce(=EuWmo2T zo|zY>@h{15&WGvA3snoPV_d;(+RqZl0?!N~9sa_dSF9UjM(D;)^Yn1|DG{N(dbgUtS; z`5T*Sq&&eR(~TfYIVWG)@oR zun#lS^YFO+sS3~vlX_FZU^n|v1@H_$O|Wv_tgYnTuXqjKcvRa+gq3&10}G`X`|)f+ za*J}3!&o5GpJ(|QV^m>McJ@<3mrv#01u>$wNKU|>V@0mZh2qF0&RiQrlq-$HDKb?% z@(YSk>2hMQyALx#pUmSE{=^V(L{TbPd)p(k{J5ZUW2mw*C1s}}dCKvY!4hxXLra)O zZV}}SB*~=HTS`J9*;p2Z+$@9J%l-9ZNzzOYIa?uXz7Aqb1in6UO3qvGqootvBLANZ znT*rD{kDMKDNMH2Og1xdtNPK>E?;Yzgi~ki(o)=%{vyT}oxXl30;)@+W62#WEbtp# z^=6b#>7W#Xs)H&rQj3~SDuXJ?4Wr3|`FSJy2Vxi;pU2?D9K7K;%(qw%DIF$j4ob=j zFmUApCIgEGQARV$N~;i`?m_3^$~!~;Jc4H%uG@Y{J~`RGeH$w50X+GQucBi#_4#lX zS!9ukpHuWn7M*)eD_DP7U3HOE4o=x+tD{hZDDF6EUdSwP*b#*l!dE^mMOpcC>sQxYWd1dyWMxT{`%E6yBt4&9a z96cgy!}3n#J9qBDnKNh5-`|hcwpQ}Lftl$U?B_babXjH>9@xJhXV0F)@bHLSLoUm0 z&j4iHEG&z+3|R%>EpW?ZDuViw%q%i2^&&$Vx$QI)2!!DE1Tix+iGhI|7#;HBdyajmBpon2RP<3@*4{%JdL2`%P_-SX4Rqda*~%!OwKAWzk1p%RV6 z5TSu>Ji?zG>x#ZahVqYveunao6@PI`A2*8rO~f((HACDZPK=21k0P)FFhc3wqkTBj zF^m|UOE|?PO2n5Lp_wV1d-XJCf?imt;(^7u_Fi*l&;D=k1l zUDR8E)80ccYdkzkHE7SM!GMeb8trU`2|8Wh~BGbrIXC&{DsSy@uX%!WRXP{OR-qtxA^>a z!14Iyune{}^LAAJF}R18KI2KB(R90I{fWRcw5VQRFL)>0fzAsuOXkMN>|4WY7QZks z1m|(_>}%@TNNwm+XP>Oy`;$V=Q2g24=SviTiOjxRQUOSVW}YM>;Qm{B|DO(Q^K3w# zVY_C{8XP`+SUy2zXQ4nS_Vo9XprmUaM)!HXjb@*j*Vi^o;}nr zy8y4(jRWN0-F+Q1Gt;7Uy?p5s+-~yUe?WK{9vT*f1k1W5;!agp5{pik@yOz>MpglM z3*0i9ilFpgW|3j6<4Ttu5`|2H`ZQ*fo%%K;6AdxgEWG)n73Lfp>dTr@QDel76IT#) zx+npUM73G;a)}fXQT!zpfJ#5dNUi}`T~#fe7x}c!pwx2*rC3BVMX7{8q{!ftnn(YU3~Wdsqb z3@N`lP;5?5;p#7L@smG?Ni=dP1sorARUF6HXZA7FbA$w^eZ`rUP@tt1 zOQ)kD{gmklJw72vMwqhX-b^E}oSKJb@jb)!6eZcjpM3GALOgq!WdzFxj+aIv2|YWO zb-X!9EFKfX{#<^ML3Ex)7FlHRW`pGx4}KS~0mzE6x2qB_i!8EuYruoc*8};|=`8@S zjm5Hy`&&FCk5&6hS)`0w1JEHe-B>{={VY1@eM)^zKD}4Q{j|LNd_4a6Z=k%aT;yPJ zNs-9F&wS=HlE*_2J%sh^)(dTYt-ZhhhkroFwQK4HNc#9Gt+SVMrg;)%{Hh!jr1hbN zCl$sA(KBKgN%K^o-2*``E`mj_-WuJF^7Z74gfW08Gw$eO*{oH!D;x z>zR}sQ)>Y7Mo;QiV7-N!RHB{2l~aV8Rdv|7u@Tj)%D~I#vZ*Oujcwp;{0UoKUoJba}B^{6@aWM3`atU(7C=D2s6WV!CQQrNdP|lpMM=|VixrE4U<1l z#ST)&K|J%rXNe9Cay5k+Pa#&jVy1(O#f8%qfOh4rbFC@nl+a=)9Wn}}g{u<@XA!7J zWm}Yf;wur9EyT3c#GlOIBg2aZ>#{}JDjri6n)KtHkY(UbvY%&eNp5=MNNXf17w4l9 zRXJ*bnym+=97%79mVt}}D?m%7Su#VC_~o*hO=h{aY-GwQPi0rp1gexNZUuC*I7cO{ z*+E8oC`f(rA(=fn6uD%2w%JRIlDwSBIwvFHbWm~BQRhexSD+lU6D_$wf3WEfex>c! zA9zY}t8q^bw$oDUPK~f?N#rU1Y^TLd1J{SL<+v!?GHEEHN}<5Kz8#=AWzICC)sK?# zd{|r-I@ijs(&#oB4iY!jy9BX^Mnl5b&EU8y4gc6FA!3UUIoR<0U9BbPNyR}CbsiS; zLg#$lQwelCv;K9+b>w!!Cv@PX5-%;X-mZ8f zIbMusGgEtHKmFZ^urCQ!3Y~^J;|StVd}_Aj#Rr0JizlZhTNIYm{<#y!olH(CrB9Jd zf>_f0RLjqVmO#%#<4$COl!xV__M(J3u&QIq_nV@m)6-K6dt`C2)JqmwWbso6&oI#y zfV`$(7FlGG#oHaxqykW%EylCa(iDI+Xl5m#^fRPSp?VzLn^W<*!;w%k25H>GFF)?T z|9)9#k9Yh1*zf!fE?vGT%C+Ai_p{GFi{2Z(*u7`BY!t#fIe@GqbH9A0|qW!b5hm48YB$i+%8 zqfT3nGWO#y`lNqK#%#*m#Lnrk%O}wv{pe#dL+|9PC&8PfeC5kuky(P$uS=Ve#9+GW z0L6#Xjz9XNKg17z__XYr{P=G?F0(5;sos9?_kIuG|Ni$eG&qRIKKfBS|NQf^!OE}y z#;@aF|MjaftCD9a%BP9+Owuo)RviK@D=AYJKTUA0r`IvN)33x*WEFrbVVQbaT)hN! zYLE>;L;*-LETsUXa2i9aDEevxnj)m62qtFNW|IVS5F2T3N)PmN-3dW`OGC&?x! zLJ{7yS1tXJ$}$1j0OXA-0K;J-s4-?DVZwvG?f2Y)RjvX=f)P0Fxd`|@2>QJ^bM`!D zre`H{)?v!*A~p=+D7``r@)m&wInVr)Z=hAAq|iwhK*=KMbTn_aSlK8K2i+E561)>_+$y@u$RP%U*D%q&kMc}whT(ea+srdY6O%ugpOAI}4 zwv$4Q36LcO6qIw3haPsdXAj{?!$d98^T{Q{ibggHOp)?UFs%7Dtj?lB}MF$%>tpKLx#A zJ^|)?Pimg{N~kM9KjxilMcF!%twt-e#Fg?WBPC?Fru5@a?!`@&lB6XSq{Y?plTb;@ zX*nACumI$^Yzx@Ue>zD195>x&Xl_a;@gy%c9HQb#ROLmWe7K!RG)f^!m>Z@ee}R;P z;_5T_M8PaCHdHyZ<+)78(I4rR&;Gri-+P^D(5bBRdMLo=Y2PmWSP{>woF(_;RW zOfyo)ia+C!Pn0zcAE)J{dOhe#W5g88KzXsja)a+9iK3N--Qu8wsvxN|zQ6e1;ym;> z{G^Kp<*9dAE$%|Mrto&m>RR7K-&jIca%J_&(Nl7t2^q~*R9stih_Z&Jq zJ25t{)*zMiTwW;vQ`P!|bTC_pU+TYo{No=(UY-k+lT&DJZpO^atkf0nJX~2-CF>aS zMkjM~bPb6fKYPCPr7z0{B)p-G^dqTX%ok1Xmx@JssFEZdzmP~TnpXPP53Ro52soL3 z$0#f&v^-Z?1>j=bUVUW5q7!`rTuK4R<2WrI-7f;V|GXX_-Ln=ra~z_N<1rT-tHlT# z>!ggljGk2~?rD6g=cFIspaM{76WJCJXZk?To|g-Iel7y@3-HgoW#bJK8I5IaAWs5A zGYV;yDG^f&K;8nGD?ymzKuRNmNB(K)1nNB9S6>T4y}97U6cr_QsH~J**(|_gqF`Vp zpuR;u$4d%6io*kTvFR6$v4S#8g3k!E)x=|LlCngb5-A0s{!mX6gx@r1>C%(vP_*SQ;arZ^Ev=ZNhaSI);p-+dg0#T^Q{j00aA1d| zQ33Q9mz0meG?^9FS@Cs|fj-w0^GileW!D~%6i4cX(r8yRnOY)O#|zp@ zdM!-nk<%y|%4R=_sA2IND^_Nx@>2ct4I$|`j3Vplgb2~+j8uTuR+$sxN*G|H>MI>W zfoW=nX)!sDoX%0Ws5#ywWRRniqyjL= zJHV?MfKuCHs~`V)*(ttfO?02~O90Ws(1G{qVA-aUuqPR|1u8ebmqhVrwymrHtg5O) zBpi{OmyLY-o2CGi0UzD$;UJxd!g%y|K8m`666EAo;^nXX3r70g$Zspf;KgoCM*(`=Q9`nnUB_|x6EiGBpU_p!wz>7SGVJ87+rvzboFwtc}kkW+c+@3JO zPUjY53|2B>@z?XzhzVsaA3ErvDR4Z^DbPa9K??jJVz3H|KUrr*2sBN)%RvvukWXeuMLD?!m4eH|o;qEoK(4z^fag*$@A_S&l_+JC#n+b~lMK%`RvQte?Xs&u)gdbZ zxn9%#lo7=jF=VE4SVVEB=&Gd&R083J4aqgp_mW#^>GU)Q#}OgHG?+i`5E5(cHxA2M!_ zN3LOQbp>XpCJ-PwZF4v@epKg~6SKv<=zK6M#suB7&Qh3tf<2Wf^ z>4ekJ2^)_;0+Y>&5=#(s5x$m+K1b5qd+Nml^U7h04{jS-WRXP{S!9vL&mWx59C@0% zJ#NkC=HOj!8NAlrtx#A{h~nbnTPpx%+^F?Wk_Xkt(xLZvxc|ZZ5$S^wrrT5P$5ZYkw2#pe%a0ZYCLoQP85}FC{R*q@f0+d zBvfe`x~(WHJ6S&Nn^FH-(O3Pnl;Tbf%FY0%r+zv0rFj-0&(dV&DvxJmyvO}=3e)S0 z84~)Om-GYGI5NqXSjw%O+&^W9Ue|I+Vlg*MJ(fWx2|`*T>OU_He;r^_H>0m1{Yu>& zskFB$8dKzIW-F$u~IP&~l@*prD(a7rnPzZOA2|-@JbtPCxk+zTeS@&AV5_KNLsXJ)1Fo zr596iO##HUN3>WVELSY{W8on)PhwG-#U~ZOhDVpWTVksC=@vr?64sE05ekP9jqoNS z5m90Y|5PSb2D0T`H`;8$bi?r^J{uYoCx}iWOeTbw$%d#U58+q{!H5smcnCShnyw$^u4BKgCh>Dxr1lg?6WyOoxh*+4e z3Ee1he#jV2h(=iu-gvgFeqG4Hg%*BQdDyM$kn2vB*Fg0bMTpuFtHaF(R_yS7$)7av znt352BbBENg+=N9iNphRb%-wgWbsmpN0mwKisg{{ES2ku-$+UgDIzbfT;zKQ02*6jzpn$C)qUk9U7m zag|YRTQ`b6|A;ZI9dQ2K4zzHJ7a(4J!3eR)<))a?Fqt5Q5#xG?ifc<~a=vs|@~-Cw zx<8GoyhWvD*tu;hVv&G!nt8oK=3DAX<3-9r`RX!;`7u-7S2XWJOHDo&+#XQ^3SX49 zbnJ*%#lI9mxw+hw)>T}F)*bs%Wp<-$Y)+yWP5k^&`RFZN@}&Iu+OuK$LM)3cvdAKf zEVB5y0}m#7$QjbV61xd1D=YD_k9`d7?d|eeD{n+}Gw{R^r_-q^_&67>$3T4t^?5L_ zJ+Dpp&^j7o>79-=a9^7hP-?tL5%lCd$l$tE^{OH1T$+y%Tm~62mrM3~@KaCE5tc8< z@<ZxESPq@O8UuUD31 zGVW$MM&l`|S3Rm^&G!*q4-+f=Y%-ojJS@sTlf}*hD;Ovp&j;Zzwpi0<5&|i{*(J*d z7}a{4Z1ik21>huHt~?p+@r7r>zym{3f{}0(0m%)5jPORby{r)ZXRct@=R-+Z0TMGF zSj%h}xX_JR8laMd5Fx-qO9a=l$W#EvC_l+xSN>_SmV*c>#f;dpNNYqJxYAF(xly#l z&2%+e%`)P1<)>(A=Xx4>SWrdr3?-w5#`s~xLi5PaUjs)Wm3ML;aZ3VGSP?VWP*B_o zXHgXj@^g__V4(|=ph0~IQG=OSq>Cr?R319-nfa+Oou_0x@=rGz@zaeSU+PUgH2CdI zV^bsM7Zxx)JVfzWk)R1*_16w$Nm{)w(&|p4s5+H;H5oD=bI-yU zn3abDv09Kt+vS>lv$)tWUhdnXV{SVeIZrS@WU z6=PMQ6&|-w7Q$S!rVa=8??)suiS8Sdls~tHm~h1P$JuZ>=roxZVth_zr<=-}1C&*) z$KGu%h`J}?4TKQpPdzDIn36goV`Swf)8%uX`NUx<-udCj4@u5Vm7kr;&2^~aQN(4y zyKt9RRKS#oAQa)w2`>_Cmo-5`LF#Ck9jLCXKv7W<3JMCua7QT;@MO$ZTnr->uBxI8 zMiL!##_UPi7v_U8vX`*A%sZ{CQ9-u+H&Y-&Yg zeIe%N7U1y&h+d531}mw!tSY@yYOzo=!sqAw9B}32qqL+Pxj8wqxUe(ofji6!K&?QO zPF^H%dZELA=8Z3?&L2l4KTbn#ZaY;C&2YvRh@Uz2231J$^;6~H9~D5Q6I#k6n(HC*vy~?`SrM>o3@KQbIG6tRSP9D6luRcSHm4Gq>gcwnx znw3LF>^XK6hd1p&Nm(J*G;c&rjuqxYJ4UYDz?977p={}|2HX0;cQMiwfUIn!3ZUpj zUsZxs23u?|GIZ43Y#U_OA1~OdSDHS+XI_)aEcRnt{Ixh_I1`R1VG^GeaIE+<6Aj*~ z+yZOuCOBK}K=F?I5N*kWud5HSXb>^jD7hV_yB>k%j&|4@+hA(gg+Mq6&v>t-wHWCk z$$4qKa+V?#*+`x#qj*xhq^G%=5#GhE>VwOp9*|~PfYs;o$_zk?AwOLaAVD*s}26x6l}J7>}zjE&&5|T zIlDl;9EXap-5W%RY)WIK_R5M-R`QZd=bsICZ1^6MI;8UG4{p6ZD(H45Otw`x_O2ta zyT>p*?IRxp@+zBf^hhhlZd^yKumSJB?+7+;Zo$Tl8`0RoialI42ELXN3egL)hAO?qqAgztT}KgEwHcoAt2!Vy+JQ#>kIL3jd}`ll3E`~X%g z3O_=d{Fz0*=cN9a9(%Kk0^~j;OwY`~?yyUpsru3~C7aKsJyKoq!m>PLcQ!=4 z&Ge#oU>IT6`VrX5D=NTU_uYfgzy$g|Gvd#suu|RF%|^`52Qj-4#Ju+geACoXC;u4d zN%UEn%#=9mlmd`W_^;JX7FlGGMHX3P@$-kW8d= zbOoUF8^oyol&o1t{kW6@Pyo^IIZFp>?#t&>%znpuF6p#CWl0t(OH06hdX#jC-*N%V;b!qTOgBj^ z$B7OtVtSg4w6}}Jc`PQP&Q~Oz5wH@!>e{5R3^lq&Dt)?PKNWXrOVE=15@4lTeLc`? zQLnW0`qcF_=?XxOC-*xUo(#qcyFkQ%#`RlhY@Ca*JAn|5^@_?WP>_>@sNV;p!+}+e zjWAAJN6(m#$nbUNF{8Ribp;@AAjEDRx1j)3pMWu>GKeW&Cu~h^Epkm(M2TS@XbxPz zj*FKsVsd;2QQobDgg1Zk$b(xEC<4tULV6R^1vyWF=w&eHBTk%?|-l01|JD z!Eu)HPD0O4kbc6nsq6+a<~7@qQ(S{c%mJfi4v{N2h;MqZS#2oTd>D!RASTcLJ3=>x z;0{sc7ZJ;c+*%(=;hOG`J|IBbVEY}yk4(tA#2IF)cb73j0Ld01HTQ0Q^st12CBs z?D2{Mij#*3X5e#s;4s@jlwfey!%UNKl)}K~6yhOwIx% zoJEK^OJL8*r|Yj2N>WeBIwG6Bj8;^yZh~j%H2Noi(&BuW3=!lOH>1Yo!}Z>N@}dF*stgm|V~lbg;rs*RIGy{yBLRrw~O2c`|E}XJ^8ekDOcw3S2f6mz1KqvJRy# zGy1wNVPuwWrraXbR9C=dHzA+mAsR-I(uVUI(AZFl;EbCpo)u*gx>2JjuB<|#HHw9> z2~N7N@(K%(mzRse0vAmF8TjF#>%=8nzEK*@`Pi_z4xZs&3{QK-&yiP(wRI)v>%0!n z+!Q)HJJ2y6LZu6M@dy8blb3oh=Ucx0>qvwHm=0O6aqC7HW{2U$JMJBaP{&vOiaxo zMD@U*J2-Q5;mXgG8IPrfc?f!D;SYq7S5zUhBKajnL1`7Nxh2SP1QGWJ5YMY38C8Xv z$}$*3#23tTjf;>I^}-W0z-lf*MQtI1F(V48oV**F!*0X8+e`PiO_oF`Dk?+{UB8^X z0#Rfm5~6YjvEU&ZK0k5`sJ(?}&^1glkJ@%58W%xrb`((?s)W;OK%pxazWHf{f_@Ud zsw1R2b}Sd!;sXg{YYrM3H(}_~ck%u2K96yC2!(Ym$T#>gG&qcytq`kAazRZDMa9*` zn-dm$0G@>f*o?U-s;@(_liGEj1ykca@c9FVmjbE@s;7L=lr^5Qjvc*ZJkd!LT{;tCYznBfcD`qQHD zHdzF6OZ+s$FLrgegsB&o%bT=3Xw0I&^yhNP*f|+b89MMkEl)*zaXe;CnM{8=Xzp0j zPvU8A9%3%`6Ds1LRt}1&F9{=YbpK>}`cYZ*@Jz%0y3zeqI(B5nAvcd7G=IIEY?DLf zqq{Z3?)39?|MYPE{Pi13D*5VdVG*rly|Z_U=j99?l$+Bms;`W6+@^#k8;yS2k5X#a zNzr7tib(xwPP3#vW#N|V3c2E=wm_(W60N_Mk7KbDl2O0V3;4kb1$92)$SYch2!uH zci^Ryr*UI&gvPCQ7#Bv-JLxAHJh?Hc{-FVQX66txQwB6r%%wqlAQ(`Ep;D>hq=7v6!66z@SvzhS z1>jAgA}RWr3P3ix|IMKD#JiR%2l;8UcqBPH6T}m*YiG)Zq4Nc}=Of5lm4|R=KTLKr z`~g4W>+ht&eE`Pi&%!=KiK^>QQf>9wyO20t*t?h&4h)8IYhz%#EUkea@z-x77{*~^V(6{ z)P&Mil_*@b9{Dw!>DngXbuUm&1>ucb(k zSyWOUy1uZXvZe{PP$#^RDm2tpA?%-l&9xboITM(kbz@U&8}=O9hfUkIpfECz^Ebvs z`DaczuyOCbxO-~@Hng;1L+f@lHq^pBJ%%|q<>e|x>*n>i^WY9_Y;H$=eH{`ZH?Cj3 zfQ6_LtJb&S9d{qW_DyTix~UnJWkoOq{Yb1ijNR>J7`fa<_XxES;@jkKV&{QFs4xf6 zGaW@sYb%c2c@%A}o3M3j3u2Qu(8Fzn{_;KlGPsoj&>P~}k72|dWoWJ~M1RM5Oj0?x z-QOGuL_AZ7*jJ%tV-r@_R3k>${`AETx~I9#Sg^Tu8}7LCZft4UjJ7SCkcb8_H8P08 z#_f3c&RuBUv>DAUt*|?Cao1hhX>4LVi;vJ!3I9S3mjxgTO+A{Rc74?f=vCcFvExak<*QPfjg&2vm)ymJ7~h8?))&@R+h6(KLzNqo1XwS707 z?qOUToJU2)X6!w>3Hc?faBvTmYdy77S1txe#zk4UwY?R0-*u;yb<>uuqWqf~86b&i zrt8e@(SUUuTacevAbOLs249c@N-FE94c?1;?z{u*)>NXgt_Jgyqwsp&B0J>;3)M5r z0B+v`@;6y?(a^LBk)a=8a4dm=g*c3r8`10vqUZW`*y$d;b88cdOR90l;Rn#Tz8sER z55|Y4V2b8p|056Kj<%hsu5e*`>NcHv3KiQltmYCrGJ_VV<9K3-B0Yc$GsRDpOYq1O85DJqxWK0`$oF9O<3hhppW{_?I4@3` zl}IezkC(&YakBJlX)LNMUsNQHqT(w#+H^xGRr2FY^ zrps>K=;7*AxtVA7(A~Pf?kB&bt@ES|dGS9jTr)}D(~N|xxa>%UEs9H(l;lafF7nsn z={)LnrUi;o=`-nNl!;TYtr_tbKMq;UGe_Z2hVI8oQ0`NcTWcSgb*9qLLHQ-y5Knf9 zh>qwN-LS4jFZ0a}*Ed(yqI%crjOBtpnU0ly9G4LeM`V%%%M6|{C;A~7FRO4}0T`qq zPI=85lt$-pZD0bvNE|f{>rif-!{vb~xP3vCS5%|K975;FoY3Ge=VTrrWu_E>O8Li2 zVQC}JrJH~-1B(@aY{Z`!aX9QGz+JfG;6WTab{DqOpqv+V-QK zc+r3I_b%?4huJp?+xR6I!qi~%P4G|8 z!5)qxY=|HycRj2{1@KN>fqU=x^iKhzm9}C2Q^LYFnBLwPEkJni z66R;;kl>p@Z*Tgwqk{1!EVT{m;S5c~LDyh)RViZL1^5ffP#&4a)y`h@4ozTWaux}b z6PO=D=Mb*}Xra2WV)eR>SYKkm%coA^B{CMrDm0Wv(cMesD6YVR`!?b`PdtgUSFXzq zR#E80)Ib+36>D+l;l1cN`5M0S!|!5b#)E=YjVQGyFh1o$LsdS8`UX(8z76XeYvBon zu&TZR-r*Yn9J8f%+NF>?MICfq?1kO9OHp}2OE4Y_FFw*{r9C|-W~MLb7l-kreO zP4$S7%$j$UV|z;zOujLE>1+RvsM(47ssaS2s2xnrqQAcvF{=v;L!Ef;`4@5g)l(Rx z`@jziDl6;J(q0L}#4x`0?Wc%;AF8V>F*P^^=c-z~Z*K#B__cq=m5wf)>+Hj!yY541 ztP3-#=!DHF99Xzx>X~Nm(pT%>>PhrGu#OCHk1jf5D9kifsGd({Hqj=)U@8j&{ZUo{cOwZ2C z^Mt`)X6NJ=A?}?-&)_)1^xVoKi!8FpB8x2EI^0YFxO3-DJpAy(ShsFn((o5y4u?a= zCF%ZW&z{BfG`~PhVeuM(+-uSmBK%1)8&LpKpPTzo5mwjTn@@4e-c+I5qMc1 z6|9G;OmuoGki9fNQ9`JCODW>CxDrh}=S1RG6MdAwA}2GzB&}|=@U-+qT!jgL?4~fq zhJ>fmh;N1;9q6yB~Aai2B@=4+pq z#|prR>|>#%hB6G6t?Z7|7_zXa9EsQz#wU2`IpWM1$1G1SA^FH(Iu;j}!t0*HIE_)& z=f8S8Q2L~Nt}53Wt@2RRlNGz zSu&?^lKi^6X)s3ueQs`66gfgks|RLDv2`<03QdSEZ!*CZy&QD^lB`y@+{Sb0WtcZN?bBLb02)~go zDqSSAkv9NP4+S=r^kCtguUYb^u^JRsgtW!qKhsVs}D6621h(&^A zn~*TOs8OjcqW!)Arl#g#$}L6p=6#5p?O2!`p{n7H1$fOnV0LyI{$P~SxF`oJ%tX^l z_2n>I5KP!GGungT&_%@kUKCYS!(|T8!`cTwHD;eR2Cuys3jqh^??qtj8X`d-V!Zn) z^D8{F!iXS3i2u~l2svP~S&*OOLKQW5V{35F>(D8+zTFzPR@!Vs<5OCc8d{VqGOCMVD#Em zc&U?frmGiM$Gs>kDTaMv5VnXJ)*J`&)-!oZ>==O%OZr?+w-LM+v zrL%b9+$*xn?d@LIHycJJ7;&m=1nZ8xA3JvL#+{og5SY9H zr-SbMpqcLHaa`-V4ui#oD`%cU-|!f0mSPmbOMU2v(zjzK-a{*$p0F2&I%rCeRwiO`k^I&{*7=eHnbNuu3p8dv!~&mTtIolI$XTgg)0ko^v#4ZIXR89o&8w1x&jtzQ+zM8 z5-%9#`-rY1mB~WowOdVaPX#g67sJv0_hR$L^_ZEPM-R`cgFouQr7Jx+cW#uf58YG7 z0K8-42nND16%^2YXyqD|d)XKCVtRG}7q4D{KW4?{%g>{0e1Wb_F>-AoSj;{|Jz-3F zh#Ts-NhgkY$;ov|r+#d50w$*&{;37HgJF!%xe>SJq9l(x=iYG)-{`}<-y)wq2f_)2 zdCgc;1fxAYa1`aCGM{)cI#ELR#!O#7#yktCsH%gPu0dsE8}{tkL-ksYocv;xl$1z2 z;@JR}!deO2xXOv^*RM+_UkC3}eew9yc<44v0Kfm;ZN)26I|{`u}%K!TsQpL9mnM`?zi#8 z7Bwc!j7KI(i~B-KnWfIvWEfp>qR!b?bQnBlQR6JVZ?}}bD0GtNig$g6kSK$sFQ|+t z5wv(RDMu#Cuv^(Wuj%PkTJ2m<%W*hOq&a_lKRj$QxbhqL|&2~(Wr}+_IvUw=; z$9=(MT*V`sRM}HBbvk<8aJ{o%dOgXtNHe;Bk`FG2lqH>}I_Jqvx;s@jbk6)q8Z9g% zTr)b|G$VPY(M*+*&Lw?{uOxqBQgr!C%9NiLPJXHKrR?N}tXkf>kuc_oY`vYN=b_&Z zylh+2Pui6puF@)6Tu&5Fzt+iXt{W{b<@d{iRC~O+$*djJm%O;GY!#6N6>p^{84XiXK?Y?pimwLu1T(y-b z^N~h>IV@2Crn1j;3A03y!Grkju5P^i(n~mg{5W2F?KPY@aS|`TavZO`asscA`|O!B z7#SKsI2cq7PExAkrGB@-a?DGmDCg}!7sTY?gK{r|rk@aqMIMSf&2UcxD* zfoT3}RJ7fRf*hx8J8dTVR%(S-BiW)*jKNES!5WFeXpX>Yio-zB0-mUw_h?O{a1 zQCKV{iW`QdayM4p{oAN-Z-YJH0VRVuvH(*&Bt_SGX7C0S@n{GUzZ->Bwa9nG(b+u$ zQ+@%~@(e}__lCnrkZrTsV2DR#0|=)x4_3<0NM$k^a^dm0sq7)TdDQid@`a~zM7==- zDPA~4H*++KviuzQydL<7DRa;uyF3?_<-%%pA=jP@LpTDDdjVd$8ONv%tf_B6uBQ)E zb6#v}S_@a)kC}NdOtApI|IHubrH&Z{ob}lEj>mEAp2H|Ggpg~{XT>fBD?wN}#~leB z+>X=F-za#kxt6Uv;q(t+Xf}%0wpLWwqX+~;uvIkTz@ej9TUiKG)DL4K3a7&^p9b?L zK&V>?;sH!bN%;bjK>qf{&x0{Wwp^2`E-$C?c%NaO~7C4LZVF-rdj`-j( zaXSXW6wVJi=9h9uoRyGV*jN~IbMtZ@r@G@eCam%{(|zDIMoBhNo1(VM!ZP3wV4$}j zKC1hK*N2#mgmjersU5_KZ(G!ZNq0!rU7!k)nb1b+NRm(#xkyb4Hj@zxGh_JCQ{Tj; z4)xjYj=LYh-Yx6kBDs+uI)0y@%5R{y>42Zg>h*Z&x~jJ_yg=*um!8Jo{=+}wD_{LL zymb5|rlzK0ruY#v(I-2|3hgNIzu-pa)hn0`xkZSxBHK*&Gp{9KGIRYCUok&y#(e1@ z#E91@{cItAFvMWASP`V^N>IHT9SLfW`~tvA{wBI-Sn(d0%|T*(onvN{R^+M~om9`V z^$77`rhCCj@__4^759!Dy4QI|098>qGLONbDU?^OmKm{@g+2_<_++PTL&T39YZ3DD z@?`pZUXDfHWO)MW)0vr`GkD_rKct5p-CG-X;k^$YLuCQU(JZpaB8x1t$l`5}ZQHit zcYpVHGt8$y{eR)V|M&m4#J{$-R!g-!WK2MPP#)i?!83Qg)VPwv*k47Go}Ylao^-|o zavFeB|Bqk5O23r)E<8BrrAfFiWJpl|korbpqnG@7Vuy+RY}C!8v5tW|ZaVQ~CW}CM zQomSo*2Z<(&_y9F8OP#rjTq&ng{d>;PklE!O~m=-x#FL@USaNeQK8H<=Hf97uPLq9 z1s`-YaWwXtkgDn{7wTgstW4+Q@vCF-$3JQt_z;1 zVB!f22^wn>y=aVTE}_*4|EZ(S*N#U^Y}4qSvY~MZ4`x{581@rGJmH6~Gqp8cv90PX zi*zih5~*J{>iVk~a)srm+&c7d9a?*(>%h7*zOEL#6>)P6ckkbet*c_F%E?24a|=H4 zoBtJC8rPvLzYy_Im@XIV==d7x`RYh_r@(iVhRo=Sd$yPuofE%&BeIkI!l95f2rD&0 zo~mu7K|g=WYqF3{CQ5^U3l)F|$|R@NO(lsnvm$O9c-v5Xr)WvGbkI#EFY1!$P-_Be z>BZ1ZNaak30+7m%fDCjIw7@q%h{>TY_;ad}2zW5J5J6~N8^UWy7!B+R5zjkjD-;nETE{m7J1G% zy1GVTrbf>Sz#s`NPbfly(FD8QCj7C2*1-xuEAQkSrh6$D9={tA;)4Yv*DtSo$3igX z3&LJnjLOQ@ShH#swzo8k62wnJniYUigAIk{Ik4JXSXH?S^;K0QSPk%o0vHXNu)2ON za@_rz0;nCIk`U~}6JG}e^L zxxzda+(y~KxzOc+&6$rijT_+b&La@v#XU`;=;TizxQ+5X$nJFLben3+G#@Up5#_7b zVO^O8mrlNjmrh-Rt$aOpuU|#=W{0h!39iCo9Dn8sy!7KAV4$~0W?mUgtn%ScSLq=_ z4=?^;*um^mJ=!Q8%N(ychaPfKxcGt04<>$aX$nB*&qi{fqPh|rTbi(XbqSnK8?0uh zrT{D=|3=i*7o)hO5S68CP+p!(;U+k&6{uZZhZ5q;L3}ui3t$LDun_UVP8}i2EvW$H zjt93F-Y`bw4P9%tYwMbjUsyz8>O*HUmBDME4j(U1z?~Hmuy$5j67S}GrzikjWre7# zsX;|a32IkWp*+`&2~P-Ke$rBVR0=?HQ+m#uKTEZl4X9gHj_NWOE_Qa~-=295etQ|J z3#g9#3)Jxp!$#MM%d>GqGs;VfRVRwBr%{`p4fi;_fe^LTAWXzlt}~aqebo7*dyN%< zA&O$43O7?ZgMKeU)Sg&~vjWgUVNvQd@M5q$(>Fow&}zz;dy{7@vkK4_ifRf#8-h`i z0(8%q9Ds{#>QR7q_|_GG(Qrg50OMwqQu}8mJ=dpF0LEap=OD+)3cwJ_`>=ejBW;r6 zgrjp98k(YOz8WcixS8<$QzgD0MNLd>_n`vY9=pF+Z9M}2)g?1=!* z9)A{3zwjEBu?qF2DFq;RI_q2Z;_!hzC}YiP7FlGGMHX3P@wUOMufB@^`9J?>h8Y+b z#HmxKmiY5p!MB3ywR4|c8{KgKi$@CDxqzJ9^;40le?uJ>o}3^G6jlII-ysnrKk7q; zS+PcaT4TaYy`2~$1|Rj6sAC(UK2^d-eW4smruwoPK{5o&K=RNJVzZM+T4JpXi7v6k zq(|j5`7s?ftN>&sC-pIjW$LRE@5BRjGt(4+dODrPVyXmXF#(TJl%iKJ*DncFb={WXrly}}Knv5M+LpTJ5}(60A8C2) z;Cd#*=RB#y7xJNZxEJ4jr335kc@MT8JAik-X9xOkoWuDOCotCEPs1>!0F*YbWvGrT zBe@1(UdArKtbyi%t$O>wwhnbulF$?ZM1w{GhcnYWvxNl#3)!N47s3G#HBb^-++c+# z)p+>F9{kg{L6)hlti5LcC0s9449!alOW^hYjmeIj`3>7pw(UOHtD0dfEJu#bimH4& zJya728i;Np1pg#&06=+?;Ioqzm>EXInh$4LE!AN$>?O6LEOzA=!Dcrj5^_`1;kR_^ z6Jse0gLx%kS5{GpB9|R=6T@(O!f+K8$!C`n6GJdq9oV{SAKKftpt-RgYuD6a_1cXj zNM|uRIE}o@dK4O_F)}%a5DCJ9$_A`00Xlky;R`3QjyICnu@|Lfr6hPmh*H}f?(2hx zcS9xt*+})cYwsb{*B8QOox->Nk5Q7IdMrNtRtf-A6kg%g^V+*#l zwxYeY1(mJ@&Yd}pfr$m!D>vYM58aLJ8|zR|RDznu&7we@9`1pMcc7+wSf`ttNYTwH zs>YuE2M`)OjZ@c#5cDn}U@JlU`qh~8N8y>D$Cjow*xufX#&yjoudGHq8pgG2R}phn zp&~bm@hLY7N-ALXjAA#n;ViC1DYdy7Y7aqr2 z+NO2bwqqyVhs4j&94g8i(6}ZSJ>7%EhmsrowuNUxx;<{Xu0`0|wnH|AS=ZQr$%%2C zJAVD0zFz@V44=JAYSXEw% zt-BARjq0(jtqmLMDy98;BW6^r+m5>q?Lm8c8#bd{_198Vgmd3@5jKv0G@vOX$%bw$)~>@ z#%uX4#^N;q`LBb=jI4l)P#==Vekx3l!{Zw|vQ~(CA>4zSo~N;eg~uTlBqCu-Z=mrI zb&pI+Nix0Qh0$Ju=C$=m1Sa4M8WA;9zk-)~QbaY{Nh=8%KdQe1XD)V{VM~THbWs1K zzk>K^kvM{hg3WL^tTY}7sjnkU4m44pK0Y&v`Gt8{Yj`#()98UzV|oMglN+ zLWt$qg&vQAg$8ROnTTY|HW@8zt_SX?a+xGdXG!8RG)MBBq0u8qx{SEmi46FqrsT(D zc>+ZsRDvCcn^Ceb1y7V>n9PV%T?#asT+>`{tmNe{j$(A(D~enQ%#L6pVn<04jX^1b zcYYSG*aD4xbEv$OisGBh78)yC5R6glakyw)Zh?Wu0f8tlUsfgUDMIy>U}YkI?L>@~ zI~p)NI|y@b2^>~x_cZn`D#)ce_anrUI4so8M8~678XK*gZvuE+Sd|--F_NCeTY;ZS zzUs0|yGl1YbSKYfq?eP_>u zQU23U8bX|im}RyH&wgRWom%IM2va5oqXpIF#qiEfke6C8pF@QiE|@wI+)M$eDo&5A zdnzk=szr`Q)g~Z}+f@Q4!6bwXSDW@@x_o15cFZ3_Xk-+T(N4t1dJ&$vf#_5ZEW@LS z+5PbLU4h*@31@H`p6(7z6k zwGFZhFh6Lm+QXXT@msHG(2XEHNaFKT2n^l8LeCYLNT>w70fZM8kQ?*Dfe>a!2VwF~ zV7mL9DF5Qr%J>aMz_Wnh^mQ79Q+>>j!|$2L*t}14rq-|0NQPPD>7KO&Yq z{Z>cn-63ZdghikmE4I=N>1{sRheh3TbUpHog)3{JAEzkwnOg>sK#g#_fUI zZ$v2Q!S(Ko7#g33*_ns1&yCJY=WzZ?4{r4IV|4ri{BG(f*ocqWeoV}`>49m*ER`cX zaRVb$bC~r|M`dIRqhlkOnV!J4OXuO8n?p1d#?-i9 zg4A(HxD8mC@5cGAAxu*|emmFG)rJ1?84>VPbJLh18e;=p80k8LQ)e#28@Gt^k8UPJ zNH}}kbCmZel_#}Xj(>(aO%s!tqlf+A;D9KRItHdxDAj#5=oSAPH*Uz=Q|?5KPtQ{w zaob8POE)Jc2T|`7u5{gywbS@M@e+S-pC4{&2fpc1j12Z;aC8#mlan}e<_yM0hA}@o z3%AjZ=-e3kWjEFYJQD*Lb4L*NQ`;IEz`#7o2=^HJhI-N2-3RYX0R0`K7#f~|l{#^L zdU!_@7P=M-m?oZB`4{3Ddd3($-WlTEhsjY72Kuj~xA!70T)0A=Fdqu39Z&a8A?yvI zr>_??!+q%LxQ0o05V8{$)x*fppv=DH>GIJqbq~IB8w?X)VOeao zgW3u2c05ipV0hvR=H{&!pP9#u$B()3K`ab+;o61M=o_6zjASCet@HYcZ@NbA*(quh zH)Qja5Y?wY;Devqu5aW9X2SfYm*g&8O705rrW%Hz6=Ty^WsOUtf$n3uiKzo-B6^8g z7|l@(Qdzq%UqK(Wix731-E%V-r2ElC^*b~=C2wSBNBS`ACOJ=?fT{5@EKtMt%}!FM zyqoH^o7%wwdaie(Z-DN3o*hi}I5IRs<&I!_VwCRDIZTg_QahMH)M%6If8*LkT<+|} zP(QW9i3{*8@B@ZAJ5;6_6e2cq0avc~6TjSPH-l$f4pEz(UGQOIY*+>Y10xfdoSu~p zqh@AiNVd$8%o>)#0xu9gzQBV3h5gXsz)2c$cr!HW4P7li>i!8FpB8x2E3fxQq zn2wwrC-&~$ColUL{KZK>&sw3rz)D!G0OURoj|mvOj+u_2o_Q z#CWqlR>tte2_~9mDK->&9Wnr8TUpAM5trsg+zUH&NXF4a^rJEc@aMD^^NZ1TWEWb?D=|6mMNLyP-uuXVap%z^*uQrt_U+jYGxY^~y>mp*NMkWp zP;#9!EsbYkBvl@!&H4<A(0MI>#3?x#mm2cp3?Rj7d7%J3{yUc0)i{4oCK z-+v4R-B)mNY>tMyycAWkwDebWcy_0a+Bhr!N^2T$?7$9`I_P>=Y{t?3J8|^T0qote z73G-2;B-J#75sTPEB|1zW9^1bc<4Qk;?VA$Xlbm2J3NEg`Fz}W?=d{`?gwz-;9eX& zxCaLh9726ng2n`$D5=?j`;Q&LgLfanrj6?`H#-53kH!}??$PT}N+(59eEy_x<`v=N z|KIthDwKThuj<65*%CbRu6H0j-h~PG%1d+I zJ~Hbjd6smjtIc)DO;afVqcWaVQK+6pe$hCGJvbgrC@ZVNN8fo26X&1D*S`4gaC>v` z@I&vSF>3^qGj5nHPEo;$jHGm0D;8ub0QCu058tTF&Hx-798$Vgc_lw;q0w9#smv6j!I0X3!^Abz z#PETt$Y2R98H*w?IflHXr;v(MDdb22+B_ZxxoR~+bHmjOe!jk z5`AQ)No4tug6(cVed`jK!^0>{9!Ehs5N3}T+1NOek#XgwpbN|l7(z<&HknFk0%Cjw zu|!s_0l_#D5_c@gb?h<-PETQCY!nldlNg^IM=F(&&VpO+#S|&S*?v~18|hS1WEZ(% zl{_Yq7)LNLEsfqZrl%&sHO;68wc)PCCgD!v?CDc#Z9v{roUYg>V=+ul4vIW!*z8WF z$FY$iB+^;+<|LVjVtR5y!k$v(3f<8k)5(UEpEh&H)d(5J5-`oNNKm~s<)#S1=q$-m z$i&5NOx-ig#8jY2{%M>qTz)b-F)^V?TmyV_7MPksJkGW03YZQA6`?pSc0rMspZcez zaf*}p3duu6>=MZYLZW99r}Q6B#F0oz{z!copP0hfxTII^2c{+v=bK$=aFS`cFX!n* zOzAo!4|%p7T&IJLQYxOn)WoFPXk==795Ja^Rw)~dI~<8fxT83G_6*{pZx&+eHz_i4 z$~(zUZeqgES(CAdc|QuH(|`4ii zd6tHrC4`lkkV7=gS-yi99v)K1a5$u74n-wz!cwL~QK_>TghbvTAL^1GT_kn$&f$E2LHo>|Ps zn`s~;1B3YV2qKc7Bxp%$vKzrq%fr&~Hp(waKcoB>NKT4wRk=Q=yxM&A*nY(gSkqO7 zp<}P%)nkK5W#4A6p^P%hD5H!r%6Lb3s{|k?i(GNV6}b4~9q8=r#Noq-)g~ctHdcE> z0#N=fR`wgMYRqSh``Ax1LQ_2_cAdnApE>#)TX5qiK8u?+G-F))(v>yMShRQ(F27_O za)|+i`eeN0S%OXLTkyj3-$E#!Lq_^@KDQSp8IM?HTx6B;jamzv18M0i+Bn9NzN?vQ zDGB%z+3mDTpEM=%Ibh|?tbz>cvkB>+0;#-Jt(oq&ij-D6ax!37{a?9fld-0~pqI_! z+SfMrq1v1A(NElj3ma+?tlP^Ts*NvyrkW1J_9FYnZ z>Dy{5il2khtxb(vGNKc=L-I}XjCNU*OLQtih^%IdL;9<3wW%G$Vc*Ll;~KTjo)~^m znv=dYmw(j?uvbIB`56dLoyQ5qXNAzETglI82;&>7rg_+@Fzt zE|;5eN*G*9NBYFfH}V0T8K;&W5_$3_Cz?At@%#Vnzu~g0u10-)1TP*q1#jz0eC0Q9 z!+h%$rle2r_WLm~G=ejO1FG}MPiQ%c%}IDxiwO=pLuVgUjYh=@#~_loc0X(~P8Ch4 zv1?XzWfh$|C0|XF7fd@}$aB1Gm2zx%xFk)Imts;fKC#$ca5+RT>9FeSTkLL$J0WF( zGaGfBq6TI;{GLU)?xvOKd-54PeI|gs+_y-1u*gjdH?E{UrA}l-u7r${%+5Akee<>W z;QA)q|M;_5x%D#KaKTd8Jbtt;TZh%_*JAS6b2vF3VM>wrw<1@!7=QeGzk?c+j6Ec6 zYqoy?%bWAq`^+A+F7HrZG&%Aa_}kZF>y~Y(H;v)Ry{GYo&wLTB4K?uleCS$qA+Bxn z3bW;)gGcW5bmn!ItI}UfOqZ&N%vK!(1KBxth6<6O#8*?MMJ-WK2cAfwvW>RWuyC z`XoO%d4e-VBU9rze&_(k15w3Y9N4={+9(T#h9|{8%e5$woXebcRmzvtr8k@b$WMS7 z37L0Iz)3)g_|xPck4i8ptoptQ^^FZO5Ou*X!dF#Sqr&e+rOzYR^-{mz03%Th4h@Q|BmkK% zaVm`&NjjU^C5^c>{G1XjjY2j{2Ap}5N0uZ-HU*cYMUj7UPI=Wrp^|6({MMRF!kmdK z@-LT?^vXRJ>TEhDPeeX2CGQI|_?LLi@*s$3-O}jS!C768>V>Nn`In4OA{m)LE*TNI zBzh@_>OrqSVGD4&Txxy4ED1eP8Q1r-IUM4*xJiSP>vixm;-qT$Ig=+ql%(zZn zAsJS)!mJK)XLHEIR;MM)=~awM<+YS`$!~rt&B{nJlPxz13)TZR`kENj>*87EA)l49 zkV^8w;86M{!NstwTvLwqhy+!dYY?|cAL|I{sIb2uemrPIUw=8Q6uX#7lo z*L*OuL&UWQxnnig3rR`&CFuw0D5y^Z%p@g z_NCN8H$Mx=Bw)7`khS?lXI#Ti>b~faGc(191O@1i~db~ z%PTT-hB)h5Qgm#Vj;lk$XEo-7lp6q1cO?H9Hsz&$DX*@0Zx3pN9BBiF&K}3EeaDdG z!h~g%QAQbMlu^d}inmGta%^_|_;J;z*uQ^2e)z*5s+WLohSz@r%s!Fy8RVaR3Jzp5 zoH8!x{G^`lSWW54s~c<7N`*t>TS)yvl5lUKCir3aqC zYa^%d!c$Km9k$6hPx@HW7pwACASZn(YhL>JGS=aQmWlI z(m#nwKhP~>4ZkA)%&CxCq9&fV!DB6;!X|x2xu2H4mqq$<7U`do{39tt;*EVct3|?D z+KtbB_9ir)IgKY@+Kb^>4pV23;neXx7@CMkC%8(+Dpt7dX4s{F9guMzNjsOF{UqsA zN_-s0aZp9_hHFZ5)?iA6t#Z3ih(~2;>Ojimr|{CR7g=o{k-I|rh9)?yd4%IKMs#^~ zUtCNsFFMale5N$qCh1R$UEbut#Ke^3?@63Edk}?$^bO5f$sc}d&2^zg4>=hlW`ZzD ze!^D?OGeU|5MfFFdBn(AG%sT(=Bu5Aqa4MvBL8G`fzN;CEAUkN(a|y=Q?J~EJ0IVR z=2cf<>-JXs;1528zx?iFc;eX?6!~Y9g1|m1NtL|x{|l0Chm7Anq8E~X+zdl)W+=Mx zczq&kg(CkPGPWoAml8iD|M>Z=2qb-U=CAaNbJAyaxZo0faD8$bzSy?8eDJx=NJhsM z`DbU7=c3yWqoTu)^V@JlNOiDO1 zj<;oE7&!0}9{RzzaNjfgQM>FC?Cgx;#rqz`Gkpi}(0vc$g@+%)iAWvRudl>&-}xsz zdpwG<(}!{QU3cM;$Dcx~dn0bx?8ALeJ%@p@h{$G>F|8y*LG&j1sK!@P!Ooq<%kh#+ z#_POqx64>S(!+kgT9?0Q&)J?F&zz3{RO``8JHc@{Czf%%OqBZP_<`f9WtV>dw_VV! zzE&F;omS%&j;{=Nl#gS2g6)M{>Iv;h)Ni@sR#Zy7_dc-)!`WKgeEmlB?|b=OSW>8@ z5faR~nz`VKlzT~=-(R8l21Ni$8&}FlQMW5stwcxXe6)9V$vE4DhMFq0&g+4{x(>^i zbYpbrEGDMHQr^X%j44Ge3R-LW_bm~C94Iq#83wDt<;>R8YM@EdBCp64kH?FPF4~Su zckaaMHEXbP)FF%t=%^NJ6SUkn0Jjkrso z{gdrx0U{~DhX_B+vxpA3rh#I@nGTVgZ+=)vEn?)cA%lO>l?;BxMjj&4h=}49W)jAu znAwEBOPEdf>j=QXK}}AG6GK0W^x#8Gj!G7#2R=4=pR||O!AzdWeZ3ecb52}{E>!wS zc1RfNtxd6znZ-ZfZm9)YMGt0acMHd!tjf>|m67wA<& zmcodi_EHv=6=fE1Ed%YIF;XVVBbt}{e2}uC;eCTFVH#BEBC|R&CCa@fdgMYbiyA11 zE_A}B%yOc==tM46%*8xqd`dp1pB73!@h|aEOLVL16z|KCyqBR*9)BSq=~eP88Aalv ztj0YBxfXR4b;Gj3glKzRN2Ecfg|enDB^l~sI9P%$!wW0V8BWOz)+O#0|v;-fx`!pYHq zgvTK4;Bmn2ths>sEM2=zj_l>AZ$W~P!W0VOW#MEPf)>bh#=zbeJj(JENI)-H1dVKAF{|5RF{t&w-O!(@be;psb z=5l=Ui#KBV=2Zxt?#H1iFBV+$Vf@x7Z^air^I5FixCPgJ=;PSXlE%K1QQY$BU&F_4 zycpMRzX~7z+?TL<+eNU2dU3389JTXT;`e{+%edjQzk{!S=?mDfuobz{y$A;EurAqz z|Nh_q62JMo{|`1wT>0TNKK+T`#QZK9OD}7|A{k$w7|-LjPkjO%z61`Ph@x}FTKwS` zKZ4JE{)@PHZ4Z`IWpUO%U*i1={^E~5i%r{Cz?~1_$f*%Uc%@~0?Qkx|b+`N)zIf|3 z`0`i3jIC?yarVWRF=?;E$A0sV@ZbN(@8i-POR;cSD<<~tfqCgw`1r4VNy7Um)?Ks! z&P)u0qj`MwFa8WS-ttj==GT4=ZMj|yOB{drPv69XisN|gL@(mio%sB3{~`YPzyB7l zyLv6!7cND1atxVl0UJK>CH(enAHuE#kYMKfA?p9fNfiM;A0>CF#N&8uuP1?v2Yze z_m$tkj#Zub>TmxhE|xO0W@!yxdiV+S`PO2`H6O&^{@HJ1$BwONS+pJtI@}nz|0(QC zIq@5R^{2Sy)(_)1zw~9Su#MxP2Yv#RyF!;?k$=TS*W#+>ZajF`?bv^I60t-Q(^F%Z zN>pQ!$h>oLJx(3ii^Bs^L{m}^<$fX*Kqj6*C=^G!tp|%XFTlE1H@^FWClKX;BP(O( z_BFWp6FV_)4wVwuE)kG+5i(Jwa)kr5Z-RU2`| zM?Q)_{q@h_#v4C?ix&9tJuca}6ycH67!M|J;ng3SApm`yYw>Hp@%#AvCq9U4ue}CK>&-ZG@&rQW zI_$jp)A)nm{t9ln=?3iFx*pA@rMUG&J5XI)ho#F`qQeo!ffEs2`q3}q_rLOKeBc8& z;F2|6m>f8Xp{Y0)Z2uts=#TyoAGzf^T)3(m)y?x^9(+pT?L{mc#HK55K-J)0>^d_g z8GG(LXi<- zx~K_FUKe#jKgIZ2FBpa*Js6%MRp?ghQW@T--sDf$F6vc|Vy}Yz1%T2ibtuLlf+(j> z3)7$uN;gcS+AT~B?Tz}O{L`8_F6Ex2pCaJoNO$zg8OCzZWrcbdd+OFC`X5q*d-D~+7n#ip3f*#br z7?N^KnI9w-@&a-$^FL2Ee~mmHOy)|0v^V7e4Js?w;_XVf>k z)$Vvy&Wn0xIier^LPkRcqRJxMKfXQWJ<84c&N`{WqI+fXBEKg8@?3{f?(v0&D${h! zys=1oAYho9{L}I=E|q6=E6}N?#&lXW`6vD)9!90|Lryr`Q^_M?GYz`DFod^H0G3fk z8D*4FMj1bUIPCgM3(mT6I-Eb%u#e4t*!k|AYm8YuBmh+(gM9{eIRtM+0M7PEX8R}X zW2T*c8Q^~a3$g>aVe0!Vm9y z49Cul;NXb}uKCoLaQ)g^+<)i8IC?0Ebr&qhQfm^4mi73xZOwS}JO6^m4~CHK??-L> zdfa&1b__lC1AOb@moYRx1|%!6_5&Y8^VCatWVch1f7h>Y;hX>RAK1Hl7~N}j;<`-> z@Y?Rz;9YwwK74@}M^F9)KYHQ?R4=^_*KDc6BcijHPmf^o;u0V8r z5Rs~RxZ&Clz&fxG&+a+_x4#4H*SDc(_2t-f$y!|2)r_-!0~nqPNg2}{jM}Sf@Wns; zU36ER!Z*MD1RmPA3(?U4F1hs&aof&DJSTba;&Ve-vFT#;cmp^#oWqy?>MLlqjN^NE zJ%R@wc@ljSF?4OY8vpNaeguae`W_y7en0xMK78auH)80;moVgS!bd*$Rk){);@jVU z4h8E?^KadXqmTV39(#E|3iS+tNqoB#Nyc`V21e4&Xn3{1`H3m*^vfoYjfO&K>yJ=Rbz|xqkff zzkeTt;~^x>J~*UY`z+$$WP{6FhfSB>gs)t-9*=(OTX_2LFhG(CDOC4dk3aeBMcDPd zAL7x2Bd}ZT$mXRFFKJnO>5cfvB};MiholaHDe-iYpv2tYlOQw?Pi;zJM4O2w9epLk*;?_fi3wZY_fp&(i! z*~q{>ejh9@C#I!=h{h)|J(YyRk&+sBhABFVtnVN!J@MRjngn%p6mps_;v6T#V^m#ajrzBvnN>9H`5QVU)d2 zy~51>ygDkvLaaG#SN5V0iwx`?cAF*5*F8oC}d&DWffs6 zB@!kz^N9q4E*+&{oJM%O&+ibUd_l% z$(581&i0Z&Bdz@96<;PX5BRAu$-BJdC+ib;h$Y!)mwSAGGg|6UHCS>~c_1+{4`|2F zX*pw#FDB@Y?Gwv}ib<}GJW%8rulc7$Dc)l_kZVQQi%c_abO_2QsAS6(JxiI<#PDn# zpK+&LiDTo)|DrKM(>_#a+Q#@%Ve?#hQ^xq^QRRa=qmdAbahLklR)(D%3>d)_p`|Nz zV4N54NPX8r7t1=0IN_00Aa{G$_OvU-IS~;ePpO8q8!^T7luI1U@f zvX-zKgpb%eFktP%CAVFHH5W8vUS|s`Jq37cy49zhFFo`iesK34c=*YuajbU;@nk~! zwHZW{IZT{7fcqc16Zd`pdpLAz5PqK>es?XFFI$M?d!E66eD4Q%K>R=c$b&H3DzJPW z5FQa-&6X>4|A$ayAPM;V;$}N4{WJm@oZrIwFV?mDtyC1y= zxBu{VJpJVJ7#f^Ls_!@oo;Fn0EQWJr6xpe1gd$P3jEi0R+FnNz{YOt=^`;BZSY1Hh znY}2q*JI(fHCWfxj!ml;;L2;a!Dnm0MBa=lM+#|ABbr)Qpgoqrv4h7Escb?hl)~l< zH%V7NjQGeYoE|@otaR?(b_c4v+tJuui!=LP#$ylt7(cq}dw6>PF|>7bpvhi=LOO@3 zu>m}K-*b53h5gunycfA-8m?3b!v|l**ndGXFT@dgU5{ip*D}n5!#a=4f&Q~+Fu!vRmQ?2uK5_(+ zKnrRb7h_3%1FpX8YTSD34%E1vNV_Z1w&en}In#Lhp?mS2?@K;C@+5Y>dI%To+=lGf zA^mp^>0k@~R3k$cPBpf)4}v4txOCKq9dh&LB=SSa0!k0x%^3&{{k4q)L9ph*4#Idt#O~`0CgG5C=e&g3ajX(I< zh1m1zbNJ^UK8(J}h~xoBU7}301GV0S$QVTXs+DN-W^wx1VKrVXMR<4|h00E>>1jf8 z@+{7bJF$NKdNejRV#Bt}aO3q?p|e72vDJx6=WK1RY3;_^rSs7^Z!xaA{zhD}aiLmT z2vuuv;o7B$o_rSH`@i4A6Hh*gXP$W$M@Ej~FP^R=Mr5yJZN0A8OuCr+IDUNhp@wKQ#-F-2 zuI57V3FJ_yS5XgL*tq~^f$wi%!J$Vc(1Pka)e`SfS-7ZsQN@XCWL?V#H12c;EO`P*a z0#MER6aOX}?OzR*btKxn2jEcsbvSQSGIUpBkyOy>Qhw=H&W%*h4DWg0F!IN$&O72! z5rCZS$G3Fc{ZPkb+&`8G7NEy=)dKH8ErBQLp ziOM6n&$37&BAsKNh|Cf`eJQd?T79*Ko%kdHsAv1Jyy-YJ0jOso8H5iPd}VqvDH3!N zlEtCi*hm19t>S+%zjbyOwWEG!gj4bvR)kIp%LvId2|HVyp~#ztqhA0pfB31YT0c%? z)-!%dSQ<0Um=G~4aq=@$=BdL{0+2<5Gtg3!c9M#-Gw6yTC_@{o++%y97W$PivXYOg zu@_mmwjj%ua;x%-GufEu#i+%Qyt6yF#)H_)!;+mgevYEZLh-5on7?9FJ}bjp@>9Il zBqP_b5PO5rRKHqImB<;xU*@}*nYzue)Gc)|{HPhDN^i3$4Mm~ok0&aqBJ^FckdyPf zKL=t@|4hfMOgtJeN~?yE2IWo}9m9+Zk-M16;$4A+H*3q>D|JDQ@mF6N&?4wNvp0-b zSO;chDx-`t$|$3ZGJd(hKBCv_MMXu$Pc{Au-`g^F2m6&IA9Vlz4Z94*zDBXPq0ZE? z*bm~tDt$~6fOeA=7Vc^)mKmD~m+oAI{9qpr_Ky?^z=-N=u2{7WzxCm(@XAvUl0g?UU;$*L}d(IE&WrQkDDskWh`QY zPmZanJ`}hHxx*oLaa7fH!izq9=U=~uzxek%uweNn{Pq9%D_pjv1sO{kW^W}b^BGKz z#gKB#*fJHAah4mgidGqS4P)Z?KDDk{AHEB?P-A$;-A{uaOc`H!G| zNxLEd)A0l%wj3IpYmg6(BO4FE<+Y(Vm;(29bR|T|={$T+883t_h{wzbCQb0WT<|2r zaBwYnOC@Zsnj!(nF(EtX9E)US{4L`W8HZKZS>f=GV_fnf8%yBj=ZCO2>_B@h$KYA% z+vj1k6ePVP_|AWP6aVe&Poj0(2l2oE;eTT71zo6V_hJ0-QGDZT-@wTt@%2HL)@9!CGm!EHtB-5S@J&|kkNlqL<}O6 zGa+G$Bkih%4WsC2u0T=EB|IJv zDkWaKjAL>IKfd&Z-^Rx-Sb`Vt|9AYsUw<2u6>UiPvxrIBNC2*1(S_kxpTyv4ky$EM zU3CjK-ta+ezi2g%KmLF5&42$#92`r+?2&vV&mr}vU~*#c)Gqw_|N48}`*J@n`PlE` zFaO}nSX9p$f*RRG6iEYi6Q5}7ofx&LAO)7Sq6|Mbsa!$1DxKj9nS_y!IfI;eK5} zKoB;&OAX!`p7Cd#YrMIL?;o@>X41|Kp;6ObL|VD6)+-}HVwQp=h6PQzQAZLdW+`Ag z6gF4nk!F)OcgU=wGopOAac;Op`3-TD$TM=t4gT|3^r+p;-Y40?g>Sh7jp2%)b>>O> zm|bvmu0#FeHSoD>k(UOuAiB}v>A19!YZYMeT68Ab62qB#7HRM}i%XX=`Yk#wLgbgY zvm}N*@{ka>$!rEW5==IWJoGB%L1+RuEMbMNYiPn%*WHLMD;8)X(87sHZOPDdUcr=Jp{kcA00&sUP>VpYkyWn&*pnG8tmMmR_ zc^%D)^pq@9DpyM4uUr^LZPb!VBNmqjr-aM8MM97>hGUVi+C7%JMshMsGO}1URNm3Q zTxTT=?!KE5H+imiLE=*4V;xm;k#MCyl|O76#ZvrANmJKMtDfbkttq9Jv}i%6a#Zmu zd%0viC>qIV=5|q6v;K8y(}sVVv{XMTSoNb$it!cotjj59*wJSRjQXgc-7;I56`0sTyjUo7cy9yHN2MoMbS+<#r~+V`GAhT^ms1#gam%&sz%htPUGb8 zF}OPI2&JP)MWxRZJBDD`hVC8LVcm*lxb(se=xMHko6Faj9mvIkh~`Bv4nNW+7t-MX zqNxHbwj}oNehr&1{sgXGb^*HET5#=0ufg%bUi6ygp{?DIf&Pc^!-s!_32!sjU;Yu) zXA9`>A48$B3+pdghw7;iBH;`&<|Jwh{RoDt(6;SHY?Sn@TeAXHZX4ELuo{8Ur}3Y+ z{|63D<sP=k%Ij$N zp}DRO{)To*!#Hlg?@62pRb&4AwOCqTiw0W&2cCQo)5lMswxa`XpBKn*14hZev0m)m z_X672FTstseGVH|U5_i4bR!T9BUn`}vc!-}$(Sw?VF^GkokmK=f^kPB8aHjhrbSI~ zWeE@UO$Iq)m3JQ5i<<}JJw+r<5Xl}m8*b*nJn6~U?TG)#H7xN#tr zx1pk7!_FQzo_OqjeE-?q@HX_IrV1G7JBn=M5;RsfBAu9z1@jkRUPC=jKKn3IuK8Gf z`Ny&SqHVZ%>uPkh+Aw(FMI;(~aM885phw((_^Opy>WxVGkg-z=>g%yWHUXCmX-$PB z@@i8<3wn*uMoeY>-LrS$n_T^ zF&e_2vjH@=%)=!c*PzAeVl|XJ;H<<9s(mhOtjl2Ui%;RvS5Cs!wFEsr{go$Sv)izI zNe@QP9>tFzdKzOXHQ zdZ~cLtCyfU)ryQ{59 z#Z%q31oPY7i1nVvq}7M3FTDV(Rm4-AUgL}KpA(BXA&c;W{Q%o*XuCDm`B}s*!?qAxQ^L9T3PQB%uvCeevhUlj_|B6`zd%!1d-ZZ@IsI+%wv^XGRX zDuqYy0?djkx>2$-M-ADu&JDSw{h=!bu49-taVkFj<+RL7Znktzarl$KZ>}O zq>cP>Rvt+UI#Y2lG>J`lmHQ%>m2b_YfzFDqxhjDoXgHHgTpD?*K)s85m)C;@ix+`{4_sRo(6&(3ELQ%f4Fu`5bg4HV)BQiaKoOBSjO5?n6;R3bBBTaLCH6l|Z zNb0p%&kMW10UOt@f?dK5M)bnUzS?%|xNyDNZaf-|s&uKDd)kXik1{-`g``u>aMLMM zI%NCM*0v6pT)7b|ql?j5V&?T7bMM-tQFrXYzc&+vn^r!QQOdfEf;P@_xvtp z8tZD1h(}b})uf;1d+1(8TLe$3^9p&Iuidx-_USmLB_CPHNG%(3DXEp<#S)SaYSecIVMU>YRd$`lYShSBR_e~nA`s5Jn^jX2doDt{^#b*{!a(t&hT z)MEAKi?Dui3szmQ6*ph89W|Lr{N!8zf&1=%5Cbs>d@ViLymBF4dG058>1-IAwqJ$| zHeZ5yHY=)JwMd>mjJqDaA2CNGwqJD>Hm_cY&UsyMIvubLJ&QY@4Py0%Rj9E}$v%<58$#3 z)*?Ex58wHRzeWE*8qJGWW81bhXq#V!iG!0^vS~9W`(MDL4?m3FaVIuidKs>}atF4o zT?;4E*}NA2&nG^M8+LAoH9m-^e)J6-><=p)umfGW`f7ag*S>@gedGo#nrFk2r+Z4o-Nq4bsM&9U4Rx(3}5@_f5g+L zM$oZrH7;y);eoqK@Il4^bE#^r?9U-gUuK1#0^(p ziVdsgp^zBBy>~r>bX_ej*?9#nyJ$OBbXQ>41OJKd{P-0(D?6}R@~!{H@8I-^9q#6O zY~8#Web4?FKi<`cy5`lm=88*2ud5NCj-aK*iL+1d#+ZL8zWkMIaKj~%CYKYtANdwu zd}SZPoK~vJZ2`etJFdKTJ*E#li+zbsT>J6QqqWM6<(n_Z<(FTFtF~@Jm5k?34chRf zzxY$EwvJ&s*Mtk#u0X@Wg}C$sAH^kCUyY4Rx-h!$Mf43=FmKsq*ty<}C+_?K4ot@2 zcY9!N-+>QZy9C|N8mzwTD(t*?2QJ>U1``KP;mG8uS_+G^5<9lujE{Zd6S(%WZCKdi z$H7N#$DL0cL5$@~z%>A``PA>?Q@31!t!ozpV+U~i9e3mTJ;!0L?!*;WUWx4&Nj+RP z4}JTd#*v{2Hto0)j)@oXz?1vYI~qdIx{D=kmtpJH3(;Z@;i;#e!yy?@I;vZ7wWQ@D z@xNh7JI*}$3{Hd#SiWk#=zBdHO%u5P-lu`4#kl&aE2Q3R!Zpr!$J+A_0)eq?F;e<(!SfU4+!)_+~B=Z-K|* zK#L6C)pTvY54}St5sXeEa%LJiw@(vg;*JAx_4a{s83M^cS&8A6&orEUlujqr!$FPj z6sVx$sY3CB2P3GWf)a^@+F6Q9;H;mY4Gc?+5w?nlVada;Vv#feKDZkj;cm|&{@7k% zBnVr40C{gEOzST~(%Av4*M#a5FCa8N1*CIO8)e7?>RhOl6lH%mpfjH*`d|>NmtA%l zMutbQ>*bf=5apYD z$Dc?c>T~@WAaXKmSiD7wX!8Xe7xv)Cg@PXTQVCbdC@Y1nSm8Dg!i*dz{g?Qqg z2M~3&;j%3&;FNM#U+qIs8fcnVUVIj#Q60wlV6wTf>cT6rqB@EPA9)gij1z0NUyZtK zKVE)yFUBTSuWS+qlw2tq7$i;1wYKT2=dtq$-giHffy<(>m@Bwi0ULi{qR(q zF@MQYY@T0%d+vW4L9s7L{^r$NJo%G^sH4cDYZb6?(MDW$?Pdf{_9Nvm!QpUAm>%gE z{UdS?Kc>S{r=^@aoh~FqcOIt=nPe1!a7>Dc6^j-x!lum|@yf$b;NZY1RCqnAzNNBx zxIBJ1rJYJhyWo-sY$}1w6Vb#|RU z&)z?j#9t~3MdY;>Rl#_eXv{oXiiTI(=sR;=Ym`P{;PtNFOO)1;nKrJBGRi2Uj55l2 zAEEnh>{3Pklf=&WmXv{8Yq3j zGcNX*)g~YkxPA#tlb=~9Fcym`qx&%$YWW$FfpVy^j>J0_%b~Gng$(>77!L&DmHuQV zl|(!cfL+Etqp1{}%}wwm!f3Xe@ak|1T^((5uYh*1Mm+-&8{|Z{>Er)rs4~NeVz~-;Py!ngaoH~QoPLILgwitDlF4&QV zMMm?H>1l+fM=@!w!Lo(j$i!uACF7=ebQ*!a0XQ31p&;WPTY3N)lc z(K#iAHKdj^HtrC8MM zLNXwIX}B>wya)E$F2p4r3k$tCF_FSh!hzN*FDffIc_M?#Vt9R_96DERg>C$Vi3r+eY>R>-J|BP%m1BW5@&sxcA|qO~H5l(P-T##dl-s8P}@_oF$h7Fegz2$9z`YQ?fiWy>Z-FD9L5-+AI@OCqXQolx zz5+=}ONT3sGXo*`nrw(=@@TPz@ZzZ?mMvI{)_S+(?*s-%6R2(TAhhocVpU7f(P2Vx zY#L_27wM6GmPf6#nfSKS03OhN$SkY~lLnc2qk} z2r2n`5Rmb8ZLAlgrY6j5trL9=Atz%Qny$(kgrrOzk@8TtxCgn2l*ep6Ch`F|<$iC} zj|JU!RAsElI;;?FNjb=1{PZxwE{EiejMl_NC6Ak>jBp4`9dpu1BEiWd8m#Lsf0fiP z8B57EcLxuL!m93aExu~MTiOiCQ^~VofjyG1o^CKQm_g@z!CqKy#sNOK!1wRBKy`;q2)4whqJ- zF)?xFjO~|h=Vn{OOx7x8xCXV2epns+f{vS}X4HE69Jz7R7tW}**y9-JjY!aZX~MQo zPvo=lb9NgyYog&N+d6E$3-IXV%r3yjTN}Lwm;|6^0rC?(8RSctobhIn!nbnC5`5&A zo6#c`wymum?VU}?719Vs6UfCGPHBqyKlj=={KCxuEIq1&CU#s4u13Yy3sG>lAZ{8$ zYS$UK^G=wgVT>=m8n(?#kjYIT#fQe3g9rygaPyN`^`K-JMtCJC)zP~Mrk;gd%>eA4 zkBC&#p+P+ZP!(tzyB7s#6{;HQkqM2UV09yJuaI)!K`IqN3Y-e>fwQh1-i~GPRW=|M zmWOR92&csavlLn^T?Lz~0yamT?bPy)HA0}5V>gwy{0d0k^rXBveZnYi*vQfqD zvDDhU7sA=XaOb0{vI~`NzdVdbcvJME9O<$^rO7cTm8Emu0wgC-p+9VbPaY_#=pkd@P1I&x=O-rz3!6Gc{oR5~e3iO^jhVe)i39}c=rMxd&(1XslCfH3`grhMuHn&Th zP6WoKag+2hjV5X2TDljb(UQcONuaW(8tXQ1!15I<(cIdqc4SV(W2%fYf6fQ9wE~Nm z&qHMJ3 zmUZY^(hR%Pixn%@!{?7+qCW(e+XB1YiMYKA3+t^odh9IXYVxA!MDkk|f0lQZosz36 zo8@8QZbNO06|dg+FkU)-P&#LER5i`R@>&yK*>@Bss~ufEOR#d4$kfv#4-k($kcZ*% zRba{TRam}sspzE>7MB$Z=C`A*wLuz7(Q!HhyIb;Y*)l9zxKJ9|R?#=)VGxq~D2=Dt zj+{IImPi`9S{#_3mUK$KXxTX9Rh7J=yxPoS&c)9W=ab`2+CDyX3_oOJ1#?}$K0JM& z_U8$=Xf;b9-{m-n*BqO0 zwhNblVISC9oROls6Q$h@36M+0aBN5DTl$wv(Qwl`5)7s5f+-oqjf&gM<%qPsRmNh` zNEjjM|8diRXd;c6^q2E|*_(5s;D{rU>q8-#M?7eS-C{!|mXJPSRK|5Ot_)AZA?_n4 z7cT$Q7o}gh2#eb5ano&|z;gQt9{u5cIM{1NbTTMm=TNYxk-!KNlT%2<9MTu9MmBFk zA`()BVk9yxV~-fJc8AE8mp*m?sYC+dU`*WSU~$(=Dl8)EB$AmpVi6g$i5{oN&x*ek zJpNiW9?vEtGMvgGFdalF5|?gW8qs7@kqI1orV4ho_BaWHTqcc5n}nTB$QUAoKp=ra znoAx*bZJIf2Kk9-P{~MA)#dhyZZe2SN1kJjaA-=+R5O`khz27vUdSR4oI*NjK`J9! zm-xmbY2?#!I7!Hm-6Gv!j9A@cvS65ZSoJ%5DaA7RxfXAH|y$&HQ{;7}H^b{sV ze>tlIN%9YpW|P${T~`b8l3`YR22s)1R5T@JNWv#+BKqO7V>Yfu@9=?3N|Es7j=3($ zhje%faT#}I(s=}@6G*4+@OZO`W`+@;mU3vW#PsAClCiMJ*`yaW9v7^su#~-NDXU3j z%qdKe5c5^TVY7(6lmXF8EI5jIG6jdb0v4+iDU%y9vk!@py*LrJ+=BjVAp=Z2GvH<`+zse2nfe%*RJf6ss5iG$-a@)DW=WUEqY`_@69>X!|X3Zh8t zsdL>fR#fO2fZPRG*(&FHBAZI1xOK{SyL-W6Tyx!(ShjL8mMmL>rOTIN>5AoYy+X#v zYq5Iu2Gll~aAg0Gw0+Xfa>WIPBWd75ZrJ&#R@yqeRf82@FV_}T+9>?jvNpvi3#q`M$go~NUMCx>EHJl6D z{$de;L`j?sTmHG;mpL*CQ~xfB$PQDT3)w@bU@1f;eUeEgD{PZ}FdvwPw|yS+gGZ2< z4#O!Gl?8}}bSBu6;NM6u?*@1qPC?O>4}p_=B4rU z)WKQTjBIQewyYbqJxfvD+J(Hg7G}Q_sInke$emdYAAHv_FLFnj&T3>}Bn)r0!BtKhD$g`=_x7KZ~BwYA7koIofP5c$~H z8=VL_XJS~0&33fSUkLl;afICMSh-{#az1J162jzk40Vn3V0Ajt+|dD7dJ4zS z4oU9lO(s@dcp0wRyi^{XRq$0-qoJb%#D_uBt zU>7XT7OdK`7OUE-QCr^ur?&$07Og;aMFM?+0(v@I5gn06qoG@^ixEqCuw=t3xMS0p zl;o`2z81?m8l=HV!0vRZw2Y39>W~0w-?otN0o@GH-o;K2Dm+L zRM%F+CY=LMT@{kj;0HwU{EWJ}y$2l~?eKE#NUsmA?Hw>j$1oO*Q^_Km6>Bcpj-DDn z#>b}-3Pz>jw2A#}1F7ZauaN@d$dbu(+6)p58sY6`j0QU6+RS&YlZzO|D-?{4BaGql_~CYv5PC{+H7~oBp4g zMsZ5lbf?FPK&2u83HJ9$`tfr#8E~ty4^dEKJ8l+ISy6#VG$Q>p=?~lOY6hTw5ndXv zA&*J=h*?Df8a9RiB>%WEKsudPhGI+9>S&OVvylFbx^FB9#DTR0BYjZa_fexbIXA8 z;eF~c%lPHOOaVyZ$#|L^3-zdUX5l6#B(6n|+|(f%Rx@B9z4uO}Qz=YymWNf!D77T< zTj)m8OPx|z^(j(LrTs<>+WYU#u%SQ=}xJvs5jBC;x|N< zr39dMq8-z}u`EI&nL#iV!^yM9@!ShfpZ6kqn^WXNSo^45o?& zaJE$=edw@M&?#{w6+IS1Hqwt=rWVy3)*^Xk50XzXG1>3KS-fAey$qQPBc>%X}1q$B-V&z}DUaYitx#2Omd# za1go4IP$3kvgQmj6O%|DJ1n)w3ri(u+l{NnjyoWE{3~IttVQy~!^oc4i*UpTo4XFV zvHeI`d~mjOBOiPOg(JHWh(?jG>lC-oA(4>+ThzDiNJu_NUaAJw>_AJ`BKQMG5U*d2 zt?L&dI(iJDiX~`C_2cmIK8#GTf}DlJ=S4+&42SxsRO8GUU9}wxQE!dm@u#1~lg~T{ zcS8p{oFN?Vorb4<5tg)D@WKxs!JdOB(HDrLp~{JYlY8a)+=&&N7h!zgbGYyE*RcQC z8F=bi(dZw+!4V7AE?SJxz;Sq1U5?F-37qK7p>c5=ETe;nMIGqbyb#I$lX&pqM{w}y z32?m-PE%IpTxZqm@Lm#tL?WI*bJr5o=7#a;v#+X8yZKo^3qQ&JBM0{5@ZlpE3}mrH z%KGR)AL13QSk~&op2LS>_0+-~?88(0Phoyb6Q=r)ARvuXuHb;Rx&h1D{Wx}_52+af zP~=s0NypE$b9Qkyokvww3+6AXMBly>7)ht#N=J~X?7_00Rz!REptm=RPLL`+&WF;t&hO&A2FuGkYSZ5(7|)ttRs5=_zl<_|l~Hd0el^nn zM(Lb+1j~_wSN6~41eKMQx|bk7>I*U%d$7;Waij7i|6b{nFJHb)jYl|Zi!*V!=^M!+ z6%L`omvN&CpXcWifI2L~I)?x(u01ZE7}l)(?DNREvL~U$ezVBM2xMp~R?1)AL^{k2 zOWrACIx7ll%&PmXCbER$nCsA`#CIEE7) zD7iV#mJ7O(KDG7escHRS@MrD2^gk~#gsNhFpIdiOZuz~o4ZViOFib(geK`aYK7z< z`6lWiCl|~?&hVq04n_Xar-UhPxC1Z06r<*hG;88QLKH!n7P%vK?B9!=dHtmirJ}6h zmp|cH{@HwkalYfk(l>8&n%uFlf zGm0aj9u)~};cmZ7wFF-f-Q<&M*)DsQGaOSG55*-dGRET4UE)uXe=1QX^>v@qCVnMc z+B2mjW?2^)Ucr=Avkyt$kp!ZIRwWBbRqf8oypw!l{xhFu$v+i^DzZu^EXTa~F9Nnz zoKeX9ITuQQ@5tzKt;13W1-YZ{G4G8v01X0=?n=YZ?X0wQnLKLhDzSL^0<2!X0-Y^w zh{(7$5eOk8wOkX2J?@GWGfpz zk2Ihx3T%XRA>+eH8WZvCa7yDeau{}RHQKg+9PR~6knqG2!>}~Ue3;nOY&$meg5_!+bPK9Bfbvg_QINx)82tM@3^jyruxMR>sYylR8$y z78^IYW?E<^s`u13p~9BHspCU%RyU%?Z9yWHQH^>kD}`Sis*Z(tQvSuSS;}EbIvu^I zPhf0hL@K03It}s=GC3q%3;cdJGJ!DqCdLt!4u#$0f!$$)O&ZI1&VpQc5(AS#5h8_f zEQGm zLW6tZq)bfX&jIY{R5W#>#v?j#)L?#dwb<#xl9NWpUDt&hKk^xT`qQ7rO&70GYcUv@ z7$3p-ytlgBr;XTRMtB)(zjv&FI>2B{pAr9X|Ex&tdW6C6c!)Mu{tnq~v|x#I+|gDnCsu zZv~s&wZUK2fJ-;8!RNm4C0w+92O1k2)q16h9G5&Yr6L&XKZz4(&LAcYD2Za#V5?e7 zlpfDD8mer*uQ(^d^TbapoeOjE(?os!{kI#!y9?t1ce*T(pSb%m*URUonH(dsf2u@d9MT6?vvD{!qA9uNOgL>MJ{~E9_%A)`dm;-XqU=5aKujOk@1Kz%Dj?T+|n3!#vf%j z?Bs`$7h%-7|N5BG$=fvYbKYwM)GgZ#&VrUZVndxWL$#XeR_kA1TP-#;)i>kft*fxK zy&HCEHcc`BzvAYPqrRycsdPfx(qh?R7&1oY@uy{#+63g)J%`cUT)GK}85wEJ(%c9n z&5c0#Z8gQ@AB#)@%^mGXOW`-64co7tk6hm*&OEalN2e!|^n0X{6|qGa^4W@IR4A2( zDKp_0YZH)C7!l|nRHVo0vW` z2p``ta0V1#V;Go|p4p_FWBs;a6fX5E=On@SR)Cv;3=fasrI%iSgM}?8I?bDqwujN& zat+*VHAwIKA%>HF*c(@%s;dY2BX=SbjVpu7W@Q|{7C8JZ7&-MrI6@MKnkwypr)oLe zEfI_yI|_R$fj}XMirOpSmxq1k@Q*MNv%*{319#^FBoEzF)l!#IKFCcC9W6LGiVwrOQy|D}idJE`UVn^KC49l@+@Y?ZV zOeJlwx}3P=$}3PCK87DYwGTF~v0-;&#YNYlIeG+-yzm-QRv(sbxeS~A)A+$dd$9P@ zE3wKxhVS0{9MaAzG%a3(D^@q*rF;J!lisWF;j0^Q$DI#gVk(MI-i}q~=gfKa)aqX?wB6{FiJiWh9)q#fjD{;w%U3m1a`!EsJGhH36t8vSP^YOyN zcj7Gh$r79|T*4)Jx#O}cVV^#X{!|TCwAk?EBM+iKkVak4MqGc2kw4+FIHY~9coV9gGZwCaP8*BcR8TN-iq zT@PV;G69oA+7r74S(8a5j;Yd~)-;URg4q!52LG66$NGA5{ z9!#u2*l2Vmt9Zqf{!R{g@+(;lQvwHyK5H?eAR2vzYOAu73mK<@LVGD5H!r$|$3Z z{}Pbre`yy$y(s0_ODsD&I`lbbv=oU1!*z8{71pd-tu~qD7g}`2Ndu{52FH(|z{!)R z)LL>`_Wh(!%(18XB)HhANG0_qAZjqo!L1xgV0b(pWf-rDy6BzD3QcgANWg8 zydXVN^gM%E-^Lw!VcgspkF#jF#vIczLmrWE5yRPVYF4A_+ZXRke{?R+jgQw7fwDG^ zJT1zrP%357z51PXF$bC*f=S)xxw7O>$+3u;;FO~xX5BCjeP{N!Gz88xGl(qpX{n@t zMlLz%Gviv{nHwH^ptLp2EL5uHUuBtK<}TA_oEDGj-i*$Qw(4NGD8WoXdh*N6CC_*v zUS`rD=QDadUsyAkb#I)`9A}{Y>)__zG(uLfFnuLP6SFcdQP;Ze(HJvc$=9%cSuDkI zUyegJlUjm1O6_kS@7KvHi-9smIU^hrcPR2|}6 zp&2AI%(3)JI5$)x^u2pv%>+dhQKrd;ygMfMSD^9Zw<7%5|H0(hA$SW`HCxGSo~=$Z z!OlsS#(AvXGL*h~)E9~XnU#;%uMQahqb)=5Huw8aFEe>rMatw6eW7ec5- zb>}+REn!UV{yuV1D;ym?>XYA`6wbW21-_Q0NT0kNk?|<3u4-7_wQyE zHJg(BR1?1?9V}^5enej^6Y;zU8!x&Bmo4*Q|ACkB(t$~AynH(v9l-HjPvdCsIP6s| zk|sZvEnfkD?ksk_HiA%c1mUm+YcIV4oynv4$uqkVHF>f8!pm?$)il2M;4V}w+=QDp z%)@KDU&FMm7VB0mhA$t&6F>eoh6+n@_4OAcJGu);j)jr*HRGaT}dbmM`KZOVHyIT=}7cWeR{*GYn_FGVK>`puoY{Lx~ zEXKaaZbx6T0*zJGsBBq=4NEO};ptZp3#3G@DWv!Y%+9p~mtuKGEl%%!9w!E;k&!l} zt9?CoT-l04&%A~y=>)dSUxC%FRoMH&W7u_a6svdMgypUY>^d}vgtZo%H?Kxv-~~MJ z)XRt!T(EfSaLLs-qk3{LUN|-aE)*M>oB+JF*m3R6D4cu}2S?(l>0E*>OWJY#i67wc zV*x2$oNH>vrYmm7(%Lkhd+>gonGh}U^)Pp)CVpy#oZCi}QAQbMluWQ^;?mBF_tk}#$?$H#aK~`zi{+o?zGyLfp9cw7$5&8aIXR{LsY?|yuy@}+HGzpU z7H9kjj8dSgjyjbeK#oKR$>gp5`dD2iu)+GH>y5Kdzdr1v3$*DG}`*{ z>`Nz*N~Ym-x{&iP!_7C>I9t%1+)hu2?$ zlvK!6CJoE@Q4GBL5X^R$7`K*FbjD;cNp61)7Oz~3wTruP=#}TN@7QUq-nAQo-866-61c<{*=kSN$txAX#B(qYBj zk355<*@GS1w_#pqJ2I&xPM$c13YQ)GUU?DI@dEty?bxZE)Id~Y; z;TYOBT#c)iR^f&FzJsIrR@`#sc0|Ye@bEJ)E28d-i??Cnybj6x1agHqo_yj3oH;e9 z);8hR7%uW!bR4O_6Zy8|9u9s|8+@Z8f+VLUFKpSpJ3 zaLrYy^tz;YW?;@|5t$mreRus3;j{@MF->)i*t}sgCZ=D(tIrK0V=<$3eitsB^NBfz_a(`$g~&RFItaz9rbG6mD8tA!RK;d&&w}j$~_;~E^^?W z7fxXP)}62oK8L5qs&V7yPQ3KgLojt+f*T~9QUuQI!CjBOh*&D8$j6Rl8?mgj2B-Eu zk0S%qQq0X##@6D7n>WHs(pNG&Jl>C2UVa6~`bH%L6RM=FT()&R>isrkA`|GFl!h;Q z1`j^B7m18s&!TntR$Q@hp|m3oq{HKQ=HYvAax#bc>n_EPRh`n{Sur&_gka8v;K2v+ z!ii}m9~;D_J8s5~WewQ-;5YH~aZYV5ql_}jD5H!r$|&Q_z%fQkOPh?FUO!N-tgMi6 zWo_~5{NSXMei=YL+j(je*f zumAdQip>9cAsUS;F68LZWA8A3-i)9*Upr<%-y_9D0+3`7KV5Hc>rm^Wa<^=UJWUNg^#ecH14WTWVo}kxgab@Khj? zEg%;fN5WnYZ-Wh%$svT}QivrCUqc71p?;)1&1hP-1rw+CA~Sgw*4lZn*3CmLf{6C* zSL+z49cB5a(oCIIR9sQBt%2a~?lj)GHtz2365JaN7Tn$4Ex5b8OK=Gg+yVp*p4>j? z-gE!6p7+BZWA9q4R#nY!0;ZD!oq<<(Iwf`e#LF}vXJq7(+Fwx&h-)|)*Ms$l@jT~l z1b~yHr78HVhz=2gIAXBm8y{^qbTaJ3QG<-9L^ULT0G@S!l0ZI1W38 zi|Y3%xNlf#Z?*obcqUnQ`Wv%8Qj*x#)M&BGXe}M&@d>!&Z>m%Wj#8?I!X=tCgxLwh z`!&+(3w3M5EqeERUjK%mIxafqFo&|0(47+rbo`VKXrSkwIDHmrM+0g7RhZqXqPBJz ziP0HC7A~t~zAEEkFE$!TCf?J2Wfi28jZA9cPd+|qO1@d$e zxecNRIYRie!hJQmX<4wZP;6?3AxlXmSu7lm$$SuDmHy;3LtEU%_uLKDxG zJeM~M`p_ThT#-SzOUh%z0O$w(;5u#3AH03d$#S%$K)-nh9bM@wlgiK5;Bc8Tp>6Cq> zCb2UQh3>Sn&NL>;tr~k}l-O=Z)NW@J((+W@hJODY9m>)sjM6!S#uTg)tLP=Qssa;7 zwAAb2<#SrkNEjUYF(pTYd^c zOqxq~2PjX0uSrhs>Qxdl5`#D+LLmk>bzfVSC{?iuc$IU*FF)IH);*>o&C{_{6G*P0 zUdV5d;+x9TKTweK!Tgw_7_m~1n;D7Y{Gn7^2v|q4KSUcBZ%*-CgS@_me%Oe7*{ErT zmC1pJUMD6e2}s_8HIaeu5>wdC9WTXa)`3@#2;_zq)_In2Zt0zuo;wrkXPK1NES+yC zrBiR7oy^_TGXUkt(?B$#^MNP{Ng$2(Prz?v`- z_v7Bnxh^EDtE)FJ{ukw*L<0h5J}1v{vTj)A7DzlNq6n>AvpvyPGZ|H!wn3>7LF@-Q z(Rz6-?{8sWU*ARuE%P89{@2;{P6Ol4d#@N7_^NkmY6|qCiM+LNf|Tg!^WeJH%XPNr zsfSxyQlfDlDG0qFHTOq@%&HbR?zn&Fr1MZnrsFTh&l@AxOo1WfjiC~!Oy%M}a3~DhfQQKJZ&R4c)^7G ziy}=+KXR74nofc*^yDIgTedIp87HYJkQ9$uC-jXEHh}ri)3w$M$pNWCka8#PL#?dy zz48;FpCNXW39Vh*%$OU{2)V@wpS?D@S0RKE|Ha2G(o)& z5(F4ZFMCC=nd1KHDf`(&KglpkE=EDVDPM&Ta*x8Uj@Rfa%bNU$$W}w@_wo=x~DV|sn8~FMz)Zf=< z>{O(wsaZGfYL!-;tFY=@?SPN3GI(G~S5qFe)r~BLEgqKu4}LwvC9ck8Z>Uol|CLue zkzcn!`%i(RBe;yYy^{;=vFjv0DZ%FEBGx9!OAm{bLYm)2!tDZ=yzhw-^~P|{l(#Zc zeX-Ibwiq2Z)qvX{CH)xxH=U0y2%sqkC2*7nTcn&9^`>NiBVVGON)2@`!^AtH>x#G% zyndk&dRo5z8`gzTg(IZ|s4p+8aL2-SYLDXCHRGclvxik0#etO%TeM|wynTw|ST<^6 zl*3=cgtK0jy**=Rps>W|+`K|TaN-$@?o_6Vw>X*Y>BHEIL;pk_@NO4o`pjDrNg?TY z6GaUre>RuoC|$Zs7(+HC9GRXEr+icOX0Jmoh;=EJq(m)Ven>s^Es81H5Jqi32~a9J zKT+m~9h3t|TUl1tImi$?0dhx7>4yVO2>IGdJ8al0qy<=F%u;BOVRBcCgL`EcJy4l?elCq z$}S?+V=ZF&3U#%9GVNH-SX1e;lNMAoIFu>mzl=q95HA5E z&pmIJ45mJ8(C_;fnUaOF$vL5v?7XG$rLGM@fW8uvP5jb8PB|03b=LytLOCW$J|v@{x8Vi9MEs}a$-&RPWt8J_0e7vH8K=O%<@uQz1Vt+MNh0nY*vB?CGKhZ zS$oVe)|xxhzE>Gtd`l*ABK-O#zw;%71biP^KM^VV?CSp>I*_mscoMtO?l13kH_0s0?L@!+Km>AsM*?`s zTX*6UQ*4HK5{1%mp*$_CBS{4kY|ysjkQCf01e8~n{ipPdD1z!q31Akpe|s-efW^h6 zi+^Xa?VYJke7ViQeO|J}^pEQfQEvFgKse>NpIR!$?)#sXYa7SoediPy8~AmD)O&w} zD?%mg1+8uVF|e@gKp67(lBi0UL=TN#KAb|V;vxngjAx1n)Or!TChRj4-D zFuW*J94F{*35l}EJ#5waj}m$f<(24zMr1Sa&CWOjyu#i9i%<6hpS zB6VL@2AK*06`+HgmPfAMFZ6T)ZCP!2ef+WS5(o=DA?_vY@3u7NGleQ7HY|5B2Sj9z zUD)%mI;aM48Zf)Gi{lBT9}dmxGvxw-Ollmo6Pra0p`299`s6r$MW)p%8xU<)~B`Gnaqa- zh=8t|>S{H02tNn@*JfbO`$?^6=K$zNCHrT}8!sHc^Pxdv$1hw)1y>f4ZL; zN)_LKibnnZ`h@WOy8aLC-<`|9kcO{^g*S7*w_}Uda5wef^=qV+BNiOkCHX(Z!n72Xvto@JQ{nY3(%KmG|dwA{{QL$}RA z;zpHzh+At?ZxO-YGzPzu6~yPSgI(%#QChvl@^~g`o!r-q7D?it^&e`Zlow?gp%Le2 z6=;(dlDSzUzTs-3)*_M>ZZsDebk66KDi&QY4}loU%d7!R@GeP8_&QJ^Rd;1f&=vqa zfK!Ozp(cL*3%2r>LbA#`PWDQ!Ld>||=LLqCMMlZWdkqwUlR$au=bCwI?DF5|+_r+! z){JL^43Xkdw>c(^^frf#H1pgqvNWFB(_|kvPSxnzq=cMR-e?wKb%#`h2uNbI;kQWR zsHlPPgseOG#~L#KZkN$T1{ppb78&J`Trdwh~rfx!@2pK*8#4=o5@AY$6{B;mgl14c^AwM z{?39obDt>$<_NX7@vWf&!|&;OWOOvF*+P3yCfbOG6BoIr?QDF4ex)KjATYeSp`k(2 z#^xI}l8^Ct11EpRn#JeLnJT&sh%1kxk33C*0%b<@-h&w7pK4-nClgC2ouj$2rt7Yw zRM+{Y77-@lo(Zo5e-K=fQeGb$lHAJZd!RmtSw<7=MSGfeWz{ltU@N7BY{#7+ym=Cq zUFhltUz7u<2e7cUF1T~k5M?eTGMP4;5xXLj_d^U}Y};aJXg8!fLEpyanZNkI#ik^h&9|5qIEqT#-ohF$y4i9Ib^ zqXn+2f7nKr4Nan9DEjo zuz~{T*0#2xUtd4QYpvd6iZ=3G{iits0NB#p#IlMGBqs~Mhq~Jw8XJ3X<~;E)177t} zmC;8sR7ZxDIZ(<=|8-p*bk$jALus*-OSjnPwiR< zNI80-G zF_IzMZZw|p92e{!kZ3e0c7l4P?|^pX(2~Di-R8^2ab6EdUFNIm-`I%~rPC6^cIxz% zuIBVmbKTaguBvFp5rgn*m^BUtg1gemz7mq-7&t{>XKW4~6i>1=-&QuPhS2)@tFDDk z#({XU+iOlYi>IGR)OaNkS!(aW-o|^(1e^(c$LWk^dx9 z=y+WWd+H1M-lphhuEY~y=~!x8T}{nW5i}9Mb^=KJjy*qn-#Qch^StdIPYgHz)5^~g z;fJ-dwz@xz(!PJ7=yi~h>pXg#X%fcFX8eh5w(;$h&3F8K> z2oZ*3Ed;3@hHDTe^#`(|JHd7e)`=Q&h8B8u2pm=q$^1$AO}k5YO&v-*K7tv_V1D~x z1{af{UEF8u%-I`XW5pYjkRwDp#Z=oH-2X0KF!_()oW@-XL2 zR}PuX@OOKHZ`;OMJ-^4bXSY#@fnIsalb#=)bQFB4l}?VqKXW2BuhmB5Utu>5BTpij zjyUt`Y^04nSu(u7l$LbCtJLUU!Oz4SbPmbOgsJBcECNqLCa2N(l_u#@V_H0-gwP9# z(DGv&UGH_cSF~z&yy`0QQuL{l)$XwAzPjpK$}|1Ejw0QD4)JZj)nu9@UXxl4q&jpuzqfl+`FoKxpX0ivh~gXafLR@V&oCV27ZvGP0`T^#@ytM6#doWTet4STG-$E z#VToR98azBcsgD}lYWv?5$)sPPL<3xV)`Q{W8Rs&wY8+B1ufQhOWh^YW4SzR;ZCfO zNS=gGrU{qxGyNa*#L3T^-8LePabN_Sx-ZeHbA;(Me4_g{W3#3H@N51G)AgN?Yenrj zR`TE4{?{F-knHlYX`wRlbk7stg+PX_8P^4u;cfjiy(H=jPzjQdT7mt?n-w)Cpy;VB zE#IeA!$He6&CS>>EOR&BLed0Q@BT$UBKTaWVw@CR{ols3`uKh@WpwJ670Q!o&Cqr5 zdu347aPmf?)ZKR{=Rt;Je%?YA_#V>=f!D9R?S3+}oA%M=72ga*${ zB=ue6$Ql2YFEcRQo6<9*A)@fSurozMdAGDI!u}ZQb z#)FpAkR@hvtw3b`o88QAc-N@^;`0qoCslb{Flkl*>ryy;W$2rE_GP&0bYZ?F)|bz; zGuA2Ww2dAKux98gW#%kNP`EU3t0mT`5a@Tygj;r4C2fNone^XeSm3(^*GUoSm`1>ALa#l7 zadKilMgVsGYQgIDXr)Rtp)%A`y!?vT@Dl4SsLB6c259*GQ{fNBeR+XjJ&i91D2qnM z7&Q&pxnGPTez|-wh`ctb?zJ1bj3&gk51%t(2c@YFGtYgwF1mEjYVux%5V^eIj8ymz z^aTa*okr*Dau@XstJc5(aXZW)U+Vlx+EY|o8n+h58<8*P<^A_=z^H`8e395wufCAv zMSgz~!GoqK>g@OjA~%L&LiqcQlaOV@csz|S5a=$Q|50MB{j&>ug3n0L%Pcg8(oowj3)w=H_*S;T36qU|`z(#Z2O z4s%|6*f93dd=KGmvLq%VauB>PMO2bX{vwE(OFmNnK@&t9dFdg?GBwV|u9!Qq-mx$? zc?|zM9cd6d?F0o>Te}%nTOQO3LUGr|VG?HD_{6wz&su(#$BdEqBSfZYqF^HFeL+;_ z?yt)*H{%~qVYyh(gwz2KulcOaUr*%jC_$t0pC=uq=QBcUyhJYJA$5MibZ)O6l!6Lp z{!42BCmjG8uTg6bp_*Xm!ZZTl7)86peyk*CsM**q_xesZDy`ZigeiZDB~9Eu&C36a zfb!HXq^tW=!Z`V$VPxx6f*5Bacs@Zwnz=dsUaj&Xtg2el(k^&vUu<`@g9>!y2FH^- zzwsObnlLl&nn&D@8t z8nE>Zzpt!>C1lWfUoM?R!Dyze<=78wZS{9|6QkFlv3SO3{XB{2Ns{2j9<3UYb@eSX z-J+>;$L}>qx8!JI}u;O|r zr@ydw_`bB2;FEs^mfIULLp-m=<9Q^1-VRuFBB>@ZSTtGjt1y#M)?~gA2L8sk6S}H& zG7XtV_Cd^jKf64Ws9Au|Ek*Xc-&z@I@9H83UiyCp-}1G*L4%DveB`YY?>fE_%yVkG**9Wgb_LK3k9W7foy5v|H&Joum6F>-@w_q-& zpc^X45EV|{TO=oh5jTQ4L&DdQG-Es-yxx^eEL2g6am1L&Tg@I-M=c)5V1x6XU>;Ux zy%9Zof4U$Gz#iJ$3;G+E4L5BmKAs_C^+C7d(MCfd6zbg!mDvGbkU+}-t3u;YE#~yg z%>!tRVfsUYdzCHIKSxT4Fp|e6q}*3zYuzYPA&|aT+f@q2yv#y=w3hLixE<17q4vJW zQU9?U|2iMeeynlu#b~a+#`%}bkLJ0Xb{0u(Ns{VchI^idm^qg?+WODZbwRKDjuOhS zTbHary++uRQ7WZThwrP4AzDC0hcQm>R~Zi8^x=bag3l9wP@25r!*bEhexHkjN08O3pD41_2aeatR{Y;06;Df2;iN&HiDU1XM(Y;!S#Fg1 z%LUp-|Gj;!UOQAx2Ai1IJGY7=(LpUwDiZ?nJ8TvKekzGhDhAoi53DQU=x8&&yWtpQ zQ(=K_(ky-tWTa>o%(%ge2lM-BY5x8vY1DY-q5ZnBP{XNH(0$T{1>>@>mLRL35Md$e z;Li7G&wP;;Pp=W;%ZYnG73vW$$?37`HWJr!ymhm=yK+4?foRxoSUEW%9X2fWKf9o3 zGFd0?teDkwwG*!l+e@oBf|nyzhk$|ETG0A|a5}A>;P(yvvL)-snBc-ZuKa02PL7Wk zQlq<|!`fajb$G_Lbkx(;P;#++8H+RH2tIJjAH=E;qF~mk8>)WH{jYI}+bZ=i4SYu3 z8Q0qcI6a1A+no%jtPV@i)+JUR;Zk>}*@TL>#V114ioF}YgW-G%u}}vnEO);8Z66N& z)-}1V8maXVX}w-=4uf8wybCg|!rEME0^wh*9lf8mK=?E#<`aN|MXYi%`8Ge8dANNx zbmc|h1St_h%?R;5?Ijz94T*z$m75bsDda^mv=b)I+w1Ff;uqiE-Z*%9>&MgU>R2i( zDe}BNp&yfjw;Wlt*UGMamYIeW)1PesT z(AYm6^BqO;vkIHOd9qsf{z~OTbV5Jjapc80w{$M5QKCDRFyd1UODNpKpzmvI(2=hg3B0iIswT%m)$V9>How zjvyEQj32#$eh|I=eJ1S9RxzS}q@*t&0Q)Cdl3nzX40rxoyRh)yt8auYs|PeX5k{b5tN6SUn@(_FQZ&`-m{f zU`7&A8gzN8j;erj>}X>$DU^*gFdfq{iSW)6?cv;Ne=*Sf&u>Cjm$q zsXEl;iba&i30ze7B{cK)ht54!9tz2Mj^FP0Ru-r>=i*`Af}z3Fl3kUYX`maDFwS zrN<=Yh1i2ZfkXDT=Vnk&mD=0n+TC3+Bo9)uUi`{Ik&RxH#`gFE4sOBaF<*GcQgod` z13grbIu^{PsPwUx;srEFl9RI?%nJ@gj`VT(47LuPv&(Ol-uN)l&SUo9*98tGe{C3E zS&5^~ce?2+2fBWhN76i}T384vR~l_0Bod1AyY5Fw6nSTgKrk61`}r5X|7FhQAYtMQ zP0k7igR>e=9-+943tI@sV$*c_f67Is#<-E0E@;0c)}zGOC$H{ZM6*%l zzOAnh@i+K+5VK=J=&4_+^s0=h3U=5DmJ8?0-)@%_dv2zgIpK-O)xAPPL%knYcQ)F7 zS@r(eB5y;Q{82coH7+=u_h(O;7@_ovGI69`j-r*Z&-g$|QYGe;O9v)@rrT36*Fl z2kSvXJ-vrpPX^Cd^y1|bmDns23ckOS*4UF0I6?k#cgs4>qf$axBS#PXN+zNg_zjX< z*%Mma5w(!UQvx1l{wy_7szXY2I1u@yHf#h90xr+0lT&>f=JrLb@W#bMyK0>7)8kC! zf0v8?;jx>b2CPFGoD$E%h1~w)up5I;2GPi8D_}HAet`vI^`_CjEriAp(_iFVv1?12 zMO&&L-c`<#!M`G4$|p&+P>n1^(E=heW27;ODaOwaW!ZTJ!uE?kInxgw)f*1Lr`n*K z+4~yImF319tEp=S406Djw2c$kt8hsIK_Y;iYaUR9Z;+q-5?9 z0+Mr^n6PwXeixvMl{ZPZZ zBxAeO4y(Rkp(gC;gTQ7&Htj06X$V$FvI~`r9Ag96x}PC)czvJb#jyQJV~L8$CY-s) zQFYsr&FM-nSB?;Qpey1EF=Fb%-e);3=3mUVi%ajbs8^2Ter$%?)4wz%0O?65X4Hki zj+Y+%-*=Z{$OwK9p7y`{yl+K{hNymh)qLKz5sj|#G70NuYQSYma4iQ$|4S+HLic!P zas*`{4Z0WIOQwxT&vt5tDaVb(^+xBSS|)MGTeZiuP1NyNJ(bYI#C8!$Ek@*%XxE!hn$e6349Q_I#-sjU*x%h`65Gz@LN#eauLo$aGKJ{ zvSH*gQ7#ubyk(xKML-EjRrqwKf+sB7VFrl^a1gbvKBlK-5{Hz*Nyqwk9jTM)SYyM%t*-C3`N69P0+a>YBJS zLNFhW+u3?4X(~4RV1fOom(c{W93bZlEFB&8WK8Y37Pd+*nJ1YO_yj1YxFjdkLz=Qd z{lnDk)4m78XJtI*7VT+!Xx>~B@`f|@gW|uy3U2>7rwy+mVoMmCMN!MKh_)IvDxVZ3 zIyLPdLH|9KtC&A|6x7iUm(KIp7>!;IUkNW`6|sY^so`PMF+BcA1B&IQ_a)dA_F>dq z($kl+j-4!yCt9>cUG!FPaxYXGl^$?y>xYvc$UAD;xz;*P;erAgZ!*cY=<&}6ST36{ z!hL~*$G!s}0kw1IpnK8`YtA-|8l&Gegl3&_hwpC6c8`K{4}1}^@uP*OhxEhGZHX)5 z^rs`9o65?ze_UIYTj463g&6MK0`ySo@>X#|R zEoE7Bzv16s3P}4o)_pdPwh_Q@-%3?81-5~?#*<`jt6Auyhv`)j~hMWM~)>%{gib?XG;6)zo~PiLHoWEs4xw-t z!qhDeAw+SKii6WgN5h^9rS%gkb`Q{6R+NHB-8D7_4Z5G#MPz{aeqdaUI0&_#L<4(HCGFCK@nUotnu1eK~+nbFa+URTMQ z{pR9-evkFOO~(QINh7ebIpQOU8U{^VjSWl3e&1cA^8ym&nG?zK9*QX%qHMFS1ECpS z(&>mY*#^gUiYswKM$49~{_clMb%4*HWYqP7{c%DUKAq1YTOkfsTssY)_l!p_)_G`P+MkSQumZY z3nw72O^pKiut8c5=ux}1DHLsJ@p_G5svP2rJ>xKbW*^7QXMHWu+k%W}iC^pr zPvjU|HzF1NaR|jJ9hV(a?ym>|^A_JhvQ&8}0V6!yQ~^D^l=p>i$r=791_5{wU5tyZ z*weeSN86Vnt5nY9WPVaFX((SN`^6=-PuK0z`ikm5wnCkLv_o(c@zreq`TeaBcN?6s zWJg}59&tckzB{O5L)!tw3u7mweE;wUxwEbE9!%)2KB6TfAY1qoZ{ltu|1L(a>C1eR z+Id9OZ@78gz@JWpFMl&iL5V#b0Gj-$;$>+Q;C@x9YEM}&?Ha|RQJqGNctqze3TaUM@sWE-cU06$W1ud%s z1xurbS!B&2__yvku>YR*2835SW{4o`gt9%8L6e@^`LP3LGsaN-A;f>eB6j?GHQBLF zm75Ua-in-8z)izGlF5BhbAPDp^4CKxAcfV)#mO2csaU++raGd~AtjA#2*vO#LQY0K zjQvH@g92o*nQ}1@-qn!Bajr&fy$@OYetppRm$blYqK6r26|CBiHe@FUw#XJA4mZ3< z_P5#_9#GOWe$w2g8M9P!mQX0_HoLwsc=KK^To#i{F;9E0@vUah!BMy6p%+iPQSn8Q z_Ap0Fo8hEb%M2eeb|?C^f=;WuE{l{*hFvG9p&Of(gdM~So4Xte!8=(@Em_4V{c?1c za(MH0WWeQQ96v{>I;1JNX57P-k!=o3+$zXyDvyfeww4I%6wnl0^s2h5@A%T zs;$?X1YbdL;KSvLqb>w6sU!SfFS(bpfo?A_#D>I8&L09ihhRrbSf5xlA4b1NPo6V7 zm%$L)nI`jlIIzGazmF|jL@F?V4)+pJD}7^3nd(@ zTTtOhx);NV#{^au;d>((rM}Niu)Dl>l~1Rn zTIa52Gr^1@=(Y)STSU|sA1Ed1R8EbWPW~S}(6}A7j%BW7z#3@UrLu%I zZuXCxNoqhlgAp}OMX^6?ugXq3QZ!ui13D{zwbSy4z=Ow1sk=Dy7J-(z;|=i7^=@MC zYLzuxy}?R28VTRf)gP)%9xDE?$RD4mES*4QWbz)K4`!Rwk9tj?;ZAgOUA@3sUj^os z#q3X5MiS;~)b$bfRt5?AiyQxc{&uK~=gTE7tX5T9n|EIS>-I<2r>qXqB6aaejP>#P zJDjO(4zkGByt5L57S(bMxeEUNgP?YAQ zRa%UTvll$U0Bj#lhahy;GpQU2zQ6EeR!jXm7ifDPOC6C(GV zZ|ybiO;;AvJ0|62G=0KoE7p!JKw;_7m&)JzJ?GpHFg?Do1~twMt4p zFd*^OIEOaSO3IiTW=wq__oLeL9_8StV>*Y2))H3~m=d*SrfO|&-Bjg*5_g$9m0X$b z+Y&r=DB$u(Oh^#&1q7Y>fH zq2m(cK7W2i{A@0`q(Z=%`js#jS<#ypR^NoqkAoY3SdKf~^;VSb1;h&q|N8bvF+4{? zzUydK0>OW zAtaa(rWooq5+3~LlJPR&g{Le<9VyXjK1@%jM1Z}NX2f0+BP9@&#o_VFFg`vG*dfXj z`4M?r+`{jAhl`wI;^0rJqA0#36qhQCVd3u&TMR~}DLssNKP2{lpXJS5kn2pv4j`>^ zB*xRmi;6*)iSWaFv1#$cBFL95$4Q5Hho<5%D#fGGFum{+#qG5T`*Caq;s-~&h5=P9 zLr2ai2s8aBX@u4yshr_cP%R{uygURVkDf6jWEV<0T%e+}kUo9oh)aaqzwKVN>133* z;pY$E4-ObjWo&a$2jXiUbJN7%R~=3O>Pjr+fA38~PkmzMWF=@04v13@lQP8zyx4uQ z#QiA6;_vgUtZ6)axc$n%EEq2tIo|l?NrdrGBcRr+Ey`KqfQaI9#G&D8s-_jQosW(?~aJe%O=J2MWy-I)~{#2u=j7UGL2BcAb(&kDJA2e;0;3`qu1W%g@@V2zj#&a{ddz42laq^iFVJkj?8O zfu)?mpJAU`>Ns2&G^Bx226s(@?7l*Ro3z_8`FXA?6V4?Z3gG>ZEcdfRdBWIPoL|}$ zCEZ8Bz-#vkB^2XR9=;~)S>fL^5w@4ly!z#6tIk<|aZOUi$h!IaE%n_kx22-VnYu!VVA%?j2 z7t4E`&WwUgR)koB6$`IR!#*@_lidbJhXEvfdSDZ-GWQEbATaw8zb6QLw7fSpnx<&9h_`6(+8nUWAyVS=V^MoWh&H=Aps!u4d9NUDUR&DxlX zExz}ic8N&p(;;@C#sec6cCv-iooM=0P1^@`GCMrNoAe11?5AaH7gR61QP4=5odxmd zC5AC+^3_U3d;I{-=*}|wh}&qShd%}B{!!HmGX#2FAxO*AG*_|_2<+VKQEGtdsIK1a zLsL%LbChtrp>Y{1MgawYlOP<3WM}wI8p>^U*2A&|0A;EQ+efk&k(B2;-v8<+4aJEDXp?gU z_dc2gx6C1i(s*|aaXtjhK>_S?*y>FKS$Fe^f_OWPoXeS0tX&9P(xCvLiRL$x^5alK%WkEC9;#J4gdDjizFa7!gOQzO@ znD>c>nlY>b6;t!FI#wFV`U_t{R2Q2c43VYHSs|Wl#@m_SDGLV--9{ zs?sp+wGv#iD48tXRff}SHxbO;`P06p9KA4k~RUNq2@pDGo6!%i9bwoWV(IZ_ta zM2Wm}4~yO8`FR(5CdzqSTCh>d+iZ1y!WD=SV+lPqZ#u>?*iOD<46b1vqlbG<1!?Bk zRk56Y6E8AUGo|h`&=K+3Iwm*x2AUbI`12F(#|x^FbA73eX0zMQs0SU(`3i|)*>fZA zmw*OC9&(*XlxQuP?I^7j^66Q=FBew~B>1ksUElUxJ84B78-FmZ2!x&Z!+0?wRCT6p z_8LzIm#JH}&j@?|UV6XXO!$o31x(~z2geCgSLip#E95X8? z%+6(i-QJ_%)p<1eW~P6g(5OiK)AdojQ-=NCYA!6zcF#sCt8#S9jM1i+=|bXe1_xi{ zh|49lCr2`nspuBKxn&8qM_5&|{NzKXiwG5pEv$ zI#e{@_oOpNGG#t#%EX))QTQ}Jdm?;m?G)ttJHHL*L2!MbAZZNznA{9Ty=)X*+4zTs zB>!0RTON6o;-fjADmyc|(Guv`#z?;{*Y;oqwNnEXgMbzx%_oF!_TQc~LT~S^T3T9n z*Ke^QbWpZSoM)=vQZLZZamvMM@l^3*2!wDoEiIX{o#&xSsefLRVD-tswvD3EAXeAQ z70Y`IG5MvwPkU0S-brvu{N-0w`N?(deu#X%Lyg}{b&XqG38N_*S3y{0em`%HOZkM6oyB*}zK`%fC7m&@V^e|geyx)7J)gy=r|h)@u9<&(|bEpId{&bmMD7ofl^ zi62Lt^z}lRZfjA`rgvMhfE~R-vIECkp`pNUSln6qUUaA!p5hN2~t5?)%Th7Yw_ z-bInBcUi5!qBRpQ>qGI58e&EKZLDI3Vg=2_bF)H3c1LOTJ|zQz4adcM32U58?A=*e z6&K65_qkDNNd(kbs~&GzlE2f*!T2+o=2ED}tXg}HH?4kT2^on`RrLK%mc$!s)&AIh z`Z2F7G4nJT+(Rd|5?>5?;1@{6sMAAtuF~&lj#q#YT->z4n&)I*-FYHDD~nIlchcA? zmMvl59`yg0Ts1e?0noBA-fu1|`|Y8@!&Lo=%TrZdJRkSX*X0v7Y~YZUMaooKSRKL? z_hpY;JZItr+PBa{*~q(6cKT`}#x$kVP~^n?zh96@zpSpT6!rHP+urX6O{x3p2rwG- z$Fi?jon7_CO+SVje{#!6fL#r2amOT)Ev(H~DH zkxwsur#8kr4*F?Q8o0FZ?9h~Qn4noo6?B`EJP@dG8FYCa;83^KqpCWJI&3Dk5~%XH z+jCIeSX1-YM0@OU$o+jjsW3B|*S$gWtd zR!`1my0zWx(35^}onX~$D1Yf`eJoKtwJ^i{Rd#@VBa%R1)Yk%%IXSpu+}mxhS6 zcQb+8>XTa@&7a*GNmE=1!%+wQsJi{Zgd(`8Y{;x^MwX}3Hfjer*0CUki2m6f{}T2g zWW$6|v!6`a(-^>rNfup0a;kP*s&Su_US{i`8pYOMQqom((s!SmVC;piTp@}qbxz-B6s za!8p?QKSa(LQghvuB3m|w(I6{;||APs2#NTO{E|2lk^+N;KdoeBu4WD==`Snc`rB_ zP{*9@=JALAo5L85A|K#uJpmn^wvoLx*l zAIuR`s#Bt4L#t!?ET^$kqCKIR;7n)Gkaf)7$w@f75T>6nGeHJA8B0LgZ|{ z8qOp#!&ro4h=r-eTMtxbQ-E$GNo98}c2F%ezZFhUK%q2g@;A2thTpvuIkae|FV1a4 zH)K7`A(6(XB%pHN;cHbEvo;?c?(or2LewXn@1!Zdx$3N!L<); z@{6gqcTIs*)f?iy%zEZCFq^k-k|*G4g?a^*@}Y0<4JIsw50mF=vQo_o{G9L1(YEXY zXp9zBveTtI=JGx*vMQPP4lk#@a$W2j1)7bb{37$nnMgJneT})>n%-Win5YR0-EEhb z?5G*B(cITP0Q+i9pQLsx1S2%_iLpm2GFHJxf82QX}P#{(U|75~5GYUR%WOZiX#P-5UG8(n)dFh|%b zFH=iDhB@R^ff%y<#bkW?ji9q*`)PKo3R@2Mm={1k6jBt#BsoKV>s*nZCWThg6PfoK zr;&=ZRz3#-&6obg1NYP#8n$wb+Dk;Ip)+x9&z*YGxrx!}{nNsxQ=y)wpE+d^(SAf( zY*vasKA4+nlfKFDNb%PEAD+H3Iuc-8H?}#kZQHhO+qUhFZ9AE0Vmq1Gb|w>aGBIAx zyXW5hzkBssT~%8j$cfNJ{pZbNSndC!941}x&DD@PrscBAlUMtN@iX&S3%J?W{XK)9 z*4Q*ANmAvM(9(qE+&7`(dfnpMb&t!2V+S~HWW}j?Vd?@l?5E9L^nJ zij1{GWm4cJ4kJ00lYLs;j-L>dOj47kWNx*z3P_vHO8r6&0uYOw1blx^`=$TAuE$mT z#Ug`V9I8c&_QGG|;)kLy#1`Be-4Dd?h#Wsc9j%rf4uIG)TIk%k{d~>jto=xcoxiy! z!8q)F^eHdVt=BF<))Ka?d@y_nWTLc^}6=!{pHbxk)-B zH%o(aPPt2y=bci8eK9s;2;t#TPC>PjY~|WlZb*a9s#5CV&VTKFT3_)rb<- zmmXs&l-;>{Ydn2qC+eCBqS&P}X9~D^+#q?RW}4I1iOM5&$(g2mS4E-iKH4r^!5G# zg73b)cJBTs@m4PJ{ndpF(8D%<0nup)o@kW>>6EG}~P!mLzTf*v3 z4TJ6=k02Y+BG4=2U&ELhE*j3dF&0jQ*KYQeh7_Re$Sq}FCP;7g!Gq5TBox;8shjVd zCoAit0!#V>aY)*7|M3@Utm=l(i!-WhZL$RSepu2~HvM#NjbjA!kvVl6*ks;3IV!C8 z{sdKuf|YbTv%D3Gqm&F1^MOVCHc}Q8dv(BZ^&A`q_RYO@GJ<2Klr$$LbhUH}Tih~I zl|gbqGX_Pr==rsETEGi}FLoY&21FJ4MrS8?KN8i+(n;!4z!F9_Ux%m-Rx?1FB$Yv> zGAFA0yllM-!Jvk}{H)ZM)^+R9wEW%m1u&D1zXH4C<@r;l_fFL^b<^QzF=B_ntI5flvr2kd*LJGnV?FM+A-& zR?EiT^*T24^l64ce~xf^QsmMQ0?$;b>dP*ErpD{WU-Na3GY0La0F<5q%hhgiG*O- zfi&^q$^igdUQbz9Q6hwvhj5{LWBdm_5)t#&=|GH2&hif*nX<`*MRG0MXn7Fco}xUt zFf1_UX$az84D-ebMoNS(P&UwW5iAjNQUPjjQE4@Od4#(I_z3-sL#xI3Y1M2~L8{6Y zTCm@+!w#sy?k7x#B{BysG;mVaXv!lIQ&hPy%6_Ld*6O9 zEP@oq(Nu|ML%3^`7p0MmQbi29B8r;&b23v-fJ{REYbnwF9oav18*~U592#s%4MjQJtcdcaZ2p!D%qe7wcqu|>!^l!&edoP#S$EL`$03iuP z_RmzL3Vsw~nsED0hYv=3;oQ+tXb#h}hA#!5wRme`U(rKc~ELI(uW zwiXax?FGT}(gYnyLqOVg$kEi~DkE;<)*jrdUpnC@nH)*X{e+P5f{JxKy&$T~8U*6ZSm`%k;swL7jih^^EmTO7v64tfb;8c zOIaI!qxh^=dZg@fUtn;N?-{;IYiU`!OJ}b$WQ{UVD}_yfZSW9Ch7vnuyrPvv0V>?JvtHw0XWS7nKp^1$!isznoglBh0Knv3m*9)O2>I7eQha3Ny!YD{ns zncrY1@H+;}<7Gc&|C1;EJDFM?LZ=TcNF2_ub7I1w9RfZm3dopsvW#l)H#IctTUbI^Ww>kFFtXTe$rQg zDo*b}YL{dD*^sP2N?-&wL*E8U)zW~1KwB$1nH+$jL*!)Pf)f!MQiDrNC)m}goJIjF zvszc$Qd?1XJn<#V%CKo;*oem{%U?LXI1qN6;_s4QRU2?q*14VdjV<`~dqJ5gCm^CE zM!FN$U}v_fu~u~8EMiN{p`j19+w(?J$}aU8UOBLbQ1km(CUX44z?r;r-9^i02fQ$Q z?)V@_{=yBv)$4YML-CNG0e(X3NBL(#!Gbl;Beo`+!6m*!RPC56(|cFryGAoG4T-r# z1?Y6PP>#*@#W)4sv%KG~kTF+>#vVge)+o)@8>DVOR71*+kCR)78E|nr;tHSr=Ixw; zsLA1L_F0ldcyK2>_aw`lmC0p0FL=s+c%cqjrYt|A#o*D7Lm>;Gk<^9~#pG!MAe^j;npZE1YFDxE^L7EH2PE}03!+OZy z4Q`9N@hAR+)8_g$IkQ0ABhcD zeHt;F7ZYL_C8Hmc&1(m`Gs7EQsHpO!e0}sRtP3Qn0R59xt(T2Y?b#-aC&S{vzotuD zTXEi`A$NByod|w7PN0fPKNy1$hY%5|>*SRShRjQ%BR?k2&>ko*P!SolK0xBz|H7;+ zlVs{kk`@HdA4N7cU=JqNGmDyVmw0H$REGFN-Ae4ktbA)~V;Tm*%>Mnjg|e#-k7I6? zVRjp)tqJ+A zSZ*9-a|@AP@g8U<7{Ljj$rMcpXx&I1osdQSwy#@ncff0}Ga}3Jl1H%wwo{g`C|(S0 z2ECtg4Bg_WJY3_8n?6HSoMD^C*mJK(&KVL(8VbeUt;3C3WjLFf!+D5c8@?_)IeVI8 z#K}#!AZ%U$m2uQ^GYW*$sd^12Fz>ZvzuScd#Oo88&Ju%8n*c;40`BO$Nt$DLi77Rz zRmbi4&rilWoGS_56j9D}36C=91OmsO9rhAmIZzP%pjYeS9zPV!KJ`Nvr%6+%NlzOF zb521L^YKf8%F_|qW@_~XG}d#x0?iaFjcYs6zs3MpQOP=aSP6?2$WThDy(Syxi1HeF z{#w}>ic2qN1;$NwqXlbkwk&T!SpG1r#)vLo7&cakM`8`YqB#>S-i6e1L z!~Q3TW#f{`JY1pKt(7SpFY2bN!fulxNcLCYw3dFMx`h=TU@0Tzz4KapF~{osh^#U5qdfYRgs_-+)`c zoe6B&^K*isoH?kpEbkH^BhQX@hbM#JTXj^k!yn6Ug;g`_al@<4c9qMr;$i}1{wD0) zwK@rnGF-*5V+5$`hFI&mo59@=E)zE=@J(J`mA%!lkEZ~rjy+at0LQXB$)(rOQWq%0 ztcEiVs{228GF&9GV?^Wo>w4`q#gk*#;^K02fq($&93359y|g>X6<8u}(Z9hQf3ryG zngYq~=l}xU@U==WD6@iq%or8QZl8G(LI|8lu>wRYyIkJEH&kb;p)m5q%t4zIH;Sw- zOavmHu+@Y&7wi+0%h^n3Rv!3N;8m^d$m_p9%{EPV2KD*pm%32_evc&Qbl=X(C{KF< z(7$~Durzt{U2k;58-$6icV1wL5A}>>XP&T{*mXEKPC!l~Pcw})Ty2cwwx$sU?!g_O zx(($k7@ISO+gDK0j2F5fa?E}7BVLP2>CEJ9>3yIGn3Q(up4gfgW2$W zTwL6Gi$$C@SPMatf`XLL=N-{k|J_PsAg0mFROaaWM*oKZZk%py$1c@vR!dteb}s?L ziAz^x`o&xJ)M%7chK38ivs?EzfWd68TISyTcmWS z>-~s*M?B5b&VzsNqFV~*&#+6st2gxElNw`JMFh;;uqQjS`XPMTNfV5*`Jx|ss9?z) zFY*3J4We)jrU*9Q8oSVe;2{JZMU&3Nt?W_qf)Xs>Jbz?uWj{sd?X(UFzG52vKUnheWlAX1GHh+@F2qM} z#6K!}J8hmQYwReC&LtQyP#+SyFimd5Ql^C z2RzdQ7ZknWmb~v_(z~fZmQIEdR{mChlPYHWKhXMKp7sXVgm{9TspE?>r}i$y298E1 zy2!F}WQg0i!zzt@BNpMv@I6!4d-jMXrw!mbTxba#zgM-cGR*|jVl6;b>kT5n{f*l| zzKp56V8UjFqB~T}kAfU3WRBx}pteSos4b+@$A0&7cVhtL`1skvt~!%$TYfKiRfFeY zb7K&}-p8uf?NA&vb4Qc(#Sd*=-4Q!zU{u1TL3e^6W}xy{&CM*@31CI?VhY-r`@{K%%`Hi{p%LhHb!u8aE&J7* z2K$4fXem>avLzUgtv`PD_+Rl!=TOmsdz~x$kJExR}FhIF4P7u2VK2BRV zOOmlLY#clCdrX?`Q+F&YJxTZeZ=EjyK#252j!@Z{(eOcJsBpF{O5DhCZk)--O$jV+nFI!;c$p$w(nBEt& zJ&fbbTeRLL$Ma-@Gun#b2)>8+s_D_H>P(@*(qdDN#7eAwno(UduRBwyv6~~*m~}*L zGLIUpY(p5C;z~Bb*XJ|9;HDW0hFxy*cGl?LX79c1Ie(oAh6Q*vNVwT0Z%TpEHABY7 zBbfn!1$130df8H>N_Q^3zwrh}%5AX}W#eK5DLFSn@5LfF{T3D*O8HjatJMxIu;u4| zwbI>6{XvmCp%%g*=;GO7Q9vJrPA2{##mo9PNWd2@SB9rq^9|BLfWAKu6J!LQO zdDrv4Y97B`c556o*dZ}DF;lkz^94h--|j@suSY~{_*Jd9-QluwJ00N zSybH&i^pk?!e!VyCVS6^e>aZ>y7bs=l>xZ3g{IhP}uC8n+sm_L_PX^aqR7kAMa z<8uzvFnAnU<*_ES8_g#xt8o>H4AjV*zy;$#@Pq#HN_qqdv?TEl5wkYv(Yi38dgwv9 zdQTv5D^is*@khEC^=6{nLxex+EVM;Q}SNfXzPSRo>ov!nq*yD%}Ub<6)`g-Jmqi)H+gRpM$5^ zE!-7Yo>U?U5a1v+I@Rvbv=jc=mXxAu-c{z|U1xG7Cx@UfRHb76n3ADCB$L2LK+p5$ zpNWRD{Td_^Y1GIt$7gCn=-xPd#mDWkX935yV?#w+${+yc4v$PlL%Zfx)vVb=n;5tE zK1W_&ybO;9C*_$uy1QNgIh+1!Y<9#kLeUWYVxX}f^A%78+-&H;v^*{F?#`Qa6 zPw0GKKryfhL{rpg_w}TrkztCWxkdk1PSo5d!#B^v?yS|6(TcdPE$PVh;_0gNDade zZo-7HC0uwSP0MgcZMn8LY`A*_e~j{%sHsJBmpbDK9_tH-$fwBWrr$KcY5lnY6d}M& zTkWJCxWg}V0~IM#;FzhM%1_jmTlgn58$)XSpnvz`;CSIda+q}Xw(J?$sR`sw;{33I z*3Y&ymvvyqhYIlV9Kf^*>!`u~bY_Z0+`-_CRi%vr&`H=}CWk>&Qp~&!XOEJyQYO<0 zUuRM&np_PaGyi*Z`(9v1)TW80D8X7DCQww!Qp0qW$7j|InotHiW2#nLkgKxP(MzbD zJd*vPo&v>YaG2HZu0RIu0EY}BfP!8tEuCWemo>#OcpOHS)kAN7q8psM9XnCEB+V;& z{^w?#p}XDmEk_aJT`;YOS4+`g#I15WFg4Ak+{+RGyq~!6b zCNo!dRAVzF<){(;DK$FJw%^_kQ0`dtSG1PmJSd`A394*4NM?6%dpk$xTc2OEg9COO zb8OO-pq9L`4|`-{h@t&fFFLs0n(?$U6`Bt?q!&sx0DcEN%-YGWye0gKj`gRbz_wr` zzT}WxP_CX{^H<_lvx5R1J|QJqzH@Hd`Z5HYFxuS{y==WRyOIG`31kMU>rTsIt+2YFW;*kA0|$RU6@^HW}_ls3LiT=JLdJZ z1eCV?(0)mzpbHzgVeFUzjcAgy?6L>S32tR0f{JbRp^(!yuA{TS>oe!+Uz!)e9RHgf z8_1@FhH7d*+y$)*hL3!4OD$V%M`LVq?k3c$A3 z5EXWM@LdwH8{KuM@V^uI-ysJ=e_h|~3eQ&voWuWkz6tsix?An~F;?J%@O5qU!55FA z*VNmA)fjlwfB21Q2}%_DC=?n|9V_Utv9{KCqHaI_V9hv$$N6Vcx+t*&TcxBr^^GgN z7LUt5&416FDRX|ml6fEYA{sUd`g?QxwD-x`2W)FRbm{|YJue!4Aiw|B>We25dLg4{ zq%WSJQ>Td+>%_R;%evOX3P`^GHIpiOmGYMvg;7)#z;UtK?f z8=oW>M1OF~6=TJbs3lF47=)@J+|7z{1r&KBt&bC2V0wkvV`jdd7Ueth^qu;#%7; zFMNlI@K>B#cfQ{x5A=Q)Tz>Vbl)-kDZ@>g_zpe7nB7^IB{T&f_+KXzap!I)>nl~Y_ zDJgD6?%4BSdc5w1boiU!X|YGpX)|x=?N3OefS3ut;cu8>wFU)r_Qr>KwPXI>j+pxz z$sF(+j1oK@LypwPoA_8fYaRdG#4Lnd`K|U&ntI7@Y|R@_#% z6a`V$W6h$joZqeQ*vAe$u)6#Gw|ilGH>|f~H^gD94-&nry`MGmCmcVU z@PC~$L#;W9e&u-D?=8d~F@1oH>#v;K+KCo5V{`3z5?z^0Sb{O$T zWM|{x^YTPOB#aLuajCN4dM)agrzx4(*uYvT;g8Z$SvCLJ-5a_2xSTgulY-F6A^ZNp z@9rX&N!W@c)AO|>L_5hUwO^furUHVLU_0y`^JzeswUzzEx9f2#LLYIADBm}~iQZs& z))>+DXz8lhHFs6x)xdW4BBrf!WuxbNp{K6J*7<&VDO4k`H1F!_&1B}xX~1MO+)<5Y z`{I~h#J>S-IyFzLIY0g~RsTyyrZ{y-?>1&_xr7FNXMc-6^^kto=UvdX_FR+XyVJPa zrru=>h9Q{^(W4& z<3`Xtr$i|UteSrgSnzCUWagU;C^^m?I zd9J)cX8#x!`pOJ(H~OnuNs=S+1$5yUd0QV)LMje+D-6^ied!_dUC(B>5&oN@z=$nc^efz&CL%jc=y?htMqlc5+25v%-W%L^!@!u#Toi-#N~m9 z`TqB?RCb2sj}y5NBQUpUQESAI+uGR05g(@%oWO$yp)g;Z>>=t`f;?Xnrg9N;QWW!z+Z93w$PV!4AGT;Fp%%eHce;lFQ`i9zqQdt zc-w=^)3cI;cZ0FB?R7U%@RU4JAvot^w%jt{?^fZtnL@%ggUlDo}d*3NmtJ?VDd#)AQWSTcJirx?U znhy#cI>`KiTVmd;eKzD+V7g z_(0W-dOVud>I>B>^hIwtb^Q4(AJ1f2=bqN05z;`o5NXH(fcn70ElraqA z4lgqu?jO4~w7i5LaqUyJ&{q7$ZxZko#!u}he(DZP|A%4v02|hID@Zt;z=#3sf%KDKT9HkV)z-x}ogH?A<>NCTik?Mm1)ai_);bx^< zwg%~7gHfW154DLtHJ+RS>*7www3`F9Ic`exA|9ohOHOFbimJ>K86Xl3jv0OCkClH_ z#tjUcV!^9q^#l*WU2cDhfztLc=uPGZ4MN#9MQ}SBr|u=ir{L%`CVOGdLiHrhpE9=L zQS|sLPJIC4O%Bx73FZ#{WAnAviP9+PXpz84lBA!$x%MhoY zg|TeIbXR|}GVu~JHf<(=8OMif%NjaA>q9Tj(jk{W0-Qm3<_Y1y+}f5DZw zWX|6QQ^xso!V^tSMcRgM>f?{v>mHwqv9a>d1~qE^{E~+|IuMhrdI#v#Sj9$V;$bI* zqu6%!WI_oUcH;BUq6>Oa#ON=?fQ^p(k)KWiGCy-Hk!%S4c?8t^WylY8e6b*T6)2@FCaJ1awhfs)IMq?`6N5IQ$2$p}^I4l^{-tYIurkSJ zr&aB4L$zTy=5AiWwS}RDE;HQ;rbF6R#!-EJ?%n~n;M?|+$Ni*BS}F!uw$-tK_+;Lx!Cb2VJwu><#Y z==Q_YVVumb`*t-|Xeebv;ogY%&&oc9&fOE{4Zd3QqI> zA;cecS)hymws7Qau|7iJ_lMjkE}<^^ z^Qg{GF|;t&dB`2(L^%e~JC}1}QIVvS-~p^wl{a=Vw^st4>?Nh7dAK*(Xu{swdIJ%R z4#_^+-8CFRcX=5ytEVT);#L@~4%rYiM4Emz1gPkt_^J!Wxer4mXy5ifn;CI-*(5XU z(dltc6{aCh4n$_|V*Q0OoEbiOoX9j3BoMRp#MnreF*kL?NSnoye-a5|jENCRJ!A4~m3 zjk^IoQFtTcW7AW$!n6a9F=_O|ja{2R9^Hy6dD0H}JzD+$aWqT@vJ#w3)$&f(q5#su z&+m9v=8e$Z(-R*P1=InHSKRfD}6C7IPD3HfgWZ4^_GKryO38_1J&l? zQT2%B{92#s;>j51UJW-Zf-dy>y|_AAhe)`)&k}S)aIwOK^5s>YuXUkJJh-sh6`tFR z4#DLz^!tYy&saySzN8)~_>KLF^FhwZ%|(3#GfOqICfbbMZNTa@Bm3SJ1>!If5LB`> z2pF#X{@vNv`Pg@9s(<}a|5Ga-L`kePh4#2wNcAHtN9F!1pCrmgbx$)Ceq|-03Ne$J zwAZ;_IoVx>P>5pC#@cz8eZ{0wA_5FQ4^=st4tt57q;kaVQ4oXjcw~09!5z zr+GNF$p_X)@&V!#X^Psjg^Y)Qb8ZyrvA2M9wXmafciO zXhB}i$TU+g=?T3!ZfYPF^6`XPV0g2t(Y9#xEjEn=sf(_pjWnQnDwpXhp*FTrKa&)+ zgP)ZaH!NU`XLaTnwkiNW<|lt^`Ju@?pJTYJ83; z6Eui74g+~qZ(k%fY)JVJu^K&q4+j&u4fZwl#w{^SZ1aRBXqD`vI@K+kTEkVg%f*m~ zp$~8{7u<%o;mn<}AY-yn!oZqnx>+pbw14(nHU)Y30k;WKq z)2-aMW3}A=&lqSiJ#`uG$p=k&1s__5pVM0@lW4{ih-@@Oe$)w!8a(=sGaarH6J98I zu7@Y#qoRq|ajtL;$$E!li4Tyf><8aZ#3U4^2F^RRU0)--I&X&ilzuWNIyHT|zP4XH z2X;25Wkq(s504x^IG5n7st3$q8Llah;iH+0F1}Ez{=2}GriAOM)o#ap8D6Wf(G@Kc?(9R$>o*v!LqF(}u z=HGA_n4Eg(6tYnlBR5me7haUP7l-o!v@LAU8lHvZCdft%XSPV>(UBh`dW>B8EPvYj ztMq(36v^=Je51ZHe#b8|Y8-nW3J9L$`t|#Kh+;koN!E=CmyH%zZaWl7&k_?FaGcdd zbQTK7nAo_G=}Fw5F$8!}9Ts!JBg5w9u~HtyQ@QyCw06@Iy$()N<6xYVy4 zyGn4niduPT2+(Mtcp))=-=W>_akbn~t^x2)x z&kZn2EJQG31euQ(dTfe|7V4VVpso?dc`;WYrF=e*lY|j|QEQkH=JtMR$&Lt{Bx|>V z3X3Nw^-i5fCgi*@ITIF0O@WsgtgL5!UL_4ap0FOx(>8~Dvl@1cCB|5k`c&6`oCqA{ zGomZtf!vi#h8^Iy!*}I%WD2<8-A_{sQ78jS@DOPGr}Bk^JV-BWBzMBn!+i}=g=a^P zkz=3-$1Ve)oKPL`^STHX~()+#7+k( z-AhI^Wca?202_y|P?nOS$=8TH7;YHYeDJ==)&Z*XDko?UraUEitTEWh;Oq_@)Ouua zsq$~p&yY${`@jEKEHZvWQzeiddF8yqbbaia|MlpOW$XS&Qb+pXN2Sk=O<+cEr8DTa4ZVq3%q{{f)_|2!RPTs zOP%Bv?L#5$DXdOC{fjYDQh;$qS9-Xsn0>ZD0{AvvG5E4 zB5|C1gE4A6M!_h>Fw-h64JB4fTH4YiW>%JYy?Bj961HO&2Ga`NNkkit1lt@d_1y+9 zWyBHCj8q0y&Xil?S2a7nCc}=!tY~!zD>*{It*Zvo^t5|9{kIwkr;J@^wLKzs8w;xh zN7aE5r;b?)GOtT_x+d9La+&ey^vRrVmVYuNlbS|9S(5G=)wZLDkzyRs9ZCRv6 zmG0DEC%klIkP)MtbRUC+%7Ugvh5Hv)6~cPbmQH9Cl%XNl7uYm8T~wtvITlzPIY+&@ zg=?0DdyY;unFNL#-yy|b%{7H7(iE$TpPD(f+Bkk=>{dql*K_7>Pqqksws_((93GFk zybW)j#7W_28RCC?cWZ0^PHJQfOh)e>R!00e6=ROT-U{vijQ1P(t_oti>34JD8u_(6 zJNeIbT9IZ^slL6aV-x>%6jciZ<66OAe~#2!!!!Xg=7+n$k5MuQD1HemfS^r9SnRB) z6Jx0t`QI@6GxKXW^Y&0@Lv~hKeseBF=XAvTsuWQz;F^wUha51z?`=yv!T7XzKJ)cnnRgNvgJlyB_z_I-TXyF<> zS89j4pgbpR$oR=XINr+v#lcKoN*u$lA9LB(r76vgoH0`e8?9y2V@TqXk7ekpDfrrI zN!NL!_$L4v=I@1TUt-U0)>Daji$aEGD?MZ?a2SF(9oCMjW?OdoeUSB*sc?h8O$o4P zf*S1T2g{BgEJ16em}${`uj`2SZH2>w9weVd>mVO^+KaS9YPLWLf|$4!JbpqEq~2~$ z)qLOiE+F)Bz zEV@Khfs6lzeDO^3AR2@cokfDG#S#tFi3^`W;1)-Qn`%#7&}qorfkDtaBm%2_h?Tx$ zVopouP$1;qVMpff7L>RSD(FeT%gogkjj7+B2u$>37y^!-HTHuIR4p=Airnml-bVsY z+|OL^%DC6B;SzW*Os4_zu6mt92+7S0Mdx^NE*MJ1JuEC0-p3ww_aaXJwm z1xLuD@+82i1puW`A)HXs+kuyzaui)|z&xoG5|3If633JfGilK&pm9!sKa!tz<|b7* zviG&`AlonfPZI?#29_?;d{Q>ah`nPt!oOPBLnnMmPh4Szce|w=yK>JT$qb%lL;*7q zKqeN1znnrgT$$N9=}miF83b6P{C#E7APTbBS}!u*_cwqF?wOKBb4uF^-M|`FcPy9tT_X(}iUA3Bf*Hu|C_nta71uIT#bj2zXyD8xr zrBzdw8|mg^TtRY-n%Rf2(j_X2$-h_FH6XD%0-X)|UXw~H!<31h;Ot`qhnS9+CmYG2f8HG7g~ zRB&0cY^8?L$dbXeQndh0IUY1CBr+7&^}ydhxh}WARk9AK+mTj`58Y7_+2`LUI|_&K z?=ciF$q4H5#J?7yftaqhQ2`*)TYojcP}o7Glb_NLkF9wGWJVpK-A~B%6+WD~kcyg2 zpuy&rvfh9l%Iuj3G`P1|2GN*jDh6Iuu3kc5N^)2cf^5iK8b!IVoH1Dl(_>nR zKNowXs+f4ceR$+DNkBf9_q8EDO^+pq5aVrl-Xu<#oIR}2wc2~OVK!i5#y_d&=SuJz z20*s|eG4)Zh$!pph|Nk|Xn&*gKnmA&!(+hg+`Fg=S5;F}MKuwpXCSfzn!=g)0S&zA zYXmX-*HMIHT~vLcWat#;_w3BfOV+zBL{A9bx6jB%5|m0WrRTiezm(Y}olnIxYLZsA zfN036+5j(roQo3@Ni%{anojrJU&$8cm|vG4&o4^b@k9Yf^DdU0k)}nGIpBDXIVA_@ zMIx{h7`;=!3)AA#Qq|ahcOqzeu4bu)Q`_xUf1{$}_(1$FnDf+$%;QNt^31QF%lVpt zQ}^EY$J7~aNI% zD4HYypz5dkbcRMCg8f8zjsZUyVoIN{*`QO3aR2OivpE_a4KK~}C$*l9(HN;~nR6rS zTh^IO{G-+lGCvpD1ZPUOL==|*`L+M(_q)Rr1GVmOD>-z041q+zYcF6xWWVzZ^WVRJt4j%> zT(dV(QA$Un*haq&V1y~ZvLKF+ZCL*g#EqgRZyj5^akjT8ml(-*im}{xljzp+;(0caOK&ZoE;sho&9hsoTX4>GM|NSGz zUoi0e9FF2LlXq)^S-}P#)Cu3<%)uX#hQdo2lm%ReB9YRqJfpQ+%_zR1o5js&>AlniH-?3&7&9s_y zMinK*8XX}BGxifVD}?u16g5j;+XX92Ii*fnuW4c*uoU(<2Rbs2v_C_yES0c#F+--_ z0Y#8Pu9%M_L9MIc15AbRd4`|PN^+4VMEL(2(Fa1RuYHpu$NYS-zj(tmt z>t5Q>j^t3^YaQL`{CK>T^^H#$#C8A4Npk2$g7#2sZkb~EE!nad_qpq9j-@FrO!*9a zKs!}gTPC%sKSqEMB@wTwMS+7xNq{gZ!%7Y{>djj%lF_YA6{KlI@;;AvD)w??ay>H3 zGLR)cb0)!el(fqvvO>lmeV$@HJw0`C^aq5V++C>&4QxdrA8e1119=GXRo+EqS-vre zhlx*LdX^3xN+=HbJ1{CA*gK5dzHZnBL9dWAGYrbT!I#Bw2Q|DK>OX1GB)@6Xslaqj zQELRh{U_)$gw_{Q+dnzVT2|kPI3MM+ww|A&4wTUalw65~d|~R5ZMZx}w#pUK!hJRT zY%DqoFPDF6N3U3W>0aw(W?0?no`M%^d>AB7!G5f z6~tJnHnO2+^d-$!Abszo8CZ)|)fc6}q?$)#MpfLp18LTjHPU|^#md5$-4zvB3)UDZ z(h#Hia6GBIkeAfCIk_qtnB^_VrNSr4m9M~vnuXQH@W<=G=UCV>`O0v&L2=&P$|v&p zj0&huf(QA0-#qi$t0a9!E?m4^Wd(;4Rzph67x+{;TK%QqUpdtLb0s4>G1d;~C4p4w z482zWGl9p&T|;ewOy+PhN#Np$w(u+H*E#yG?fnC-s;IpS?bO;ERg`0z(7%Xh$I5sL zXWqCCTqu5joKyy%O`B5O_Z3%ENd7F$vN!Jf`O^8r@T6?hj!}y3|50^TQE_zbw#EtC z1b2eFdvMp_?(XjH?gV!akl+M&cXxMpw+2ps|Ng%{_Nj}is~T0^V@a)d&H2nYnb#MG z@$++h5FSWO=+rACEDXk@V^e1I&JgD^&8QX|gi@T!O3I0Us%7<%DD#U-x$<~pUYt+v zR2Hpy{qE^zU}s2J+YfI>Ikh7p&mU;6=Rr8tb&onYnLBXak3F%Kw&UWZXhhhvXkI={ z;tVzpd&8@Y?pfhu1)gb+>FZ3EWw^cVO%&->!!l0HrSGqdP!4+>+mxaBir&4R^g9@S>Lr*-Rq`mRU1G4 zSQQp@^Q!~2=!mu}`p{Y!?qV*tEhstw$l>^NEl1nX${`kUD zh@&3N-h?z0vOZm3r|0#Dw&Pu;ca7hg_UwhwVzt+EpuL7DrWI>cp8s zI>F#|p;b|PS3XL>x*k2qyiT+bPt=j+l}LowcPo$t6p*VyvFHj)Z6hb+T^$XvF@dRyA%{D zid44GD=EewHa#JTnKuxz{vr{dC(a^r#hR2UmnyMPeC=|d{}EM&;9l4^7phE4=n}rc z<>!V!q1$2MKz{QYsra|)X?wDbs2@b|t#w_)M0{{fkX4pcKwELTBUs-2+D{A*sV9tt zrfug9cG1bT%M3E?Hp{Q}wc0|KO)~Dr&aK}#zsmh>Y5*mO*bn4xa2j8%A}ve45ae?t z;tB+{kkyzS**5PrzAx9W{oC8$faQ*e z@&k$s&ENojFUrP>wFuWAb|B_yl#L#efv4s5D#07sX6zX#?I@EyqS+}uD?_+PKmPrR zHzu}YLPP$-dFXq>N)=)sTJI(-e{`0&2sU8`ijw-jbHCS49|>5cW>V(# z&sxeS8aTPE>a;%SIG~5v=Mpjn*h}~ZnEhz=O)bP!i>X}^1r8^onwlCDJG&`p*8kho zM2ZftDbER${@Hv3Cpb0|w2}8+7n!YzEx)4#XCgMXj1;ZBO32xl-e>;Ys1~uV0<9N6 zs0Vjh?a0hj`D;KF(AZc6Eg(cm>g4z)4MAdP%xD2Eg`#abn*J@WBz33kBDj<`XuTjw zkT{+Mqj9D2>*X)6eGsoUMzJiFKN)jV*pQo|mg)S@dbwzF?fHD^JMgl=Y0?ClF|^_v z*wB!vW{vbfpe!{~br+!XH&~srM8as>b|hPm@>)zUPzpVUsSrea40nv_dW5=_Nun~F zqcUMd&s35c?`D3d$X+4QA!eMtL%2S?9sch8B_w>is+@#T0tJsJHiI1PLji2EM41W) z{O^N(AnOOmpgxe_=p?x~gTNnQOeQ)Y`*-RO{v$s6pigM8X(Lz3uvBggmN11Z*zlm zTUYlzk8q;MACyJ(qUXv_9pKW8&g#ZxjV0Kw#}#HrjhUPqcr%{jLU=qzLTbpG701?V z&dmfIbv}@{bMuC(58gE&{JQwZsRR+LU1OS$OF0?Sw^M>l>j!UM%2Ed3!o=zXW4S2l z>{Z5~T~kFLVoW*0Q2nTa%=<)cb+1Iy?iC#pTYNi?`Wf}_IT(5IOV9z+A7}52@dRm{T_d0S88z-;7 z|DIcRT&az{eV*`_gO!cuJG?N9E23@xYZWeVyDffip(&1ddOjcp4fgspl6t=!`SiC4 z*X^yc$3a6AQ|`UNgdiuTICAvj!N}f_fv9$^)2*k^Q~A-&V3xgsiIos?!U(y!T|1L`4J&%SW;CX99%cey|-@| z5nOJLkA=CPHCGlE7Nq#o+uMGQnANkWci^*uKi`B>fTMPa&EC?zLP& zL*;KmCMeJ`TlT)iBswy=kLnYG7|Ox$%fAw2iqhr#I!=_Y&n<<4)m@PC9578p!#1Cq z9)DOQd0)7G_r5!9dUD>DcEtd-&7}z8<--b0RLLSn(^4Ygsj}`^d{t}k{`$;@k6om~ z_)l#-X?TNmLUm0+!X99dO(|Kz&8&JWZs`a2_f#7(V+l38lJ@FC4imn@j#KzvFCi6{ zbii@5#-0PIobHaw3NQ~4n6%jvX*0?!Tanm1{Kg6V&y zytnl3Meb)D746SQ*pXt>Ee~kdnEHMDYiPp~Rx_=RJW8-1$n`job~Ip|3xTUyu}`zK z!+Ks0>N|~XghGzHlgN7yNu(OZj)Iu{>n>{@7GrrmoO-;{ z^!gg?Hp|Y8c5w_l)&kFPW-Q1yttSY}Ye0&RL+|jK$47~oG`_eYeGdd@O{}1a_veQ2 z$L&yi;1)LA{T|vI$M!+jJA+)xPmR&HnvC7nKm5Uz{s z1)1{Dhwm^iOqiZ|RDSV00coQ~#M*+*Es*i+ADSwmVK@6tUGa(B4Jzq?eh`Bp3e%u_ zFKEm7+p*;CHtUweuSeqbmW6)zTrYw(yB8>4+W5W5CgAh@Mb^z?{Z{|A2cnoddpjTA z^>LM#&t2^h=;LSltuH5*nC04gLguvP=8k$$Y*gL)P3^p;33|%!#FOp36YZe{i%EAi z)V4s==jG<8j5vIHqmA&v6`VQl6jPKkug6$`I|v)s;fyp-$Yht==bcib_M>siz}zD7 z^qE|Gws>+{v=zIj$`??;=M2B)we!W*k1iZix#PuDrYdk)Xm4o4k;UV#rb zLLMfwfr|gK*lu=qS}(!VcitPRNuu)RwgvdX`u7g`z&u9`m3qH0BqsN(Vh#`fmWaF3 z{}}U++}zx}U7xv9hi5)<5wF6Bz2bhp`h55At~DO&zf{@=-Df&9J&ijizPATvMn`XWjZ->H$UO-gKB$X?D5*tq{w2W0D1(06+jR}W5D@DM373Z5`1`jD@LV< zb{I`Uuk(Alq>)l(InksUXj}+O9Ix(HUxM7KYWrFoC&2snYs;h^x|jCOt;g5vhG{Gf zLU9UW>az5Uv(pZw2bapawHo7MfuBqKh(c^&dyX-&v2b^^;noVUDb6M+ardMuSYkdq zC`vC(?VEPZXS&0Txq@bn5Iy(k(s}|vJH@$piP`=tZ|)@tH#%uDXQ0BnlBn2zF|X#S=z___+8Sih4~sQ&rKiz7e2)*$kavEvv@#c+&=Mg+ zT92M8ze%58V$Abf291k@H;7lq!e%RKahonKJ5$Kk7tq@YC6}8mJP4(=$}_DI&J0!kC!mHlT!k+9w*~eBIF`5^GHD|7 z^=V=-o6~U!R+bWmZsUa%B_;%OT^_r&dL(|Dv-A@Q_h2GtW6;Eq@ujJH;NtBuzlb5gh#}bOcb`RfENf{T z@fDt+yD>PW_^+Au4w%iCKCXt{q1OUr>e2zz->mjuXDn!6y?;CI_T!k$QRu*Qu+E>5 zQQKG4V8(_d7R1HDs5yoUCQd#Cqw>Nx@&T-WS@OHN;{?7Il z?ro>qR@~ANNbID>^OrkX?)!)8f%#!e*~xLZn~`FQtC6Mo*+|?Wc)2M$ zrRc&P!UtB$UAuM1sdsFxCY-D#BoeKdoeL3rV>|L#rjEU*jTWqinSlFfpmo(!VyO>d z4=SyUQoHRt-geQ`-uV2i*gH~JaG)dtOe+v1NutFK5DSN;-+&|;+F_legB~ze;62-s znlf-<2%YQ{A{*N5UwJ{qw-fMsh1rga-R>{8F)RPK-xuumX+pF|sUitl!_~yfkPSHM zdZ{&>zOd$bqQe3R``tV52wDldJAL13+%B|$6I(!bLVutmKA#u5cB4&CmVGC6@#sM} zZh)??F1i~M3ESer;hte~n1y6jn$u^^`0j4u@L$_CH5WHG9jrd@Zw&PGmPp-q4(0dw z!t=UHkkdh4ZW{aF9=zq!*6WRME$sN%nWNr$I1F5DFu9YKB4%{Z+S$>?Dn6jo=D7}+GB%ekHNyo6lALR>l(LTSN$XM*F2LQaqPvqN2>DMUc_-6n}Thc9>mbZKh`2fmvqwMUBS=e*h;FtR2kd>oynRqQ%6p{ zXD;0$jyI9NEu)swXcgMV`}Sx^wp~WS@$@8+&Av+sbM2?G!wz(@HAJ)|HYMZ`_1s5t zGI4f6rQrnE=Oe3ue-=`871s==1`6{>%UZ$B9CC>AdS>%}hq0%MYFtH;h3!C>jZ)Oh zRuQl>`wHhHO^>F}CL1vJwE&A!=%v*Aw{TUoks|#&0|o2#(o#V~1454N#d4=30k56N z?cT)QNw<)wmGAw}?=$PuF~lDOb8O7ae8D@WXq6is7E-cCPSkM)AB0c{%w#Mo$f5X` zmvDv$+kl(FXxQudEN7-(JE$@rA8|sv(nt%kfC6?AP;O0N1}F8DrWf^`NZs+*QnYSnHeS)bVUR#FuTf$k5I!-d7NzAc!6LsmP4zqXQrQg zjmp&oOHd7@MIoUhbCSesjjjBOuw-%zHkRdlzdA=K6pSP^7?%`vulCv~O8I~19 zinw@EjkVClRJp$kq7F_rxltjjq)T)S2zhBH)U$7ru9uH3I}S>OWknnHop>k8j62VP z=GV9fNogCoCKs~8uEq$xc4*an4^PkG_P#{bd6|U_DN-k@#dqX?|2BTZ-BnIm7lvnP zE;=xOK4y1pK2SG4agp&PLxl?|i+RiH+b#WV`^8of5&;3B@awbOw*E%j;#SDJw_5?t zvmwx+=-+NU2bmjjr!=y%qRA|4#FUzrHs%I|>;M%E24TZTJ-@k1v!xwjSo7-JmAu@g zPH5M7FUhU@jOm@Xy(0sAONl_46@3-o20pl&Eu`vejlO0-)xcMROKxLx;qoN6*5R92 zzRzMTJF))0{G{V0INOPt@6%j@Us`SW@}r`gn-}qE9(A3S8U9RA)tLTg5u@=xLwp;QpyCE`QC+Q!dOTig|#k7)dhAY)VX2CAH+HI-&UIlV%G>mx=abO*(V&B zY8Q@0eyIp{?uWG{i&=rvdRxPHidd+K+jt{mz6N$xAx$c_$?J5vbJh27ZH4Wd*&P8me4b7`Jgo)4Vv%gE3qj?xsV?<_zL-mt~i z>4Iys+eCS`}NZue5hL_tO9WUG~@dup|e{PS0IocxfLxH^mz1A9! zsP^Ua3@KBetpz+56CaU?sxPa~jTGItpvBcMn7@W*8ZXUwU#AJ?H(?ZX^C^NG> z6)-@#tSrEtFEEQ05^VUQG>s89VXJT*RXqw|^py)-zCP)rHsI_F3&-{sy-q-U(0{`F#Z4+i}{p z#=b;Oa}rFA9=@t?|6OkLZ$6h};_j#~=qPw-#RXRMRSO8$%?S*fLkD(gt`F$EUKs{K-8Z4I)a!ga0Z9eeV z>JJSG=gFM5#iGi3$cG=X%e9W2AD4eVvE*|2VY|BE#q>@j4t=;PK9q=QD@V1iF3rfoZweZ(1xdCdYM@fKl^dG!sJPJqzm^+KJ_?LXW`O8tF>tR zo+Ot%`H#p7=}p@Gb3VZo0$(L^9x>X;rv?KE2O}eV2EYi(W>m5{=eP~NrWbLPOueK$ ze$VL2(Y98uc&7ZIuBLc%f+(0Kom_m6(Ni6!Ec0mn!5!nw^@k|;%y;2647Z7t@wLkC|}ZD?o-UDZkm1(Yi`nj_1O z2DqrQ3xEFR@22Nw4$a@Q9h&|6XEIV4H?3{| z8?#aZJx;Hfld6-Rm(hFPf`jjIh*XRsS|`b9(<^qs6SEW-C%MTtuNNjyICR}lXB3K> zx`#tIkjBjIgpW3ayt^IPCyBu;{K1{gP@(WbN$pGV83nyKO-GzIW#|NYn3`IM4Ihsa zG8*aBPGvAD6~^s#vQmT>0SHgm6KO2LBzECs=?T7vMml`(d<_tJ6dN&RoyUnM?Rz4J zR7E0?oRBr}a)Fvt;bgEUjPxAUZ-qL7AX-EnTEB0e9|87~jCi5UC822)dd1@Sp{M?0 zVqp%(AHmM!3(wFXgtj_kH8$o-qU!mY)pOiWC6`So#$jh<7IMqifY>w@kKTZnN{pl3 zzrK%sP%G-mo-k24{KnkC#rW1rRzCT2gl#Y_jF~lO=zf_gwVZyi95G(0gUH(!>gF8Z z>?o~7WGqvPg!_-L?3*w)?63&OY*c_)-pE`p;V zX;mp~l_l>B{uufReg5reaaqTtacBemNse1vng8vQVSXiU66IDQ%Pds>|1hx!AA%{s z7?FN}S*=S>Lv7R8fs#K@w=@th1xko$(E>Q=esn5*&9KQnZ13Z8I{&8U_u|?9JUZs_ z(oM^D^rN7@FMK7#H1o+@A>Y%uw)j=14PaXID)R$O5B!hi4FQ@0J`$tt0VGCtBwfr3 zHvU|F_cK`?+l_pGn&NK9IIl_#`KvHlmpBXDmJ*^QL!pYn51y!yG+4ca6nD~{g&qd% zl<v^=A1R;&aKt-uVak(0Ld<@DG?ULFO}?-|{KusM-i#fRb1%0#1HK`gx8-jdv^$T2iwwWz>HBP2=ws&nveA6EX(N(Px1 zU_I>|1I)$4Ar?@PQ_+LFg{3T^4tGfxp1py|KamX^Ev2%Ji(K>Jr+nbxVGU+ApZu0l z+^FtSBw2S@?qf7I#%6%i^SsR68fV1aNN1{22*j2Hu#kDvHIih8wqF^??T;MZN-AX? zv|rz9+GTOm)MNZ)PKqK0K*~guT^)ZpaMp`x!cXzc?WL$kck?8Sre#i~Z4`Z~MTh4m z_otD05OIu;`(cp2uUiOoY9EosME;pEXZGSj&4s2d+lI%$Ig;25zhFs|l8Q`|Q*18H znIioy&sl+A>1Vv@@4V0#Xpq*!-!yKNRz8@eYd`*sR_f)bZZh*8xs^}F9mg>%Cu?AM zSaT)aZU6iW%e-Cork2lZZU@sZ`Q3f85y`8HIV>S%ZSb1MK#&#~s{XDP3 zXDqr~z_loD?PqRyZ9^%15~bcyps{iCQZ($~zx&Qa=xpE~mKG2Sd*YzT8g)mJuK_`- zNZm4M0qgEJs0Nf1wX9CAZI*Ge&ffLu5(Vjfv$7DJTkGNV=0k}Sm}PjszEC4Cz^)~( zfVvx;g@~=r12e38&<6hKfqW{56euOZM3+LT0ODsA+0R1~{1UoCWXMg6FNEQEFh7(?iLv>(NSGXjTP z`r_$ggvEy=RY)jIpsteArpOE_PQ*CMYD?4<#!IN>xryOlT;?N6LjqV~<(Z}In2Udo z6^^JF+>$rSo*WD(WVOVoe2@FNBSc|qMYf&;%tsUG+ z;+6#m6&dF1y*D*4T9r^pui>aV96~h0y_3mTL@4TDiUZ7 zH>o|S(lr1B2II&;cpy{hp6FM?(VD#7BiH*t12EcJu31mz??|I;DW-Bch=)`?XHOB0 znQJG)wW2R_M<)aKy%$a-n58~HJEo4(oSa5peXWSl0eKN;DRToFbMbo5I%>$D30Ob( z69SPnL9Kl&x~EmD;&! z5b70BAecn`T7X>soq_?EzAEzbdgbWSD^RG=R@E=r_`SOiUghI5$&>)472a9&(k0np zaN30#s)h%AS$8PnJQ>MevJyN4B>ByVfYbQ9F)|j3!yC_#YydQHU;nFf1|s9{!=&}* z?Dl!b1C#1*)CT$BQKqaPBwvkD(@#Uc^ZI@MgtPJ%gR}!&nM$&F0nzyuQsPh3c6Z;= zHafvlR0B>&lUsKuf5O=kZFraa@gk2_mIm(L@0}2JL7P8KJoonj_7dfNQQH>Xx1XH_ zdTKN9l>byE>-AnIE?xJs3iP5)wFhZvT`2y$8Y^(5e>N~T`lq2|^%QccWgtU`FE0z^ zQ}t;F-QaxTmA^c;N$S&ayKIL8F}8Yhv)r~3x_}77he^X&tW?|XAbYtIwuXWxRG~RC6u?^E2Md4#f~TlksmL{jW7LM!)QxbeVn%T# zC&g3Clkl{)d92WIQZEvY7o?jjg#mvO=}n$Gw3gc-df<~c@3UzW>0B#hwDh#8U^-Fn zqYW`RKhmaiU1M=QJ%0j}8U11JhPK3=yx__CgVF$(3H|CwN1;+9!u*tzV${kM7S6ka znI7#&1xdgJ@^>sTIqsOiZYWe$goBg=N`HL%qm;1#Ah(pBs|QRP!4d(^tw{CH;ynY@ zw9$~U(7l3XawNSt8Dtf#G#2>966-}TfwVAh2Tp~j z!Qq?oRqEtlabAzU?>p5X!J0YMYK#)6#qW$?8-i*O`UCnO2l@#wGQbNEe!dzXC*|ot z9LhQ*m)jF+NIqU?A&~grVe~&&PVDpYZ1y9yZSRNiJ3F=Y-*Ik*RaT_0-c5VC-j{uy zd`*T!saZ^2OtD9KJR!@{a?jw%>J*=&j<>v<;s<;a)s<&MxNeDMf5gNTcFKd2wB2bX2;jZk_lSQT9dBGQeE4puTY*r2l0G@Ruq90DXJW?1~YK}*|TgNlC2~T=mcL(cdrw) zsjUl5Fx9u9-=tA&$MH)>_EUn{_l~uO6=#u~*ZGMfv*|b&0By{PDimN7?G~?a;F3`wCF*EbqziF|p}qx6QBn|c_ucj?f3G9UjTA!FsS`trfRiEyYxzw@zX*Ze8+GoH zQ8zY#3v#csfDgM4Q~&WY6=u#GlhjPl2K=14hT0$PVygHs>h8zeQs(Dk#pi6PU&jwe z>CC3|I^=cIz)E3#GxyZgSRCIAGBC=PN!cQ9WISX=Eg!o`bYhvv-p`V6I$*;&?b!QX z2ug3Uk_Ud=B>mNHOuIGfO_T|N6LczNf`06~RXU&5EAvY>G)k3H-@E_`C!kp)muHjl zvwKUsZum2l%>KXTgL?(XE25_04)hEp@V!1?2pc!CEF904pmRhHm-i#m|5(l2+4>Cs zg#0`ZcvlBDeZC$&hxWxR~;s=>eSRq%FRK(mEm1#Z=5vGXs&qL`;-|HJL zN5MDjll4J`ph(EtJA7dbk9iehE5FVz$AcMeY!pJh^$F5OJ-MUKac=eEv zqStO5CBy{DLxrodx9F1TWV4xUuv(&0MoS?!Gy$esr(rUKo( z(iCW36dGG{!px5SA9Povw?i39SbkEAFDYXbZZ=282xWa4n*LdgC%4TFH!`#VPh*B&o4jNX)SA{!mc1HRsxenPBbc=kPV~N{ATgm2g8)-_rQ4ov7nwVQz2Li4gT}wOnqLY?3|l zI+Q#O3!&lrZnQ1i^%XEWqeMxFVUc_;to8fyK40?oWc(ksC(AQ2H4sQS5$Mk{~joGu4=@ZFN9t&Tvf*)m|zm!7evkcoW3PNo#qqJ!@gSxG)}^%y~K7g z7tlafV^6KL)nVRn($ko9r!4qy3Q^dg1YU({A8a7-^6H}sTP=B8WS`LQ+0gUjLI2a$ zw!gOMf(Z*s>|0-gE|aFY-gi?$xQ3B5yJlA^k6+g<;qhWAZJAq z=?Qz%*UZ(lfORIrk+t4d21^OB-17P?~qJ*YeXTw>yv@(>^<7iH$N=rSO{)$+OmS=Uq zMdxXLFFZr1qNO%CL(Ca(vT37lIoD*o(!pKSO*@{7=x|foxT|J@YD9mkx~pRDs2=10 zagjol*=l>Bs|lN%V@=Q>PvQ>Icq2GDUy#xf{&Z@#Nd?4?Nq=YgNM@!Y`gRl+4k$0; z)~88HW(txaBkxN)XaZfsBozg|f{90I0d zjxDZ|`RP*RBHJKdDp5-M*UB(9zJ#m~A0*8J)ZDDvAyVG1SvkqxZwUvelD~b7D zR&Lady&@`msq}6;aNkI?zvkV_2Wt=Y5tZCmL(!QqIYrm}_M6ZY!o*{0-k)HxQ8*Qo zTMxbBKN<~t-NCJ?j<3l7*tbCEXX@VGUI+>bime%) zNFc}vI_$qORcgV?Oc-ezoS{nH`oEqy~^Lef8T;B z#j-Qv%j>>9ON;F!a2Jf=8R&wk*%M<+v{jb3h3kc*M5ubZTL7J@>`lR-7M8Xwwz_ zPTx0ZcBJ=0t~+H548(AY0v;C(6XLYtg>bFg8kbu2!YR+z=3FKa;mhPv~MFkSictZ7h3sVke`% zC|;_6We)URx%p$w%}yI8O@!#xxEAc8(8&PJqp~8=Lh!Ys#z?ub%7L ztyzP-EjrsSb#+q>cK{+XOiaw$_I5gR2pz`piHU;NRxL*G&M%`s9wdN@wNP9+!kMou zQn`pt1tcTGzU6Z#f>rx{x$jSf^)8t49bOQd4)ib_HezYqL09cg5SIp|FpF2BCOhoB z?mohkYJxMxWZ6c%cAV=BpndxAG%%U?-*AF~VgVX#`97KV>fiQUyat}XH!8Q6Zr^T% z%{D@y>ign%3d8(jgsZOsPn58eI2`hin>WJEErf*`IUrH~<_Vv=Oyd^h>oE)q*2asS zViFrbXp47a>Y2i%7Hn{>YpSV1uhx=>MZWUq^R9BN`R|2yproOg^%zxIJGm$0=$oss zX={qBVwh^&=n3j2RNStT5VRYgM$MeUh*~R^juH%BT4eOtgHPI@zJpPq)~SezLA5%{ zTV1}x(Z~G8mLe?}szFO*7u48Z0H)>d)-R{qZ2Rk24?ldgv z)#p|L>{?GKKt<928Pzq&!R9Pahh{AujY*-t;cSk^HrdK#%AKz}!?upIK2MHGBsz!J zy1mh3Q{@iqRTD}qVw4-9m0ba9==(URz&<%tPSooGEji#9!IP*&y_HA zA@p>H3!94%poN`Fgss!brx;gYhu|R+o9LV(ZMGvo#3DlOWxh!(WcfJ>EBV2^k1)%E z75IC^&Oj*^b3W~qhQ<=DQDABVnO0oqVCvR0(DReHGLhxm#b2dVcpa9jCAdZ#tS$-6 zQM)upN*#u>Zg_t~Tpw*q|AIGiN1U#srm#N}raCEy(so$52b#K7IOvz{&ve%R8;0?O ztVt|}CYzf-ntR+%md>89u_r37m%78OJFvHa%O32|eQ_hDMV>o8o1#RaomnyiwR!e1 zjJh-Gkk*@03VB|JYT|DcGHybNLCxsih^BDq@=wN$@)ysWt>6~abN>F*GEjkFBP=0+ z;>ma%liA#ay2f#9l za~%vv$VgTHaIm57o$hL8o@`qM{Ij@Of`+D(ivek8;i3rHm_2uYv^!dXcP0?Yc@cV^ ziM6|!#9USp)Zfo<~QqFZLTFG?$!T*g#o z1>J1+6_A^tS}R(-C_OJv;t}<(#u}Wlw%##AlQvLizN@thjIMNPPe|Wi;Ppji^3skN zWnq@5Xf)e|&r_$c5jS zYlrBN=eXSs4tySxA44@@wT~ijmLtN{kOHavFv?YcKYeCtbdEK;VB5m*Jw9&Im~)1E zPv8s9_uMKh$F?csJ7Urg?wqbY+P{PrE+&DBven?~B4D^-2$!(}kV}~fC;=-eF$abJ zyTAc8fSEygNbunri=5l`pGWDBYFsIIh9x+Xce5lDtWp$jnui7Z_8YCP8clu#uWzs> zdBTlHB|iA!1oEanh>=$iJh6BfYBIHJkpV;=S&XKhMGK}Z8OcxkUZ977hT1K!R_5-j zo%$*M@X}l_=`VsDVK&+Zp3f)_4^a7#n}V#3S6h*rUX+vV+)>lr-?Vx?@dd8o^>}=c zujUb~Ag*T5Aso6r=Y55(VyVnqbg`>~w#zLWr9)#brZ z%itTnGw9H}9$gO3~hPrt>INyfHx;)HPmoT-VQ zsuXfu*2V0h;=(YQ#is>7Lc2sy8~R$6m;TR7HwSj_Ym=c0S!?5gXizh&t5J`SZZ0lv z`G5XI%Tj*l;hEW-3FNp{-kSc_Z>+CR z=+gd$`R}IK|Mb#9)t#a$aO^Ko*RcNAZ^D-&xdser75glRVyD+|L+zzm9VXM8bMZ%6 zpYL6t?kmc4*odRNDe`1$#fF@jS(ynVW+n`ygA{Q#5H+Ya?jPCOdxIgnxC{f~k~u$1 zKsf}@Wfov{FjoT&p6?Fy-e4S0_C2kO_LjVTX&*bN?&v`~959+w>ZU z0M>glSL$#$j+4#joq8!BjYFt5MLS08adMD0y}TR&((J^<%YP9XM*K!wts?dZB~}~- z5js@iFI*Rblt6CL>S3?Bt(}UoBSMOsFiKL+H72rE$>JSSNJ}x`se$um2o(r@T^t(8bH}&0QKT?S@*8-w-GZ@0jxv^0wLOw%g66!hIreZ z6ivT(ew;3K@5EgPX8cImgO~qIO2``QAIQ)D9y%EOr?>$=N+)?AC!b+hdLH2J8?I^R z8)*|}p>*499tdkv`Jo~Tf&Qp;BsY!iIH$7nuc`O+*&5qb^O-Bol z3t=b{Sj(2{5ehmY8Gr&n+oBGG2y!w=!vIf&gCuwuPsec5*Ue)I<^}2JbGqb*vC)%% zU&|05C_Gv0Hdx2A^9V+2{{gl2d>DOoif&K|{-4aje+MK-)#oy6u)5hXkXn(6l{GjP zk8?MYGPirF>%*1!G1vD|llNsmDLpqAv+(9^>y!WV^fct#K6#%+9DWZ-k=)=1Xd zSe9VF)2>ANKyQvY0WlahwLP)4)jyJm4J^Rd``k%-zPYR39WK}85`p;@PtXV2>upzN z^q@xS2JD*S{X0khbB&FMOaJ1@c^FLmbqk00=Fx*!c)hj}9nB974b5rF?rGf_z<(1d zpWoT37s1E>92_aJiI5;AfG10Ho!5E6{t3Cr%N8pr_0t;U>-fJj8rvpD zI{MkAorJyp5qs9^sugYO8NwpsZX`$bx4onQ_seyu+xx=bzu^G_z?uZV_Rp=#rcIhh zSxgp9OQLH-YqS*NCrk{BmFk}Xh+^24v*K82k~T$_C3pxa4Q5O6whUzkAWaLHT!>ZC z^>VcvPyNi&{Qrij)gzUv!%_{6$}xm!16)Z-ZLbDxxS^> z8GGv#f>)5k{oYWv@epmH+q7BNajCAjWp^Ots-g~g$#)e4Qw6$;r(&qp&8OQhJXKY56^1>V4uKt7clLU#BZ5#Z1f%38W#RVLP16V1JKVgx=I0laEF@TOS8nI zUuj;eZ1y0R1z20oGmU`sO=!_UvIdd5sEi)Zp?Evi9IkZVYOUWm&euDzo_L$#LQkOE z*K`#g2m_YBxVyrxD+)xFqx0qD#f{;G{i(&Nl4RFmbEhq4O&ybf>;XwFw@`%-ZD3w{ zUp((b+bulPZyU1(zx$Qkx^}M}i_~y{+0T3D?sz%A@mai^(E8jUqK^H-IP3_9wfHa- z0514RjiD8ch%OReM47_7E)*Og5Lk4!;KokCV9M)%%;)?GhfHjUwOBh41KNCKBIhaI z!Z46tg~N@`wZi;eR}Aj;K&@TLHmyb}gHsYIy`*w~M_zRdUB909P>|HgtJ?whd}DOY z-;48NvqL1|OcL=Dd!Sbj21x7WCd{wT1RXxu(Gf-wr+NCH1yBafT+HV#y`bPt_>uvX z>)ryDUOVt%#ICv<#a$|%j7{0za>shUv~E{+G(K)eH5S}_2#BkGP#Hz1ZEh}MR7lkP zMt+$exMb*y6*Oj)UU?2zil20#&Afc&gL0-U&y&|^gqO_?v3qrOX@sre<$etG)7Qsg zb1SU$o@Wv6wAJ_xy2Yb;b07^VWlFaiKdW9fW2zPMha~g49 zMSc|#tihRZ|Kt~bQI237pqH^ih{c=syZQ{;^vx65Ta@oc16c>}#!}A)sJMNY+2hsP;M

mTGCTVBq*QL3y1Idv#~llV3bXBS0` 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.KAfFp@yg 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

Q-@TEm~asZvzObgL$(HXPZNE~&3W&ul3t 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

NGnLCk6M95ByTEm{ec&gXj>#Zw74A)gjGpa` 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 literal 0 HcmV?d00001 diff --git a/releases/UWP/net-native2.0/incremental-compilation.md b/releases/UWP/net-native2.0/incremental-compilation.md new file mode 100644 index 000000000..a6b89d3c3 --- /dev/null +++ b/releases/UWP/net-native2.0/incremental-compilation.md @@ -0,0 +1,92 @@ +# .NET Native 2.0 Incremental Build Support Preview + +By default, UWP apps use .NET Core runtime (with its JIT) in Debug builds (F5 scenario) and .NET Native compiler and runtime for Release builds. There are inherent differences between the two runtimes both in behavior (for example reflection) as well as performance characteristics. This means that there might be situations where the code works well with CoreCLR but shows some undesirable behavior on .NET Native. Switching to release build to find these issues is cumbersome. +While it is possible to turn on .NET Native even for Debug builds today, the compilation can take a long time which makes the typical developer cycle slow. As part of the [.NET Native 2.0 release](README.md), .NET Native incremental build support is trying to address this by providing a better Debug build experience while using the .NET Native compiler and runtime. + +This new build mode only recompiles assemblies which have changed or those which have dependencies which have changed. It also intentionally avoids some expensive compilation steps favoring faster compilation time over smaller and faster code (unlike the Release build mode which is the exact opposite). This new behavior can substantially reduce the compilation time of an application using the .NET Native tool chain. +Using .NET Native incremental build mode allows developers to use the .NET Native compiler and runtime for the app development, avoiding issues caused by differences between the CoreCLR and .NET Native runtimes while still maintaining a good developer experience. + +Please note that .NET Native incremental build is a feature preview. While it is much faster in most cases than normal build modes, we still expect to improve the compiler performance as we get closer to the final release of this feature. There are also some known issues which can lead to failures specific to this build mode. Please find the list of known issues below. +As of now the .NET Native incremental build is rather slow when there's a change in the WinRT interop the app uses as it will trigger almost a full rebuild. This is typically the case when the app's XAML or XAML related code is edited. As such we would recommend to keep using the .NET Core runtime based build while iterating on the UI of the app. The experience with .NET Native incremental build in this case would not be ideal. + +## How to enable .NET Native 2.0 Incremental Build Support + +Currently the new build mode is only supported in Debug configurations of UWP apps which use the shared framework package. To turn it on please follow these steps: +1. In the project settings for the UWP app, under the Build tab turn on the "Compile with .NET Native tool chain" for the Debug configuration. +2. Open the project file for the UWP application in a text editor and add this property group: + +``` + + true + +``` +3. After making these changes, please make sure to cleanly Rebuild the entire solution in the Debug configuration first. Subsequent incremental builds should then work as usual. You should be able to develop, build, run and debug the application as usual. + +To go back and forth between .NET Native and .NET Core just use the checkbox in the build configuration tab of the project. + +The incremental build is only supported on .NET Native 2.0, which in turn is only used if the app has its minimum target version of Windows SDK set to the Windows Fall Creators Update SDK preview. + +## Known Issues + +**WCF Proxies with XmlSerializer are not supported** +- ```ILT0042: WCF proxies with types which require use of XmlSerializer are not supported in incremental build mode. Found type '...'``` which requires XmlSerializer and is used by WCF proxy. Please turn off incremental .NET Native build mode for this project. +- No workaround. For such apps please turn incremental build off. + +**Compilation fails due to missing assemblies** +- ```Internal compiler error: MCG0023:UnresolvableAssemblyReference Unresolvable assembly reference 'Assembly(Name=…, Version=…, Culture=…, PublicKeyToken=...)' found. Please check the references in your build system. A reference is either missing or an assembly is missing an expected type.``` +- Incremental build is more sensitive to missing assemblies in the app since it doesn't remove dead code in any way. The solution is to not have missing assemblies in the app. If that is not possible there's no workaround and incremental build should be turned off. + +**Compilation fails due to duplicate assemblies** +- ```RHBIND : error RHB0007: Could not load input file 'SharedLibrary.mdildll'.``` +- .NET Native generates and uses certain assemblies which must not exist in the input application. The incremental build is a little bit more sensitive to this condition than the non-incremental builds. +- Application assemblies should avoid names that begin with ```System.``` as well as ```SharedLibrary.dll.``` +- Workaround: rename the application assembly which causes the problem. + +**WinRT Types or properties on WinRT types which are only accessed through reflection might not work** +- This can show up as various runtime exceptions. MissingMetadataException, NullReferenceException and so on. The code behaves as if the type or property simply doesn't exist most of the time. +- One such example would be: ```typeof(someWinRTType).GetProperty("propertyName")``` +- This would return null even though the property does exist on the type. +- Workarounds (one or the other, or both but it's not necessary): + - Add a new .xr.xml file (the name doesn't matter, only the extension is recognized) into the app and mark the type/property as rooted. For the above sample it would look like this: `````` +``` + + + + + + + +``` +- In the application code reference the property/type directly from the code. There's no need to do anything with them, just have a reference. So for types, having a typeof(someWinRTType) is enough. For properties some type of access to the property is enough. It can be dead code which nobody calls (in fact that's preferable). +- Both approaches should have very minimal effect on non-incremental builds, but should fix the incremental build problem. + +**Non-Generic Marshal API might not work.** +- MissingMetadataException will be thrown during runtime when calling these non-generic Marshal API +- Example: ```Marshal.PtrToStructure(IntPtr, Object)``` +- Workaround: Use generic version Marshal API + +**Bad Pinvoke might not work** +- Fail to launch app +- Example: ```[DllImport("neverexists.dll")] void Func();``` +- Workaround: remove these bad pinvokes or provide a fake dll + +**Object methods Override for WinRT type might not work** +- The result from calling WinRT Types's ToString()/GetHashCode()/Equals() in managed code will be from default implementation Object's ToString()/GetHashCode()/Equals() instead of WinRT's Override methods. +- Example: Create a WinRT interface which contains ToString()/GetHashCode()/Equals() methods, and Create a WinRT class to implements this WinRT interface to override Object default implementation for ToString()/GetHashCode()/Equals(). +- Workaround: Use IStringable to Override Object ToString() behavior + +**Serialize WinRT enum might not work** +- System.Runtime.Serialization.SerializationException:Enum value '0' is invalid for type 'Windows.UI.Xaml.Visibility' and cannot be serialized. +- No workaround. Please turn off incremental build. + +**Lookup of WinRT enum values in WinRT dictionaries might not work** +- System.ArgumentException:Requested value 'Collapsed' was not found. +- No workaround. Please turn off incremental build. + +**Compilation might fail with stack overflow if the app has an attribute class which is used as an attribute on itself** +- For example: ```[ReproAttribute] public class ReproAttribute : Attribute {}``` +- If possible remove the attribute on the attribute class itself. Otherwise there's no workaround and incremental build should be turned off. + +## Provide Feedback + +Please continue to send questions and suggestions to dotnetnative@microsoft.com. We look forward to hearing from you and seeing what great things you will build. diff --git a/releases/net471/README.md b/releases/net471/README.md index cdbf596a5..0d963a460 100644 --- a/releases/net471/README.md +++ b/releases/net471/README.md @@ -1,8 +1,8 @@ # .NET Framework 4.7.1 Release Notes -> These release notes are current for .NET Framework 4.7.1 build 2538, released 2017-08-07. +> These release notes are current for .NET Framework 4.7.1 build 2539, released 2017-09-13. -You can learn about the changes made in the .NET Framework 4.7.1, as of build 2538. +You can learn about the changes made in the .NET Framework 4.7.1, as of build 2539. - [Download](https://github.com/Microsoft/dotnet-framework-earlyaccess) - [Announcement blog post](https://blogs.msdn.microsoft.com/dotnet/2017/08/07/welcome-to-the-net-framework-4-7-1-early-access/) diff --git a/releases/net471/dotnet471-changes.md b/releases/net471/dotnet471-changes.md index 43f44d2f7..2902190f0 100644 --- a/releases/net471/dotnet471-changes.md +++ b/releases/net471/dotnet471-changes.md @@ -1,8 +1,8 @@ # .NET Framework 4.7.1 Release Notes -> These release notes are current for .NET Framework 4.7.1 build 2538, released 2017-08-07. +> These release notes are current for .NET Framework 4.7.1 build 2539, released 2017-09-13. -You can learn about the changes made in the .NET Framework 4.7.1, as of build 2538. +You can learn about the changes made in the .NET Framework 4.7.1, as of build 2539. .NET Framework release notes describe product improvements grouped by product area. Each change includes a Microsoft-internal VSTS bug ID, the primary binary that was updated and whether the change was a bug or a feature. @@ -76,7 +76,7 @@ You can learn about the changes made in the .NET Framework 4.7.1, as of build 25 * Removed unnecessary ITuple constraint from TRest on ValueTuple 8. [363866, mscorlib.dll, Bug] * Support for dynamic pattern matching types. [295579, mscorlib.dll, Feature] -* Added serializable attribute on each ValueTuple types. [378419, mscorlib.dll, Feature] +* Added serializable attribute on each ValueTuple type. [378419, mscorlib.dll, Feature] ## Configuration diff --git a/releases/net471/dotnet471-known-issues.md b/releases/net471/dotnet471-known-issues.md index c32cc5b8a..3afe4a740 100644 --- a/releases/net471/dotnet471-known-issues.md +++ b/releases/net471/dotnet471-known-issues.md @@ -1,4 +1,4 @@ .NET Framework 4.7.1 Known Issues ================================= -There are no known issues as of build 2538. +There are no known issues as of build 2539. From d242304a94c6a1459f5984ff6d07173799f22020 Mon Sep 17 00:00:00 2001 From: Ron Petrusha Date: Tue, 17 Oct 2017 10:51:47 -0700 Subject: [PATCH 470/872] Regenerated readme, made changes to build readme (#520) --- .../ASPNET-accessibility-improvement.md | 2 +- Documentation/compatibility/README.md | 12 ++++++++++-- ...erviceBase-doesnt-propagate-OnStart-exceptions.md | 1 - ...tureManager.DefaultHashAlgorithm-is-now-SHA256.md | 2 +- .../compatibility/wpf-accessibility-improvements.MD | 2 +- 5 files changed, 13 insertions(+), 6 deletions(-) diff --git a/Documentation/compatibility/ASPNET-accessibility-improvement.md b/Documentation/compatibility/ASPNET-accessibility-improvement.md index 13d1317e5..33c60eb3b 100644 --- a/Documentation/compatibility/ASPNET-accessibility-improvement.md +++ b/Documentation/compatibility/ASPNET-accessibility-improvement.md @@ -1,4 +1,4 @@ -## ASP.NET Accessibility Improvement in .NET 4.7.1 +## ASP.NET Accessibility Improvements in .NET 4.7.1 ### Scope Minor diff --git a/Documentation/compatibility/README.md b/Documentation/compatibility/README.md index 734c53cbf..4d7fefc5a 100644 --- a/Documentation/compatibility/README.md +++ b/Documentation/compatibility/README.md @@ -16,20 +16,28 @@ Please help us improve the [.NET Framework Application Compatibility documents]( ## .NET Framework 4.7.1 - [Accessibility improvements in Windows Forms controls](winforms-accessibility-changes-471.md) -- [ASP.NET Accessibility Improvement in .NET 4.7.1](ASPNET Accessibility Improvement.md) -- [ASP.NET Accessibility Improvement in .NET 4.7.1](ASPNET-accessibility-improvement.md) +- [Accessibility improvements in Windows Workflow Foundation (WF) workflow designer](workflow-designer-accessibility.md) +- [Accessibility improvements in WPF](wpf-accessibility-improvements.MD) +- [ASP.NET Accessibility Improvements in .NET 4.7.1](ASPNET-accessibility-improvement.md) +- [Chained Popups with StaysOpen=False ](wpf-chained-popups-with-StaysOpen-false.md) - [Default SignedXML and SignedXMS algorithms changed to SHA256](Change-SignedXML-and-SignedCMS-default-algorithms-to-SHA256.md) +- [Selector SelectionChanged event and SelectedValue property](wpf-selector-selectionchanged-and-selectedvalue.md) - [SerialPort background thread exceptions](SerialPort-background-thread-exceptions.md) +- [ServiceBase doesn't propagate OnStart exceptions](ServiceBase-doesnt-propagate-OnStart-exceptions.md) +- [TabControl SelectionChanged event and SelectedContent property](wpf-tabcontrol-selectionchanged-and-selectedcontent.md) +- [The default hash algorithm for WPF PackageDigitalSignatureManager is now SHA256](wpf-PackageDigitalSignatureManager.DefaultHashAlgorithm-is-now-SHA256.md) - [WCF AddressHeaderCollection now throws an ArgumentException if an addressHeader element is null](WCF-AddressHeaderCollection-now-throws-an-ArgumentException-if-an-addressHeader-element-is-null.md) - [WCF MsmqSecureHashAlgorithm default value is now SHA256](WCF-MsmqSecureHashAlgorithm-default-value-is-now-SHA256.md) - [WCF PipeConnection.GetHashAlgorithm now uses SHA256](WCF-PipeConnection.GetHashAlgorithm-now-uses-SHA256.md) ## .NET Framework 4.7 +- [Crash in Selector when removing an item from a custom INCC collection](wpf-selector-crash-when-removing-item-from-custom-collection.md) - [CspParameters.ParentWindowHandle now expects HWND value](cspparameters_parentwindowhandle-now-expects-hwnd-value.md) - [Default value of ServicePointManager.SecurityProtocol is SecurityProtocolType.System.Default](servicepointmanager.securityprotocol-defaults-to-securityprotocoltype.systemdefault.md) - [Incorrect code generation when passing and comparing UInt16 values](incorrect-code-generation-when-passing-and-comparing-uint16-values.md) - [NullReferenceException in exception handling code from ImageSourceConverter.ConvertFrom](wpf-nullreferenceexception-in-exception-handling-code-from-imagesourceconverter_convertfrom.md) +- [Resizing a Grid can hang](wpf-hang-when-resizing-a-grid.md) - [Serialization of control characters with DataContractJsonSerializer is now compatible with ECMAScript V6 and V8](serialization-of-control-characters-with-datacontractjsonserializer-is-now-compatible-with-ecmascript-v6-and-v8.md) - [SslStream supports TLS Alerts](sslstream-support-for-tls-alerts.md) - [Throttle concurrent requests per session](throttle-concurrent-requests-per-session.md) diff --git a/Documentation/compatibility/ServiceBase-doesnt-propagate-OnStart-exceptions.md b/Documentation/compatibility/ServiceBase-doesnt-propagate-OnStart-exceptions.md index 16a391e81..90dadd9b2 100644 --- a/Documentation/compatibility/ServiceBase-doesnt-propagate-OnStart-exceptions.md +++ b/Documentation/compatibility/ServiceBase-doesnt-propagate-OnStart-exceptions.md @@ -5,7 +5,6 @@ Minor ### Version Introduced - 4.7.1 ### Source Analyzer Status diff --git a/Documentation/compatibility/wpf-PackageDigitalSignatureManager.DefaultHashAlgorithm-is-now-SHA256.md b/Documentation/compatibility/wpf-PackageDigitalSignatureManager.DefaultHashAlgorithm-is-now-SHA256.md index eb9638ab4..acbd99b0b 100644 --- a/Documentation/compatibility/wpf-PackageDigitalSignatureManager.DefaultHashAlgorithm-is-now-SHA256.md +++ b/Documentation/compatibility/wpf-PackageDigitalSignatureManager.DefaultHashAlgorithm-is-now-SHA256.md @@ -4,7 +4,7 @@ Edge ### Version Introduced -.NET 4.7.1 +4.7.1 ### Source Analyzer Status NotPlanned diff --git a/Documentation/compatibility/wpf-accessibility-improvements.MD b/Documentation/compatibility/wpf-accessibility-improvements.MD index 0d7d838fc..2b330a48b 100644 --- a/Documentation/compatibility/wpf-accessibility-improvements.MD +++ b/Documentation/compatibility/wpf-accessibility-improvements.MD @@ -1,4 +1,4 @@ -## 195: Accessibility improvements in WPF +## Accessibility improvements in WPF ### Scope Major From da27221be0cdd7aaceda7568b56aaf8a7297d7c1 Mon Sep 17 00:00:00 2001 From: Ron Petrusha Date: Tue, 17 Oct 2017 12:59:12 -0700 Subject: [PATCH 471/872] Replaced asset IDs with xrefs (#521) * Replaced asset IDs with xrefs * Formatting changes --- ...g-not-usable-in-Partial-Trust-scenarios.md | 2 +- .../winforms-accessibility-changes-471.md | 35 ++++++++++--------- 2 files changed, 19 insertions(+), 18 deletions(-) diff --git a/Documentation/compatibility/RSACng-and-DSACng-not-usable-in-Partial-Trust-scenarios.md b/Documentation/compatibility/RSACng-and-DSACng-not-usable-in-Partial-Trust-scenarios.md index 135713b65..9f4979bf5 100644 --- a/Documentation/compatibility/RSACng-and-DSACng-not-usable-in-Partial-Trust-scenarios.md +++ b/Documentation/compatibility/RSACng-and-DSACng-not-usable-in-Partial-Trust-scenarios.md @@ -13,7 +13,7 @@ Edge NotPlanned ### Change Description -CngLightup (used in several higher-level crypto apis, such as `T:System.Security.Cryptography.Xml.EncryptedXml`) and `T:System.Security.Cryptography.RSACng` in some cases rely on full trust. These include P/Invokes without asserting `F:System.Security.Permissions.SecurityPermissionFlag.UnmanagedCode` permissions, and code paths where `T:System.Security.Cryptography.CngKey` has permission demands for `F:System.Security.Permissions.SecurityPermissionFlag.UnmanagedCode`. Starting with the .NET Framework 4.6.2, CngLightup was used to switch to `T:System.Security.Cryptography.RSACng` wherever possible. As a result, partial trust apps that successfully used `T:System.Security.Cryptography.Xml.EncryptedXml` began to fail and throw `T:System.Security.SecurityException` exceptions. +CngLightup (used in several higher-level crypto apis, such as ) and in some cases rely on full trust. These include P/Invokes without asserting permissions, and code paths where has permission demands for . Starting with the .NET Framework 4.6.2, CngLightup was used to switch to wherever possible. As a result, partial trust apps that successfully used began to fail and throw exceptions. This change adds the required asserts so that all functions using CngLightup have the required permissions. diff --git a/Documentation/compatibility/winforms-accessibility-changes-471.md b/Documentation/compatibility/winforms-accessibility-changes-471.md index f434514c5..7af4cd210 100644 --- a/Documentation/compatibility/winforms-accessibility-changes-471.md +++ b/Documentation/compatibility/winforms-accessibility-changes-471.md @@ -30,22 +30,22 @@ In order for the application to benefit from these changes, it must run on the . - It is recompiled to target the .NET Framework 4.7.1. These accessibility changes are enabled by default on Windows Forms applications that target the .NET Framework 4.7.1 or later. -- It opts out of the legacy accessibility behaviors by adding the following [AppContext Switch](https://docs.microsoft.com/dotnet/framework/configure-apps/file-schema/runtime/appcontextswitchoverrides-element) to the `` section of the app.config file and setting it to `false`, as the following example shows. - -```xml - - - - - - - - - - -``` - -Applications that target the .NET Framework 4.7.1 or later and want to preserve the legacy accessibility behavior can opt in to the use of legacy accessibility features by explicitly setting this AppContext switch to ```true```. +- It opts out of the legacy accessibility behaviors by adding the following [AppContext switch](https://docs.microsoft.com/dotnet/framework/configure-apps/file-schema/runtime/appcontextswitchoverrides-element) to the `` section of the app.config file and setting it to `false`, as the following example shows. + + ```xml + + + + + + + + + + + ``` + +Applications that target the .NET Framework 4.7.1 or later and want to preserve the legacy accessibility behavior can opt in to the use of legacy accessibility features by explicitly setting this AppContext switch to `true`. For an overview of UI automation, see the [UI Automation Overview](https://docs.microsoft.com/dotnet/framework/ui-automation/ui-automation-overview). @@ -53,7 +53,8 @@ For an overview of UI automation, see the [UI Automation Overview](https://docs. Accessibility clients can take advantage of new WinForms accessibility functionality by using common, publicly described invocation patterns. These patterns are not WinForms-specific. For instance, accessibility clients can call the QueryInterface method on the IAccessible interface (MAAS) to obtain an IServiceProvider interface. If this interface is available, clients can use its QueryService method to request an IAccessibleEx interface. For more information, see [Using IAccessibleEx from a Client](https://msdn.microsoft.com/en-us/library/windows/desktop/dd561924(v=vs.85).aspx). Starting with the .NET Framework 4.7.1, IServiceProvider and [IAccessibleEx]( https://msdn.microsoft.com/en-us/library/windows/desktop/dd561898(v=vs.85).aspx) (where applicable) are available for WinForms accessibility objects. -The .NET Framework 4.7.1 adds support for the fillowing UI automation patterns and properties: +The .NET Framework 4.7.1 adds support for the following UI automation patterns and properties: + - The `T:System.Windows.Forms.ToolStripSplitButton` and `T:System.Windows.Forms.ComboBox` controls support the [Expand/Collapse pattern](https://docs.microsoft.com/dotnet/framework/ui-automation/implementing-the-ui-automation-expandcollapse-control-pattern). - The `T:System.Windows.Forms.ToolStripMenuItem` control has a [ControlType](https://docs.microsoft.com/dotnet/framework/ui-automation/ui-automation-support-for-the-menubar-control-type) property value . - The `T:System.Windows.Forms.ToolStripItem` control supports the [Name](https://docs.microsoft.com/dotnet/api/system.windows.automation.automationelement.nameproperty) property and [Expand/Collapse pattern](https://docs.microsoft.com/dotnet/framework/ui-automation/implementing-the-ui-automation-expandcollapse-control-pattern). From 339ff6ed071bacabe53acc295d16db970dfb191e Mon Sep 17 00:00:00 2001 From: Vivek Mishra Date: Tue, 17 Oct 2017 13:39:02 -0700 Subject: [PATCH 472/872] .NET 4.7.1 Publishing Changes (#510) * Updates for Known Issues * Updates for Known Issues * Updates for Known Issues * Added API diffss for 4.7.1 * Added updates to 4.7.1 change list * Updates for readme, changelist and known issues * Fixed as per comments from rpetrusha --- ...s Working After Prolonged Use of Popups.md | 4 +- ...eferenceException in ProcessInputReport.md | 4 +- ... AccessViolation in GetPenEventMultiple.md | 4 +- ...tion when displaying a checked MenuItem.md | 4 +- releases/net471/README.md | 11 +- releases/net471/dotnet471-api-changes.md | 461 ++++++++++++++++++ releases/net471/dotnet471-changes.md | 12 +- releases/net471/dotnet471-known-issues.md | 8 +- 8 files changed, 486 insertions(+), 22 deletions(-) create mode 100644 releases/net471/dotnet471-api-changes.md diff --git a/releases/net471/KnownIssues/479874-WPF Touch Stops Working After Prolonged Use of Popups.md b/releases/net471/KnownIssues/479874-WPF Touch Stops Working After Prolonged Use of Popups.md index 1d0e73424..808d03108 100644 --- a/releases/net471/KnownIssues/479874-WPF Touch Stops Working After Prolonged Use of Popups.md +++ b/releases/net471/KnownIssues/479874-WPF Touch Stops Working After Prolonged Use of Popups.md @@ -7,6 +7,4 @@ On a touch or stylus-enabled machine, WPF applications may see a loss of touch o A change to disposal of HwndSource in .NET 4.7 caused Popups to not correctly cleanup touch resources. This eventually can lead to loss of touch/stylus interaction. ### Resolution -The fix for this is expected in future servicing update for Windows 10. - -### More information \ No newline at end of file +This issue is fixed for all supported OS platforms prior to Windows 10 Fall Creators Update. The fix for Windows 10 Fall Creators Update is expected in a future servicing update. \ No newline at end of file diff --git a/releases/net471/KnownIssues/481090-WPF Touch generates NullReferenceException in ProcessInputReport.md b/releases/net471/KnownIssues/481090-WPF Touch generates NullReferenceException in ProcessInputReport.md index 96145f204..ea53d001e 100644 --- a/releases/net471/KnownIssues/481090-WPF Touch generates NullReferenceException in ProcessInputReport.md +++ b/releases/net471/KnownIssues/481090-WPF Touch generates NullReferenceException in ProcessInputReport.md @@ -7,6 +7,4 @@ WPF throws a NullReferenceException in WispLogic.ProcessInputReport and the appl In WPF applications running on touch or stylus enabled machines, specific hardware and timing issues can cause touch messages to arrive without associated StylusDevices. When this occurs WPF tries to access this null StylusDevice, causing the error. ### Resolution -The fix for this is expected in future servicing update for Windows 10. - -### More information \ No newline at end of file +This issue is fixed for all supported OS platforms prior to Windows 10 Fall Creators Update. The fix for Windows 10 Fall Creators Update is expected in a future servicing update. \ No newline at end of file diff --git a/releases/net471/KnownIssues/489937-WPF Touch and Stylus AccessViolation in GetPenEventMultiple.md b/releases/net471/KnownIssues/489937-WPF Touch and Stylus AccessViolation in GetPenEventMultiple.md index f1c26b73d..9696123b1 100644 --- a/releases/net471/KnownIssues/489937-WPF Touch and Stylus AccessViolation in GetPenEventMultiple.md +++ b/releases/net471/KnownIssues/489937-WPF Touch and Stylus AccessViolation in GetPenEventMultiple.md @@ -7,6 +7,4 @@ On a touch or stylus-enabled machine, WPF applications may sometimes corrupt mem This is due to the release of a COM object that is later used in the WPF touch stack. ### Resolution -The fix for this is expected in future servicing update for Windows 10. - -### More information \ No newline at end of file +This issue is fixed for all supported OS platforms prior to Windows 10 Fall Creators Update. The fix for Windows 10 Fall Creators Update is expected in a future servicing update. \ No newline at end of file diff --git a/releases/net471/KnownIssues/493108-WPF InvalidCastException when displaying a checked MenuItem.md b/releases/net471/KnownIssues/493108-WPF InvalidCastException when displaying a checked MenuItem.md index 77cf47471..2d9995eda 100644 --- a/releases/net471/KnownIssues/493108-WPF InvalidCastException when displaying a checked MenuItem.md +++ b/releases/net471/KnownIssues/493108-WPF InvalidCastException when displaying a checked MenuItem.md @@ -30,6 +30,4 @@ the reference resolves to the ribbon library's resource. This effectively sets of Path.Data to an object of type Style. The next measure pass then encounters the exception. ### Resolution -The fix for this is expected in a future servicing update for Windows 10. - -### More information +This issue is fixed for all supported OS platforms prior to Windows 10 Fall Creators Update. The fix for Windows 10 Fall Creators Update is expected in a future servicing update. diff --git a/releases/net471/README.md b/releases/net471/README.md index 0d963a460..8ed6f45ae 100644 --- a/releases/net471/README.md +++ b/releases/net471/README.md @@ -1,12 +1,13 @@ # .NET Framework 4.7.1 Release Notes -> These release notes are current for .NET Framework 4.7.1 build 2539, released 2017-09-13. +You can learn about the changes made in the .NET Framework 4.7.1. -You can learn about the changes made in the .NET Framework 4.7.1, as of build 2539. - -- [Download](https://github.com/Microsoft/dotnet-framework-earlyaccess) -- [Announcement blog post](https://blogs.msdn.microsoft.com/dotnet/2017/08/07/welcome-to-the-net-framework-4-7-1-early-access/) +- [Download](http://go.microsoft.com/fwlink/?LinkId=852095) +- [.NET Framework 4.7.1 Announcement blog post](http://go.microsoft.com/fwlink/?LinkId=852091) - [Release notes](dotnet471-changes.md) +- [Application compatibility](http://go.microsoft.com/fwlink/?LinkId=852106) +- [API changes](dotnet471-api-changes.md) +- [Reference Source](http://go.microsoft.com/fwlink/?LinkId=852103) - [Known issues](dotnet471-known-issues.md) ## Release Notes by Product Area diff --git a/releases/net471/dotnet471-api-changes.md b/releases/net471/dotnet471-api-changes.md new file mode 100644 index 000000000..e86640074 --- /dev/null +++ b/releases/net471/dotnet471-api-changes.md @@ -0,0 +1,461 @@ +```diff + namespace System { ++ public static class StringNormalizationExtensions { ++ public static bool IsNormalized(this string value); ++ public static bool IsNormalized(this string value, NormalizationForm normalizationForm); ++ public static string Normalize(this string value); ++ public static string Normalize(this string value, NormalizationForm normalizationForm); ++ } +- public class Tuple : IComparable, IStructuralComparable, IStructuralEquatable, ITuple { ++ public class Tuple : IComparable, IStructuralComparable, IStructuralEquatable, ITuple, ITupleInternal { ++ object System.Runtime.CompilerServices.ITuple.this[int index] { get; } ++ int System.Runtime.CompilerServices.ITuple.Length { get; } + } +- public class Tuple : IComparable, IStructuralComparable, IStructuralEquatable, ITuple { ++ public class Tuple : IComparable, IStructuralComparable, IStructuralEquatable, ITuple, ITupleInternal { ++ object System.Runtime.CompilerServices.ITuple.this[int index] { get; } ++ int System.Runtime.CompilerServices.ITuple.Length { get; } + } +- public class Tuple : IComparable, IStructuralComparable, IStructuralEquatable, ITuple { ++ public class Tuple : IComparable, IStructuralComparable, IStructuralEquatable, ITuple, ITupleInternal { ++ object System.Runtime.CompilerServices.ITuple.this[int index] { get; } ++ int System.Runtime.CompilerServices.ITuple.Length { get; } + } +- public class Tuple : IComparable, IStructuralComparable, IStructuralEquatable, ITuple { ++ public class Tuple : IComparable, IStructuralComparable, IStructuralEquatable, ITuple, ITupleInternal { ++ object System.Runtime.CompilerServices.ITuple.this[int index] { get; } ++ int System.Runtime.CompilerServices.ITuple.Length { get; } + } +- public class Tuple : IComparable, IStructuralComparable, IStructuralEquatable, ITuple { ++ public class Tuple : IComparable, IStructuralComparable, IStructuralEquatable, ITuple, ITupleInternal { ++ object System.Runtime.CompilerServices.ITuple.this[int index] { get; } ++ int System.Runtime.CompilerServices.ITuple.Length { get; } + } +- public class Tuple : IComparable, IStructuralComparable, IStructuralEquatable, ITuple { ++ public class Tuple : IComparable, IStructuralComparable, IStructuralEquatable, ITuple, ITupleInternal { ++ object System.Runtime.CompilerServices.ITuple.this[int index] { get; } ++ int System.Runtime.CompilerServices.ITuple.Length { get; } + } +- public class Tuple : IComparable, IStructuralComparable, IStructuralEquatable, ITuple { ++ public class Tuple : IComparable, IStructuralComparable, IStructuralEquatable, ITuple, ITupleInternal { ++ object System.Runtime.CompilerServices.ITuple.this[int index] { get; } ++ int System.Runtime.CompilerServices.ITuple.Length { get; } + } +- public class Tuple : IComparable, IStructuralComparable, IStructuralEquatable, ITuple { ++ public class Tuple : IComparable, IStructuralComparable, IStructuralEquatable, ITuple, ITupleInternal { ++ object System.Runtime.CompilerServices.ITuple.this[int index] { get; } ++ int System.Runtime.CompilerServices.ITuple.Length { get; } + } +- [System.Runtime.InteropServices.StructLayoutAttribute(System.Runtime.InteropServices.LayoutKind.Sequential, Size=1)] +- public struct ValueTuple : IComparable, IComparable, IEquatable, IStructuralComparable, IStructuralEquatable, ITupleInternal { ++ [System.Runtime.InteropServices.StructLayoutAttribute(System.Runtime.InteropServices.LayoutKind.Sequential, Size=1)] ++ public struct ValueTuple : IComparable, IComparable, IEquatable, IStructuralComparable, IStructuralEquatable, ITuple, IValueTupleInternal { ++ object System.Runtime.CompilerServices.ITuple.this[int index] { get; } ++ int System.Runtime.CompilerServices.ITuple.Length { get; } + } +- [System.Runtime.InteropServices.StructLayoutAttribute(System.Runtime.InteropServices.LayoutKind.Sequential)] +- public struct ValueTuple : IComparable, IComparable>, IEquatable>, IStructuralComparable, IStructuralEquatable, ITupleInternal { ++ [System.Runtime.InteropServices.StructLayoutAttribute(System.Runtime.InteropServices.LayoutKind.Sequential)] ++ public struct ValueTuple : IComparable, IComparable>, IEquatable>, IStructuralComparable, IStructuralEquatable, ITuple, IValueTupleInternal { ++ object System.Runtime.CompilerServices.ITuple.this[int index] { get; } ++ int System.Runtime.CompilerServices.ITuple.Length { get; } + } +- public struct ValueTuple : IComparable, IComparable>, IEquatable>, IStructuralComparable, IStructuralEquatable, ITupleInternal { ++ public struct ValueTuple : IComparable, IComparable>, IEquatable>, IStructuralComparable, IStructuralEquatable, ITuple, IValueTupleInternal { ++ object System.Runtime.CompilerServices.ITuple.this[int index] { get; } ++ int System.Runtime.CompilerServices.ITuple.Length { get; } + } +- public struct ValueTuple : IComparable, IComparable>, IEquatable>, IStructuralComparable, IStructuralEquatable, ITupleInternal { ++ public struct ValueTuple : IComparable, IComparable>, IEquatable>, IStructuralComparable, IStructuralEquatable, ITuple, IValueTupleInternal { ++ object System.Runtime.CompilerServices.ITuple.this[int index] { get; } ++ int System.Runtime.CompilerServices.ITuple.Length { get; } + } +- public struct ValueTuple : IComparable, IComparable>, IEquatable>, IStructuralComparable, IStructuralEquatable, ITupleInternal { ++ public struct ValueTuple : IComparable, IComparable>, IEquatable>, IStructuralComparable, IStructuralEquatable, ITuple, IValueTupleInternal { ++ object System.Runtime.CompilerServices.ITuple.this[int index] { get; } ++ int System.Runtime.CompilerServices.ITuple.Length { get; } + } +- public struct ValueTuple : IComparable, IComparable>, IEquatable>, IStructuralComparable, IStructuralEquatable, ITupleInternal { ++ public struct ValueTuple : IComparable, IComparable>, IEquatable>, IStructuralComparable, IStructuralEquatable, ITuple, IValueTupleInternal { ++ object System.Runtime.CompilerServices.ITuple.this[int index] { get; } ++ int System.Runtime.CompilerServices.ITuple.Length { get; } + } +- public struct ValueTuple : IComparable, IComparable>, IEquatable>, IStructuralComparable, IStructuralEquatable, ITupleInternal { ++ public struct ValueTuple : IComparable, IComparable>, IEquatable>, IStructuralComparable, IStructuralEquatable, ITuple, IValueTupleInternal { ++ object System.Runtime.CompilerServices.ITuple.this[int index] { get; } ++ int System.Runtime.CompilerServices.ITuple.Length { get; } + } +- public struct ValueTuple : IComparable, IComparable>, IEquatable>, IStructuralComparable, IStructuralEquatable, ITupleInternal { ++ public struct ValueTuple : IComparable, IComparable>, IEquatable>, IStructuralComparable, IStructuralEquatable, ITuple, IValueTupleInternal { ++ object System.Runtime.CompilerServices.ITuple.this[int index] { get; } ++ int System.Runtime.CompilerServices.ITuple.Length { get; } + } +- public struct ValueTuple : IComparable, IComparable>, IEquatable>, IStructuralComparable, IStructuralEquatable, ITupleInternal where TRest : struct { ++ public struct ValueTuple : IComparable, IComparable>, IEquatable>, IStructuralComparable, IStructuralEquatable, ITuple, IValueTupleInternal where TRest : struct { ++ object System.Runtime.CompilerServices.ITuple.this[int index] { get; } ++ int System.Runtime.CompilerServices.ITuple.Length { get; } + } + } + namespace System.Configuration { ++ public abstract class ConfigurationBuilder : ProviderBase { ++ protected ConfigurationBuilder(); ++ public virtual ConfigurationSection ProcessConfigurationSection(ConfigurationSection configSection); ++ public virtual XmlNode ProcessRawXml(XmlNode rawXml); ++ } ++ public class ConfigurationBuilderCollection : ProviderCollection { ++ public ConfigurationBuilderCollection(); ++ public new ConfigurationBuilder this[string name] { get; } ++ public override void Add(ProviderBase builder); ++ } ++ public class ConfigurationBuilderSettings : ConfigurationElement { ++ public ConfigurationBuilderSettings(); ++ public ProviderSettingsCollection Builders { get; } ++ protected internal override ConfigurationPropertyCollection Properties { get; } ++ } ++ public sealed class ConfigurationBuildersSection : ConfigurationSection { ++ public ConfigurationBuildersSection(); ++ public ProviderSettingsCollection Builders { get; } ++ public ConfigurationBuilder GetBuilderFromName(string builderName); ++ } + public sealed class SectionInformation { ++ public ConfigurationBuilder ConfigurationBuilder { get; } + } + } + namespace System.Configuration.Internal { +- public class DelegatingConfigHost : IInternalConfigHost { ++ public class DelegatingConfigHost : IInternalConfigHost, IInternalConfigurationBuilderHost { ++ protected IInternalConfigurationBuilderHost ConfigBuilderHost { get; } ++ public virtual ConfigurationSection ProcessConfigurationSection(ConfigurationSection configSection, ConfigurationBuilder builder); ++ public virtual XmlNode ProcessRawXml(XmlNode rawXml, ConfigurationBuilder builder); + } ++ public interface IInternalConfigurationBuilderHost { ++ ConfigurationSection ProcessConfigurationSection(ConfigurationSection configSection, ConfigurationBuilder builder); ++ XmlNode ProcessRawXml(XmlNode rawXml, ConfigurationBuilder builder); ++ } + } + namespace System.Data.Common { ++ public abstract class DbColumn { ++ protected DbColumn(); ++ public Nullable AllowDBNull { get; protected set; } ++ public string BaseCatalogName { get; protected set; } ++ public string BaseColumnName { get; protected set; } ++ public string BaseSchemaName { get; protected set; } ++ public string BaseServerName { get; protected set; } ++ public string BaseTableName { get; protected set; } ++ public string ColumnName { get; protected set; } ++ public Nullable ColumnOrdinal { get; protected set; } ++ public Nullable ColumnSize { get; protected set; } ++ public Type DataType { get; protected set; } ++ public string DataTypeName { get; protected set; } ++ public Nullable IsAliased { get; protected set; } ++ public Nullable IsAutoIncrement { get; protected set; } ++ public Nullable IsExpression { get; protected set; } ++ public Nullable IsHidden { get; protected set; } ++ public Nullable IsIdentity { get; protected set; } ++ public Nullable IsKey { get; protected set; } ++ public Nullable IsLong { get; protected set; } ++ public Nullable IsReadOnly { get; protected set; } ++ public Nullable IsUnique { get; protected set; } ++ public virtual object this[string property] { get; } ++ public Nullable NumericPrecision { get; protected set; } ++ public Nullable NumericScale { get; protected set; } ++ public string UdtAssemblyQualifiedName { get; protected set; } ++ } ++ public static class DbDataReaderExtensions { ++ public static bool CanGetColumnSchema(this DbDataReader reader); ++ public static ReadOnlyCollection GetColumnSchema(this DbDataReader reader); ++ } ++ public interface IDbColumnSchemaGenerator { ++ ReadOnlyCollection GetColumnSchema(); ++ } + } + namespace System.Diagnostics { ++ public static class StackFrameExtensions { ++ public static IntPtr GetNativeImageBase(this StackFrame stackFrame); ++ public static IntPtr GetNativeIP(this StackFrame stackFrame); ++ public static bool HasILOffset(this StackFrame stackFrame); ++ public static bool HasMethod(this StackFrame stackFrame); ++ public static bool HasNativeImage(this StackFrame stackFrame); ++ public static bool HasSource(this StackFrame stackFrame); ++ } + } + namespace System.Diagnostics.Tracing { ++ public class EventCounter { ++ public EventCounter(string name, EventSource eventSource); ++ public void WriteMetric(float value); ++ } + } + namespace System.Globalization { ++ public static class GlobalizationExtensions { ++ public static StringComparer GetStringComparer(this CompareInfo compareInfo, CompareOptions options); ++ } + } + namespace System.Linq { + public static class Enumerable { ++ public static IEnumerable Append(this IEnumerable source, TSource element); ++ public static IEnumerable Prepend(this IEnumerable source, TSource element); + } + } + namespace System.Linq.Expressions { + public sealed class Expression : LambdaExpression { ++ public new TDelegate Compile(bool preferInterpretation); + } + public abstract class LambdaExpression : Expression { ++ public Delegate Compile(bool preferInterpretation); + } + } + namespace System.Messaging { + public enum HashAlgorithm { ++ Sha256 = 32780, ++ Sha384 = 32781, ++ Sha512 = 32782, + } + } + namespace System.Net.Http { + public class HttpClientHandler : HttpMessageHandler { ++ public bool CheckCertificateRevocationList { get; set; } ++ public X509CertificateCollection ClientCertificates { get; } ++ public ICredentials DefaultProxyCredentials { get; set; } ++ public int MaxConnectionsPerServer { get; set; } ++ public int MaxResponseHeadersLength { get; set; } ++ public IDictionary Properties { get; } ++ public Func ServerCertificateCustomValidationCallback { get; set; } ++ public SslProtocols SslProtocols { get; set; } + } + } + namespace System.Net.Sockets { ++ [System.Runtime.InteropServices.StructLayoutAttribute(System.Runtime.InteropServices.LayoutKind.Sequential)] ++ public struct SocketReceiveFromResult { ++ public int ReceivedBytes; ++ public EndPoint RemoteEndPoint; ++ } ++ [System.Runtime.InteropServices.StructLayoutAttribute(System.Runtime.InteropServices.LayoutKind.Sequential)] ++ public struct SocketReceiveMessageFromResult { ++ public IPPacketInformation PacketInformation; ++ public int ReceivedBytes; ++ public EndPoint RemoteEndPoint; ++ public SocketFlags SocketFlags; ++ } ++ public static class SocketTaskExtensions { ++ public static Task AcceptAsync(this Socket socket); ++ public static Task AcceptAsync(this Socket socket, Socket acceptSocket); ++ public static Task ConnectAsync(this Socket socket, EndPoint remoteEP); ++ public static Task ConnectAsync(this Socket socket, IPAddress address, int port); ++ public static Task ConnectAsync(this Socket socket, IPAddress[] addresses, int port); ++ public static Task ConnectAsync(this Socket socket, string host, int port); ++ public static Task ReceiveAsync(this Socket socket, ArraySegment buffer, SocketFlags socketFlags); ++ public static Task ReceiveAsync(this Socket socket, IList> buffers, SocketFlags socketFlags); ++ public static Task ReceiveFromAsync(this Socket socket, ArraySegment buffer, SocketFlags socketFlags, EndPoint remoteEndPoint); ++ public static Task ReceiveMessageFromAsync(this Socket socket, ArraySegment buffer, SocketFlags socketFlags, EndPoint remoteEndPoint); ++ public static Task SendAsync(this Socket socket, ArraySegment buffer, SocketFlags socketFlags); ++ public static Task SendAsync(this Socket socket, IList> buffers, SocketFlags socketFlags); ++ public static Task SendToAsync(this Socket socket, ArraySegment buffer, SocketFlags socketFlags, EndPoint remoteEP); ++ } + } + namespace System.Runtime.CompilerServices { ++ public sealed class IsByRefLikeAttribute : Attribute { ++ public IsByRefLikeAttribute(); ++ } ++ public sealed class IsReadOnlyAttribute : Attribute { ++ public IsReadOnlyAttribute(); ++ } ++ public interface ITuple { ++ object this[int index] { get; } ++ int Length { get; } ++ } ++ public static class RuntimeFeature { ++ public const string PortablePdb = "PortablePdb"; ++ public static bool IsSupported(string feature); ++ } + } + namespace System.Runtime.InteropServices { ++ public enum Architecture { ++ Arm = 2, ++ Arm64 = 3, ++ X64 = 1, ++ X86 = 0, ++ } ++ [System.Runtime.InteropServices.StructLayoutAttribute(System.Runtime.InteropServices.LayoutKind.Sequential)] ++ public struct OSPlatform : IEquatable { ++ public static OSPlatform Linux { get; } ++ public static OSPlatform OSX { get; } ++ public static OSPlatform Windows { get; } ++ public static OSPlatform Create(string osPlatform); ++ public override bool Equals(object obj); ++ public bool Equals(OSPlatform other); ++ public override int GetHashCode(); ++ public static bool operator ==(OSPlatform left, OSPlatform right); ++ public static bool operator !=(OSPlatform left, OSPlatform right); ++ public override string ToString(); ++ } ++ public static class RuntimeInformation { ++ public static string FrameworkDescription { get; } ++ public static Architecture OSArchitecture { get; } ++ public static string OSDescription { get; } ++ public static Architecture ProcessArchitecture { get; } ++ public static bool IsOSPlatform(OSPlatform osPlatform); ++ } + } + namespace System.Runtime.Serialization { ++ public static class DataContractSerializerExtensions { ++ public static ISerializationSurrogateProvider GetSerializationSurrogateProvider(this DataContractSerializer serializer); ++ public static void SetSerializationSurrogateProvider(this DataContractSerializer serializer, ISerializationSurrogateProvider provider); ++ } ++ public interface ISerializationSurrogateProvider { ++ object GetDeserializedObject(object obj, Type targetType); ++ object GetObjectToSerialize(object obj, Type targetType); ++ Type GetSurrogateType(Type type); ++ } + } + namespace System.Security { ++ public static class SecureStringMarshal { ++ public static IntPtr SecureStringToCoTaskMemAnsi(SecureString s); ++ public static IntPtr SecureStringToCoTaskMemUnicode(SecureString s); ++ public static IntPtr SecureStringToGlobalAllocAnsi(SecureString s); ++ public static IntPtr SecureStringToGlobalAllocUnicode(SecureString s); ++ } + } + namespace System.Security.Cryptography { ++ public sealed class IncrementalHash : IDisposable { ++ public HashAlgorithmName AlgorithmName { get; } ++ public void AppendData(byte[] data); ++ public void AppendData(byte[] data, int offset, int count); ++ public static IncrementalHash CreateHash(HashAlgorithmName hashAlgorithm); ++ public static IncrementalHash CreateHMAC(HashAlgorithmName hashAlgorithm, byte[] key); ++ public void Dispose(); ++ public byte[] GetHashAndReset(); ++ } + } + namespace System.ServiceModel.Channels { + public class NamedPipeTransportBindingElement : ConnectionOrientedTransportBindingElement { ++ public Collection AllowedSecurityIdentifiers { get; } + } + } + namespace System.Text.RegularExpressions { + public class Regex : ISerializable { ++ protected IDictionary CapNames { get; set; } ++ protected IDictionary Caps { get; set; } + } + } + namespace System.Threading { ++ public sealed class PreAllocatedOverlapped : IDeferredDisposable, IDisposable { ++ public PreAllocatedOverlapped(IOCompletionCallback callback, object state, object pinData); ++ public void Dispose(); ++ } ++ public sealed class ThreadPoolBoundHandle : IDisposable { ++ public SafeHandle Handle { get; } ++ public unsafe NativeOverlapped* AllocateNativeOverlapped(IOCompletionCallback callback, object state, object pinData); ++ public unsafe NativeOverlapped* AllocateNativeOverlapped(PreAllocatedOverlapped preAllocated); ++ public static ThreadPoolBoundHandle BindHandle(SafeHandle handle); ++ public void Dispose(); ++ public unsafe void FreeNativeOverlapped(NativeOverlapped* overlapped); ++ public unsafe static object GetNativeOverlappedState(NativeOverlapped* overlapped); ++ } + } + namespace System.Web { + public class HttpApplication : IComponent, IDisposable, IHttpAsyncHandler, IHttpHandler, IRequestCompletedNotifier, ISyncContext { ++ public void OnExecuteRequestStep(Action callback); + } + public sealed class HttpCookie { ++ public static bool TryParse(string input, out HttpCookie result); + } + } + namespace System.Web.Configuration { + public enum FormsAuthPasswordFormat { ++ SHA256 = 3, ++ SHA384 = 4, ++ SHA512 = 5, + } + } + namespace System.Windows { + public static class BaseCompatibilityPreferences { ++ public enum HandleDispatcherRequestProcessingFailureOptions { ++ Continue = 0, ++ Reset = 2, ++ Throw = 1, ++ } ++ public static BaseCompatibilityPreferences.HandleDispatcherRequestProcessingFailureOptions HandleDispatcherRequestProcessingFailure { get; set; } + } + public static class DependencyPropertyHelper { ++ public static bool IsTemplatedValueDynamic(DependencyObject elementInTemplate, DependencyProperty dependencyProperty); + } + public class ResourceDictionary : ICollection, IDictionary, IEnumerable, INameScope, ISupportInitialize, IUriContext { ++ public bool InvalidatesImplicitDataTemplateResources { get; set; } + } + } + namespace System.Windows.Automation { + public static class AutomationElementIdentifiers { ++ public static readonly AutomationEvent LiveRegionChangedEvent; ++ public static readonly AutomationProperty LiveSettingProperty; + } ++ public enum AutomationLiveSetting { ++ Assertive = 2, ++ Off = 0, ++ Polite = 1, ++ } + public static class AutomationProperties { ++ public static readonly DependencyProperty LiveSettingProperty; ++ public static AutomationLiveSetting GetLiveSetting(DependencyObject element); ++ public static void SetLiveSetting(DependencyObject element, AutomationLiveSetting value); + } + } + namespace System.Windows.Automation.Peers { + public enum AutomationEvents { ++ LiveRegionChanged = 18, + } + public abstract class AutomationPeer : DispatcherObject { ++ public AutomationLiveSetting GetLiveSetting(); ++ protected virtual AutomationLiveSetting GetLiveSettingCore(); + } + public class ContentElementAutomationPeer : AutomationPeer { ++ protected override AutomationLiveSetting GetLiveSettingCore(); + } + public class ExpanderAutomationPeer : FrameworkElementAutomationPeer, IExpandCollapseProvider { ++ protected override List GetChildrenCore(); ++ protected override bool HasKeyboardFocusCore(); + } + public abstract class ItemAutomationPeer : AutomationPeer, IVirtualizedItemProvider { ++ protected override AutomationLiveSetting GetLiveSettingCore(); + } + public class UIElement3DAutomationPeer : AutomationPeer { ++ protected override AutomationLiveSetting GetLiveSettingCore(); + } + public class UIElementAutomationPeer : AutomationPeer { ++ protected override AutomationLiveSetting GetLiveSettingCore(); + } + } + namespace System.Windows.Controls { + public class Expander : HeaderedContentControl { ++ public override void OnApplyTemplate(); + } + } + namespace System.Windows.Diagnostics { + public static class VisualDiagnostics { ++ public static void DisableVisualTreeChanged(); ++ public static void EnableVisualTreeChanged(); + } + } + namespace System.Windows.Forms { + public class DomainUpDown : UpDownBase { + public class DomainUpDownAccessibleObject : Control.ControlAccessibleObject { ++ public override string Name { get; set; } + } + } + public class MonthCalendar : Control { ++ protected override AccessibleObject CreateAccessibilityInstance(); + } + public class ToolStripDropDownButton : ToolStripDropDownItem { ++ protected override AccessibleObject CreateAccessibilityInstance(); + } + } + namespace System.Xml.XmlConfiguration { + public sealed class XmlReaderSection : ConfigurationSection { ++ public string CollapseWhiteSpaceIntoEmptyStringString { get; set; } + } + } + namespace System.Xml.XPath { ++ public static class XDocumentExtensions { ++ public static IXPathNavigable ToXPathNavigable(this XNode node); ++ } + } +``` diff --git a/releases/net471/dotnet471-changes.md b/releases/net471/dotnet471-changes.md index 2902190f0..f28058c59 100644 --- a/releases/net471/dotnet471-changes.md +++ b/releases/net471/dotnet471-changes.md @@ -1,9 +1,5 @@ # .NET Framework 4.7.1 Release Notes -> These release notes are current for .NET Framework 4.7.1 build 2539, released 2017-09-13. - -You can learn about the changes made in the .NET Framework 4.7.1, as of build 2539. - .NET Framework release notes describe product improvements grouped by product area. Each change includes a Microsoft-internal VSTS bug ID, the primary binary that was updated and whether the change was a bug or a feature. ## ASP.NET @@ -45,6 +41,7 @@ You can learn about the changes made in the .NET Framework 4.7.1, as of build 25 * Added an attribute System.Runtime.CompilerServices.IsRefLikeAttribute [429642, mscorlib.dll, Feature] * Enabled interop between StorageFile / StorageFolder and .NET types for filesystem access [433898, mscorlib.dll, Feature] * System.Runtime.CompilerServices.RuntimeFeature.IsSupported allows to check whether the runtime supports displaying source line information for stack frames in assemblies built with portable symbols (PDBs). This is common for libraries that are built targeting .Net standard. [436315, mscorlib.dll, Feature] +* During the .NET Standard 2.0 work a type was missed because of a mismatch between the contracts we have in the full .NET Framework and the ones we shipped as part of .NET Standard 1.*. [468256, System.Net.NetworkInformation.dll, Bug] ## CLR @@ -71,6 +68,7 @@ You can learn about the changes made in the .NET Framework 4.7.1, as of build 25 * Fixed infinite loop in the jit which happens in certain cases where cgt.un is used to implement a null check. [453201, clrjit.dll, Bug] * Fixed a silent bad codegen problem in JIT that results in incorrect results from XslCompiledTransform. [461649, clrjit.dll, Bug] * Fixed potential crash during CLR shutdown [437163, clr.dll, Bug] +* Fixed a codegen bug in the code that deals with intrinsics implemented by user calls. [499714, clrjit.dll, Bug] ## Compiler and Managed Languages @@ -139,6 +137,8 @@ You can learn about the changes made in the .NET Framework 4.7.1, as of build 25 ``` +* Fixed an issue where screen readers would consider the arrows in the workflow designer navigation breadcrumbs as part of the list. [408282, System.Activities.Presentation.dll, Bug] +* Fixed an issue where screen readers would read non-descriptive names of edit boxes in the workflow designer properties window. [459631, System.Activities.Presentation.dll, Bug] ## WPF @@ -172,3 +172,7 @@ You can learn about the changes made in the .NET Framework 4.7.1, as of build 25 * Added ability to tell whether a property value inside a template is a dynamic resource reference. [406807, PresentationFramework.dll, Feature] * Provided source info for elements in template created by XamlReader.Load [406808, PresentationFramework.dll, Feature] * Enabled VisualTree notifications for debugging [406811, PresentationFramework.dll, Feature] +* A WPF app that implements an event handler for the Selector.SelectionChanged event should see the new values for the SelectedIndex, SelectedItem and SelectedValue properties. This worked correctly in all cases except for one: when the selection change was caused by changing SelectedValue and the handler queried the SelectedValue property, it saw the old value. This has been fixed. [96884, PresentationFramework,dll, Bug] +* A WPF app with an event handler for the TabControl.SelectionChanged sees the wrong (old) value for TabControl.SelectedContent. Also, if the selection change occurs while keyboard focus is in the content area, the focus should remain in the content area (provided the new selected content has a focusable element). This has been fixed. [208019, PresentationFramework,dll, Bug] +* Fixed an issue for touch or stylus-enabled machines, where repeated use of popups in WPF applications can cause loss of touch and stylus support. [479874, PresentationCore.dll, Bug] +* Fixed an issue for touch or stylus-enabled machines, where WPF applications may throw a NullReferenceException in WispLogic.ProcessInputReport. [481090, PresentationCore.dll, Bug] diff --git a/releases/net471/dotnet471-known-issues.md b/releases/net471/dotnet471-known-issues.md index 3afe4a740..4fd16ff8b 100644 --- a/releases/net471/dotnet471-known-issues.md +++ b/releases/net471/dotnet471-known-issues.md @@ -1,4 +1,10 @@ .NET Framework 4.7.1 Known Issues ================================= + +This document lists the known issues that you may experience after you install the Microsoft .NET Framework 4.7.1. -There are no known issues as of build 2539. +## Product issues for the .NET Framework 4.7.1 +- [479874 - WPF Touch Stops Working After Rapid/Prolonged Use Of Popups](https://github.com/Microsoft/dotnet/blob/net471/releases/net471/KnownIssues/479874-WPF%20Touch%20Stops%20Working%20After%20Prolonged%20Use%20of%20Popups.md) +- [481090 - WPF Touch generates a NullReferenceException in WispLogic.ProcessInputReport](https://github.com/Microsoft/dotnet/blob/net471/releases/net471/KnownIssues/481090-WPF%20Touch%20generates%20NullReferenceException%20in%20ProcessInputReport.md) +- [489937 - WPF Touch/Stylus Generates AccessViolations and Heap Corruption in GetPenEventMultiple](https://github.com/Microsoft/dotnet/blob/net471/releases/net471/KnownIssues/489937-WPF%20Touch%20and%20Stylus%20AccessViolation%20in%20GetPenEventMultiple.md) +- [493108 - WPF InvalidCastException when displaying a checked MenuItem](https://github.com/Microsoft/dotnet/blob/net471/releases/net471/KnownIssues/493108-WPF%20InvalidCastException%20when%20displaying%20a%20checked%20MenuItem.md) From 0745983093568027ff931672d9db021e3e120b5b Mon Sep 17 00:00:00 2001 From: Rich Lander Date: Tue, 17 Oct 2017 14:13:24 -0700 Subject: [PATCH 473/872] Merge latest from net471 into master * Regenerated readme, made changes to build readme (#520) * Replaced asset IDs with xrefs (#521) * Replaced asset IDs with xrefs * Formatting changes * .NET 4.7.1 Publishing Changes (#510) * Updates for Known Issues * Updates for Known Issues * Updates for Known Issues * Added API diffss for 4.7.1 * Added updates to 4.7.1 change list * Updates for readme, changelist and known issues * Fixed as per comments from rpetrusha --- .../ASPNET-accessibility-improvement.md | 2 +- Documentation/compatibility/README.md | 12 +- ...g-not-usable-in-Partial-Trust-scenarios.md | 2 +- ...ase-doesnt-propagate-OnStart-exceptions.md | 1 - .../winforms-accessibility-changes-471.md | 35 +- ...ager.DefaultHashAlgorithm-is-now-SHA256.md | 2 +- .../wpf-accessibility-improvements.MD | 2 +- ...s Working After Prolonged Use of Popups.md | 4 +- ...eferenceException in ProcessInputReport.md | 4 +- ... AccessViolation in GetPenEventMultiple.md | 4 +- ...tion when displaying a checked MenuItem.md | 4 +- releases/net471/README.md | 11 +- releases/net471/dotnet471-api-changes.md | 461 ++++++++++++++++++ releases/net471/dotnet471-changes.md | 12 +- releases/net471/dotnet471-known-issues.md | 8 +- 15 files changed, 518 insertions(+), 46 deletions(-) create mode 100644 releases/net471/dotnet471-api-changes.md diff --git a/Documentation/compatibility/ASPNET-accessibility-improvement.md b/Documentation/compatibility/ASPNET-accessibility-improvement.md index 13d1317e5..33c60eb3b 100644 --- a/Documentation/compatibility/ASPNET-accessibility-improvement.md +++ b/Documentation/compatibility/ASPNET-accessibility-improvement.md @@ -1,4 +1,4 @@ -## ASP.NET Accessibility Improvement in .NET 4.7.1 +## ASP.NET Accessibility Improvements in .NET 4.7.1 ### Scope Minor diff --git a/Documentation/compatibility/README.md b/Documentation/compatibility/README.md index 734c53cbf..4d7fefc5a 100644 --- a/Documentation/compatibility/README.md +++ b/Documentation/compatibility/README.md @@ -16,20 +16,28 @@ Please help us improve the [.NET Framework Application Compatibility documents]( ## .NET Framework 4.7.1 - [Accessibility improvements in Windows Forms controls](winforms-accessibility-changes-471.md) -- [ASP.NET Accessibility Improvement in .NET 4.7.1](ASPNET Accessibility Improvement.md) -- [ASP.NET Accessibility Improvement in .NET 4.7.1](ASPNET-accessibility-improvement.md) +- [Accessibility improvements in Windows Workflow Foundation (WF) workflow designer](workflow-designer-accessibility.md) +- [Accessibility improvements in WPF](wpf-accessibility-improvements.MD) +- [ASP.NET Accessibility Improvements in .NET 4.7.1](ASPNET-accessibility-improvement.md) +- [Chained Popups with StaysOpen=False ](wpf-chained-popups-with-StaysOpen-false.md) - [Default SignedXML and SignedXMS algorithms changed to SHA256](Change-SignedXML-and-SignedCMS-default-algorithms-to-SHA256.md) +- [Selector SelectionChanged event and SelectedValue property](wpf-selector-selectionchanged-and-selectedvalue.md) - [SerialPort background thread exceptions](SerialPort-background-thread-exceptions.md) +- [ServiceBase doesn't propagate OnStart exceptions](ServiceBase-doesnt-propagate-OnStart-exceptions.md) +- [TabControl SelectionChanged event and SelectedContent property](wpf-tabcontrol-selectionchanged-and-selectedcontent.md) +- [The default hash algorithm for WPF PackageDigitalSignatureManager is now SHA256](wpf-PackageDigitalSignatureManager.DefaultHashAlgorithm-is-now-SHA256.md) - [WCF AddressHeaderCollection now throws an ArgumentException if an addressHeader element is null](WCF-AddressHeaderCollection-now-throws-an-ArgumentException-if-an-addressHeader-element-is-null.md) - [WCF MsmqSecureHashAlgorithm default value is now SHA256](WCF-MsmqSecureHashAlgorithm-default-value-is-now-SHA256.md) - [WCF PipeConnection.GetHashAlgorithm now uses SHA256](WCF-PipeConnection.GetHashAlgorithm-now-uses-SHA256.md) ## .NET Framework 4.7 +- [Crash in Selector when removing an item from a custom INCC collection](wpf-selector-crash-when-removing-item-from-custom-collection.md) - [CspParameters.ParentWindowHandle now expects HWND value](cspparameters_parentwindowhandle-now-expects-hwnd-value.md) - [Default value of ServicePointManager.SecurityProtocol is SecurityProtocolType.System.Default](servicepointmanager.securityprotocol-defaults-to-securityprotocoltype.systemdefault.md) - [Incorrect code generation when passing and comparing UInt16 values](incorrect-code-generation-when-passing-and-comparing-uint16-values.md) - [NullReferenceException in exception handling code from ImageSourceConverter.ConvertFrom](wpf-nullreferenceexception-in-exception-handling-code-from-imagesourceconverter_convertfrom.md) +- [Resizing a Grid can hang](wpf-hang-when-resizing-a-grid.md) - [Serialization of control characters with DataContractJsonSerializer is now compatible with ECMAScript V6 and V8](serialization-of-control-characters-with-datacontractjsonserializer-is-now-compatible-with-ecmascript-v6-and-v8.md) - [SslStream supports TLS Alerts](sslstream-support-for-tls-alerts.md) - [Throttle concurrent requests per session](throttle-concurrent-requests-per-session.md) diff --git a/Documentation/compatibility/RSACng-and-DSACng-not-usable-in-Partial-Trust-scenarios.md b/Documentation/compatibility/RSACng-and-DSACng-not-usable-in-Partial-Trust-scenarios.md index 135713b65..9f4979bf5 100644 --- a/Documentation/compatibility/RSACng-and-DSACng-not-usable-in-Partial-Trust-scenarios.md +++ b/Documentation/compatibility/RSACng-and-DSACng-not-usable-in-Partial-Trust-scenarios.md @@ -13,7 +13,7 @@ Edge NotPlanned ### Change Description -CngLightup (used in several higher-level crypto apis, such as `T:System.Security.Cryptography.Xml.EncryptedXml`) and `T:System.Security.Cryptography.RSACng` in some cases rely on full trust. These include P/Invokes without asserting `F:System.Security.Permissions.SecurityPermissionFlag.UnmanagedCode` permissions, and code paths where `T:System.Security.Cryptography.CngKey` has permission demands for `F:System.Security.Permissions.SecurityPermissionFlag.UnmanagedCode`. Starting with the .NET Framework 4.6.2, CngLightup was used to switch to `T:System.Security.Cryptography.RSACng` wherever possible. As a result, partial trust apps that successfully used `T:System.Security.Cryptography.Xml.EncryptedXml` began to fail and throw `T:System.Security.SecurityException` exceptions. +CngLightup (used in several higher-level crypto apis, such as ) and in some cases rely on full trust. These include P/Invokes without asserting permissions, and code paths where has permission demands for . Starting with the .NET Framework 4.6.2, CngLightup was used to switch to wherever possible. As a result, partial trust apps that successfully used began to fail and throw exceptions. This change adds the required asserts so that all functions using CngLightup have the required permissions. diff --git a/Documentation/compatibility/ServiceBase-doesnt-propagate-OnStart-exceptions.md b/Documentation/compatibility/ServiceBase-doesnt-propagate-OnStart-exceptions.md index 16a391e81..90dadd9b2 100644 --- a/Documentation/compatibility/ServiceBase-doesnt-propagate-OnStart-exceptions.md +++ b/Documentation/compatibility/ServiceBase-doesnt-propagate-OnStart-exceptions.md @@ -5,7 +5,6 @@ Minor ### Version Introduced - 4.7.1 ### Source Analyzer Status diff --git a/Documentation/compatibility/winforms-accessibility-changes-471.md b/Documentation/compatibility/winforms-accessibility-changes-471.md index f434514c5..7af4cd210 100644 --- a/Documentation/compatibility/winforms-accessibility-changes-471.md +++ b/Documentation/compatibility/winforms-accessibility-changes-471.md @@ -30,22 +30,22 @@ In order for the application to benefit from these changes, it must run on the . - It is recompiled to target the .NET Framework 4.7.1. These accessibility changes are enabled by default on Windows Forms applications that target the .NET Framework 4.7.1 or later. -- It opts out of the legacy accessibility behaviors by adding the following [AppContext Switch](https://docs.microsoft.com/dotnet/framework/configure-apps/file-schema/runtime/appcontextswitchoverrides-element) to the `` section of the app.config file and setting it to `false`, as the following example shows. - -```xml - - - - - - - - - - -``` - -Applications that target the .NET Framework 4.7.1 or later and want to preserve the legacy accessibility behavior can opt in to the use of legacy accessibility features by explicitly setting this AppContext switch to ```true```. +- It opts out of the legacy accessibility behaviors by adding the following [AppContext switch](https://docs.microsoft.com/dotnet/framework/configure-apps/file-schema/runtime/appcontextswitchoverrides-element) to the `` section of the app.config file and setting it to `false`, as the following example shows. + + ```xml + + + + + + + + + + + ``` + +Applications that target the .NET Framework 4.7.1 or later and want to preserve the legacy accessibility behavior can opt in to the use of legacy accessibility features by explicitly setting this AppContext switch to `true`. For an overview of UI automation, see the [UI Automation Overview](https://docs.microsoft.com/dotnet/framework/ui-automation/ui-automation-overview). @@ -53,7 +53,8 @@ For an overview of UI automation, see the [UI Automation Overview](https://docs. Accessibility clients can take advantage of new WinForms accessibility functionality by using common, publicly described invocation patterns. These patterns are not WinForms-specific. For instance, accessibility clients can call the QueryInterface method on the IAccessible interface (MAAS) to obtain an IServiceProvider interface. If this interface is available, clients can use its QueryService method to request an IAccessibleEx interface. For more information, see [Using IAccessibleEx from a Client](https://msdn.microsoft.com/en-us/library/windows/desktop/dd561924(v=vs.85).aspx). Starting with the .NET Framework 4.7.1, IServiceProvider and [IAccessibleEx]( https://msdn.microsoft.com/en-us/library/windows/desktop/dd561898(v=vs.85).aspx) (where applicable) are available for WinForms accessibility objects. -The .NET Framework 4.7.1 adds support for the fillowing UI automation patterns and properties: +The .NET Framework 4.7.1 adds support for the following UI automation patterns and properties: + - The `T:System.Windows.Forms.ToolStripSplitButton` and `T:System.Windows.Forms.ComboBox` controls support the [Expand/Collapse pattern](https://docs.microsoft.com/dotnet/framework/ui-automation/implementing-the-ui-automation-expandcollapse-control-pattern). - The `T:System.Windows.Forms.ToolStripMenuItem` control has a [ControlType](https://docs.microsoft.com/dotnet/framework/ui-automation/ui-automation-support-for-the-menubar-control-type) property value . - The `T:System.Windows.Forms.ToolStripItem` control supports the [Name](https://docs.microsoft.com/dotnet/api/system.windows.automation.automationelement.nameproperty) property and [Expand/Collapse pattern](https://docs.microsoft.com/dotnet/framework/ui-automation/implementing-the-ui-automation-expandcollapse-control-pattern). diff --git a/Documentation/compatibility/wpf-PackageDigitalSignatureManager.DefaultHashAlgorithm-is-now-SHA256.md b/Documentation/compatibility/wpf-PackageDigitalSignatureManager.DefaultHashAlgorithm-is-now-SHA256.md index eb9638ab4..acbd99b0b 100644 --- a/Documentation/compatibility/wpf-PackageDigitalSignatureManager.DefaultHashAlgorithm-is-now-SHA256.md +++ b/Documentation/compatibility/wpf-PackageDigitalSignatureManager.DefaultHashAlgorithm-is-now-SHA256.md @@ -4,7 +4,7 @@ Edge ### Version Introduced -.NET 4.7.1 +4.7.1 ### Source Analyzer Status NotPlanned diff --git a/Documentation/compatibility/wpf-accessibility-improvements.MD b/Documentation/compatibility/wpf-accessibility-improvements.MD index 0d7d838fc..2b330a48b 100644 --- a/Documentation/compatibility/wpf-accessibility-improvements.MD +++ b/Documentation/compatibility/wpf-accessibility-improvements.MD @@ -1,4 +1,4 @@ -## 195: Accessibility improvements in WPF +## Accessibility improvements in WPF ### Scope Major diff --git a/releases/net471/KnownIssues/479874-WPF Touch Stops Working After Prolonged Use of Popups.md b/releases/net471/KnownIssues/479874-WPF Touch Stops Working After Prolonged Use of Popups.md index 1d0e73424..808d03108 100644 --- a/releases/net471/KnownIssues/479874-WPF Touch Stops Working After Prolonged Use of Popups.md +++ b/releases/net471/KnownIssues/479874-WPF Touch Stops Working After Prolonged Use of Popups.md @@ -7,6 +7,4 @@ On a touch or stylus-enabled machine, WPF applications may see a loss of touch o A change to disposal of HwndSource in .NET 4.7 caused Popups to not correctly cleanup touch resources. This eventually can lead to loss of touch/stylus interaction. ### Resolution -The fix for this is expected in future servicing update for Windows 10. - -### More information \ No newline at end of file +This issue is fixed for all supported OS platforms prior to Windows 10 Fall Creators Update. The fix for Windows 10 Fall Creators Update is expected in a future servicing update. \ No newline at end of file diff --git a/releases/net471/KnownIssues/481090-WPF Touch generates NullReferenceException in ProcessInputReport.md b/releases/net471/KnownIssues/481090-WPF Touch generates NullReferenceException in ProcessInputReport.md index 96145f204..ea53d001e 100644 --- a/releases/net471/KnownIssues/481090-WPF Touch generates NullReferenceException in ProcessInputReport.md +++ b/releases/net471/KnownIssues/481090-WPF Touch generates NullReferenceException in ProcessInputReport.md @@ -7,6 +7,4 @@ WPF throws a NullReferenceException in WispLogic.ProcessInputReport and the appl In WPF applications running on touch or stylus enabled machines, specific hardware and timing issues can cause touch messages to arrive without associated StylusDevices. When this occurs WPF tries to access this null StylusDevice, causing the error. ### Resolution -The fix for this is expected in future servicing update for Windows 10. - -### More information \ No newline at end of file +This issue is fixed for all supported OS platforms prior to Windows 10 Fall Creators Update. The fix for Windows 10 Fall Creators Update is expected in a future servicing update. \ No newline at end of file diff --git a/releases/net471/KnownIssues/489937-WPF Touch and Stylus AccessViolation in GetPenEventMultiple.md b/releases/net471/KnownIssues/489937-WPF Touch and Stylus AccessViolation in GetPenEventMultiple.md index f1c26b73d..9696123b1 100644 --- a/releases/net471/KnownIssues/489937-WPF Touch and Stylus AccessViolation in GetPenEventMultiple.md +++ b/releases/net471/KnownIssues/489937-WPF Touch and Stylus AccessViolation in GetPenEventMultiple.md @@ -7,6 +7,4 @@ On a touch or stylus-enabled machine, WPF applications may sometimes corrupt mem This is due to the release of a COM object that is later used in the WPF touch stack. ### Resolution -The fix for this is expected in future servicing update for Windows 10. - -### More information \ No newline at end of file +This issue is fixed for all supported OS platforms prior to Windows 10 Fall Creators Update. The fix for Windows 10 Fall Creators Update is expected in a future servicing update. \ No newline at end of file diff --git a/releases/net471/KnownIssues/493108-WPF InvalidCastException when displaying a checked MenuItem.md b/releases/net471/KnownIssues/493108-WPF InvalidCastException when displaying a checked MenuItem.md index 77cf47471..2d9995eda 100644 --- a/releases/net471/KnownIssues/493108-WPF InvalidCastException when displaying a checked MenuItem.md +++ b/releases/net471/KnownIssues/493108-WPF InvalidCastException when displaying a checked MenuItem.md @@ -30,6 +30,4 @@ the reference resolves to the ribbon library's resource. This effectively sets of Path.Data to an object of type Style. The next measure pass then encounters the exception. ### Resolution -The fix for this is expected in a future servicing update for Windows 10. - -### More information +This issue is fixed for all supported OS platforms prior to Windows 10 Fall Creators Update. The fix for Windows 10 Fall Creators Update is expected in a future servicing update. diff --git a/releases/net471/README.md b/releases/net471/README.md index 0d963a460..8ed6f45ae 100644 --- a/releases/net471/README.md +++ b/releases/net471/README.md @@ -1,12 +1,13 @@ # .NET Framework 4.7.1 Release Notes -> These release notes are current for .NET Framework 4.7.1 build 2539, released 2017-09-13. +You can learn about the changes made in the .NET Framework 4.7.1. -You can learn about the changes made in the .NET Framework 4.7.1, as of build 2539. - -- [Download](https://github.com/Microsoft/dotnet-framework-earlyaccess) -- [Announcement blog post](https://blogs.msdn.microsoft.com/dotnet/2017/08/07/welcome-to-the-net-framework-4-7-1-early-access/) +- [Download](http://go.microsoft.com/fwlink/?LinkId=852095) +- [.NET Framework 4.7.1 Announcement blog post](http://go.microsoft.com/fwlink/?LinkId=852091) - [Release notes](dotnet471-changes.md) +- [Application compatibility](http://go.microsoft.com/fwlink/?LinkId=852106) +- [API changes](dotnet471-api-changes.md) +- [Reference Source](http://go.microsoft.com/fwlink/?LinkId=852103) - [Known issues](dotnet471-known-issues.md) ## Release Notes by Product Area diff --git a/releases/net471/dotnet471-api-changes.md b/releases/net471/dotnet471-api-changes.md new file mode 100644 index 000000000..e86640074 --- /dev/null +++ b/releases/net471/dotnet471-api-changes.md @@ -0,0 +1,461 @@ +```diff + namespace System { ++ public static class StringNormalizationExtensions { ++ public static bool IsNormalized(this string value); ++ public static bool IsNormalized(this string value, NormalizationForm normalizationForm); ++ public static string Normalize(this string value); ++ public static string Normalize(this string value, NormalizationForm normalizationForm); ++ } +- public class Tuple : IComparable, IStructuralComparable, IStructuralEquatable, ITuple { ++ public class Tuple : IComparable, IStructuralComparable, IStructuralEquatable, ITuple, ITupleInternal { ++ object System.Runtime.CompilerServices.ITuple.this[int index] { get; } ++ int System.Runtime.CompilerServices.ITuple.Length { get; } + } +- public class Tuple : IComparable, IStructuralComparable, IStructuralEquatable, ITuple { ++ public class Tuple : IComparable, IStructuralComparable, IStructuralEquatable, ITuple, ITupleInternal { ++ object System.Runtime.CompilerServices.ITuple.this[int index] { get; } ++ int System.Runtime.CompilerServices.ITuple.Length { get; } + } +- public class Tuple : IComparable, IStructuralComparable, IStructuralEquatable, ITuple { ++ public class Tuple : IComparable, IStructuralComparable, IStructuralEquatable, ITuple, ITupleInternal { ++ object System.Runtime.CompilerServices.ITuple.this[int index] { get; } ++ int System.Runtime.CompilerServices.ITuple.Length { get; } + } +- public class Tuple : IComparable, IStructuralComparable, IStructuralEquatable, ITuple { ++ public class Tuple : IComparable, IStructuralComparable, IStructuralEquatable, ITuple, ITupleInternal { ++ object System.Runtime.CompilerServices.ITuple.this[int index] { get; } ++ int System.Runtime.CompilerServices.ITuple.Length { get; } + } +- public class Tuple : IComparable, IStructuralComparable, IStructuralEquatable, ITuple { ++ public class Tuple : IComparable, IStructuralComparable, IStructuralEquatable, ITuple, ITupleInternal { ++ object System.Runtime.CompilerServices.ITuple.this[int index] { get; } ++ int System.Runtime.CompilerServices.ITuple.Length { get; } + } +- public class Tuple : IComparable, IStructuralComparable, IStructuralEquatable, ITuple { ++ public class Tuple : IComparable, IStructuralComparable, IStructuralEquatable, ITuple, ITupleInternal { ++ object System.Runtime.CompilerServices.ITuple.this[int index] { get; } ++ int System.Runtime.CompilerServices.ITuple.Length { get; } + } +- public class Tuple : IComparable, IStructuralComparable, IStructuralEquatable, ITuple { ++ public class Tuple : IComparable, IStructuralComparable, IStructuralEquatable, ITuple, ITupleInternal { ++ object System.Runtime.CompilerServices.ITuple.this[int index] { get; } ++ int System.Runtime.CompilerServices.ITuple.Length { get; } + } +- public class Tuple : IComparable, IStructuralComparable, IStructuralEquatable, ITuple { ++ public class Tuple : IComparable, IStructuralComparable, IStructuralEquatable, ITuple, ITupleInternal { ++ object System.Runtime.CompilerServices.ITuple.this[int index] { get; } ++ int System.Runtime.CompilerServices.ITuple.Length { get; } + } +- [System.Runtime.InteropServices.StructLayoutAttribute(System.Runtime.InteropServices.LayoutKind.Sequential, Size=1)] +- public struct ValueTuple : IComparable, IComparable, IEquatable, IStructuralComparable, IStructuralEquatable, ITupleInternal { ++ [System.Runtime.InteropServices.StructLayoutAttribute(System.Runtime.InteropServices.LayoutKind.Sequential, Size=1)] ++ public struct ValueTuple : IComparable, IComparable, IEquatable, IStructuralComparable, IStructuralEquatable, ITuple, IValueTupleInternal { ++ object System.Runtime.CompilerServices.ITuple.this[int index] { get; } ++ int System.Runtime.CompilerServices.ITuple.Length { get; } + } +- [System.Runtime.InteropServices.StructLayoutAttribute(System.Runtime.InteropServices.LayoutKind.Sequential)] +- public struct ValueTuple : IComparable, IComparable>, IEquatable>, IStructuralComparable, IStructuralEquatable, ITupleInternal { ++ [System.Runtime.InteropServices.StructLayoutAttribute(System.Runtime.InteropServices.LayoutKind.Sequential)] ++ public struct ValueTuple : IComparable, IComparable>, IEquatable>, IStructuralComparable, IStructuralEquatable, ITuple, IValueTupleInternal { ++ object System.Runtime.CompilerServices.ITuple.this[int index] { get; } ++ int System.Runtime.CompilerServices.ITuple.Length { get; } + } +- public struct ValueTuple : IComparable, IComparable>, IEquatable>, IStructuralComparable, IStructuralEquatable, ITupleInternal { ++ public struct ValueTuple : IComparable, IComparable>, IEquatable>, IStructuralComparable, IStructuralEquatable, ITuple, IValueTupleInternal { ++ object System.Runtime.CompilerServices.ITuple.this[int index] { get; } ++ int System.Runtime.CompilerServices.ITuple.Length { get; } + } +- public struct ValueTuple : IComparable, IComparable>, IEquatable>, IStructuralComparable, IStructuralEquatable, ITupleInternal { ++ public struct ValueTuple : IComparable, IComparable>, IEquatable>, IStructuralComparable, IStructuralEquatable, ITuple, IValueTupleInternal { ++ object System.Runtime.CompilerServices.ITuple.this[int index] { get; } ++ int System.Runtime.CompilerServices.ITuple.Length { get; } + } +- public struct ValueTuple : IComparable, IComparable>, IEquatable>, IStructuralComparable, IStructuralEquatable, ITupleInternal { ++ public struct ValueTuple : IComparable, IComparable>, IEquatable>, IStructuralComparable, IStructuralEquatable, ITuple, IValueTupleInternal { ++ object System.Runtime.CompilerServices.ITuple.this[int index] { get; } ++ int System.Runtime.CompilerServices.ITuple.Length { get; } + } +- public struct ValueTuple : IComparable, IComparable>, IEquatable>, IStructuralComparable, IStructuralEquatable, ITupleInternal { ++ public struct ValueTuple : IComparable, IComparable>, IEquatable>, IStructuralComparable, IStructuralEquatable, ITuple, IValueTupleInternal { ++ object System.Runtime.CompilerServices.ITuple.this[int index] { get; } ++ int System.Runtime.CompilerServices.ITuple.Length { get; } + } +- public struct ValueTuple : IComparable, IComparable>, IEquatable>, IStructuralComparable, IStructuralEquatable, ITupleInternal { ++ public struct ValueTuple : IComparable, IComparable>, IEquatable>, IStructuralComparable, IStructuralEquatable, ITuple, IValueTupleInternal { ++ object System.Runtime.CompilerServices.ITuple.this[int index] { get; } ++ int System.Runtime.CompilerServices.ITuple.Length { get; } + } +- public struct ValueTuple : IComparable, IComparable>, IEquatable>, IStructuralComparable, IStructuralEquatable, ITupleInternal { ++ public struct ValueTuple : IComparable, IComparable>, IEquatable>, IStructuralComparable, IStructuralEquatable, ITuple, IValueTupleInternal { ++ object System.Runtime.CompilerServices.ITuple.this[int index] { get; } ++ int System.Runtime.CompilerServices.ITuple.Length { get; } + } +- public struct ValueTuple : IComparable, IComparable>, IEquatable>, IStructuralComparable, IStructuralEquatable, ITupleInternal where TRest : struct { ++ public struct ValueTuple : IComparable, IComparable>, IEquatable>, IStructuralComparable, IStructuralEquatable, ITuple, IValueTupleInternal where TRest : struct { ++ object System.Runtime.CompilerServices.ITuple.this[int index] { get; } ++ int System.Runtime.CompilerServices.ITuple.Length { get; } + } + } + namespace System.Configuration { ++ public abstract class ConfigurationBuilder : ProviderBase { ++ protected ConfigurationBuilder(); ++ public virtual ConfigurationSection ProcessConfigurationSection(ConfigurationSection configSection); ++ public virtual XmlNode ProcessRawXml(XmlNode rawXml); ++ } ++ public class ConfigurationBuilderCollection : ProviderCollection { ++ public ConfigurationBuilderCollection(); ++ public new ConfigurationBuilder this[string name] { get; } ++ public override void Add(ProviderBase builder); ++ } ++ public class ConfigurationBuilderSettings : ConfigurationElement { ++ public ConfigurationBuilderSettings(); ++ public ProviderSettingsCollection Builders { get; } ++ protected internal override ConfigurationPropertyCollection Properties { get; } ++ } ++ public sealed class ConfigurationBuildersSection : ConfigurationSection { ++ public ConfigurationBuildersSection(); ++ public ProviderSettingsCollection Builders { get; } ++ public ConfigurationBuilder GetBuilderFromName(string builderName); ++ } + public sealed class SectionInformation { ++ public ConfigurationBuilder ConfigurationBuilder { get; } + } + } + namespace System.Configuration.Internal { +- public class DelegatingConfigHost : IInternalConfigHost { ++ public class DelegatingConfigHost : IInternalConfigHost, IInternalConfigurationBuilderHost { ++ protected IInternalConfigurationBuilderHost ConfigBuilderHost { get; } ++ public virtual ConfigurationSection ProcessConfigurationSection(ConfigurationSection configSection, ConfigurationBuilder builder); ++ public virtual XmlNode ProcessRawXml(XmlNode rawXml, ConfigurationBuilder builder); + } ++ public interface IInternalConfigurationBuilderHost { ++ ConfigurationSection ProcessConfigurationSection(ConfigurationSection configSection, ConfigurationBuilder builder); ++ XmlNode ProcessRawXml(XmlNode rawXml, ConfigurationBuilder builder); ++ } + } + namespace System.Data.Common { ++ public abstract class DbColumn { ++ protected DbColumn(); ++ public Nullable AllowDBNull { get; protected set; } ++ public string BaseCatalogName { get; protected set; } ++ public string BaseColumnName { get; protected set; } ++ public string BaseSchemaName { get; protected set; } ++ public string BaseServerName { get; protected set; } ++ public string BaseTableName { get; protected set; } ++ public string ColumnName { get; protected set; } ++ public Nullable ColumnOrdinal { get; protected set; } ++ public Nullable ColumnSize { get; protected set; } ++ public Type DataType { get; protected set; } ++ public string DataTypeName { get; protected set; } ++ public Nullable IsAliased { get; protected set; } ++ public Nullable IsAutoIncrement { get; protected set; } ++ public Nullable IsExpression { get; protected set; } ++ public Nullable IsHidden { get; protected set; } ++ public Nullable IsIdentity { get; protected set; } ++ public Nullable IsKey { get; protected set; } ++ public Nullable IsLong { get; protected set; } ++ public Nullable IsReadOnly { get; protected set; } ++ public Nullable IsUnique { get; protected set; } ++ public virtual object this[string property] { get; } ++ public Nullable NumericPrecision { get; protected set; } ++ public Nullable NumericScale { get; protected set; } ++ public string UdtAssemblyQualifiedName { get; protected set; } ++ } ++ public static class DbDataReaderExtensions { ++ public static bool CanGetColumnSchema(this DbDataReader reader); ++ public static ReadOnlyCollection GetColumnSchema(this DbDataReader reader); ++ } ++ public interface IDbColumnSchemaGenerator { ++ ReadOnlyCollection GetColumnSchema(); ++ } + } + namespace System.Diagnostics { ++ public static class StackFrameExtensions { ++ public static IntPtr GetNativeImageBase(this StackFrame stackFrame); ++ public static IntPtr GetNativeIP(this StackFrame stackFrame); ++ public static bool HasILOffset(this StackFrame stackFrame); ++ public static bool HasMethod(this StackFrame stackFrame); ++ public static bool HasNativeImage(this StackFrame stackFrame); ++ public static bool HasSource(this StackFrame stackFrame); ++ } + } + namespace System.Diagnostics.Tracing { ++ public class EventCounter { ++ public EventCounter(string name, EventSource eventSource); ++ public void WriteMetric(float value); ++ } + } + namespace System.Globalization { ++ public static class GlobalizationExtensions { ++ public static StringComparer GetStringComparer(this CompareInfo compareInfo, CompareOptions options); ++ } + } + namespace System.Linq { + public static class Enumerable { ++ public static IEnumerable Append(this IEnumerable source, TSource element); ++ public static IEnumerable Prepend(this IEnumerable source, TSource element); + } + } + namespace System.Linq.Expressions { + public sealed class Expression : LambdaExpression { ++ public new TDelegate Compile(bool preferInterpretation); + } + public abstract class LambdaExpression : Expression { ++ public Delegate Compile(bool preferInterpretation); + } + } + namespace System.Messaging { + public enum HashAlgorithm { ++ Sha256 = 32780, ++ Sha384 = 32781, ++ Sha512 = 32782, + } + } + namespace System.Net.Http { + public class HttpClientHandler : HttpMessageHandler { ++ public bool CheckCertificateRevocationList { get; set; } ++ public X509CertificateCollection ClientCertificates { get; } ++ public ICredentials DefaultProxyCredentials { get; set; } ++ public int MaxConnectionsPerServer { get; set; } ++ public int MaxResponseHeadersLength { get; set; } ++ public IDictionary Properties { get; } ++ public Func ServerCertificateCustomValidationCallback { get; set; } ++ public SslProtocols SslProtocols { get; set; } + } + } + namespace System.Net.Sockets { ++ [System.Runtime.InteropServices.StructLayoutAttribute(System.Runtime.InteropServices.LayoutKind.Sequential)] ++ public struct SocketReceiveFromResult { ++ public int ReceivedBytes; ++ public EndPoint RemoteEndPoint; ++ } ++ [System.Runtime.InteropServices.StructLayoutAttribute(System.Runtime.InteropServices.LayoutKind.Sequential)] ++ public struct SocketReceiveMessageFromResult { ++ public IPPacketInformation PacketInformation; ++ public int ReceivedBytes; ++ public EndPoint RemoteEndPoint; ++ public SocketFlags SocketFlags; ++ } ++ public static class SocketTaskExtensions { ++ public static Task AcceptAsync(this Socket socket); ++ public static Task AcceptAsync(this Socket socket, Socket acceptSocket); ++ public static Task ConnectAsync(this Socket socket, EndPoint remoteEP); ++ public static Task ConnectAsync(this Socket socket, IPAddress address, int port); ++ public static Task ConnectAsync(this Socket socket, IPAddress[] addresses, int port); ++ public static Task ConnectAsync(this Socket socket, string host, int port); ++ public static Task ReceiveAsync(this Socket socket, ArraySegment buffer, SocketFlags socketFlags); ++ public static Task ReceiveAsync(this Socket socket, IList> buffers, SocketFlags socketFlags); ++ public static Task ReceiveFromAsync(this Socket socket, ArraySegment buffer, SocketFlags socketFlags, EndPoint remoteEndPoint); ++ public static Task ReceiveMessageFromAsync(this Socket socket, ArraySegment buffer, SocketFlags socketFlags, EndPoint remoteEndPoint); ++ public static Task SendAsync(this Socket socket, ArraySegment buffer, SocketFlags socketFlags); ++ public static Task SendAsync(this Socket socket, IList> buffers, SocketFlags socketFlags); ++ public static Task SendToAsync(this Socket socket, ArraySegment buffer, SocketFlags socketFlags, EndPoint remoteEP); ++ } + } + namespace System.Runtime.CompilerServices { ++ public sealed class IsByRefLikeAttribute : Attribute { ++ public IsByRefLikeAttribute(); ++ } ++ public sealed class IsReadOnlyAttribute : Attribute { ++ public IsReadOnlyAttribute(); ++ } ++ public interface ITuple { ++ object this[int index] { get; } ++ int Length { get; } ++ } ++ public static class RuntimeFeature { ++ public const string PortablePdb = "PortablePdb"; ++ public static bool IsSupported(string feature); ++ } + } + namespace System.Runtime.InteropServices { ++ public enum Architecture { ++ Arm = 2, ++ Arm64 = 3, ++ X64 = 1, ++ X86 = 0, ++ } ++ [System.Runtime.InteropServices.StructLayoutAttribute(System.Runtime.InteropServices.LayoutKind.Sequential)] ++ public struct OSPlatform : IEquatable { ++ public static OSPlatform Linux { get; } ++ public static OSPlatform OSX { get; } ++ public static OSPlatform Windows { get; } ++ public static OSPlatform Create(string osPlatform); ++ public override bool Equals(object obj); ++ public bool Equals(OSPlatform other); ++ public override int GetHashCode(); ++ public static bool operator ==(OSPlatform left, OSPlatform right); ++ public static bool operator !=(OSPlatform left, OSPlatform right); ++ public override string ToString(); ++ } ++ public static class RuntimeInformation { ++ public static string FrameworkDescription { get; } ++ public static Architecture OSArchitecture { get; } ++ public static string OSDescription { get; } ++ public static Architecture ProcessArchitecture { get; } ++ public static bool IsOSPlatform(OSPlatform osPlatform); ++ } + } + namespace System.Runtime.Serialization { ++ public static class DataContractSerializerExtensions { ++ public static ISerializationSurrogateProvider GetSerializationSurrogateProvider(this DataContractSerializer serializer); ++ public static void SetSerializationSurrogateProvider(this DataContractSerializer serializer, ISerializationSurrogateProvider provider); ++ } ++ public interface ISerializationSurrogateProvider { ++ object GetDeserializedObject(object obj, Type targetType); ++ object GetObjectToSerialize(object obj, Type targetType); ++ Type GetSurrogateType(Type type); ++ } + } + namespace System.Security { ++ public static class SecureStringMarshal { ++ public static IntPtr SecureStringToCoTaskMemAnsi(SecureString s); ++ public static IntPtr SecureStringToCoTaskMemUnicode(SecureString s); ++ public static IntPtr SecureStringToGlobalAllocAnsi(SecureString s); ++ public static IntPtr SecureStringToGlobalAllocUnicode(SecureString s); ++ } + } + namespace System.Security.Cryptography { ++ public sealed class IncrementalHash : IDisposable { ++ public HashAlgorithmName AlgorithmName { get; } ++ public void AppendData(byte[] data); ++ public void AppendData(byte[] data, int offset, int count); ++ public static IncrementalHash CreateHash(HashAlgorithmName hashAlgorithm); ++ public static IncrementalHash CreateHMAC(HashAlgorithmName hashAlgorithm, byte[] key); ++ public void Dispose(); ++ public byte[] GetHashAndReset(); ++ } + } + namespace System.ServiceModel.Channels { + public class NamedPipeTransportBindingElement : ConnectionOrientedTransportBindingElement { ++ public Collection AllowedSecurityIdentifiers { get; } + } + } + namespace System.Text.RegularExpressions { + public class Regex : ISerializable { ++ protected IDictionary CapNames { get; set; } ++ protected IDictionary Caps { get; set; } + } + } + namespace System.Threading { ++ public sealed class PreAllocatedOverlapped : IDeferredDisposable, IDisposable { ++ public PreAllocatedOverlapped(IOCompletionCallback callback, object state, object pinData); ++ public void Dispose(); ++ } ++ public sealed class ThreadPoolBoundHandle : IDisposable { ++ public SafeHandle Handle { get; } ++ public unsafe NativeOverlapped* AllocateNativeOverlapped(IOCompletionCallback callback, object state, object pinData); ++ public unsafe NativeOverlapped* AllocateNativeOverlapped(PreAllocatedOverlapped preAllocated); ++ public static ThreadPoolBoundHandle BindHandle(SafeHandle handle); ++ public void Dispose(); ++ public unsafe void FreeNativeOverlapped(NativeOverlapped* overlapped); ++ public unsafe static object GetNativeOverlappedState(NativeOverlapped* overlapped); ++ } + } + namespace System.Web { + public class HttpApplication : IComponent, IDisposable, IHttpAsyncHandler, IHttpHandler, IRequestCompletedNotifier, ISyncContext { ++ public void OnExecuteRequestStep(Action callback); + } + public sealed class HttpCookie { ++ public static bool TryParse(string input, out HttpCookie result); + } + } + namespace System.Web.Configuration { + public enum FormsAuthPasswordFormat { ++ SHA256 = 3, ++ SHA384 = 4, ++ SHA512 = 5, + } + } + namespace System.Windows { + public static class BaseCompatibilityPreferences { ++ public enum HandleDispatcherRequestProcessingFailureOptions { ++ Continue = 0, ++ Reset = 2, ++ Throw = 1, ++ } ++ public static BaseCompatibilityPreferences.HandleDispatcherRequestProcessingFailureOptions HandleDispatcherRequestProcessingFailure { get; set; } + } + public static class DependencyPropertyHelper { ++ public static bool IsTemplatedValueDynamic(DependencyObject elementInTemplate, DependencyProperty dependencyProperty); + } + public class ResourceDictionary : ICollection, IDictionary, IEnumerable, INameScope, ISupportInitialize, IUriContext { ++ public bool InvalidatesImplicitDataTemplateResources { get; set; } + } + } + namespace System.Windows.Automation { + public static class AutomationElementIdentifiers { ++ public static readonly AutomationEvent LiveRegionChangedEvent; ++ public static readonly AutomationProperty LiveSettingProperty; + } ++ public enum AutomationLiveSetting { ++ Assertive = 2, ++ Off = 0, ++ Polite = 1, ++ } + public static class AutomationProperties { ++ public static readonly DependencyProperty LiveSettingProperty; ++ public static AutomationLiveSetting GetLiveSetting(DependencyObject element); ++ public static void SetLiveSetting(DependencyObject element, AutomationLiveSetting value); + } + } + namespace System.Windows.Automation.Peers { + public enum AutomationEvents { ++ LiveRegionChanged = 18, + } + public abstract class AutomationPeer : DispatcherObject { ++ public AutomationLiveSetting GetLiveSetting(); ++ protected virtual AutomationLiveSetting GetLiveSettingCore(); + } + public class ContentElementAutomationPeer : AutomationPeer { ++ protected override AutomationLiveSetting GetLiveSettingCore(); + } + public class ExpanderAutomationPeer : FrameworkElementAutomationPeer, IExpandCollapseProvider { ++ protected override List GetChildrenCore(); ++ protected override bool HasKeyboardFocusCore(); + } + public abstract class ItemAutomationPeer : AutomationPeer, IVirtualizedItemProvider { ++ protected override AutomationLiveSetting GetLiveSettingCore(); + } + public class UIElement3DAutomationPeer : AutomationPeer { ++ protected override AutomationLiveSetting GetLiveSettingCore(); + } + public class UIElementAutomationPeer : AutomationPeer { ++ protected override AutomationLiveSetting GetLiveSettingCore(); + } + } + namespace System.Windows.Controls { + public class Expander : HeaderedContentControl { ++ public override void OnApplyTemplate(); + } + } + namespace System.Windows.Diagnostics { + public static class VisualDiagnostics { ++ public static void DisableVisualTreeChanged(); ++ public static void EnableVisualTreeChanged(); + } + } + namespace System.Windows.Forms { + public class DomainUpDown : UpDownBase { + public class DomainUpDownAccessibleObject : Control.ControlAccessibleObject { ++ public override string Name { get; set; } + } + } + public class MonthCalendar : Control { ++ protected override AccessibleObject CreateAccessibilityInstance(); + } + public class ToolStripDropDownButton : ToolStripDropDownItem { ++ protected override AccessibleObject CreateAccessibilityInstance(); + } + } + namespace System.Xml.XmlConfiguration { + public sealed class XmlReaderSection : ConfigurationSection { ++ public string CollapseWhiteSpaceIntoEmptyStringString { get; set; } + } + } + namespace System.Xml.XPath { ++ public static class XDocumentExtensions { ++ public static IXPathNavigable ToXPathNavigable(this XNode node); ++ } + } +``` diff --git a/releases/net471/dotnet471-changes.md b/releases/net471/dotnet471-changes.md index 2902190f0..f28058c59 100644 --- a/releases/net471/dotnet471-changes.md +++ b/releases/net471/dotnet471-changes.md @@ -1,9 +1,5 @@ # .NET Framework 4.7.1 Release Notes -> These release notes are current for .NET Framework 4.7.1 build 2539, released 2017-09-13. - -You can learn about the changes made in the .NET Framework 4.7.1, as of build 2539. - .NET Framework release notes describe product improvements grouped by product area. Each change includes a Microsoft-internal VSTS bug ID, the primary binary that was updated and whether the change was a bug or a feature. ## ASP.NET @@ -45,6 +41,7 @@ You can learn about the changes made in the .NET Framework 4.7.1, as of build 25 * Added an attribute System.Runtime.CompilerServices.IsRefLikeAttribute [429642, mscorlib.dll, Feature] * Enabled interop between StorageFile / StorageFolder and .NET types for filesystem access [433898, mscorlib.dll, Feature] * System.Runtime.CompilerServices.RuntimeFeature.IsSupported allows to check whether the runtime supports displaying source line information for stack frames in assemblies built with portable symbols (PDBs). This is common for libraries that are built targeting .Net standard. [436315, mscorlib.dll, Feature] +* During the .NET Standard 2.0 work a type was missed because of a mismatch between the contracts we have in the full .NET Framework and the ones we shipped as part of .NET Standard 1.*. [468256, System.Net.NetworkInformation.dll, Bug] ## CLR @@ -71,6 +68,7 @@ You can learn about the changes made in the .NET Framework 4.7.1, as of build 25 * Fixed infinite loop in the jit which happens in certain cases where cgt.un is used to implement a null check. [453201, clrjit.dll, Bug] * Fixed a silent bad codegen problem in JIT that results in incorrect results from XslCompiledTransform. [461649, clrjit.dll, Bug] * Fixed potential crash during CLR shutdown [437163, clr.dll, Bug] +* Fixed a codegen bug in the code that deals with intrinsics implemented by user calls. [499714, clrjit.dll, Bug] ## Compiler and Managed Languages @@ -139,6 +137,8 @@ You can learn about the changes made in the .NET Framework 4.7.1, as of build 25 ``` +* Fixed an issue where screen readers would consider the arrows in the workflow designer navigation breadcrumbs as part of the list. [408282, System.Activities.Presentation.dll, Bug] +* Fixed an issue where screen readers would read non-descriptive names of edit boxes in the workflow designer properties window. [459631, System.Activities.Presentation.dll, Bug] ## WPF @@ -172,3 +172,7 @@ You can learn about the changes made in the .NET Framework 4.7.1, as of build 25 * Added ability to tell whether a property value inside a template is a dynamic resource reference. [406807, PresentationFramework.dll, Feature] * Provided source info for elements in template created by XamlReader.Load [406808, PresentationFramework.dll, Feature] * Enabled VisualTree notifications for debugging [406811, PresentationFramework.dll, Feature] +* A WPF app that implements an event handler for the Selector.SelectionChanged event should see the new values for the SelectedIndex, SelectedItem and SelectedValue properties. This worked correctly in all cases except for one: when the selection change was caused by changing SelectedValue and the handler queried the SelectedValue property, it saw the old value. This has been fixed. [96884, PresentationFramework,dll, Bug] +* A WPF app with an event handler for the TabControl.SelectionChanged sees the wrong (old) value for TabControl.SelectedContent. Also, if the selection change occurs while keyboard focus is in the content area, the focus should remain in the content area (provided the new selected content has a focusable element). This has been fixed. [208019, PresentationFramework,dll, Bug] +* Fixed an issue for touch or stylus-enabled machines, where repeated use of popups in WPF applications can cause loss of touch and stylus support. [479874, PresentationCore.dll, Bug] +* Fixed an issue for touch or stylus-enabled machines, where WPF applications may throw a NullReferenceException in WispLogic.ProcessInputReport. [481090, PresentationCore.dll, Bug] diff --git a/releases/net471/dotnet471-known-issues.md b/releases/net471/dotnet471-known-issues.md index 3afe4a740..4fd16ff8b 100644 --- a/releases/net471/dotnet471-known-issues.md +++ b/releases/net471/dotnet471-known-issues.md @@ -1,4 +1,10 @@ .NET Framework 4.7.1 Known Issues ================================= + +This document lists the known issues that you may experience after you install the Microsoft .NET Framework 4.7.1. -There are no known issues as of build 2539. +## Product issues for the .NET Framework 4.7.1 +- [479874 - WPF Touch Stops Working After Rapid/Prolonged Use Of Popups](https://github.com/Microsoft/dotnet/blob/net471/releases/net471/KnownIssues/479874-WPF%20Touch%20Stops%20Working%20After%20Prolonged%20Use%20of%20Popups.md) +- [481090 - WPF Touch generates a NullReferenceException in WispLogic.ProcessInputReport](https://github.com/Microsoft/dotnet/blob/net471/releases/net471/KnownIssues/481090-WPF%20Touch%20generates%20NullReferenceException%20in%20ProcessInputReport.md) +- [489937 - WPF Touch/Stylus Generates AccessViolations and Heap Corruption in GetPenEventMultiple](https://github.com/Microsoft/dotnet/blob/net471/releases/net471/KnownIssues/489937-WPF%20Touch%20and%20Stylus%20AccessViolation%20in%20GetPenEventMultiple.md) +- [493108 - WPF InvalidCastException when displaying a checked MenuItem](https://github.com/Microsoft/dotnet/blob/net471/releases/net471/KnownIssues/493108-WPF%20InvalidCastException%20when%20displaying%20a%20checked%20MenuItem.md) From a04313e75499834c23c5bc7b4bffdc9c44411627 Mon Sep 17 00:00:00 2001 From: Preeti Krishna Date: Tue, 17 Oct 2017 14:24:15 -0700 Subject: [PATCH 474/872] Update README.md --- releases/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/releases/README.md b/releases/README.md index c50baa478..da83397c0 100644 --- a/releases/README.md +++ b/releases/README.md @@ -8,7 +8,7 @@ To get up-to-date with the latest versions of .NET Framework and Visual Studio, You can see what was included in each .NET Framework release. Some releases are now unsupported, as called out. -- [.NET Framework 4.7.1](net471/README.md) (pre-release) +- [.NET Framework 4.7.1](net471/README.md) - [.NET Framework 4.7](net47/README.md) - [.NET Framework 4.6.2](net462/README.md) - [.NET Framework 4.6.1](net461/README.md) From a1e4ed417127bf39a0be73d4fe609e0cde148456 Mon Sep 17 00:00:00 2001 From: Vivek Mishra Date: Tue, 17 Oct 2017 14:26:32 -0700 Subject: [PATCH 475/872] Update README.md Removed pre-release --- releases/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/releases/README.md b/releases/README.md index c50baa478..8ef3e6aa7 100644 --- a/releases/README.md +++ b/releases/README.md @@ -8,7 +8,7 @@ To get up-to-date with the latest versions of .NET Framework and Visual Studio, You can see what was included in each .NET Framework release. Some releases are now unsupported, as called out. -- [.NET Framework 4.7.1](net471/README.md) (pre-release) +- [.NET Framework 4.7.1](net471/README.md) - [.NET Framework 4.7](net47/README.md) - [.NET Framework 4.6.2](net462/README.md) - [.NET Framework 4.6.1](net461/README.md) From 3e22d4fda06961c9b85d0b0ea941f5647bb860bf Mon Sep 17 00:00:00 2001 From: preetikr Date: Tue, 17 Oct 2017 16:38:29 -0700 Subject: [PATCH 476/872] Update for .NET Framework 4.7.1 --- data/platforms.json | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/data/platforms.json b/data/platforms.json index 2e18f8a59..3505e75d4 100644 --- a/data/platforms.json +++ b/data/platforms.json @@ -81,6 +81,37 @@ "link": "https://github.com/dotnet/core/releases/tag/1.1.1" } ] + }, + { + "platform": ".NET Framework 4.7.1", + "alias": "net471", + "category": "netfx", + "supportInfo": { + "support": "Supported", + "link": "" + }, + "popular": true, + "info": "http://go.microsoft.com/fwlink/?LinkId=852091", + "includedIn": [ + "VS2017" + ], + "supportedBy": [ + "VS2015" + ], + "runtime": [ + { + "name": ".NET Framework 4.7.1", + "link": "http://go.microsoft.com/fwlink/?LinkId=852095", + "directLink": "http://go.microsoft.com/fwlink/?LinkId=852092&source=getdotnet&desc=dotnet471" + } + ], + "tools": [ + { + "name": ".NET Framework 4.7.1 Developer Pack", + "link": "http://go.microsoft.com/fwlink/?LinkId=852105", + "description": "The .NET 4.7.1 Developer pack includes 4.7.1 reference assemblies needed by Visual Studio and msbuild." + } + ] }, { "platform": ".NET Framework 4.7", From bff916339d5664b990288c022703a09d23eb3581 Mon Sep 17 00:00:00 2001 From: Josh Free Date: Wed, 18 Oct 2017 09:51:59 -0700 Subject: [PATCH 477/872] Windows Fall Creators Update SDK Drop "preview" from Windows Fall Creators Update SDK --- releases/UWP/net-native2.0/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/releases/UWP/net-native2.0/README.md b/releases/UWP/net-native2.0/README.md index a8f02807d..2c64b32f8 100644 --- a/releases/UWP/net-native2.0/README.md +++ b/releases/UWP/net-native2.0/README.md @@ -9,7 +9,7 @@ When using Visual Studio these packages require Visual Studio 2017 Version 15.4 #### .NET Standard 2.0 Support -- The Windows Fall Creators Update brings support for .NET Standard 2.0 to UWP development. In order to leverage the new APIs with .NET Standard 2.0, you need to set the minimum version target of your application to the Windows Fall Creators Update SDK preview. You will then have the ability to reference .NET Standard 2.0 NuGet packages, class libraries, and APIs directly from your UWP application. +- The Windows Fall Creators Update brings support for .NET Standard 2.0 to UWP development. In order to leverage the new APIs with .NET Standard 2.0, you need to set the minimum version target of your application to the Windows Fall Creators Update SDK. You will then have the ability to reference .NET Standard 2.0 NuGet packages, class libraries, and APIs directly from your UWP application. - More information is available on .NET Standard 2.0 support [here](https://docs.microsoft.com/en-us/dotnet/standard/net-standard). #### Improvements to Program Optimization, Throughput and Debuggability. From 999db8dad05c77f7ddc709788027a7b6483b82af Mon Sep 17 00:00:00 2001 From: Josh Free Date: Wed, 18 Oct 2017 09:53:08 -0700 Subject: [PATCH 478/872] Windows Fall Creators Update SDK Drop "preview" from Windows Fall Creators Update SDK --- releases/UWP/net-native2.0/incremental-compilation.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/releases/UWP/net-native2.0/incremental-compilation.md b/releases/UWP/net-native2.0/incremental-compilation.md index a6b89d3c3..bbc1f468c 100644 --- a/releases/UWP/net-native2.0/incremental-compilation.md +++ b/releases/UWP/net-native2.0/incremental-compilation.md @@ -24,7 +24,7 @@ Currently the new build mode is only supported in Debug configurations of UWP ap To go back and forth between .NET Native and .NET Core just use the checkbox in the build configuration tab of the project. -The incremental build is only supported on .NET Native 2.0, which in turn is only used if the app has its minimum target version of Windows SDK set to the Windows Fall Creators Update SDK preview. +The incremental build is only supported on .NET Native 2.0, which in turn is only used if the app has its minimum target version of Windows SDK set to the Windows Fall Creators Update SDK. ## Known Issues From 1b8847cc17a1e76940dabce1be3569151f54d1d3 Mon Sep 17 00:00:00 2001 From: Alex Ghiondea Date: Wed, 18 Oct 2017 13:12:13 -0700 Subject: [PATCH 479/872] =?UTF-8?q?4.7.1=20Known=20Issue:=20510901-Apps-ta?= =?UTF-8?q?rgeting-.NET-4.6.1-who-using-.NET-Standard-libra=E2=80=A6=20(#5?= =?UTF-8?q?24)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit New 4.7.1 Known Issue: * Create 510901-Apps-targeting-.NET-4.6.1-who-using-.NET-Standard-libraries-might-be-broken-on-.NET-4.7.1.md * Update 510901-Apps-targeting-.NET-4.6.1-who-using-.NET-Standard-libraries-might-be-broken-on-.NET-4.7.1.md * Update 2 --- ...rd-libraries-might-be-broken-on-.NET-4.7.1.md | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 releases/net471/KnownIssues/510901-Apps-targeting-.NET-4.6.1-who-using-.NET-Standard-libraries-might-be-broken-on-.NET-4.7.1.md diff --git a/releases/net471/KnownIssues/510901-Apps-targeting-.NET-4.6.1-who-using-.NET-Standard-libraries-might-be-broken-on-.NET-4.7.1.md b/releases/net471/KnownIssues/510901-Apps-targeting-.NET-4.6.1-who-using-.NET-Standard-libraries-might-be-broken-on-.NET-4.7.1.md new file mode 100644 index 000000000..28eed91f3 --- /dev/null +++ b/releases/net471/KnownIssues/510901-Apps-targeting-.NET-4.6.1-who-using-.NET-Standard-libraries-might-be-broken-on-.NET-4.7.1.md @@ -0,0 +1,16 @@ +## Symptoms + +Applications that target the .NET Framework 4.6.1 and use .NET Standard libraries may experience exceptions when running on the .NET Framework 4.7.1 + +## Cause + +The .NET Framework 4.7.1 adds support for .NET Standard in-box. As part of this change, a few assemblies that used to ship independently from the .NET Framework have now been added to the .NET Framework. As these .NET Standard assemblies were not part of the .NET Framework prior to .NET 4.7.1, they were deployed with the application, and a binding redirect was added to the application's app.config file. + +When running on the .NET Framework 4.7.1, where the assemblies are now part of the Framework, the application now has two types with different identities, and that leads to a . One type comes from the app-local assembly, and the other one comes from the .NET Framework assembly. + +## Workarounds + +There are two ways to work around this issue: + - When running on .NET Framework 4.7.1, remove the binding redirects from the app.config file for the assemblies that are now part of the .NET Framework. + - Re-target your application to target the .NET Framwork 4.7.1 + From 61226dc58ee0409a85a832752c22856661136487 Mon Sep 17 00:00:00 2001 From: Alex Ghiondea Date: Wed, 18 Oct 2017 13:41:49 -0700 Subject: [PATCH 480/872] Add title and link to known issue. (#525) --- ... libraries might be broken when running on .NET 4.7.1.md} | 5 +++++ 1 file changed, 5 insertions(+) rename releases/net471/KnownIssues/{510901-Apps-targeting-.NET-4.6.1-who-using-.NET-Standard-libraries-might-be-broken-on-.NET-4.7.1.md => 510901-BCL Apps targeting .NET-4.6.1 that use .NET Standard libraries might be broken when running on .NET 4.7.1.md} (85%) diff --git a/releases/net471/KnownIssues/510901-Apps-targeting-.NET-4.6.1-who-using-.NET-Standard-libraries-might-be-broken-on-.NET-4.7.1.md b/releases/net471/KnownIssues/510901-BCL Apps targeting .NET-4.6.1 that use .NET Standard libraries might be broken when running on .NET 4.7.1.md similarity index 85% rename from releases/net471/KnownIssues/510901-Apps-targeting-.NET-4.6.1-who-using-.NET-Standard-libraries-might-be-broken-on-.NET-4.7.1.md rename to releases/net471/KnownIssues/510901-BCL Apps targeting .NET-4.6.1 that use .NET Standard libraries might be broken when running on .NET 4.7.1.md index 28eed91f3..e1301a784 100644 --- a/releases/net471/KnownIssues/510901-Apps-targeting-.NET-4.6.1-who-using-.NET-Standard-libraries-might-be-broken-on-.NET-4.7.1.md +++ b/releases/net471/KnownIssues/510901-BCL Apps targeting .NET-4.6.1 that use .NET Standard libraries might be broken when running on .NET 4.7.1.md @@ -1,3 +1,5 @@ +# Applications targeting .NET 4.6.1 that use .NET Standard libraries might be broken when running on .NET 4.7.1 + ## Symptoms Applications that target the .NET Framework 4.6.1 and use .NET Standard libraries may experience exceptions when running on the .NET Framework 4.7.1 @@ -8,6 +10,9 @@ The .NET Framework 4.7.1 adds support for .NET Standard in-box. As part of this When running on the .NET Framework 4.7.1, where the assemblies are now part of the Framework, the application now has two types with different identities, and that leads to a . One type comes from the app-local assembly, and the other one comes from the .NET Framework assembly. +Also reported here: https://github.com/Microsoft/dotnet-framework-early-access/issues/9 + + ## Workarounds There are two ways to work around this issue: From 72ff6fcab1e7c1e3b24b47acc20b33bda3d109cb Mon Sep 17 00:00:00 2001 From: Vivek Mishra Date: Wed, 18 Oct 2017 13:51:12 -0700 Subject: [PATCH 481/872] Added new entry for 510901 (#526) - Added new entry for issue 510901 - Fixed all links to point to master --- releases/net471/dotnet471-known-issues.md | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/releases/net471/dotnet471-known-issues.md b/releases/net471/dotnet471-known-issues.md index 4fd16ff8b..b1afb4970 100644 --- a/releases/net471/dotnet471-known-issues.md +++ b/releases/net471/dotnet471-known-issues.md @@ -4,7 +4,8 @@ This document lists the known issues that you may experience after you install the Microsoft .NET Framework 4.7.1. ## Product issues for the .NET Framework 4.7.1 -- [479874 - WPF Touch Stops Working After Rapid/Prolonged Use Of Popups](https://github.com/Microsoft/dotnet/blob/net471/releases/net471/KnownIssues/479874-WPF%20Touch%20Stops%20Working%20After%20Prolonged%20Use%20of%20Popups.md) -- [481090 - WPF Touch generates a NullReferenceException in WispLogic.ProcessInputReport](https://github.com/Microsoft/dotnet/blob/net471/releases/net471/KnownIssues/481090-WPF%20Touch%20generates%20NullReferenceException%20in%20ProcessInputReport.md) -- [489937 - WPF Touch/Stylus Generates AccessViolations and Heap Corruption in GetPenEventMultiple](https://github.com/Microsoft/dotnet/blob/net471/releases/net471/KnownIssues/489937-WPF%20Touch%20and%20Stylus%20AccessViolation%20in%20GetPenEventMultiple.md) -- [493108 - WPF InvalidCastException when displaying a checked MenuItem](https://github.com/Microsoft/dotnet/blob/net471/releases/net471/KnownIssues/493108-WPF%20InvalidCastException%20when%20displaying%20a%20checked%20MenuItem.md) +- [479874 - WPF Touch Stops Working After Rapid/Prolonged Use Of Popups](https://github.com/Microsoft/dotnet/blob/master/releases/net471/KnownIssues/479874-WPF%20Touch%20Stops%20Working%20After%20Prolonged%20Use%20of%20Popups.md) +- [481090 - WPF Touch generates a NullReferenceException in WispLogic.ProcessInputReport](https://github.com/Microsoft/dotnet/blob/master/releases/net471/KnownIssues/481090-WPF%20Touch%20generates%20NullReferenceException%20in%20ProcessInputReport.md) +- [489937 - WPF Touch/Stylus Generates AccessViolations and Heap Corruption in GetPenEventMultiple](https://github.com/Microsoft/dotnet/blob/master/releases/net471/KnownIssues/489937-WPF%20Touch%20and%20Stylus%20AccessViolation%20in%20GetPenEventMultiple.md) +- [493108 - WPF InvalidCastException when displaying a checked MenuItem](https://github.com/Microsoft/dotnet/blob/master/releases/net471/KnownIssues/493108-WPF%20InvalidCastException%20when%20displaying%20a%20checked%20MenuItem.md) +- [510901 - Applications targeting .NET 4.6.1 that use .NET Standard libraries might be broken when running on .NET 4.7.1](https://github.com/Microsoft/dotnet/blob/master/releases/net471/KnownIssues/510901-BCL%20Apps%20targeting%20.NET-4.6.1%20that%20use%20.NET%20Standard%20libraries%20might%20be%20broken%20when%20running%20on%20.NET%204.7.1.md) From ea843db49e31d1f8544362e6e2c5190038e4164f Mon Sep 17 00:00:00 2001 From: Vivek Mishra Date: Wed, 18 Oct 2017 13:51:40 -0700 Subject: [PATCH 482/872] Update 493108-WPF InvalidCastException when displaying a checked MenuItem.md --- ...lidCastException when displaying a checked MenuItem.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/releases/net471/KnownIssues/493108-WPF InvalidCastException when displaying a checked MenuItem.md b/releases/net471/KnownIssues/493108-WPF InvalidCastException when displaying a checked MenuItem.md index 2d9995eda..50ee11b0a 100644 --- a/releases/net471/KnownIssues/493108-WPF InvalidCastException when displaying a checked MenuItem.md +++ b/releases/net471/KnownIssues/493108-WPF InvalidCastException when displaying a checked MenuItem.md @@ -1,6 +1,6 @@ -## WPF InvalidCastException when displaying a checked MenuItem +# WPF InvalidCastException when displaying a checked MenuItem -### Symptoms +## Symptoms WPF throws an InvalidCastException when an application displays a MenuItem, provided the following conditions are all met: @@ -21,7 +21,7 @@ and the callstack begins with at System.Windows.Shapes.Shape.GetNaturalSize() at System.Windows.Shapes.Shape.MeasureOverride() -### Cause +## Cause The exception is due to a resource key conflict between the ribbon library and the theme file for server machines (PresentationFramework.AeroLite.dll). Both declare resources using the same key. The theme file includes a DynamicResource reference intended to find @@ -29,5 +29,5 @@ the Geometry describing the MenuItem's checkmark, but in the circumstances descr the reference resolves to the ribbon library's resource. This effectively sets the value of Path.Data to an object of type Style. The next measure pass then encounters the exception. -### Resolution +## Resolution This issue is fixed for all supported OS platforms prior to Windows 10 Fall Creators Update. The fix for Windows 10 Fall Creators Update is expected in a future servicing update. From e78dce0fddb5612b98146e4910b7fefed739c5b9 Mon Sep 17 00:00:00 2001 From: Vivek Mishra Date: Wed, 18 Oct 2017 13:51:53 -0700 Subject: [PATCH 483/872] Update 489937-WPF Touch and Stylus AccessViolation in GetPenEventMultiple.md --- ...nd Stylus AccessViolation in GetPenEventMultiple.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/releases/net471/KnownIssues/489937-WPF Touch and Stylus AccessViolation in GetPenEventMultiple.md b/releases/net471/KnownIssues/489937-WPF Touch and Stylus AccessViolation in GetPenEventMultiple.md index 9696123b1..11863196d 100644 --- a/releases/net471/KnownIssues/489937-WPF Touch and Stylus AccessViolation in GetPenEventMultiple.md +++ b/releases/net471/KnownIssues/489937-WPF Touch and Stylus AccessViolation in GetPenEventMultiple.md @@ -1,10 +1,10 @@ -## WPF Touch/Stylus Generates AccessViolations and Heap Corruption in GetPenEventMultiple +# WPF Touch/Stylus Generates AccessViolations and Heap Corruption in GetPenEventMultiple -### Symptoms +## Symptoms On a touch or stylus-enabled machine, WPF applications may sometimes corrupt memory and crash in the internal function GetPenEventMultiple in the PenIMC2_v0400 DLL. -### Cause +## Cause This is due to the release of a COM object that is later used in the WPF touch stack. -### Resolution -This issue is fixed for all supported OS platforms prior to Windows 10 Fall Creators Update. The fix for Windows 10 Fall Creators Update is expected in a future servicing update. \ No newline at end of file +## Resolution +This issue is fixed for all supported OS platforms prior to Windows 10 Fall Creators Update. The fix for Windows 10 Fall Creators Update is expected in a future servicing update. From 8ffa57aa241abb2b7b69f46e1f6a2bb5636c515e Mon Sep 17 00:00:00 2001 From: Vivek Mishra Date: Wed, 18 Oct 2017 13:52:07 -0700 Subject: [PATCH 484/872] Update 481090-WPF Touch generates NullReferenceException in ProcessInputReport.md --- ...tes NullReferenceException in ProcessInputReport.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/releases/net471/KnownIssues/481090-WPF Touch generates NullReferenceException in ProcessInputReport.md b/releases/net471/KnownIssues/481090-WPF Touch generates NullReferenceException in ProcessInputReport.md index ea53d001e..4712603e5 100644 --- a/releases/net471/KnownIssues/481090-WPF Touch generates NullReferenceException in ProcessInputReport.md +++ b/releases/net471/KnownIssues/481090-WPF Touch generates NullReferenceException in ProcessInputReport.md @@ -1,10 +1,10 @@ -## WPF Touch generates a NullReferenceException in WispLogic.ProcessInputReport +# WPF Touch generates a NullReferenceException in WispLogic.ProcessInputReport -### Symptoms +## Symptoms WPF throws a NullReferenceException in WispLogic.ProcessInputReport and the application may crash. -### Cause +## Cause In WPF applications running on touch or stylus enabled machines, specific hardware and timing issues can cause touch messages to arrive without associated StylusDevices. When this occurs WPF tries to access this null StylusDevice, causing the error. -### Resolution -This issue is fixed for all supported OS platforms prior to Windows 10 Fall Creators Update. The fix for Windows 10 Fall Creators Update is expected in a future servicing update. \ No newline at end of file +## Resolution +This issue is fixed for all supported OS platforms prior to Windows 10 Fall Creators Update. The fix for Windows 10 Fall Creators Update is expected in a future servicing update. From 6832e62e025c05f3c227d8256ccd265397aad673 Mon Sep 17 00:00:00 2001 From: Vivek Mishra Date: Wed, 18 Oct 2017 13:52:18 -0700 Subject: [PATCH 485/872] Update 479874-WPF Touch Stops Working After Prolonged Use of Popups.md --- ...ouch Stops Working After Prolonged Use of Popups.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/releases/net471/KnownIssues/479874-WPF Touch Stops Working After Prolonged Use of Popups.md b/releases/net471/KnownIssues/479874-WPF Touch Stops Working After Prolonged Use of Popups.md index 808d03108..1948d4ca5 100644 --- a/releases/net471/KnownIssues/479874-WPF Touch Stops Working After Prolonged Use of Popups.md +++ b/releases/net471/KnownIssues/479874-WPF Touch Stops Working After Prolonged Use of Popups.md @@ -1,10 +1,10 @@ -## WPF Touch Stops Working After Rapid/Prolonged Use Of Popups +# WPF Touch Stops Working After Rapid/Prolonged Use Of Popups -### Symptoms +## Symptoms On a touch or stylus-enabled machine, WPF applications may see a loss of touch or stylus after rapid or prolonged use of popups (e.g. ComboBoxes, DropDown Menus). -### Cause +## Cause A change to disposal of HwndSource in .NET 4.7 caused Popups to not correctly cleanup touch resources. This eventually can lead to loss of touch/stylus interaction. -### Resolution -This issue is fixed for all supported OS platforms prior to Windows 10 Fall Creators Update. The fix for Windows 10 Fall Creators Update is expected in a future servicing update. \ No newline at end of file +## Resolution +This issue is fixed for all supported OS platforms prior to Windows 10 Fall Creators Update. The fix for Windows 10 Fall Creators Update is expected in a future servicing update. From 869ef1d8ba259593733a3c5f4ffb19940fea9ad4 Mon Sep 17 00:00:00 2001 From: Vivek Mishra Date: Wed, 18 Oct 2017 13:52:42 -0700 Subject: [PATCH 486/872] Update NETFXKnownIssuesTemplate.md --- .../KnownIssues/Template/NETFXKnownIssuesTemplate.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Documentation/KnownIssues/Template/NETFXKnownIssuesTemplate.md b/Documentation/KnownIssues/Template/NETFXKnownIssuesTemplate.md index a454bcf44..62bba948c 100644 --- a/Documentation/KnownIssues/Template/NETFXKnownIssuesTemplate.md +++ b/Documentation/KnownIssues/Template/NETFXKnownIssuesTemplate.md @@ -1,19 +1,19 @@ -## [|Known Issue Title|] +# [|Known Issue Title|] // There is no built-in way to do comments in Markdown, so this template uses a C#-style comment to mark comments. Please REMOVE ALL COMMENTS before submission. // Please use proper markdown syntax for code snippets. See http://daringfireball.net/projects/markdown/syntax for examples. // Entries with [| ... |] are fields that must be updated. -### Symptoms +## Symptoms [|Description of the symtopms|] // A description of the symptom(s) that exhibit due to the underlying issue. -### Cause +## Cause [|Description of the root cause(s)|] -### Resolution +## Resolution [|Description of the resolution|] // Add the steps that will allow users to resolve the underlying problem including any workarounds. // In future, if there is a fix available, then also update this page with the latest information or future update/hotfix link. -### More information +## More information // This is an optional section. Add any other relevant information, if available, like link(s) to help docs, blog etc. From 2a0823b96d7a78145c2de560873a30eed11c99c5 Mon Sep 17 00:00:00 2001 From: Josh Free Date: Thu, 19 Oct 2017 14:42:54 -0700 Subject: [PATCH 487/872] UWP 5.4.1 Add UWP 5.4.1 changelog --- releases/UWP/net-native1.7/README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/releases/UWP/net-native1.7/README.md b/releases/UWP/net-native1.7/README.md index 9004cdb78..f3bd6de05 100644 --- a/releases/UWP/net-native1.7/README.md +++ b/releases/UWP/net-native1.7/README.md @@ -4,6 +4,9 @@ You can see what was included in each .NET Native 1.7 ([Microsoft.NETCore.Univer When using Visual Studio these packages require Visual Studio 2017 or later. +### 5.4.1 (October 9, 2017) +- Fixed an issue with Microsoft.NetNative.targets that prevented C++ hybrid apps from compiling; apps would fail to compile due to an attempt to write a file to a folder that does not exist. [511674] + ### 5.4.0 (August 11, 2017) From a20136176452ea4815db23ba67df322ddf73e006 Mon Sep 17 00:00:00 2001 From: Connie Yau Date: Fri, 20 Oct 2017 11:46:29 -0700 Subject: [PATCH 488/872] Fix duplicate breaking change id --- .../compatibility/winforms-accessibility-changes-471.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Documentation/compatibility/winforms-accessibility-changes-471.md b/Documentation/compatibility/winforms-accessibility-changes-471.md index 7af4cd210..ba7688cd2 100644 --- a/Documentation/compatibility/winforms-accessibility-changes-471.md +++ b/Documentation/compatibility/winforms-accessibility-changes-471.md @@ -154,5 +154,5 @@ Windows Forms --> - + From b2ecf3bbe00be0345ad1cbd1dcdfce1a4eea9275 Mon Sep 17 00:00:00 2001 From: Ron Petrusha Date: Fri, 20 Oct 2017 15:30:41 -0700 Subject: [PATCH 489/872] Duplicating changes made in dotnet/docs PR #3464 (#532) --- ...e-overloads-could-result-in-different-behavior.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/Documentation/compatibility/new-(ambiguous)-dispatcher_invoke-overloads-could-result-in-different-behavior.md b/Documentation/compatibility/new-(ambiguous)-dispatcher_invoke-overloads-could-result-in-different-behavior.md index 362a1b8f4..de97bd537 100644 --- a/Documentation/compatibility/new-(ambiguous)-dispatcher_invoke-overloads-could-result-in-different-behavior.md +++ b/Documentation/compatibility/new-(ambiguous)-dispatcher_invoke-overloads-could-result-in-different-behavior.md @@ -11,13 +11,13 @@ Available ### Change Description -The .NET Framework 4.5 adds new overloads to Dispatcher.Invoke that include a -parameter of type @System.Action. When existing code is recompiled, compilers -may resolve calls to Dispatcher.Invoke methods that have a @System.Delegate -parameter as calls to Dispatcher.Invoke methods with an @System.Action -parameter. If a call to a Dispatcher.Invoke overload with a @System.Delegate +The .NET Framework 4.5 adds new overloads to that include a +parameter of type . When existing code is recompiled, compilers +may resolve calls to Dispatcher.Invoke methods that have a +parameter as calls to Dispatcher.Invoke methods with an +parameter. If a call to a Dispatcher.Invoke overload with a parameter is resolved as a call to a Dispatcher.Invoke overload with an -@System.Action parameter, the following differences in behavior may occur: + parameter, the following differences in behavior may occur: - If an exception occurs, the and events are not raised. Instead, exceptions are handled by the event. - Calls to some members, such as , block until the operation has completed. From 9e789a1ccf9bc7ea56dd9430880d87622bb1cdb7 Mon Sep 17 00:00:00 2001 From: Ron Petrusha Date: Fri, 20 Oct 2017 15:31:03 -0700 Subject: [PATCH 490/872] Checked quirked box, fixed bad fencing (#530) * Checked quirked box, fixed bad fencing * Update wcf-binding-with-the-transportwithmessagecredential-security-mode.md --- ...ith-the-transportwithmessagecredential-security-mode.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/Documentation/compatibility/wcf-binding-with-the-transportwithmessagecredential-security-mode.md b/Documentation/compatibility/wcf-binding-with-the-transportwithmessagecredential-security-mode.md index 1b7c5577e..1feb93c21 100644 --- a/Documentation/compatibility/wcf-binding-with-the-transportwithmessagecredential-security-mode.md +++ b/Documentation/compatibility/wcf-binding-with-the-transportwithmessagecredential-security-mode.md @@ -10,18 +10,19 @@ Transparent Not planned ### Change Description -Beginning in the .NET Framework 4.6.1, WCF binding that uses the TransportWithMessageCredential security mode can be setup to receive messages with unsigned "to" headers for asymmetric security keys. +Beginning in the .NET Framework 4.6.1, WCF binding that uses the TransportWithMessageCredential security mode can be set up to receive messages with unsigned "to" headers for asymmetric security keys. By default, unsigned "to" headers will continue to be rejected in .NET 4.6.1. They will only be accepted if an application opts into this new mode of operation using the Switch.System.ServiceModel.AllowUnsignedToHeader configuration switch. Because this is an opt-in feature, it should not affect the behavior of existing apps. -- [ ] Quirked +- [X] Quirked - [ ] Build-time break ### Recommended Action Because this is an opt-in feature, it should not affect the behavior of existing apps. To control whether the new behavior is used or not, use the following configuration setting: -``` + +```xml From ace097992189e85bef8cb9538b9aa6fa0ef519b8 Mon Sep 17 00:00:00 2001 From: Connie Yau Date: Mon, 23 Oct 2017 10:08:47 -0700 Subject: [PATCH 491/872] Fixing headers for recommended action --- ...ArgumentException-if-an-addressHeader-element-is-null.md | 6 +++--- ...F-MsmqSecureHashAlgorithm-default-value-is-now-SHA256.md | 6 +++--- .../WCF-PipeConnection.GetHashAlgorithm-now-uses-SHA256.md | 6 +++--- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/Documentation/compatibility/WCF-AddressHeaderCollection-now-throws-an-ArgumentException-if-an-addressHeader-element-is-null.md b/Documentation/compatibility/WCF-AddressHeaderCollection-now-throws-an-ArgumentException-if-an-addressHeader-element-is-null.md index 9a89f8ad3..6f5ea044d 100644 --- a/Documentation/compatibility/WCF-AddressHeaderCollection-now-throws-an-ArgumentException-if-an-addressHeader-element-is-null.md +++ b/Documentation/compatibility/WCF-AddressHeaderCollection-now-throws-an-ArgumentException-if-an-addressHeader-element-is-null.md @@ -12,17 +12,17 @@ NotPlanned ### Change Description Starting with the .NET Framework 4.7.1, the `M:System.ServiceModel.Channels.AddressHeaderCollection.#ctor(System.Collections.Generic.IEnumerable{System.ServiceModel.Channels.AddressHeader})` constructor throws an `T:System.ArgumentException` if one of the elements is `null`. In the .NET Framework 4.7 and earlier versions, no exception is thrown. -### Recommended Action: +### Recommended Action If you encounter compatibility issues with this change on the .NET Framework 4.7.1 or a later version, you can opt-out of it by adding the following line to the `` section of the app.config file:: ```xml - + ``` - + ## Affected APIs * `M:System.ServiceModel.Channels.AddressHeaderCollection.#ctor(System.Collections.Generic.IEnumerable{System.ServiceModel.Channels.AddressHeader})` diff --git a/Documentation/compatibility/WCF-MsmqSecureHashAlgorithm-default-value-is-now-SHA256.md b/Documentation/compatibility/WCF-MsmqSecureHashAlgorithm-default-value-is-now-SHA256.md index 6d0c0058a..316d6e5ae 100644 --- a/Documentation/compatibility/WCF-MsmqSecureHashAlgorithm-default-value-is-now-SHA256.md +++ b/Documentation/compatibility/WCF-MsmqSecureHashAlgorithm-default-value-is-now-SHA256.md @@ -9,7 +9,7 @@ NotPlanned ### Change Description Starting with the .NET Framework 4.7.1, the default message signing algorithm in WCF for Msmq messages is SHA256. In the .NET Framework 4.7 and earlier versions, the default message signing algorithm is SHA1. -### Recommended Action: +### Recommended Action If you run into compatibility issues with this change on the .NET Framework 4.7.1 or later, you can opt-out the change by adding the following line to the ``section of your app.config file: @@ -17,10 +17,10 @@ If you run into compatibility issues with this change on the .NET Framework 4.7. - + ``` - + ## Affected APIs * Not detectable via API analysis diff --git a/Documentation/compatibility/WCF-PipeConnection.GetHashAlgorithm-now-uses-SHA256.md b/Documentation/compatibility/WCF-PipeConnection.GetHashAlgorithm-now-uses-SHA256.md index 5d8473f9d..b4022c67a 100644 --- a/Documentation/compatibility/WCF-PipeConnection.GetHashAlgorithm-now-uses-SHA256.md +++ b/Documentation/compatibility/WCF-PipeConnection.GetHashAlgorithm-now-uses-SHA256.md @@ -9,17 +9,17 @@ NotPlanned ### Change Description Starting with the .NET Framework 4.7.1, Windows Communication Foundation uses a SHA256 hash to generate random names for named pipes. In the .NET Framework 4.7 and earlier versions, it used a SHA1 hash. -### Recommended Action: +### Recommended Action If you run into compatibility issue with this change on the .NET Framework 4.7.1 or later, you can opt-out it by adding the following line to the `` section of your app.config file: ```xml - + ``` - + ## Affected APIs * Not detectable via API analysis From d5174fd8f610c43d078eb58efdac457273821b00 Mon Sep 17 00:00:00 2001 From: Connie Yau Date: Mon, 23 Oct 2017 10:46:29 -0700 Subject: [PATCH 492/872] Fixing Affected API headers --- ...-an-ArgumentException-if-an-addressHeader-element-is-null.md | 2 +- .../WCF-MsmqSecureHashAlgorithm-default-value-is-now-SHA256.md | 2 +- .../WCF-PipeConnection.GetHashAlgorithm-now-uses-SHA256.md | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Documentation/compatibility/WCF-AddressHeaderCollection-now-throws-an-ArgumentException-if-an-addressHeader-element-is-null.md b/Documentation/compatibility/WCF-AddressHeaderCollection-now-throws-an-ArgumentException-if-an-addressHeader-element-is-null.md index 6f5ea044d..d1f8ff4c4 100644 --- a/Documentation/compatibility/WCF-AddressHeaderCollection-now-throws-an-ArgumentException-if-an-addressHeader-element-is-null.md +++ b/Documentation/compatibility/WCF-AddressHeaderCollection-now-throws-an-ArgumentException-if-an-addressHeader-element-is-null.md @@ -23,7 +23,7 @@ If you encounter compatibility issues with this change on the .NET Framework 4.7 ``` -## Affected APIs +### Affected APIs * `M:System.ServiceModel.Channels.AddressHeaderCollection.#ctor(System.Collections.Generic.IEnumerable{System.ServiceModel.Channels.AddressHeader})` ### Category diff --git a/Documentation/compatibility/WCF-MsmqSecureHashAlgorithm-default-value-is-now-SHA256.md b/Documentation/compatibility/WCF-MsmqSecureHashAlgorithm-default-value-is-now-SHA256.md index 316d6e5ae..2927d54fa 100644 --- a/Documentation/compatibility/WCF-MsmqSecureHashAlgorithm-default-value-is-now-SHA256.md +++ b/Documentation/compatibility/WCF-MsmqSecureHashAlgorithm-default-value-is-now-SHA256.md @@ -21,7 +21,7 @@ If you run into compatibility issues with this change on the .NET Framework 4.7. ``` -## Affected APIs +### Affected APIs * Not detectable via API analysis ### Category diff --git a/Documentation/compatibility/WCF-PipeConnection.GetHashAlgorithm-now-uses-SHA256.md b/Documentation/compatibility/WCF-PipeConnection.GetHashAlgorithm-now-uses-SHA256.md index b4022c67a..e6c94667b 100644 --- a/Documentation/compatibility/WCF-PipeConnection.GetHashAlgorithm-now-uses-SHA256.md +++ b/Documentation/compatibility/WCF-PipeConnection.GetHashAlgorithm-now-uses-SHA256.md @@ -20,7 +20,7 @@ If you run into compatibility issue with this change on the .NET Framework 4.7.1 ``` -## Affected APIs +### Affected APIs * Not detectable via API analysis ### Category From 289487a6940043fa84c0051dd44641eea200f374 Mon Sep 17 00:00:00 2001 From: Connie Yau Date: Tue, 24 Oct 2017 15:08:02 -0700 Subject: [PATCH 493/872] Fix more issues (#536) * Add Category for breaking change * Fix formatting for breaking change * Rename to markdown file so it can be parsed * Add category to WCF change * Update WCFSDKToolsAccessibilityChangesIn4.7.1.md * Fix docIds * Fix broken docIds * Fix more docIds --- ...ase-doesnt-propagate-OnStart-exceptions.md | 6 +++- .../WCFSDKToolsAccessibilityChangesIn4.7.1 | 23 ------------ .../WCFSDKToolsAccessibilityChangesIn4.7.1.md | 35 +++++++++++++++++++ .../wpf-accessibility-improvements.MD | 21 +++++------ 4 files changed, 51 insertions(+), 34 deletions(-) delete mode 100644 Documentation/compatibility/WCFSDKToolsAccessibilityChangesIn4.7.1 create mode 100644 Documentation/compatibility/WCFSDKToolsAccessibilityChangesIn4.7.1.md diff --git a/Documentation/compatibility/ServiceBase-doesnt-propagate-OnStart-exceptions.md b/Documentation/compatibility/ServiceBase-doesnt-propagate-OnStart-exceptions.md index 90dadd9b2..0b45c0a43 100644 --- a/Documentation/compatibility/ServiceBase-doesnt-propagate-OnStart-exceptions.md +++ b/Documentation/compatibility/ServiceBase-doesnt-propagate-OnStart-exceptions.md @@ -36,4 +36,8 @@ If your application targets an earlier version than 4.7.1 but you want to have t ``` ### Affected APIs -* `M:System.ServiceProcess.ServiceBase.Run` +* `M:System.ServiceProcess.ServiceBase.Run(System.ServiceProcess.ServiceBase)` +* `M:System.ServiceProcess.ServiceBase.Run(System.ServiceProcess.ServiceBase[])` + +### Category +Core \ No newline at end of file diff --git a/Documentation/compatibility/WCFSDKToolsAccessibilityChangesIn4.7.1 b/Documentation/compatibility/WCFSDKToolsAccessibilityChangesIn4.7.1 deleted file mode 100644 index aa4905dec..000000000 --- a/Documentation/compatibility/WCFSDKToolsAccessibilityChangesIn4.7.1 +++ /dev/null @@ -1,23 +0,0 @@ -##Improved accessibility for some .NET SDK tools - -###Scope -Edge -###Version Introduced -.NET Framework 4.7.1 -###Source Analyzer Status -NotPlanned -###Change Description -In .NET Framework SDK 4.7.1, svcconfigedit.exe and svctraceviewer.exe tools have been improved by fixing varied accessibility issues. Most of these were small issues like a name not being defined or certain UI Automation patterns not being implemented correctly. While many users wouldn’t be aware of these incorrect values, for customers who use assistive technologies like screen readers, they will find these SDK tools become more accessible. Certainly, these fixes change some previous behaviors, like keyboard focus order. -###Quirked: -In order to get all the accessibility fixes in these tools, you can add App config file with the following configuration: - - - -###Affected APIs -* Not detectable via API analysis - - diff --git a/Documentation/compatibility/WCFSDKToolsAccessibilityChangesIn4.7.1.md b/Documentation/compatibility/WCFSDKToolsAccessibilityChangesIn4.7.1.md new file mode 100644 index 000000000..e0679667b --- /dev/null +++ b/Documentation/compatibility/WCFSDKToolsAccessibilityChangesIn4.7.1.md @@ -0,0 +1,35 @@ +## Improved accessibility for some .NET SDK tools + +### Scope +Edge + +### Version Introduced +4.7.1 + +### Source Analyzer Status +NotPlanned + +### Change Description + +In the .NET Framework SDK 4.7.1, the svcconfigedit.exe and svctraceviewer.exe tools have been improved by fixing varied accessibility issues. Most of these were small issues like a name not being defined or certain UI automation patterns not being implemented correctly. While many users wouldn’t be aware of these incorrect values, customers who use assistive technologies like screen readers will find these SDK tools more accessible. Certainly, these fixes change some previous behaviors, like keyboard focus order. + +In order to get all the accessibility fixes in these tools, you can the following to your app.config file: +```xml + + + +``` + +- [x] Quirked +- [ ] Build-time break + +### Affected APIs +* Not detectable via API analysis + +### Category +Windows Communication Foundation (WCF) + + diff --git a/Documentation/compatibility/wpf-accessibility-improvements.MD b/Documentation/compatibility/wpf-accessibility-improvements.MD index 2b330a48b..f52b507b8 100644 --- a/Documentation/compatibility/wpf-accessibility-improvements.MD +++ b/Documentation/compatibility/wpf-accessibility-improvements.MD @@ -44,7 +44,7 @@ The LiveSetting property also lets the screen reader know how important it is to ### Recommended Action __How to opt in or out of these changes__ - + In order for the application to benefit from these changes, it must run on the .NET Framework 4.7.1 or later. The application can benefit from these changes in either of the following ways: - It is recompiled to target the .NET Framework 4.7.1. These accessibility changes are enabled by default on WPF applications that target the .NET Framework 4.7.1 or later. - It opts out of the legacy accessibility behaviors by adding the following [AppContext Switch](https://docs.microsoft.com/dotnet/framework/configure-apps/file-schema/runtime/appcontextswitchoverrides-element) in the `````` section of the app config file and setting it to false, as the following example shows. @@ -64,14 +64,15 @@ Applications that target the .NET Framework 4.7.1 or later and want to preserve For an overview of UI automation, see the [UI Automation Overview](https://docs.microsoft.com/dotnet/framework/ui-automation/ui-automation-overview). -### Affected APIs -* `F:System.windows.Automation.AutomationElementIdentifiers.LiveSettingProperty` -* `F:System.windows.Automation.AutomationElementIdentifiers.LiveRegionChangedEvent` -* `F:System.Windows.Automation.AutomationProperties.LiveSetting` -* `M:System.Windows.Automation.AutomationProperties.SetLiveSetting` -* `M:System.Windows.Automation.AutomationProperties.GetLiveSetting` -* `M:System.Windows.Automation.Peers.AutomationPeer.GetLiveSettingCore` -* `T:System.Windows.Automation.AutomationLiveSetting` +### Affected APIs +* `F:System.Windows.Automation.AutomationElementIdentifiers.LiveSettingProperty` +* `F:System.Windows.Automation.AutomationElementIdentifiers.LiveRegionChangedEvent` +* `T:System.Windows.Automation.AutomationLiveSetting` +* `F:System.Windows.Automation.AutomationProperties.LiveSettingProperty` +* `M:System.Windows.Automation.AutomationProperties.SetLiveSetting(System.Windows.DependencyObject,System.Windows.Automation.AutomationLiveSetting)` +* `M:System.Windows.Automation.AutomationProperties.GetLiveSetting(System.Windows.DependencyObject)` +* `M:System.Windows.Automation.Peers.AutomationPeer.GetLiveSettingCore` + ### Category @@ -90,7 +91,7 @@ WPF 437421 436104 430176 - + 429415 453792 404634 From 79a0a5bf80a6ed903528701e868090705546acae Mon Sep 17 00:00:00 2001 From: Ron Petrusha Date: Tue, 24 Oct 2017 23:47:53 -0700 Subject: [PATCH 494/872] Updated readme (#539) --- Documentation/compatibility/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/Documentation/compatibility/README.md b/Documentation/compatibility/README.md index 4d7fefc5a..8aae91d82 100644 --- a/Documentation/compatibility/README.md +++ b/Documentation/compatibility/README.md @@ -21,6 +21,7 @@ Please help us improve the [.NET Framework Application Compatibility documents]( - [ASP.NET Accessibility Improvements in .NET 4.7.1](ASPNET-accessibility-improvement.md) - [Chained Popups with StaysOpen=False ](wpf-chained-popups-with-StaysOpen-false.md) - [Default SignedXML and SignedXMS algorithms changed to SHA256](Change-SignedXML-and-SignedCMS-default-algorithms-to-SHA256.md) +- [Improved accessibility for some .NET SDK tools](WCFSDKToolsAccessibilityChangesIn4.7.1.md) - [Selector SelectionChanged event and SelectedValue property](wpf-selector-selectionchanged-and-selectedvalue.md) - [SerialPort background thread exceptions](SerialPort-background-thread-exceptions.md) - [ServiceBase doesn't propagate OnStart exceptions](ServiceBase-doesnt-propagate-OnStart-exceptions.md) From be54b698af2f318f63992eab809ee4b74a8a6da3 Mon Sep 17 00:00:00 2001 From: Ron Petrusha Date: Wed, 25 Oct 2017 12:51:47 -0700 Subject: [PATCH 495/872] Corrected category to remove duplication, generated readme (#542) --- ...-an-ArgumentException-if-an-addressHeader-element-is-null.md | 2 +- .../WCF-MsmqSecureHashAlgorithm-default-value-is-now-SHA256.md | 2 +- .../WCF-PipeConnection.GetHashAlgorithm-now-uses-SHA256.md | 2 +- .../compatibility/remove-ssl3-from-the-wcf-transportdefaults.md | 2 +- ...sonserializer-is-now-compatible-with-ecmascript-v6-and-v8.md | 2 +- .../wcf-message-security-unable-to-use-tls1_1-and-tls1_2.md | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/Documentation/compatibility/WCF-AddressHeaderCollection-now-throws-an-ArgumentException-if-an-addressHeader-element-is-null.md b/Documentation/compatibility/WCF-AddressHeaderCollection-now-throws-an-ArgumentException-if-an-addressHeader-element-is-null.md index d1f8ff4c4..f7d590f3a 100644 --- a/Documentation/compatibility/WCF-AddressHeaderCollection-now-throws-an-ArgumentException-if-an-addressHeader-element-is-null.md +++ b/Documentation/compatibility/WCF-AddressHeaderCollection-now-throws-an-ArgumentException-if-an-addressHeader-element-is-null.md @@ -27,7 +27,7 @@ If you encounter compatibility issues with this change on the .NET Framework 4.7 * `M:System.ServiceModel.Channels.AddressHeaderCollection.#ctor(System.Collections.Generic.IEnumerable{System.ServiceModel.Channels.AddressHeader})` ### Category -* Windows Communication Foundation (WCF) +Windows Communication Foundation (WCF) diff --git a/Documentation/compatibility/serialization-of-control-characters-with-datacontractjsonserializer-is-now-compatible-with-ecmascript-v6-and-v8.md b/Documentation/compatibility/serialization-of-control-characters-with-datacontractjsonserializer-is-now-compatible-with-ecmascript-v6-and-v8.md index 2f54a0c05..95ad659b9 100644 --- a/Documentation/compatibility/serialization-of-control-characters-with-datacontractjsonserializer-is-now-compatible-with-ecmascript-v6-and-v8.md +++ b/Documentation/compatibility/serialization-of-control-characters-with-datacontractjsonserializer-is-now-compatible-with-ecmascript-v6-and-v8.md @@ -39,6 +39,6 @@ following line to the `` section of the app.config or web.config file: * `M:System.Runtime.Serialization.Json.DataContractJsonSerializer.WriteObject(System.Xml.XmlWriter,System.Object)` ### Category -* Windows Communication Foundation (WCF) +Windows Communication Foundation (WCF) diff --git a/Documentation/compatibility/wcf-message-security-unable-to-use-tls1_1-and-tls1_2.md b/Documentation/compatibility/wcf-message-security-unable-to-use-tls1_1-and-tls1_2.md index 94ee93f8a..ed0368215 100644 --- a/Documentation/compatibility/wcf-message-security-unable-to-use-tls1_1-and-tls1_2.md +++ b/Documentation/compatibility/wcf-message-security-unable-to-use-tls1_1-and-tls1_2.md @@ -25,6 +25,6 @@ In the .NET Framework 4.7, support for TLS1.1 and TLS1.2 in WCF message security ``` ### Category -* Windows Communication Foundation (WCF) +Windows Communication Foundation (WCF) From e78d63a4e16ccb733c8e853a3876583de504ca7c Mon Sep 17 00:00:00 2001 From: Ron Petrusha Date: Wed, 25 Oct 2017 13:17:26 -0700 Subject: [PATCH 496/872] Fixed bad links (#543) --- .../ServiceBase-doesnt-propagate-OnStart-exceptions.md | 4 ++-- .../SignedXml.GetPublicKey-returns-RSACng-on-net462.md | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Documentation/compatibility/ServiceBase-doesnt-propagate-OnStart-exceptions.md b/Documentation/compatibility/ServiceBase-doesnt-propagate-OnStart-exceptions.md index 0b45c0a43..9a81aabc4 100644 --- a/Documentation/compatibility/ServiceBase-doesnt-propagate-OnStart-exceptions.md +++ b/Documentation/compatibility/ServiceBase-doesnt-propagate-OnStart-exceptions.md @@ -13,9 +13,9 @@ NotPlanned ### Change Description -In the .NET Framework 4.7 and earlier versions, exceptions thrown on service startup are not propagated to the caller of . +In the .NET Framework 4.7 and earlier versions, exceptions thrown on service startup are not propagated to the caller of . -Starting with applications that target the .NET Framework 4.7.1, the runtime propagates exceptions to for services that fail to start. +Starting with applications that target the .NET Framework 4.7.1, the runtime propagates exceptions to for services that fail to start. - [x] Quirked - [ ] Build-time break diff --git a/Documentation/compatibility/SignedXml.GetPublicKey-returns-RSACng-on-net462.md b/Documentation/compatibility/SignedXml.GetPublicKey-returns-RSACng-on-net462.md index 70443b8b9..a892a3723 100644 --- a/Documentation/compatibility/SignedXml.GetPublicKey-returns-RSACng-on-net462.md +++ b/Documentation/compatibility/SignedXml.GetPublicKey-returns-RSACng-on-net462.md @@ -14,7 +14,7 @@ NotPlanned ### Change Description -Starting with the .NET Framework 4.6.2, the concrete type of the object returned by the method changed (without a quirk) from a CryptoServiceProvider implementation to a Cng implementation. This is because the implementation changed from using `certificate.PublicKey.Key` to using the internal `certificate.GetAnyPublicKey` which forwards to . +Starting with the .NET Framework 4.6.2, the concrete type of the object returned by the method changed (without a quirk) from a CryptoServiceProvider implementation to a Cng implementation. This is because the implementation changed from using `certificate.PublicKey.Key` to using the internal `certificate.GetAnyPublicKey` which forwards to . - [x] Quirked - [ ] Build-time break From 8bcf7086d7e8661b20ccc9b83c5a3880515fb82b Mon Sep 17 00:00:00 2001 From: Connie Yau Date: Wed, 25 Oct 2017 15:38:16 -0700 Subject: [PATCH 497/872] Making relative link use home operation (#544) --- Documentation/compatibility/workflow-3_0-types-are-obsolete.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Documentation/compatibility/workflow-3_0-types-are-obsolete.md b/Documentation/compatibility/workflow-3_0-types-are-obsolete.md index c6914f223..cc73fd6d1 100644 --- a/Documentation/compatibility/workflow-3_0-types-are-obsolete.md +++ b/Documentation/compatibility/workflow-3_0-types-are-obsolete.md @@ -16,7 +16,7 @@ Windows Workflow Foundation (WWF) 3.0 APIs (those from the System.Workflow names - [x] Build-time break ### Recommended Action -New WWF 4.0 APIs (in System.Activities) should be used instead. An example of using the new APIs can be found [here](../../../../framework/windows-workflow-foundation/how-to-update-the-definition-of-a-running-workflow-instance.md) and further guidance is available [here](http://blogs.msdn.com/b/workflowteam/archive/2012/02/08/deprecatingwf3.aspx). Alternatively, since the WWF 3.0 APIs are still supported, they may be used and the build-time warning avoided either by suppressing it or by using an older compiler. +New WWF 4.0 APIs (in System.Activities) should be used instead. An example of using the new APIs can be found [here](~/docs/framework/windows-workflow-foundation/how-to-update-the-definition-of-a-running-workflow-instance.md) and further guidance is available [here](http://blogs.msdn.com/b/workflowteam/archive/2012/02/08/deprecatingwf3.aspx). Alternatively, since the WWF 3.0 APIs are still supported, they may be used and the build-time warning avoided either by suppressing it or by using an older compiler. ### Affected APIs * Not detectable via API analysis From d51667353f1fb094ea7cb695ebe38dab51745425 Mon Sep 17 00:00:00 2001 From: Ron Petrusha Date: Wed, 25 Oct 2017 16:22:06 -0700 Subject: [PATCH 498/872] Link fixes (#545) * fixed xrefs and links * reverted change --- .../ServiceBase-doesnt-propagate-OnStart-exceptions.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Documentation/compatibility/ServiceBase-doesnt-propagate-OnStart-exceptions.md b/Documentation/compatibility/ServiceBase-doesnt-propagate-OnStart-exceptions.md index 9a81aabc4..27210e6ba 100644 --- a/Documentation/compatibility/ServiceBase-doesnt-propagate-OnStart-exceptions.md +++ b/Documentation/compatibility/ServiceBase-doesnt-propagate-OnStart-exceptions.md @@ -13,9 +13,9 @@ NotPlanned ### Change Description -In the .NET Framework 4.7 and earlier versions, exceptions thrown on service startup are not propagated to the caller of . +In the .NET Framework 4.7 and earlier versions, exceptions thrown on service startup are not propagated to the caller of . -Starting with applications that target the .NET Framework 4.7.1, the runtime propagates exceptions to for services that fail to start. +Starting with applications that target the .NET Framework 4.7.1, the runtime propagates exceptions to for services that fail to start. - [x] Quirked - [ ] Build-time break From 9593dbe9c77b5003d29ed8a65a6b815997440d3f Mon Sep 17 00:00:00 2001 From: Alex Ghiondea Date: Wed, 25 Oct 2017 19:10:24 -0700 Subject: [PATCH 499/872] Update the issue with the list of types potentially impacted (#538) * Update the issue with the list of types potentially impacted * Update 510901-BCL Apps targeting .NET-4.6.1 that use .NET Standard libraries might be broken when running on .NET 4.7.1.md * Update 510901-BCL Apps targeting .NET-4.6.1 that use .NET Standard libraries might be broken when running on .NET 4.7.1.md * Update 510901-BCL Apps targeting .NET-4.6.1 that use .NET Standard libraries might be broken when running on .NET 4.7.1.md * Update 510901-BCL Apps targeting .NET-4.6.1 that use .NET Standard libraries might be broken when running on .NET 4.7.1.md --- ...ht be broken when running on .NET 4.7.1.md | 41 ++++++++++++++++++- 1 file changed, 39 insertions(+), 2 deletions(-) diff --git a/releases/net471/KnownIssues/510901-BCL Apps targeting .NET-4.6.1 that use .NET Standard libraries might be broken when running on .NET 4.7.1.md b/releases/net471/KnownIssues/510901-BCL Apps targeting .NET-4.6.1 that use .NET Standard libraries might be broken when running on .NET 4.7.1.md index e1301a784..65ef31949 100644 --- a/releases/net471/KnownIssues/510901-BCL Apps targeting .NET-4.6.1 that use .NET Standard libraries might be broken when running on .NET 4.7.1.md +++ b/releases/net471/KnownIssues/510901-BCL Apps targeting .NET-4.6.1 that use .NET Standard libraries might be broken when running on .NET 4.7.1.md @@ -2,16 +2,53 @@ ## Symptoms -Applications that target the .NET Framework 4.6.1 and use .NET Standard libraries may experience exceptions when running on the .NET Framework 4.7.1 +Applications that target the .NET Framework 4.6.1 and use .NET Standard libraries may experience System.TypeLoadException exceptions when running on the .NET Framework 4.7.1 ## Cause The .NET Framework 4.7.1 adds support for .NET Standard in-box. As part of this change, a few assemblies that used to ship independently from the .NET Framework have now been added to the .NET Framework. As these .NET Standard assemblies were not part of the .NET Framework prior to .NET 4.7.1, they were deployed with the application, and a binding redirect was added to the application's app.config file. -When running on the .NET Framework 4.7.1, where the assemblies are now part of the Framework, the application now has two types with different identities, and that leads to a . One type comes from the app-local assembly, and the other one comes from the .NET Framework assembly. +When running on the .NET Framework 4.7.1, where the assemblies are now part of the Framework, the application now has two types with different identities, and that leads to a TypeLoadException. One type comes from the app-local assembly, and the other one comes from the .NET Framework assembly. Also reported here: https://github.com/Microsoft/dotnet-framework-early-access/issues/9 +## Impact + +The following types are potentially impacted by this issue. + +- System.Data.Common.DbColumn +- System.Data.Common.DbDataReaderExtensions +- System.Data.Common.IDbColumnSchemaGenerator +- System.Diagnostics.StackFrameExtensions +- System.Globalization.GlobalizationExtensions +- System.Net.Sockets.SocketReceiveFromResult +- System.Net.Sockets.SocketReceiveMessageFromResult +- System.Net.Sockets.SocketTaskExtensions +- System.Runtime.CompilerServices.TupleElementNamesAttribute +- System.Runtime.InteropServices.Architecture +- System.Runtime.InteropServices.OSPlatform +- System.Runtime.InteropServices.RuntimeInformation +- System.Runtime.Serialization.DataContractSerializerExtensions +- System.Runtime.Serialization.ISerializationSurrogateProvider +- System.Security.Cryptography.ECCurve +- System.Security.Cryptography.ECParameters +- System.Security.Cryptography.ECPoint +- System.Security.Cryptography.IncrementalHash +- System.Security.SecureStringMarshal +- System.StringNormalizationExtensions +- System.Threading.PreAllocatedOverlapped +- System.Threading.ThreadPoolBoundHandle +- System.TupleExtensions +- System.ValueTuple +- System.ValueTuple`1 +- System.ValueTuple`2 +- System.ValueTuple`3 +- System.ValueTuple`4 +- System.ValueTuple`5 +- System.ValueTuple`6 +- System.ValueTuple`7 +- System.ValueTuple`8 +- System.Xml.XPath.XDocumentExtensions ## Workarounds From bbd66c9dc4a9c7ae88f4672f859fabdb17240dad Mon Sep 17 00:00:00 2001 From: Alex Ghiondea Date: Thu, 26 Oct 2017 11:37:09 -0700 Subject: [PATCH 500/872] Update 510901-BCL Apps targeting .NET-4.6.1 that use .NET Standard libraries might be broken when running on .NET 4.7.1.md (#546) --- ...dard libraries might be broken when running on .NET 4.7.1.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/releases/net471/KnownIssues/510901-BCL Apps targeting .NET-4.6.1 that use .NET Standard libraries might be broken when running on .NET 4.7.1.md b/releases/net471/KnownIssues/510901-BCL Apps targeting .NET-4.6.1 that use .NET Standard libraries might be broken when running on .NET 4.7.1.md index 65ef31949..bf231bfe8 100644 --- a/releases/net471/KnownIssues/510901-BCL Apps targeting .NET-4.6.1 that use .NET Standard libraries might be broken when running on .NET 4.7.1.md +++ b/releases/net471/KnownIssues/510901-BCL Apps targeting .NET-4.6.1 that use .NET Standard libraries might be broken when running on .NET 4.7.1.md @@ -54,5 +54,5 @@ The following types are potentially impacted by this issue. There are two ways to work around this issue: - When running on .NET Framework 4.7.1, remove the binding redirects from the app.config file for the assemblies that are now part of the .NET Framework. - - Re-target your application to target the .NET Framwork 4.7.1 + - Re-target your application to target the .NET Framwork 4.7 or .NET Framework 4.7.1. From cbbc8b5dcb099828b2e45bc584e453a8e9d0e6aa Mon Sep 17 00:00:00 2001 From: David Desmaisons Date: Wed, 1 Nov 2017 16:26:16 -0200 Subject: [PATCH 501/872] Add Neutronium reference (#547) * Adding Neutronium link * As by PR --- dotnet-developer-projects.md | 1 + 1 file changed, 1 insertion(+) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 1f79669f3..73c6327e6 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -342,6 +342,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [Material Design in XAML Toolkit](https://github.com/ButchersBoy/MaterialDesignInXamlToolkit) - WPF/XAML resources, styles & templates for creating applications using Material Design * [Mono XWT](https://github.com/mono/xwt) - A cross-platform UI toolkit for creating desktop apps * [UWP Community Toolkit](https://github.com/Microsoft/UWPCommunityToolkit) - The UWP Community Toolkit is a collection of helper functions, custom controls, and app services. It simplifies and demonstrates common developer tasks building UWP apps for Windows 10. + * [Neutronium](https://github.com/NeutroniumCore/Neutronium) - Neutronium is a library to create .NET desktop applications using HTML, CSS and javascript. It uses the MVVM pattern exactly the same way as WPF applications. ## Windows Services * [King.Service](https://github.com/jefking/King.Service) - Task scheduling for Azure and Windows From d90060b82f080b809cb760714c153ad0d906d3fa Mon Sep 17 00:00:00 2001 From: Alex Ghiondea Date: Wed, 8 Nov 2017 17:17:57 -0800 Subject: [PATCH 502/872] =?UTF-8?q?Create=20521954=20-=20BCL=20CultureAwar?= =?UTF-8?q?eComparer=20with=20ignore=20casing=20on=20serial=E2=80=A6=20(#5?= =?UTF-8?q?53)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Create 521954 - BCL CultureAwareComparer with ignore casing on serialized on previous versions of .NET do not correctly deserialize on .NET 4.7.1.md * Update 521954 - BCL CultureAwareComparer with ignore casing on serialized on previous versions of .NET do not correctly deserialize on .NET 4.7.1.md * Update 521954 - BCL CultureAwareComparer with ignore casing on serialized on previous versions of .NET do not correctly deserialize on .NET 4.7.1.md --- ...not correctly deserialize on .NET 4.7.1.md | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 releases/net471/KnownIssues/521954 - BCL CultureAwareComparer with ignore casing on serialized on previous versions of .NET do not correctly deserialize on .NET 4.7.1.md diff --git a/releases/net471/KnownIssues/521954 - BCL CultureAwareComparer with ignore casing on serialized on previous versions of .NET do not correctly deserialize on .NET 4.7.1.md b/releases/net471/KnownIssues/521954 - BCL CultureAwareComparer with ignore casing on serialized on previous versions of .NET do not correctly deserialize on .NET 4.7.1.md new file mode 100644 index 000000000..172fd47fa --- /dev/null +++ b/releases/net471/KnownIssues/521954 - BCL CultureAwareComparer with ignore casing on serialized on previous versions of .NET do not correctly deserialize on .NET 4.7.1.md @@ -0,0 +1,22 @@ +# CultureAwareComparer with ignore casing serialized on previous versions of .NET Framework does not correctly deserialize on .NET Framework 4.7.1 + +## Symptoms + +When deserialzing a CultureAwareComparer that was serialized using ignore case on a previous version of .NET Framework on a machine running .NET Framework 4.7.1, the comparer becomes case sensitive. + +## Cause + +In the .NET Framework 4.7.1 we added the ability to specify more comparer options when doing a culture-aware comparison. +As part of that change we introduced a new field on the comparer that holds the information about what kind of comparison is requested. + +When that type, coming from a version of .NET Framework prior to 4.7.1 is deserialized on a .NET Framework 4.7.1 machine, the private field introduced in the .NET Framework 4.7.1 is reset to zero, which makes the comparer case sensitive. + +## Impact + +The following 2 comparers are susceptible to this issue. These comparers are usually used with collection types like Dictionary and Hashtable. +P:System.StringComparer.InvariantCultureIgnoreCase +P:System.StringComparer.CurrentCultureIgnoreCase + +## Workarounds + +Ensure that both serialization and deserialization occurs on systems running a version of the .NET Framework starting with 4.7.1. From 61d97d815f862db15232de95344444eed4797bc9 Mon Sep 17 00:00:00 2001 From: Vivek Mishra Date: Wed, 8 Nov 2017 17:20:10 -0800 Subject: [PATCH 503/872] Update known issues for #521954 --- releases/net471/dotnet471-known-issues.md | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/releases/net471/dotnet471-known-issues.md b/releases/net471/dotnet471-known-issues.md index b1afb4970..fb16c5735 100644 --- a/releases/net471/dotnet471-known-issues.md +++ b/releases/net471/dotnet471-known-issues.md @@ -4,8 +4,9 @@ This document lists the known issues that you may experience after you install the Microsoft .NET Framework 4.7.1. ## Product issues for the .NET Framework 4.7.1 -- [479874 - WPF Touch Stops Working After Rapid/Prolonged Use Of Popups](https://github.com/Microsoft/dotnet/blob/master/releases/net471/KnownIssues/479874-WPF%20Touch%20Stops%20Working%20After%20Prolonged%20Use%20of%20Popups.md) -- [481090 - WPF Touch generates a NullReferenceException in WispLogic.ProcessInputReport](https://github.com/Microsoft/dotnet/blob/master/releases/net471/KnownIssues/481090-WPF%20Touch%20generates%20NullReferenceException%20in%20ProcessInputReport.md) -- [489937 - WPF Touch/Stylus Generates AccessViolations and Heap Corruption in GetPenEventMultiple](https://github.com/Microsoft/dotnet/blob/master/releases/net471/KnownIssues/489937-WPF%20Touch%20and%20Stylus%20AccessViolation%20in%20GetPenEventMultiple.md) -- [493108 - WPF InvalidCastException when displaying a checked MenuItem](https://github.com/Microsoft/dotnet/blob/master/releases/net471/KnownIssues/493108-WPF%20InvalidCastException%20when%20displaying%20a%20checked%20MenuItem.md) -- [510901 - Applications targeting .NET 4.6.1 that use .NET Standard libraries might be broken when running on .NET 4.7.1](https://github.com/Microsoft/dotnet/blob/master/releases/net471/KnownIssues/510901-BCL%20Apps%20targeting%20.NET-4.6.1%20that%20use%20.NET%20Standard%20libraries%20might%20be%20broken%20when%20running%20on%20.NET%204.7.1.md) +- [479874 - WPF - Touch Stops Working After Rapid/Prolonged Use Of Popups](https://github.com/Microsoft/dotnet/blob/master/releases/net471/KnownIssues/479874-WPF%20Touch%20Stops%20Working%20After%20Prolonged%20Use%20of%20Popups.md) +- [481090 - WPF - Touch generates a NullReferenceException in WispLogic.ProcessInputReport](https://github.com/Microsoft/dotnet/blob/master/releases/net471/KnownIssues/481090-WPF%20Touch%20generates%20NullReferenceException%20in%20ProcessInputReport.md) +- [489937 - WPF - Touch/Stylus Generates AccessViolations and Heap Corruption in GetPenEventMultiple](https://github.com/Microsoft/dotnet/blob/master/releases/net471/KnownIssues/489937-WPF%20Touch%20and%20Stylus%20AccessViolation%20in%20GetPenEventMultiple.md) +- [493108 - WPF - InvalidCastException when displaying a checked MenuItem](https://github.com/Microsoft/dotnet/blob/master/releases/net471/KnownIssues/493108-WPF%20InvalidCastException%20when%20displaying%20a%20checked%20MenuItem.md) +- [510901 - BCL - Applications targeting .NET 4.6.1 that use .NET Standard libraries might be broken when running on .NET 4.7.1](https://github.com/Microsoft/dotnet/blob/master/releases/net471/KnownIssues/510901-BCL%20Apps%20targeting%20.NET-4.6.1%20that%20use%20.NET%20Standard%20libraries%20might%20be%20broken%20when%20running%20on%20.NET%204.7.1.md) +- [521954 - BCL - CultureAwareComparer with ignore casing serialized on previous versions of .NET Framework does not correctly deserialize on .NET Framework 4.7.1](https://github.com/Microsoft/dotnet/blob/master/releases/net471/KnownIssues/521954%20-%20BCL%20CultureAwareComparer%20with%20ignore%20casing%20on%20serialized%20on%20previous%20versions%20of%20.NET%20do%20not%20correctly%20deserialize%20on%20.NET%204.7.1.md) From 5a750ad5a7b57af60e221d336d061f66d8b70c2a Mon Sep 17 00:00:00 2001 From: Alex Ghiondea Date: Thu, 9 Nov 2017 10:02:22 -0800 Subject: [PATCH 504/872] =?UTF-8?q?Update=20521954=20-=20BCL=20CultureAwar?= =?UTF-8?q?eComparer=20with=20ignore=20casing=20on=20serial=E2=80=A6=20(#5?= =?UTF-8?q?55)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Update 521954 - BCL CultureAwareComparer with ignore casing on serialized on previous versions of .NET do not correctly deserialize on .NET 4.7.1.md * Update 521954 - BCL CultureAwareComparer with ignore casing on serialized on previous versions of .NET do not correctly deserialize on .NET 4.7.1.md --- ...rsions of .NET do not correctly deserialize on .NET 4.7.1.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/releases/net471/KnownIssues/521954 - BCL CultureAwareComparer with ignore casing on serialized on previous versions of .NET do not correctly deserialize on .NET 4.7.1.md b/releases/net471/KnownIssues/521954 - BCL CultureAwareComparer with ignore casing on serialized on previous versions of .NET do not correctly deserialize on .NET 4.7.1.md index 172fd47fa..ae7ad8616 100644 --- a/releases/net471/KnownIssues/521954 - BCL CultureAwareComparer with ignore casing on serialized on previous versions of .NET do not correctly deserialize on .NET 4.7.1.md +++ b/releases/net471/KnownIssues/521954 - BCL CultureAwareComparer with ignore casing on serialized on previous versions of .NET do not correctly deserialize on .NET 4.7.1.md @@ -20,3 +20,5 @@ P:System.StringComparer.CurrentCultureIgnoreCase ## Workarounds Ensure that both serialization and deserialization occurs on systems running a version of the .NET Framework starting with 4.7.1. + +We are actively working on an update to address this issue and we will update this document with a link to it once it becomes available. From 597cc558e5325b553b960be25097671dcc0063a9 Mon Sep 17 00:00:00 2001 From: Alex Ghiondea Date: Fri, 10 Nov 2017 13:55:44 -0800 Subject: [PATCH 505/872] Update 521954 - BCL CultureAwareComparer with ignore casing on serialized on previous versions of .NET do not correctly deserialize on .NET 4.7.1.md (#558) LGTM --- ...ns of .NET do not correctly deserialize on .NET 4.7.1.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/releases/net471/KnownIssues/521954 - BCL CultureAwareComparer with ignore casing on serialized on previous versions of .NET do not correctly deserialize on .NET 4.7.1.md b/releases/net471/KnownIssues/521954 - BCL CultureAwareComparer with ignore casing on serialized on previous versions of .NET do not correctly deserialize on .NET 4.7.1.md index ae7ad8616..95e1b4691 100644 --- a/releases/net471/KnownIssues/521954 - BCL CultureAwareComparer with ignore casing on serialized on previous versions of .NET do not correctly deserialize on .NET 4.7.1.md +++ b/releases/net471/KnownIssues/521954 - BCL CultureAwareComparer with ignore casing on serialized on previous versions of .NET do not correctly deserialize on .NET 4.7.1.md @@ -21,4 +21,8 @@ P:System.StringComparer.CurrentCultureIgnoreCase Ensure that both serialization and deserialization occurs on systems running a version of the .NET Framework starting with 4.7.1. -We are actively working on an update to address this issue and we will update this document with a link to it once it becomes available. +If you are running on Windows Fall Creators Update, an update is available that addresses this issue. Select one of the following links based on your processor architecture: + +x86: https://go.microsoft.com/fwlink/?linkid=862758 + +x64: https://go.microsoft.com/fwlink/?linkid=862762 From 09fad71e0ed063c5ac3ac9fe478b47bc1edef073 Mon Sep 17 00:00:00 2001 From: Vivek Mishra Date: Fri, 10 Nov 2017 13:56:42 -0800 Subject: [PATCH 506/872] Update 521954 - BCL CultureAwareComparer with ignore casing on serialized on previous versions of .NET do not correctly deserialize on .NET 4.7.1.md --- ...rsions of .NET do not correctly deserialize on .NET 4.7.1.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/releases/net471/KnownIssues/521954 - BCL CultureAwareComparer with ignore casing on serialized on previous versions of .NET do not correctly deserialize on .NET 4.7.1.md b/releases/net471/KnownIssues/521954 - BCL CultureAwareComparer with ignore casing on serialized on previous versions of .NET do not correctly deserialize on .NET 4.7.1.md index 95e1b4691..ce4234757 100644 --- a/releases/net471/KnownIssues/521954 - BCL CultureAwareComparer with ignore casing on serialized on previous versions of .NET do not correctly deserialize on .NET 4.7.1.md +++ b/releases/net471/KnownIssues/521954 - BCL CultureAwareComparer with ignore casing on serialized on previous versions of .NET do not correctly deserialize on .NET 4.7.1.md @@ -21,7 +21,7 @@ P:System.StringComparer.CurrentCultureIgnoreCase Ensure that both serialization and deserialization occurs on systems running a version of the .NET Framework starting with 4.7.1. -If you are running on Windows Fall Creators Update, an update is available that addresses this issue. Select one of the following links based on your processor architecture: +If you are running on Windows 10 Fall Creators Update, an update is available that addresses this issue. Select one of the following links based on your processor architecture: x86: https://go.microsoft.com/fwlink/?linkid=862758 From 8797db395bfa9ea2f76fad6fef4f391c5994aa86 Mon Sep 17 00:00:00 2001 From: Joseph Musser Date: Fri, 10 Nov 2017 18:05:46 -0500 Subject: [PATCH 507/872] Typo fix (#554) --- ...rsions of .NET do not correctly deserialize on .NET 4.7.1.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/releases/net471/KnownIssues/521954 - BCL CultureAwareComparer with ignore casing on serialized on previous versions of .NET do not correctly deserialize on .NET 4.7.1.md b/releases/net471/KnownIssues/521954 - BCL CultureAwareComparer with ignore casing on serialized on previous versions of .NET do not correctly deserialize on .NET 4.7.1.md index ce4234757..f9b0f13e5 100644 --- a/releases/net471/KnownIssues/521954 - BCL CultureAwareComparer with ignore casing on serialized on previous versions of .NET do not correctly deserialize on .NET 4.7.1.md +++ b/releases/net471/KnownIssues/521954 - BCL CultureAwareComparer with ignore casing on serialized on previous versions of .NET do not correctly deserialize on .NET 4.7.1.md @@ -2,7 +2,7 @@ ## Symptoms -When deserialzing a CultureAwareComparer that was serialized using ignore case on a previous version of .NET Framework on a machine running .NET Framework 4.7.1, the comparer becomes case sensitive. +When deserializing a CultureAwareComparer that was serialized using ignore case on a previous version of .NET Framework on a machine running .NET Framework 4.7.1, the comparer becomes case sensitive. ## Cause From ec5efd25f75a71b43812bc8e9b97abeb831d1a06 Mon Sep 17 00:00:00 2001 From: Vivek Mishra Date: Mon, 13 Nov 2017 16:37:18 -0800 Subject: [PATCH 508/872] Add known issue for 523633 (#559) * Add known issue for 523633 * Add known issue for 523633 * Fixes for review comments for 523633 * Fixes for review comments for 523633 --- ...indows 10 gets the product in bad state.md | 23 +++++++++++++++++++ releases/net471/dotnet471-known-issues.md | 1 + 2 files changed, 24 insertions(+) create mode 100644 releases/net471/KnownIssues/523633 - Setup - OS upgrade to Windows 10 gets the product in bad state.md diff --git a/releases/net471/KnownIssues/523633 - Setup - OS upgrade to Windows 10 gets the product in bad state.md b/releases/net471/KnownIssues/523633 - Setup - OS upgrade to Windows 10 gets the product in bad state.md new file mode 100644 index 000000000..499b8cd55 --- /dev/null +++ b/releases/net471/KnownIssues/523633 - Setup - OS upgrade to Windows 10 gets the product in bad state.md @@ -0,0 +1,23 @@ +# Application crashes occur when running on the .NET Framework 4.7.1 after upgrading from Windows 10 Anniversary Update to Windows 10 Creators Update + +## Symptoms +When you install the .NET Framework 4.7.1 on Windows 10 Anniversary Update (version 1607) and your system is upgraded to Windows 10 Creators Update (version 1703), applications that depend on any version of the .NET Framework 4.x may experience unexpected crashes. + +Consider the following scenario: + 1. On a Windows 10 Anniversary Update (version 1607) machine, install the .NET Framework 4.7.1. + 2. Upgrade the machine to Windows 10 Creators Update (version 1703) from Windows Update. + 3. Run an application that uses any version of .NET 4.X. + 4. The application experiences an unexpected crash. + +Note: Windows 10 Anniversary Update (version 1607) comes pre-installed with .NET Framework 4.6.2, and you can install .NET 4.7.1 on it using an offline (or web) installer. Similarly, Windows 10 Creators Update (version 1703) comes pre-installed with .NET Framework 4.7. + +## Cause +This issue occurs because the .NET Framework 4.7.1 product installation gets into a corrupted state after the OS upgrade. The OS upgrade preserves all the .NET 4.7.1 assemblies in the GAC as is, but the in-box assemblies are reverted to the in-box version (4.7). Due to this mixed state, the .NET applications exhibit unexpected behaviors. + +## Impact +Applications may experience unexpected crashes in certain scenarios. + +Note: This issue does not occur when you do an upgrade from Windows 10 Anniversary Update (version 1607) to Windows 10 Fall Creators Update (version 1709). + +## Resolution +To get the .NET Framework 4.7.1 product into a working state, you need to reinstall .NET 4.7.1. diff --git a/releases/net471/dotnet471-known-issues.md b/releases/net471/dotnet471-known-issues.md index fb16c5735..11cc97701 100644 --- a/releases/net471/dotnet471-known-issues.md +++ b/releases/net471/dotnet471-known-issues.md @@ -10,3 +10,4 @@ This document lists the known issues that you may experience after you install t - [493108 - WPF - InvalidCastException when displaying a checked MenuItem](https://github.com/Microsoft/dotnet/blob/master/releases/net471/KnownIssues/493108-WPF%20InvalidCastException%20when%20displaying%20a%20checked%20MenuItem.md) - [510901 - BCL - Applications targeting .NET 4.6.1 that use .NET Standard libraries might be broken when running on .NET 4.7.1](https://github.com/Microsoft/dotnet/blob/master/releases/net471/KnownIssues/510901-BCL%20Apps%20targeting%20.NET-4.6.1%20that%20use%20.NET%20Standard%20libraries%20might%20be%20broken%20when%20running%20on%20.NET%204.7.1.md) - [521954 - BCL - CultureAwareComparer with ignore casing serialized on previous versions of .NET Framework does not correctly deserialize on .NET Framework 4.7.1](https://github.com/Microsoft/dotnet/blob/master/releases/net471/KnownIssues/521954%20-%20BCL%20CultureAwareComparer%20with%20ignore%20casing%20on%20serialized%20on%20previous%20versions%20of%20.NET%20do%20not%20correctly%20deserialize%20on%20.NET%204.7.1.md) +- [523633 - Setup - Application crashes occur when running on the .NET Framework 4.7.1 after upgrading from Windows 10 Anniversary Update to Windows 10 Creators Update](https://github.com/Microsoft/dotnet/blob/master/releases/net471/KnownIssues/523633%20-%20Setup%20-%20OS%20upgrade%20to%20Windows%2010%20gets%20the%20product%20in%20bad%20state.md) \ No newline at end of file From 9dee1a12fb804535402003fb7ba8a68ec3a1a941 Mon Sep 17 00:00:00 2001 From: Ron Petrusha Date: Wed, 15 Nov 2017 16:05:11 -0800 Subject: [PATCH 509/872] Changes so content syncs with PR #3686 in dotnet/docs (#561) --- .../no-longer-able-to-set-enableviewstatemac-to-false.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Documentation/compatibility/no-longer-able-to-set-enableviewstatemac-to-false.md b/Documentation/compatibility/no-longer-able-to-set-enableviewstatemac-to-false.md index b855480c8..5e9aad401 100644 --- a/Documentation/compatibility/no-longer-able-to-set-enableviewstatemac-to-false.md +++ b/Documentation/compatibility/no-longer-able-to-set-enableviewstatemac-to-false.md @@ -10,13 +10,13 @@ Major Available ### Change Description -ASP.NET no longer allows developers to specify `` or `<@Page EnableViewStateMac="false" %>`. The view state message authentication code (MAC) is now enforced for all requests with embedded view state. Only apps that explicitly set the EnableViewStateMac property to false are affected. +ASP.NET no longer allows developers to specify `` or `<@Page EnableViewStateMac="false" %>`. The view state message authentication code (MAC) is now enforced for all requests with embedded view state. Only apps that explicitly set the EnableViewStateMac property to `false` are affected. - [ ] Quirked - [ ] Build-time break ### Recommended Action -EnableViewStateMac must be assumed to be true, and any resulting MAC errors must be resolved (as explained in [this](https://support.microsoft.com/en-us/kb/2915218) guidance, which contains multiple resolutions depending on the specifics of what is causing MAC errors). +EnableViewStateMac must be assumed to be true, and any resulting MAC errors must be resolved (as explained in [this guidance](https://support.microsoft.com/en-us/kb/2915218), which contains multiple resolutions depending on the specifics of what is causing MAC errors). ### Affected APIs * Not detectable via API analysis From 9f7fc31b743f56f9c6f71b4fdcc2f6351eedff04 Mon Sep 17 00:00:00 2001 From: Laszlo Magyar Date: Thu, 16 Nov 2017 01:58:21 +0100 Subject: [PATCH 510/872] Added Core WF and Orleans.Activities (#562) --- dotnet-developer-projects.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 73c6327e6..281c17fa9 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -368,6 +368,8 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [Orleans](https://github.com/dotnet/orleans) - Framework that provides a straight-forward approach to building distributed high-scale computing applications using virtual actor model. ## Windows Workflow + * [Core WF](https://github.com/dmetzgar/corewf) - WF runtime ported to work on .NET Core. + * [Orleans.Activities](https://github.com/OrleansContrib/Orleans.Activities) - WF over [Microsoft Orleans](https://github.com/dotnet/orleans) framework. * [Workflow Extractor](https://github.com/punitganshani/WorkflowExtractor) - Document Windows Workflow logic into a Word document or Excel sheet. ## Amazon Echo/Alexa Integration From 7fb8d7a030cab2687f7e11a3218c22e6bd11f05a Mon Sep 17 00:00:00 2001 From: Lee Coward Date: Wed, 15 Nov 2017 18:38:09 -0800 Subject: [PATCH 511/872] Update platforms.json Update .NET Core entries to include the November Update release. --- data/platforms.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/data/platforms.json b/data/platforms.json index 3505e75d4..264c560c3 100644 --- a/data/platforms.json +++ b/data/platforms.json @@ -55,7 +55,7 @@ "runtime": [ { "name": ".NET Core 2.0", - "link": "https://github.com/dotnet/core/blob/master/release-notes/download-archives/2.0.0-download.md" + "link": "https://github.com/dotnet/core/blob/master/release-notes/download-archives/2.0.3.md" } ] }, @@ -74,11 +74,11 @@ "runtime": [ { "name": ".NET Core 1.0", - "link": "https://github.com/dotnet/core/releases/tag/1.0.4" + "link": "https://github.com/dotnet/core/releases/tag/1.0.8" }, { "name": ".NET Core 1.1", - "link": "https://github.com/dotnet/core/releases/tag/1.1.1" + "link": "https://github.com/dotnet/core/releases/tag/1.1.5" } ] }, From ff5845e306b3e255b890c102021d34ab53d34b42 Mon Sep 17 00:00:00 2001 From: Ron Petrusha Date: Mon, 20 Nov 2017 08:24:46 -0800 Subject: [PATCH 512/872] DeflateStream decompression app compat issue (#563) * DeflateStream decompression app compat issue * Addressed review comments, fixed typos, removed remarks * Addressed additional comments --- ...ream-uses-native-apis-for-decompression.md | 49 +++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 Documentation/compatibility/deflatestream-uses-native-apis-for-decompression.md diff --git a/Documentation/compatibility/deflatestream-uses-native-apis-for-decompression.md b/Documentation/compatibility/deflatestream-uses-native-apis-for-decompression.md new file mode 100644 index 000000000..97a82e249 --- /dev/null +++ b/Documentation/compatibility/deflatestream-uses-native-apis-for-decompression.md @@ -0,0 +1,49 @@ +## DeflateStream uses native APIs for decompression + +### Scope +Minor + +### Version Introduced +4.7.2 + +### Source Analyzer Status +NotPlanned + +### Change Description + +Starting with the .NET Framework 4.7.2, the implementation of decompression in the `T:System.IO.Compression.DeflateStream` class has changed to use native Windows APIs by default. This results in an average performance improvement of approximately 300%. All .NET applications running on machines with versions of the .NET Framework starting with version 4.7.2 will now use the native implementation. + +This change might result in some differences in behavior, which include: + +- Exception messages may be different. However, the type of exception thrown remains the same. + +- Some special situations, such as not having enough memory to complete an operation, may be handled differently. + +- [X] Quirked +- [ ] Build-time break + +### Recommended Action + +If decompression with native APIs has adversely affected the behavior of your app, you can opt out of this feature by adding the `Switch.System.IO.Compression.DoNotUseNativeZipLibraryForDecompression` switch to the `runtime` section of your app.config file and setting it to `true`: + +```xml + + + + + + +``` +### Affected APIs +`T:System.IO.Compression.DeflateStream` +`T:System.IO.Compression.GZipStream` + +### Category +Core + + + + From 1de04d65d5c1c00aeca7beb3fd71d4778ee1d249 Mon Sep 17 00:00:00 2001 From: Ron Petrusha Date: Mon, 20 Nov 2017 13:04:45 -0800 Subject: [PATCH 513/872] Changed sentence about performance (#566) --- .../deflatestream-uses-native-apis-for-decompression.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Documentation/compatibility/deflatestream-uses-native-apis-for-decompression.md b/Documentation/compatibility/deflatestream-uses-native-apis-for-decompression.md index 97a82e249..c6b82ee2e 100644 --- a/Documentation/compatibility/deflatestream-uses-native-apis-for-decompression.md +++ b/Documentation/compatibility/deflatestream-uses-native-apis-for-decompression.md @@ -11,7 +11,7 @@ NotPlanned ### Change Description -Starting with the .NET Framework 4.7.2, the implementation of decompression in the `T:System.IO.Compression.DeflateStream` class has changed to use native Windows APIs by default. This results in an average performance improvement of approximately 300%. All .NET applications running on machines with versions of the .NET Framework starting with version 4.7.2 will now use the native implementation. +Starting with the .NET Framework 4.7.2, the implementation of decompression in the `T:System.IO.Compression.DeflateStream` class has changed to use native Windows APIs by default. Typically, this results in a substantial performance improvement. All .NET applications running on machines with versions of the .NET Framework starting with version 4.7.2 will now use the native implementation. This change might result in some differences in behavior, which include: From d92fd34092c21eeefb31613912370e6746261412 Mon Sep 17 00:00:00 2001 From: Holly Muenchow Date: Tue, 21 Nov 2017 14:45:58 -0800 Subject: [PATCH 514/872] Added release notes for 6.0.2 --- releases/UWP/net-native2.0/README.md | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/releases/UWP/net-native2.0/README.md b/releases/UWP/net-native2.0/README.md index 2c64b32f8..165780090 100644 --- a/releases/UWP/net-native2.0/README.md +++ b/releases/UWP/net-native2.0/README.md @@ -4,8 +4,16 @@ You can see what was included in each .NET Native 2.0 ([Microsoft.NETCore.Univer When using Visual Studio these packages require Visual Studio 2017 Version 15.4 or later. -### 6.0.1 (October 5, 2017) +### UWP 6.0.2 (.NET Native 2.0.2) (November 20, 2017) + +#### Quality fixes +- Fixes an issue when building UWP apps that target RS3 and referenced the Microsoft Store Services SDK and Microsoft Advertising SDK or Store Engagement SDK [514498] +- Fixes Crashes due to an error in the compiler's garbage collection reporting (affects ARM apps built with .NET Native) [507618] +- Improves performance for creating new New UWP Projects. [512775] +- Fixes issues that enable Windows Application Packaging (Centennial) projects publishing scenarios [521438] +- Enables a P/Invoke feature for WindowsSDK Store in RS3 [518300] +### 6.0.1 (October 5, 2017) #### .NET Standard 2.0 Support From d3440f978399d0ef3d191360db387df880f86734 Mon Sep 17 00:00:00 2001 From: Holly Muenchow Date: Tue, 21 Nov 2017 14:53:32 -0800 Subject: [PATCH 515/872] Update README.md --- releases/UWP/net-native2.0/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/releases/UWP/net-native2.0/README.md b/releases/UWP/net-native2.0/README.md index 165780090..aa45331e6 100644 --- a/releases/UWP/net-native2.0/README.md +++ b/releases/UWP/net-native2.0/README.md @@ -4,7 +4,7 @@ You can see what was included in each .NET Native 2.0 ([Microsoft.NETCore.Univer When using Visual Studio these packages require Visual Studio 2017 Version 15.4 or later. -### UWP 6.0.2 (.NET Native 2.0.2) (November 20, 2017) +### UWP 6.0.2 (.NET Native 2.0.1) (November 20, 2017) #### Quality fixes - Fixes an issue when building UWP apps that target RS3 and referenced the Microsoft Store Services SDK and Microsoft Advertising SDK or Store Engagement SDK [514498] From 93ab130ab80868774894216803d00abc4c5a1cbf Mon Sep 17 00:00:00 2001 From: Holly Muenchow Date: Tue, 21 Nov 2017 15:38:07 -0800 Subject: [PATCH 516/872] Update README.md --- releases/UWP/net-native2.0/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/releases/UWP/net-native2.0/README.md b/releases/UWP/net-native2.0/README.md index aa45331e6..fbc953ba8 100644 --- a/releases/UWP/net-native2.0/README.md +++ b/releases/UWP/net-native2.0/README.md @@ -7,7 +7,7 @@ When using Visual Studio these packages require Visual Studio 2017 Version 15.4 ### UWP 6.0.2 (.NET Native 2.0.1) (November 20, 2017) #### Quality fixes -- Fixes an issue when building UWP apps that target RS3 and referenced the Microsoft Store Services SDK and Microsoft Advertising SDK or Store Engagement SDK [514498] +- Fixes an issue when building UWP apps that target RS3 and reference the Microsoft Store Services SDK and Microsoft Advertising SDK or Store Engagement SDK [514498] - Fixes Crashes due to an error in the compiler's garbage collection reporting (affects ARM apps built with .NET Native) [507618] - Improves performance for creating new New UWP Projects. [512775] - Fixes issues that enable Windows Application Packaging (Centennial) projects publishing scenarios [521438] From 48a67183ce658b85425ababebd72f422e418cd19 Mon Sep 17 00:00:00 2001 From: Holly Muenchow Date: Tue, 21 Nov 2017 15:48:34 -0800 Subject: [PATCH 517/872] Update README.md --- releases/UWP/net-native2.0/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/releases/UWP/net-native2.0/README.md b/releases/UWP/net-native2.0/README.md index fbc953ba8..5cbda5fc6 100644 --- a/releases/UWP/net-native2.0/README.md +++ b/releases/UWP/net-native2.0/README.md @@ -8,8 +8,8 @@ When using Visual Studio these packages require Visual Studio 2017 Version 15.4 #### Quality fixes - Fixes an issue when building UWP apps that target RS3 and reference the Microsoft Store Services SDK and Microsoft Advertising SDK or Store Engagement SDK [514498] -- Fixes Crashes due to an error in the compiler's garbage collection reporting (affects ARM apps built with .NET Native) [507618] -- Improves performance for creating new New UWP Projects. [512775] +- Fixes crashes due to an error in the compiler's garbage collection reporting (affects ARM apps built with .NET Native) [507618] +- Improves performance for creating new UWP Projects. [512775] - Fixes issues that enable Windows Application Packaging (Centennial) projects publishing scenarios [521438] - Enables a P/Invoke feature for WindowsSDK Store in RS3 [518300] From 58f594e46fb86ccaaaec282d74218ba1eb2b29bd Mon Sep 17 00:00:00 2001 From: Noah Falk Date: Tue, 21 Nov 2017 19:03:31 -0800 Subject: [PATCH 518/872] Adding Known Issue for the 471 stack trace perf issue (#567) * Adding Known Issue for the 471 stack trace perf issue * Incorporated review comments --- ...ace might run more slowly on .NET 4.7.1.md | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 releases/net471/KnownIssues/517815-BCL Applications making heavy use of System.Diagnostics.StackTrace might run more slowly on .NET 4.7.1.md diff --git a/releases/net471/KnownIssues/517815-BCL Applications making heavy use of System.Diagnostics.StackTrace might run more slowly on .NET 4.7.1.md b/releases/net471/KnownIssues/517815-BCL Applications making heavy use of System.Diagnostics.StackTrace might run more slowly on .NET 4.7.1.md new file mode 100644 index 000000000..1a452b81f --- /dev/null +++ b/releases/net471/KnownIssues/517815-BCL Applications making heavy use of System.Diagnostics.StackTrace might run more slowly on .NET 4.7.1.md @@ -0,0 +1,19 @@ +# Applications making heavy use of System.Diagnostics.StackTrace or Exception.StackTrace might run more slowly on the .NET Framework 4.7.1 + +## Symptoms +An application that had acceptable performance running on the .NET Framework 4.7 or earlier versions executes more slowly when running on the .NET Framework 4.7.1 + +## Cause +The .NET Framework 4.7.1 added support for detecting and parsing the Portable PDB file format to show file and line number information in stack traces. As part of this change, each function in a +stack trace has its defining module checked to determine if that module uses the Portable PDB format. Due to some differences in the internal caching policy, the +runtime spends far more time searching for Portable PDBs than previous .NET Framework versions spent searching for classic Windows PDBs. This causes formatted stack traces to be +produced more slowly than before. + +The issue was originally reported here: https://github.com/Microsoft/dotnet/issues/529 + +## Workarounds +Call the [System.Diagnostics.StackTrace.#ctor(Boolean)](https://docs.microsoft.com/dotnet/api/system.diagnostics.stacktrace.-ctor?view=netframework-4.7.1#System_Diagnostics_StackTrace__ctor_System_Boolean_) constructor with `false` argument to avoid capturing source information. This avoids the portion of the code where performance +regressed. + +## Resolution +The fix for this issue is expected in a future servicing update. From f38100821a18485d0c788862b5e446634c398801 Mon Sep 17 00:00:00 2001 From: Vivek Mishra Date: Tue, 21 Nov 2017 19:08:08 -0800 Subject: [PATCH 519/872] Update dotnet471-known-issues.md --- releases/net471/dotnet471-known-issues.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/releases/net471/dotnet471-known-issues.md b/releases/net471/dotnet471-known-issues.md index 11cc97701..78184d5bd 100644 --- a/releases/net471/dotnet471-known-issues.md +++ b/releases/net471/dotnet471-known-issues.md @@ -10,4 +10,5 @@ This document lists the known issues that you may experience after you install t - [493108 - WPF - InvalidCastException when displaying a checked MenuItem](https://github.com/Microsoft/dotnet/blob/master/releases/net471/KnownIssues/493108-WPF%20InvalidCastException%20when%20displaying%20a%20checked%20MenuItem.md) - [510901 - BCL - Applications targeting .NET 4.6.1 that use .NET Standard libraries might be broken when running on .NET 4.7.1](https://github.com/Microsoft/dotnet/blob/master/releases/net471/KnownIssues/510901-BCL%20Apps%20targeting%20.NET-4.6.1%20that%20use%20.NET%20Standard%20libraries%20might%20be%20broken%20when%20running%20on%20.NET%204.7.1.md) - [521954 - BCL - CultureAwareComparer with ignore casing serialized on previous versions of .NET Framework does not correctly deserialize on .NET Framework 4.7.1](https://github.com/Microsoft/dotnet/blob/master/releases/net471/KnownIssues/521954%20-%20BCL%20CultureAwareComparer%20with%20ignore%20casing%20on%20serialized%20on%20previous%20versions%20of%20.NET%20do%20not%20correctly%20deserialize%20on%20.NET%204.7.1.md) -- [523633 - Setup - Application crashes occur when running on the .NET Framework 4.7.1 after upgrading from Windows 10 Anniversary Update to Windows 10 Creators Update](https://github.com/Microsoft/dotnet/blob/master/releases/net471/KnownIssues/523633%20-%20Setup%20-%20OS%20upgrade%20to%20Windows%2010%20gets%20the%20product%20in%20bad%20state.md) \ No newline at end of file +- [517815 - BCL - Applications making heavy use of System.Diagnostics.StackTrace or Exception.StackTrace might run more slowly on the .NET Framework 4.7.1](https://github.com/Microsoft/dotnet/blob/master/releases/net471/KnownIssues/517815-BCL%20Applications%20making%20heavy%20use%20of%20System.Diagnostics.StackTrace%20might%20run%20more%20slowly%20on%20.NET%204.7.1.md) +- [523633 - Setup - Application crashes occur when running on the .NET Framework 4.7.1 after upgrading from Windows 10 Anniversary Update to Windows 10 Creators Update](https://github.com/Microsoft/dotnet/blob/master/releases/net471/KnownIssues/523633%20-%20Setup%20-%20OS%20upgrade%20to%20Windows%2010%20gets%20the%20product%20in%20bad%20state.md) From 0f9748a6ebba84a56a7449c3b9c3be76f7f75b31 Mon Sep 17 00:00:00 2001 From: Dale Date: Wed, 29 Nov 2017 09:50:27 +0200 Subject: [PATCH 520/872] Add ServicetStack to frameworks list (#574) Adding in link to the ServiceStack web framework (which I am not involved with or a representative of, but that I use and have contributed minor tweaks to) --- dotnet-developer-projects.md | 1 + 1 file changed, 1 insertion(+) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 281c17fa9..095768edf 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -68,6 +68,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [DotVVM](https://github.com/riganti/dotvvm) - MVVM framework for people who don't like to write JavaScript, with OWIN and ASP.NET Core support and a free extension for Visual Studio 2015 and 2017. * [Nancy](https://github.com/NancyFx/Nancy) - A lightweight, low-ceremony, framework for building HTTP based services on .NET and Mono. * [NemerleWeb](https://github.com/NemerleWeb/NemerleWeb) - Web MVVM library for .Net. It uses reactive data model which allows creating rich internet applications. + * [ServiceStack](https://servicestack.net) - Comprehensive and lightning fast message-based framework including ORM, caching, authentication, templating, SPA integrations, etc. ## Static Site Generators * [FsBlog](https://github.com/fsprojects/FsBlog/) - Blog aware, static site generation using F#. From 28a7bfe10e305d3ff65a9d413ff2b7ad0efd950e Mon Sep 17 00:00:00 2001 From: Ron Petrusha Date: Fri, 1 Dec 2017 09:35:54 -0800 Subject: [PATCH 521/872] Miscellanous formatting fixes (#573) * Miscellanous formatting fixes * Corrected quirked/build time break sections --- .../ASPNET-accessibility-improvement.md | 8 ++++---- ...-and-SignedCMS-default-algorithms-to-SHA256.md | 2 +- .../SerialPort-background-thread-exceptions.md | 4 ++-- ...ception-if-an-addressHeader-element-is-null.md | 2 +- ...reHashAlgorithm-default-value-is-now-SHA256.md | 3 +++ ...Connection.GetHashAlgorithm-now-uses-SHA256.md | 3 +++ ...security-and-md5-certificate-authentication.md | 4 ++-- ...successfully-converts-icons-with-png-frames.md | 4 ++-- ...selector-selectionchanged-and-selectedvalue.md | 15 ++++++++------- 9 files changed, 26 insertions(+), 19 deletions(-) diff --git a/Documentation/compatibility/ASPNET-accessibility-improvement.md b/Documentation/compatibility/ASPNET-accessibility-improvement.md index 33c60eb3b..0e3fc930f 100644 --- a/Documentation/compatibility/ASPNET-accessibility-improvement.md +++ b/Documentation/compatibility/ASPNET-accessibility-improvement.md @@ -27,20 +27,20 @@ Starting with the .NET Framework 4.7.1, ASP.NET has improved how ASP.NET Web Con ### Recommended Action -**How to opt in or out of these changes** - +**How to opt in or out of these changes** + In order for the Visual Studio Designer to benefit from these changes, it must run on the .NET Framework 4.7.1 or later. The web application can benefit from these changes in either of the following ways: - Install Visual Studio 2017 15.3 or later, which supports the new accessibility features with the following AppContext Switch by default. -- Opt out of the legacy accessibility behaviors by adding the `Switch.UseLegacyAccessibility` AppContext switch to the `` section in the devenv.exe.config file and setting it to `false`, as the following example shows. +- Opt out of the legacy accessibility behaviors by adding the `Switch.UseLegacyAccessibilityFeatures` AppContext switch to the `` section in the devenv.exe.config file and setting it to `false`, as the following example shows. ```xml ... - + ... diff --git a/Documentation/compatibility/Change-SignedXML-and-SignedCMS-default-algorithms-to-SHA256.md b/Documentation/compatibility/Change-SignedXML-and-SignedCMS-default-algorithms-to-SHA256.md index e893fa3ee..019447523 100644 --- a/Documentation/compatibility/Change-SignedXML-and-SignedCMS-default-algorithms-to-SHA256.md +++ b/Documentation/compatibility/Change-SignedXML-and-SignedCMS-default-algorithms-to-SHA256.md @@ -10,7 +10,7 @@ Minor NotPlanned ### Change Description -In the .NET Framework 4.7 and earlier, SignedXML and SignedCMS default to SHA1 for some operations. +In the .NET Framework 4.7 and earlier, SignedXML and SignedCMS default to SHA1 for some operations. Starting with the .NET Framework 4.7.1, SHA256 is enabled by default for these operations. This change is necessary because SHA1 is no longer considered to be secure. diff --git a/Documentation/compatibility/SerialPort-background-thread-exceptions.md b/Documentation/compatibility/SerialPort-background-thread-exceptions.md index 13071bafc..639685147 100644 --- a/Documentation/compatibility/SerialPort-background-thread-exceptions.md +++ b/Documentation/compatibility/SerialPort-background-thread-exceptions.md @@ -10,9 +10,9 @@ Minor NotPlanned ### Change Description -Background threads created with streams no longer terminate the process when OS exceptions are thrown. +Background threads created with streams no longer terminate the process when OS exceptions are thrown. -In applications that target the .NET Framework 4.7 and earlier versions, a process is terminated when an operating system exception is thrown on a background thread created with a stream. +In applications that target the .NET Framework 4.7 and earlier versions, a process is terminated when an operating system exception is thrown on a background thread created with a stream. In applications that target the .NET Framework 4.7.1 or a later version, background threads wait for OS events related to the active serial port and could crash in some cases, such as sudden removal of the serial port. diff --git a/Documentation/compatibility/WCF-AddressHeaderCollection-now-throws-an-ArgumentException-if-an-addressHeader-element-is-null.md b/Documentation/compatibility/WCF-AddressHeaderCollection-now-throws-an-ArgumentException-if-an-addressHeader-element-is-null.md index f7d590f3a..323b52053 100644 --- a/Documentation/compatibility/WCF-AddressHeaderCollection-now-throws-an-ArgumentException-if-an-addressHeader-element-is-null.md +++ b/Documentation/compatibility/WCF-AddressHeaderCollection-now-throws-an-ArgumentException-if-an-addressHeader-element-is-null.md @@ -10,7 +10,7 @@ Minor NotPlanned ### Change Description -Starting with the .NET Framework 4.7.1, the `M:System.ServiceModel.Channels.AddressHeaderCollection.#ctor(System.Collections.Generic.IEnumerable{System.ServiceModel.Channels.AddressHeader})` constructor throws an `T:System.ArgumentException` if one of the elements is `null`. In the .NET Framework 4.7 and earlier versions, no exception is thrown. +Starting with the .NET Framework 4.7.1, the constructor throws an if one of the elements is `null`. In the .NET Framework 4.7 and earlier versions, no exception is thrown. ### Recommended Action If you encounter compatibility issues with this change on the .NET Framework 4.7.1 or a later version, you can opt-out of it by adding the following line to the `` section of the app.config file:: diff --git a/Documentation/compatibility/WCF-MsmqSecureHashAlgorithm-default-value-is-now-SHA256.md b/Documentation/compatibility/WCF-MsmqSecureHashAlgorithm-default-value-is-now-SHA256.md index 8d78958f1..fec06da34 100644 --- a/Documentation/compatibility/WCF-MsmqSecureHashAlgorithm-default-value-is-now-SHA256.md +++ b/Documentation/compatibility/WCF-MsmqSecureHashAlgorithm-default-value-is-now-SHA256.md @@ -9,6 +9,9 @@ NotPlanned ### Change Description Starting with the .NET Framework 4.7.1, the default message signing algorithm in WCF for Msmq messages is SHA256. In the .NET Framework 4.7 and earlier versions, the default message signing algorithm is SHA1. +- [ ] Quirked +- [ ] Build-time break + ### Recommended Action If you run into compatibility issues with this change on the .NET Framework 4.7.1 or later, you can opt-out the change by adding the following line to the ``section of your app.config file: diff --git a/Documentation/compatibility/WCF-PipeConnection.GetHashAlgorithm-now-uses-SHA256.md b/Documentation/compatibility/WCF-PipeConnection.GetHashAlgorithm-now-uses-SHA256.md index 08c252b38..f72ca9656 100644 --- a/Documentation/compatibility/WCF-PipeConnection.GetHashAlgorithm-now-uses-SHA256.md +++ b/Documentation/compatibility/WCF-PipeConnection.GetHashAlgorithm-now-uses-SHA256.md @@ -9,6 +9,9 @@ NotPlanned ### Change Description Starting with the .NET Framework 4.7.1, Windows Communication Foundation uses a SHA256 hash to generate random names for named pipes. In the .NET Framework 4.7 and earlier versions, it used a SHA1 hash. +- [ ] Quirked +- [ ] Build-time break + ### Recommended Action If you run into compatibility issue with this change on the .NET Framework 4.7.1 or later, you can opt-out it by adding the following line to the `` section of your app.config file: diff --git a/Documentation/compatibility/wcf-services-using-nettcp-with-ssl-security-and-md5-certificate-authentication.md b/Documentation/compatibility/wcf-services-using-nettcp-with-ssl-security-and-md5-certificate-authentication.md index 35924850d..439f12031 100644 --- a/Documentation/compatibility/wcf-services-using-nettcp-with-ssl-security-and-md5-certificate-authentication.md +++ b/Documentation/compatibility/wcf-services-using-nettcp-with-ssl-security-and-md5-certificate-authentication.md @@ -1,7 +1,7 @@ -## WCF services that use NETTCP with SSL sercurity and MD5 certificate authentication +## WCF services that use NETTCP with SSL security and MD5 certificate authentication ### Scope -Minor| +Minor ### Version Introduced 4.6 diff --git a/Documentation/compatibility/windows-forms-icon-tobitmap-method-successfully-converts-icons-with-png-frames.md b/Documentation/compatibility/windows-forms-icon-tobitmap-method-successfully-converts-icons-with-png-frames.md index f0d7ebea4..9aacf9663 100644 --- a/Documentation/compatibility/windows-forms-icon-tobitmap-method-successfully-converts-icons-with-png-frames.md +++ b/Documentation/compatibility/windows-forms-icon-tobitmap-method-successfully-converts-icons-with-png-frames.md @@ -17,8 +17,8 @@ In apps that target the .NET Framework 4.5.2 and earlier versions, the that is thrown when an Icon object has PNG frames. When running under the .NET Framework 4.6, the conversion is successful, an is no longer thrown, and therefore the exception handler is no longer invoked. -- [X] Quirked // Uses some mechanism to turn the feature on or off, usually using runtime targeting, AppContext or config files. Needs to be turned on automatically for some situations. -- [ ] Build-time break // Causes a break if attempted to recompile +- [X] Quirked +- [ ] Build-time break ### Recommended Action If this behavior is undesirable, you can retain the previous behavior by adding the following element to the `` section of your app.config file: diff --git a/Documentation/compatibility/wpf-selector-selectionchanged-and-selectedvalue.md b/Documentation/compatibility/wpf-selector-selectionchanged-and-selectedvalue.md index d91fe18be..8b4e41a8c 100644 --- a/Documentation/compatibility/wpf-selector-selectionchanged-and-selectedvalue.md +++ b/Documentation/compatibility/wpf-selector-selectionchanged-and-selectedvalue.md @@ -10,16 +10,16 @@ Minor NotPlanned ### Change Description -Starting with the .Net Framework 4.7.1, a `T:System.Windows.Controls.Primitives.Selector` always updates the value of its -`P:System.Windows.Controls.Primitives.Selector.SelectedValue` property before raising the -`E:System.Windows.Controls.Primitives.Selector.SelectionChanged` event, when its selection changes. +Starting with the .Net Framework 4.7.1, a always updates the value of its + property before raising the + event, when its selection changes. This makes the SelectedValue property consistent with the other selection properties -(`P:System.Windows.Controls.Primitives.Selector.SelectedItem` and -`P:System.Windows.Controls.Primitives.Selector.SelectedIndex`), which are updated before raising the event. +( and +), which are updated before raising the event. In the .NET Framework 4.7 and earlier versions, the update to SelectedValue happened before the event in most cases, but it happened after the event if the selection change was caused by changing the -`P:System.Windows.Controls.Primitives.Selector.SelectedValue` property. + property. - [X] Quirked - [ ] Build-time break @@ -30,7 +30,8 @@ by adding the following to the `` section of the application configurat ```xml - + ``` From 0ed4d000a0e9aeef2858544acb02372df7c5cf49 Mon Sep 17 00:00:00 2001 From: Holly Muenchow Date: Mon, 4 Dec 2017 13:55:03 -0800 Subject: [PATCH 522/872] 2.0.2 release notes --- releases/UWP/net-native2.0/README.md | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/releases/UWP/net-native2.0/README.md b/releases/UWP/net-native2.0/README.md index 5cbda5fc6..122003dac 100644 --- a/releases/UWP/net-native2.0/README.md +++ b/releases/UWP/net-native2.0/README.md @@ -1,10 +1,17 @@ -# .NET Native 2.0 (UWP 6.0.x) Release Notes +# .NET native tools 2.0 (UWP 6.0.x) Release Notes You can see what was included in each .NET Native 2.0 ([Microsoft.NETCore.UniversalWindowsPlatform 6.0.x](https://www.nuget.org/packages/Microsoft.NETCore.UniversalWindowsPlatform)) release, below. When using Visual Studio these packages require Visual Studio 2017 Version 15.4 or later. -### UWP 6.0.2 (.NET Native 2.0.1) (November 20, 2017) +### UWP 6.0.4 (.NET native tools 2.0.2) (December 4th, 2017) +#### Quality fixes +- Fix crash in debug config with static analysis enabled in project properties. [473689] +- Improvements in telemetry included in ILC crashes that enable reverse engineering failure causes. [521523] +- Fix for GC memory leak. [506391] +- Updates to the .NET native 1.7 tool chain. [.NET Native 1.7 (UWP 5.4.x) Release Notes](https://github.com/Microsoft/dotnet/blob/master/releases/UWP/net-native1.7/README.md). + +### UWP 6.0.2 (.NET native tools 2.0.1) (November 20, 2017) #### Quality fixes - Fixes an issue when building UWP apps that target RS3 and reference the Microsoft Store Services SDK and Microsoft Advertising SDK or Store Engagement SDK [514498] From cec03d244c4fcc55c74f567560d291e616e84944 Mon Sep 17 00:00:00 2001 From: Holly Muenchow Date: Mon, 4 Dec 2017 14:22:56 -0800 Subject: [PATCH 523/872] 1.7.2 release notes --- releases/UWP/net-native1.7/README.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/releases/UWP/net-native1.7/README.md b/releases/UWP/net-native1.7/README.md index f3bd6de05..1dd7c57ca 100644 --- a/releases/UWP/net-native1.7/README.md +++ b/releases/UWP/net-native1.7/README.md @@ -1,9 +1,15 @@ -# .NET Native 1.7 (UWP 5.4.x) Release Notes +# .NET native tools 1.7 Release Notes You can see what was included in each .NET Native 1.7 ([Microsoft.NETCore.UniversalWindowsPlatform 5.4.x](https://www.nuget.org/packages/Microsoft.NETCore.UniversalWindowsPlatform)) release, below. When using Visual Studio these packages require Visual Studio 2017 or later. +### UWP 6.0.4 (.NET native tools 1.7.2) (December 4th, 2017) +Quality fixes +- Fix an unhandled exception when ClientWebSocket loses connection to server. [518456] +- Fix regression in the 1.7 toolchain causing winmd file corruption, when the file stream is left open. [496929] + + ### 5.4.1 (October 9, 2017) - Fixed an issue with Microsoft.NetNative.targets that prevented C++ hybrid apps from compiling; apps would fail to compile due to an attempt to write a file to a folder that does not exist. [511674] From 387646bbbddcc1fc3538b55dbe6a2aa1fe8d4247 Mon Sep 17 00:00:00 2001 From: Holly Muenchow Date: Mon, 4 Dec 2017 14:28:24 -0800 Subject: [PATCH 524/872] readability fixes --- releases/UWP/net-native1.7/README.md | 7 ++----- releases/UWP/net-native2.0/README.md | 10 +++++----- 2 files changed, 7 insertions(+), 10 deletions(-) diff --git a/releases/UWP/net-native1.7/README.md b/releases/UWP/net-native1.7/README.md index 1dd7c57ca..2c3b91e40 100644 --- a/releases/UWP/net-native1.7/README.md +++ b/releases/UWP/net-native1.7/README.md @@ -5,17 +5,14 @@ You can see what was included in each .NET Native 1.7 ([Microsoft.NETCore.Univer When using Visual Studio these packages require Visual Studio 2017 or later. ### UWP 6.0.4 (.NET native tools 1.7.2) (December 4th, 2017) -Quality fixes -- Fix an unhandled exception when ClientWebSocket loses connection to server. [518456] -- Fix regression in the 1.7 toolchain causing winmd file corruption, when the file stream is left open. [496929] - +- Fixed an unhandled exception when ClientWebSocket loses connection to server. [518456] +- Fixed a regression in the 1.7 toolchain causing winmd file corruption, when the file stream is left open. [496929] ### 5.4.1 (October 9, 2017) - Fixed an issue with Microsoft.NetNative.targets that prevented C++ hybrid apps from compiling; apps would fail to compile due to an attempt to write a file to a folder that does not exist. [511674] ### 5.4.0 (August 11, 2017) - #### Improved Diagnostics and Better Support for Portable PDBs - In .NET Native 1.7, we added support for the new [Portable PDB format](https://github.com/dotnet/corefx/blob/master/src/System.Reflection.Metadata/specs/PortablePdb-Metadata.md) for representing symbol information in the .NET Native UWP compiler. The portable PDB format was originally developed to support cross-platform symbol information for managed code as well as drastically reduce the size of debug info - the format makes use of the MSIL module metadata instead of duplicating it and, because of this, it is typically an order of magnitude shorter than the equivalent Windows PDB. In addition to that, the portable PDB format supports an "embedded" flavor in which the symbol information is directly attached to the MSIL executable in form of a binary blob, making it much easier to deploy such managed binaries, not having to care about two different files (with all the related problems of mutual compatibility, signing etc.). The debugging experience is on par with Windows PDB's - we encode the same debug information just in a more compact manner. The previous version of the .NET Native toolchain was oblivious of the portable PDB format. [1640097] diff --git a/releases/UWP/net-native2.0/README.md b/releases/UWP/net-native2.0/README.md index 122003dac..0af7c4851 100644 --- a/releases/UWP/net-native2.0/README.md +++ b/releases/UWP/net-native2.0/README.md @@ -1,4 +1,4 @@ -# .NET native tools 2.0 (UWP 6.0.x) Release Notes +# .NET native tools 2.0 (UWP 6.0.x) Release Notes You can see what was included in each .NET Native 2.0 ([Microsoft.NETCore.UniversalWindowsPlatform 6.0.x](https://www.nuget.org/packages/Microsoft.NETCore.UniversalWindowsPlatform)) release, below. @@ -6,10 +6,10 @@ When using Visual Studio these packages require Visual Studio 2017 Version 15.4 ### UWP 6.0.4 (.NET native tools 2.0.2) (December 4th, 2017) #### Quality fixes -- Fix crash in debug config with static analysis enabled in project properties. [473689] -- Improvements in telemetry included in ILC crashes that enable reverse engineering failure causes. [521523] -- Fix for GC memory leak. [506391] -- Updates to the .NET native 1.7 tool chain. [.NET Native 1.7 (UWP 5.4.x) Release Notes](https://github.com/Microsoft/dotnet/blob/master/releases/UWP/net-native1.7/README.md). +- Fixes a crash in debug config with static analysis enabled in project properties. [473689] +- Improves telemetry included in ILC crashes, enabling failure determination. [521523] +- Fixes for a GC memory leak. [506391] +- Updates the .NET native 1.7 tool chain to 1.7.2. [.NET Native 1.7 (UWP 5.4.x) Release Notes](https://github.com/Microsoft/dotnet/blob/master/releases/UWP/net-native1.7/README.md). ### UWP 6.0.2 (.NET native tools 2.0.1) (November 20, 2017) From 702d03f9b3d2de97606ab61173168aa1512172da Mon Sep 17 00:00:00 2001 From: Holly Muenchow Date: Tue, 5 Dec 2017 13:05:08 -0800 Subject: [PATCH 525/872] Resolving PR feedback --- releases/UWP/net-native1.7/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/releases/UWP/net-native1.7/README.md b/releases/UWP/net-native1.7/README.md index 2c3b91e40..782811c98 100644 --- a/releases/UWP/net-native1.7/README.md +++ b/releases/UWP/net-native1.7/README.md @@ -1,12 +1,12 @@ # .NET native tools 1.7 Release Notes -You can see what was included in each .NET Native 1.7 ([Microsoft.NETCore.UniversalWindowsPlatform 5.4.x](https://www.nuget.org/packages/Microsoft.NETCore.UniversalWindowsPlatform)) release, below. +You can see what was included in each .NET Native 1.7 ([Microsoft.NETCore.UniversalWindowsPlatform 5.4.x](https://www.nuget.org/packages/Microsoft.NETCore.UniversalWindowsPlatform)) release below. When using Visual Studio these packages require Visual Studio 2017 or later. ### UWP 6.0.4 (.NET native tools 1.7.2) (December 4th, 2017) - Fixed an unhandled exception when ClientWebSocket loses connection to server. [518456] -- Fixed a regression in the 1.7 toolchain causing winmd file corruption, when the file stream is left open. [496929] +- Fixed a regression in the 1.7 toolchain causing winmd file corruption when the file stream is left open. [496929] ### 5.4.1 (October 9, 2017) - Fixed an issue with Microsoft.NetNative.targets that prevented C++ hybrid apps from compiling; apps would fail to compile due to an attempt to write a file to a folder that does not exist. [511674] From bdaf330bdc2be42a73d060fdff9d9eb021916208 Mon Sep 17 00:00:00 2001 From: Holly Muenchow Date: Tue, 5 Dec 2017 13:05:19 -0800 Subject: [PATCH 526/872] Resolving PR feedback From 8b70bc1023bbda701f21f675121d5cbec98bfe4a Mon Sep 17 00:00:00 2001 From: Holly Muenchow Date: Tue, 5 Dec 2017 14:56:47 -0800 Subject: [PATCH 527/872] Resolving PR feedback --- releases/UWP/net-native2.0/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/releases/UWP/net-native2.0/README.md b/releases/UWP/net-native2.0/README.md index 0af7c4851..055dc31d2 100644 --- a/releases/UWP/net-native2.0/README.md +++ b/releases/UWP/net-native2.0/README.md @@ -1,6 +1,6 @@ # .NET native tools 2.0 (UWP 6.0.x) Release Notes -You can see what was included in each .NET Native 2.0 ([Microsoft.NETCore.UniversalWindowsPlatform 6.0.x](https://www.nuget.org/packages/Microsoft.NETCore.UniversalWindowsPlatform)) release, below. +You can see what was included in each .NET Native 2.0 ([Microsoft.NETCore.UniversalWindowsPlatform 6.0.x](https://www.nuget.org/packages/Microsoft.NETCore.UniversalWindowsPlatform)) release below. When using Visual Studio these packages require Visual Studio 2017 Version 15.4 or later. From c3d3835a67ff188e71040b773c23b8ec1a56e591 Mon Sep 17 00:00:00 2001 From: Ron Petrusha Date: Fri, 8 Dec 2017 12:18:38 -0800 Subject: [PATCH 528/872] Converted asset IDs to xrefs, corrected formatting (#581) --- ...jobinfo-jobstream-must-be-in-xps-format.md | 6 ++--- ...-deserialization-of-mailmessage-objects.md | 6 ++--- .../winforms-accessibility-changes-471.md | 4 +-- .../workflow-designer-accessibility.md | 24 ++++++++--------- .../wpf-accessibility-improvements.MD | 26 +++++++++---------- ...ol-selectionchanged-and-selectedcontent.md | 6 ++--- 6 files changed, 36 insertions(+), 36 deletions(-) diff --git a/Documentation/compatibility/data-written-to-printsystemjobinfo-jobstream-must-be-in-xps-format.md b/Documentation/compatibility/data-written-to-printsystemjobinfo-jobstream-must-be-in-xps-format.md index 1b23b4d05..8d2f99528 100644 --- a/Documentation/compatibility/data-written-to-printsystemjobinfo-jobstream-must-be-in-xps-format.md +++ b/Documentation/compatibility/data-written-to-printsystemjobinfo-jobstream-must-be-in-xps-format.md @@ -10,7 +10,7 @@ Minor NotPlanned ### Change Description -The `P:System.Printing.PrintSystemJobInfo.JobStream` property exposes the stream of a print job. The user can send raw data to the underlying operating system printing components by writing to this stream. +The property exposes the stream of a print job. The user can send raw data to the underlying operating system printing components by writing to this stream. Starting with the .NET Framework 4.5 on Windows 8 and later versions of the Windows operating system, data written to this stream must be in XPS format as a package stream. @@ -21,9 +21,9 @@ Starting with the .NET Framework 4.5 on Windows 8 and later versions of the Wind To output print content, you can do either of the following: -- Use the `T:System.Windows.Xps.XpsDocumentWriter` class to output print content. This is the recommended alternative. +- Use the class to output print content. This is the recommended alternative. -- Ensure that the data sent to the stream returned by the `P:System.Printing.PrintSystemJobInfo.JobStream` property is in XPS format as a package stream. +- Ensure that the data sent to the stream returned by the property is in XPS format as a package stream. ### Affected APIs * `P:System.Printing.PrintSystemJobInfo.JobStream` diff --git a/Documentation/compatibility/serialization-deserialization-of-mailmessage-objects.md b/Documentation/compatibility/serialization-deserialization-of-mailmessage-objects.md index 0063a167b..7019da700 100644 --- a/Documentation/compatibility/serialization-deserialization-of-mailmessage-objects.md +++ b/Documentation/compatibility/serialization-deserialization-of-mailmessage-objects.md @@ -10,17 +10,17 @@ Minor Investigating ### Change Description -Starting with the .NET Framework 4.5, `T:System.Web.Mail.MailMessage` objects can include non-ASCII characters. In the .NET Framework 4, only ASCII characters are supported. `T:System.Web.Mail.MailMessage` objects that contain non-ASCII characters and that are serialized under the .NET Framework 4.5 or later cannot be deserialized under the .NET Framework 4. +Starting with the .NET Framework 4.5, objects can include non-ASCII characters. In the .NET Framework 4, only ASCII characters are supported. objects that contain non-ASCII characters and that are serialized under the .NET Framework 4.5 or later cannot be deserialized under the .NET Framework 4. - [ ] Quirked - [ ] Build-time break ### Recommended Action -Ensure that your code provides exception handling when deserializing a `T:System.Web.Mail.MailMessage` object. +Ensure that your code provides exception handling when deserializing a object. ### Affected APIs -`T:System.Web.Mail.MailMessage` + ### Category Networking diff --git a/Documentation/compatibility/winforms-accessibility-changes-471.md b/Documentation/compatibility/winforms-accessibility-changes-471.md index 770852aac..c89abc292 100644 --- a/Documentation/compatibility/winforms-accessibility-changes-471.md +++ b/Documentation/compatibility/winforms-accessibility-changes-471.md @@ -106,10 +106,10 @@ NOTE: Windows10 has changed values for some high contrast system colors. Windows - Narrator is now able to read `T:System.Windows.Forms.ToolStripMenuItem` controls with a `P:System.Windows.Forms.ToolStripItem.Enabled` property set to _false_. Previously, Narrator was unable to focus on disabled menu items to read hte content. -### Affected APIs not detectable via API analysis +### Affected APIs * `M:System.Windows.Forms.ToolStripDropDownButton.CreateAccessibilityInstance` * `P:System.Windows.Forms.DomainUpDown.DomainUpDownAccessibleObject.Name` -* `T:Sysetm.Windows.Forms.MonthCalendar.MonthCalendarAccessibleObject` +* `T:System.Windows.Forms.MonthCalendar.MonthCalendarAccessibleObject` ### Category diff --git a/Documentation/compatibility/workflow-designer-accessibility.md b/Documentation/compatibility/workflow-designer-accessibility.md index f47ee8964..ca438a2d4 100644 --- a/Documentation/compatibility/workflow-designer-accessibility.md +++ b/Documentation/compatibility/workflow-designer-accessibility.md @@ -12,8 +12,8 @@ NotPlanned ### Change Description The Windows Workflow Foundation (WF) workflow designer is improving how it works with accessibility technologies. These improvements include the following changes: - The tab order is changed to left to right and top to bottom in some controls: - - The initialize correlation window for setting correlation data for the `T:System.ServiceModel.Activities.InitializeCorrelation` activity - - The content definition window for the `T:System.ServiceModel.Activities.Receive`, `T:System.ServiceModel.Activities.Send`, `T:System.ServiceModel.Activities.SendReply`, and `T:System.ServiceModel.Activities.ReceiveReply` activities + - The initialize correlation window for setting correlation data for the activity + - The content definition window for the , , , and activities - More functions are available via the keyboard: - When editing the properties of an activity, property groups can be collapsed by keyboard the first time they are focused. - Warning icons are now accessible by keyboard. @@ -21,23 +21,23 @@ The Windows Workflow Foundation (WF) workflow designer is improving how it works - Keyboard users now can access the header items in the Arguments and Variables panes of the Workflow Designer. - Improved visibility of items with focus, such as when: - Adding rows to data grids used by the Workflow Designer and activity designers. - - Tabbing through fields in the `T:System.ServiceModel.Activities.ReceiveReply` and `T:System.ServiceModel.Activities.SendReply` activities. + - Tabbing through fields in the and activities. - Setting default values for variables or arguments - Screen readers can now correctly recognize: - Breakpoints set in the workflow designer. - - The `T:System.Activities.Statements.FlowSwitch`, `T:System.Activities.Statements.FlowDecision`, and `T:System.ServiceModel.Activities.CorrelationScope` activities. - - The contents of the `T:System.ServiceModel.Activities.Receive` activity. - - The Target Type for the `T:System.Activities.Statements.InvokeMethod` activity. - - The Exception combobox and the Finally section in the `T:System.Activities.Statements.TryCatch` activity. - - The Message Type combobox, the splitter in the Add Correlation Initializers window, the Content Definition window, and the CorrelatesOn Defintion window in the messaging activities (`T:System.ServiceModel.Activities.Receive`, `T:System.ServiceModel.Activities.Send`, `T:System.ServiceModel.Activities.SendReply`, and `T:System.ServiceModel.Activities.ReceiveReply`). + - The , , and activities. + - The contents of the activity. + - The Target Type for the activity. + - The Exception combobox and the Finally section in the activity. + - The Message Type combobox, the splitter in the Add Correlation Initializers window, the Content Definition window, and the CorrelatesOn Defintion window in the messaging activities (, , , and ). - State machine transitions and transitions destinations. - - Annotations and connectors on `T:System.Activities.Statements.FlowDecision` activities. + - Annotations and connectors on activities. - The context (right-click) menus for activities. - The property value editors, the Clear Search button, the By Category and Alphabetical sort buttons, and the Expression Editor dialog in the properties grid. - The zoom percentage in the Workflow Designer. - - The separator in `T:System.Activities.Statements.Parallel` and `T:System.Activities.Statements.Pick` activities. - - The `T:System.Activities.Statements.InvokeDelegate` activity. - - The Select Types window for dictionary activities (`T:Microsoft.Activities.AddToDictionary`, `T:Microsoft.Activities.RemoveFromDictionary`, etc.). + - The separator in and activities. + - The activity. + - The Select Types window for dictionary activities (, , etc.). - The Browse and Select .NET Type window. - Breadcrumbs in the Workflow Designer. - Users who choose High Contrast themes will see many improvements in the visibility of the Workflow Designer and its controls like better contrast ratios between elements and more noticeable selection boxes used for focus elements. diff --git a/Documentation/compatibility/wpf-accessibility-improvements.MD b/Documentation/compatibility/wpf-accessibility-improvements.MD index f52b507b8..0a511a382 100644 --- a/Documentation/compatibility/wpf-accessibility-improvements.MD +++ b/Documentation/compatibility/wpf-accessibility-improvements.MD @@ -12,27 +12,27 @@ NotPlanned ### Change Description __High Contrast improvements__ -- The focus for the `T:System.Windows.Controls.Expander` control is now visible. In previous versions of the .NET Framework, it was not. -- The text in `T:System.Windows.Controls.CheckBox` and `T:System.Windows.Controls.RadioButton` controls when they are selected is now easier to see than in previous .NET Framework versions. -- The border of a disabled `T:System.Windows.Controls.ComboBox` is now the same color as the disabled text. In previous versions of the .NET Framework, it was not. +- The focus for the control is now visible. In previous versions of the .NET Framework, it was not. +- The text in and controls when they are selected is now easier to see than in previous .NET Framework versions. +- The border of a disabled is now the same color as the disabled text. In previous versions of the .NET Framework, it was not. - Disabled and focused buttons now use the correct theme color. In previous versions of the .NET Framework, they did not. -- The dropdown button is now visible when a `T:System.Windows.Controls.ComboBox` control's style is set to , In previous versions of the .NET Framework, it was not. -- The sort indicator arrow in a `T:System.Windows.Controls.DataGrid` control now uses theme colors. In previous versions of the .NET Framework, it did not. +- The dropdown button is now visible when a control's style is set to , In previous versions of the .NET Framework, it was not. +- The sort indicator arrow in a control now uses theme colors. In previous versions of the .NET Framework, it did not. - The default hyperlink style now changes to the correct theme color on mouse over. In previous versions of the .NET Framework, it did not. - The Keyboard focus on radio buttons is now visible. In previous versions of the .NET Framework, it was not. -- The `T:System.Windows.Controls.DataGrid` control's checkbox column now uses the expected colors for keyboard focus feedback. In previous versions of the .NET Framework, it did not. -- the Keyboard focus visuals are now visible on `T:System.Windows.Controls.ComboBox` and `T:System.Windows.Controls.ListBox`. In previous versions of the .NET Framework, it was not. +- The control's checkbox column now uses the expected colors for keyboard focus feedback. In previous versions of the .NET Framework, it did not. +- the Keyboard focus visuals are now visible on and . In previous versions of the .NET Framework, it was not. __Screen reader interaction improvements__ -- `T:System.Windows.Controls.Expander` controls are now correctly announced as groups (expand/collapse) by screen readers. -- `T:System.Windows.Controls.DataGridCell` controls are now correctly announced as data grid cell (localized) by screen readers. -- Screen readers will now announce the name of an editable `T:System.Windows.Controls.ComboBox`. -- `T:System.Windows.Controls.PasswordBox` controls are no longer announced as “no item in view” by screen readers. +- controls are now correctly announced as groups (expand/collapse) by screen readers. +- controls are now correctly announced as data grid cell (localized) by screen readers. +- Screen readers will now announce the name of an editable . +- controls are no longer announced as “no item in view” by screen readers. -__LiveRegion support__ +__LiveRegion support__ Screen readers such as Narrator help people know the UI contents of an application, usually by describing something about the UI that’s currently focused, because that is probably the element of most interest to the user. However, if a UI element changes somewhere in the screen and it does not have the focus, the user may not be informed and miss important information. LiveRegions are meant to solve this problem. A developer can use them to inform the screen reader or any other [UI Automation][UI Automation Overview](https://docs.microsoft.com/dotnet/framework/ui-automation/ui-automation-overview) client that an important change has been made to a UI element. The screen reader can then decide how and when to inform the user of this change. @@ -47,7 +47,7 @@ __How to opt in or out of these changes__ In order for the application to benefit from these changes, it must run on the .NET Framework 4.7.1 or later. The application can benefit from these changes in either of the following ways: - It is recompiled to target the .NET Framework 4.7.1. These accessibility changes are enabled by default on WPF applications that target the .NET Framework 4.7.1 or later. -- It opts out of the legacy accessibility behaviors by adding the following [AppContext Switch](https://docs.microsoft.com/dotnet/framework/configure-apps/file-schema/runtime/appcontextswitchoverrides-element) in the `````` section of the app config file and setting it to false, as the following example shows. +- It opts out of the legacy accessibility behaviors by adding the following [AppContext Switch](https://docs.microsoft.com/dotnet/framework/configure-apps/file-schema/runtime/appcontextswitchoverrides-element) in the `` section of the app config file and setting it to false, as the following example shows. ``` diff --git a/Documentation/compatibility/wpf-tabcontrol-selectionchanged-and-selectedcontent.md b/Documentation/compatibility/wpf-tabcontrol-selectionchanged-and-selectedcontent.md index 1cf1f61c1..676d747db 100644 --- a/Documentation/compatibility/wpf-tabcontrol-selectionchanged-and-selectedcontent.md +++ b/Documentation/compatibility/wpf-tabcontrol-selectionchanged-and-selectedcontent.md @@ -10,9 +10,9 @@ Minor NotPlanned ### Change Description -Starting with the .NET Framework 4.7.1, a `T:System.Windows.Controls.TabControl` updates the value of its -`P:System.Windows.Controls.TabControl.SelectedContent` property before raising the -`E:System.Windows.Controls.Primitives.Selector.SelectionChanged` event, when its selection changes. +Starting with the .NET Framework 4.7.1, a updates the value of its + property before raising the + event, when its selection changes. In the .NET Framework 4.7 and earlier versions, the update to SelectedContent happened after the event. From 22f5de4436f25c6d0b132e4555927ffa826cca94 Mon Sep 17 00:00:00 2001 From: David Shulman Date: Fri, 8 Dec 2017 16:21:42 -0800 Subject: [PATCH 529/872] Add .NET 4.7.1 Networking known issue 534719 (#580) * Add .NET 4.7.1 Networking known issue 534719 Add known issue document for bug 534719-Networking ServicePoint.ConnectionLimit default behavior with loopback changed unexpectedly. * Addressed PR feedback --- ...vior with loopback changed unexpectedly.md | 73 +++++++++++++++++++ releases/net471/dotnet471-known-issues.md | 1 + 2 files changed, 74 insertions(+) create mode 100644 releases/net471/KnownIssues/534719-Networking ServicePoint.ConnectionLimit default behavior with loopback changed unexpectedly.md diff --git a/releases/net471/KnownIssues/534719-Networking ServicePoint.ConnectionLimit default behavior with loopback changed unexpectedly.md b/releases/net471/KnownIssues/534719-Networking ServicePoint.ConnectionLimit default behavior with loopback changed unexpectedly.md new file mode 100644 index 000000000..c6ca2d76f --- /dev/null +++ b/releases/net471/KnownIssues/534719-Networking ServicePoint.ConnectionLimit default behavior with loopback changed unexpectedly.md @@ -0,0 +1,73 @@ +# ServicePoint.ConnectionLimit default behavior with loopback changed unexpectedly + +## Symptoms +The limit for HTTP connections per endpoint is controlled by the `ServicePointManager.DefaultConnectionLimit` property. +This value defaults to 2. In the .NET Framework 4.7 and earlier versions, the limit applied only to non-loopback +addresses such as http://www.microsoft.com. For loopback addresses such as http://localhost, the limit for connections +was always int.MaxValue (2,147,483,647) unless changed by calling the `ServicePoint.ConnectionLimit` API. + +In the .NET Framework 4.7.1 when using HttpClient APIs, the connection limit for loopback addresses now matches the limit +for non-loopback addresses. Thus, the default limit is 2. This can cause applications to run slower or hang when +doing multiple, parallel, requests to the http://localhost addresses. + +Here is code that shows the problem: + +```c# +using System; +using System.Net; +using System.Net.Http; + +namespace ConsoleApp +{ + class Program + { + static void Main(string[] args) + { + Console.WriteLine($"ServicePointManager.DefaultConnectionLimit: {ServicePointManager.DefaultConnectionLimit}"); + + var uriLoopback = new Uri("http://localhost/"); + var uriExternal = new Uri("http://www.microsoft.com/"); + + Console.WriteLine("Before using HttpClient APIs"); + ServicePoint spLoopback = ServicePointManager.FindServicePoint(uriLoopback); + Console.WriteLine($"{uriLoopback.AbsoluteUri}, ConnectionLimit (should be {int.MaxValue}): {spLoopback.ConnectionLimit}"); + + ServicePoint spExternal = ServicePointManager.FindServicePoint(uriExternal); + Console.WriteLine($"{uriExternal.AbsoluteUri}, ConnectionLimit (should be {ServicePointManager.DefaultConnectionLimit}): {spExternal.ConnectionLimit}"); + + Console.WriteLine("Use HttpClient APIs"); + var client = new HttpClient(); + try + { + HttpResponseMessage response = client.GetAsync(uriLoopback).Result; + } + catch (Exception) + { + // Ignore any network error since there is probably not a loopback server present. + } + + Console.WriteLine("After using HttpClient APIs"); + + // BUG - due to the bug in .NET Framework 4.7.1, the ConnectionLimit for this loopback ServicePoint is changed + // unexpectedly. + Console.WriteLine($"{uriLoopback.AbsoluteUri}, ConnectionLimit (should be {int.MaxValue}): {spLoopback.ConnectionLimit}"); + } + } +} +``` + +## Cause +Changes in .NET Framework 4.7.1 to the `System.Net.Http.HttpClientHandler` class caused this problem. + +## Resolution +To work around the problem using HttpClient APIs, you can use the following code to increase the connection limit. +This code should be added before calling any HttpClient APIs. + +```c# +ServicePointManager.DefaultConnectionLimit = 20; // Actual value should be based on your requirements. +``` + +Note: This will also change the limits for non-loopback addresses. + +## More information +We will fix this problem in a future .NET Framework Quality Rollup release. diff --git a/releases/net471/dotnet471-known-issues.md b/releases/net471/dotnet471-known-issues.md index 78184d5bd..727db62a7 100644 --- a/releases/net471/dotnet471-known-issues.md +++ b/releases/net471/dotnet471-known-issues.md @@ -12,3 +12,4 @@ This document lists the known issues that you may experience after you install t - [521954 - BCL - CultureAwareComparer with ignore casing serialized on previous versions of .NET Framework does not correctly deserialize on .NET Framework 4.7.1](https://github.com/Microsoft/dotnet/blob/master/releases/net471/KnownIssues/521954%20-%20BCL%20CultureAwareComparer%20with%20ignore%20casing%20on%20serialized%20on%20previous%20versions%20of%20.NET%20do%20not%20correctly%20deserialize%20on%20.NET%204.7.1.md) - [517815 - BCL - Applications making heavy use of System.Diagnostics.StackTrace or Exception.StackTrace might run more slowly on the .NET Framework 4.7.1](https://github.com/Microsoft/dotnet/blob/master/releases/net471/KnownIssues/517815-BCL%20Applications%20making%20heavy%20use%20of%20System.Diagnostics.StackTrace%20might%20run%20more%20slowly%20on%20.NET%204.7.1.md) - [523633 - Setup - Application crashes occur when running on the .NET Framework 4.7.1 after upgrading from Windows 10 Anniversary Update to Windows 10 Creators Update](https://github.com/Microsoft/dotnet/blob/master/releases/net471/KnownIssues/523633%20-%20Setup%20-%20OS%20upgrade%20to%20Windows%2010%20gets%20the%20product%20in%20bad%20state.md) +- [534719 - Networking - ServicePoint.ConnectionLimit default behavior with loopback changed unexpectedly](https://github.com/Microsoft/dotnet/blob/master/releases/net471/KnownIssues/534719-Networking%20ServicePoint.ConnectionLimit%20default%20behavior%20with%20loopback%20changed%20unexpectedly.md) From 1c8737a68739d792cc18a72c19a3e2c41198d655 Mon Sep 17 00:00:00 2001 From: Ron Petrusha Date: Tue, 12 Dec 2017 09:15:18 -0800 Subject: [PATCH 530/872] Removed duplicate words (#583) --- .../compatibility/SerialPort-background-thread-exceptions.md | 4 ++-- Documentation/compatibility/long-path-support.md | 4 ++-- .../compatibility/throttle-concurrent-requests-per-session.md | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Documentation/compatibility/SerialPort-background-thread-exceptions.md b/Documentation/compatibility/SerialPort-background-thread-exceptions.md index 639685147..920548067 100644 --- a/Documentation/compatibility/SerialPort-background-thread-exceptions.md +++ b/Documentation/compatibility/SerialPort-background-thread-exceptions.md @@ -21,7 +21,7 @@ In applications that target the .NET Framework 4.7.1 or a later version, backgro ### Recommended Action -For apps that target the .NET Framework 4.7.1, you can opt out of the exception handling if it is not desirable by adding the following to to the `` section of your `app.config` file: +For apps that target the .NET Framework 4.7.1, you can opt out of the exception handling if it is not desirable by adding the following to the `` section of your `app.config` file: ```xml @@ -29,7 +29,7 @@ For apps that target the .NET Framework 4.7.1, you can opt out of the exception ``` -For apps that target earlier versions of the .NET Framework but run on the .NET Framework 4.7.1 or later, you can opt in to the exception handling by adding the following to to the `` section of your `app.config` file: +For apps that target earlier versions of the .NET Framework but run on the .NET Framework 4.7.1 or later, you can opt in to the exception handling by adding the following to the `` section of your `app.config` file: ```xml diff --git a/Documentation/compatibility/long-path-support.md b/Documentation/compatibility/long-path-support.md index b0fc3f119..6afeb6ea3 100644 --- a/Documentation/compatibility/long-path-support.md +++ b/Documentation/compatibility/long-path-support.md @@ -35,7 +35,7 @@ exceeds 260 characters. ### Recommended Action For apps that target the .NET Framework 4.6.2, you can opt out of long path -support if it is not desirable by adding the following to to the `` +support if it is not desirable by adding the following to the `` section of your `app.config` file: ```xml @@ -46,7 +46,7 @@ section of your `app.config` file: For apps that target earlier versions of the .NET Framework but run on the .NET Framework 4.6.2 or later, you can opt in to long path support by adding the -following to to the `` section of your `app.config` file: +following to the `` section of your `app.config` file: ```xml diff --git a/Documentation/compatibility/throttle-concurrent-requests-per-session.md b/Documentation/compatibility/throttle-concurrent-requests-per-session.md index 66078ce39..2fbf1eec2 100644 --- a/Documentation/compatibility/throttle-concurrent-requests-per-session.md +++ b/Documentation/compatibility/throttle-concurrent-requests-per-session.md @@ -10,7 +10,7 @@ Edge NotPlanned ### Change Description -In the .NET Framework 4.6.2 and earlier, ASP.NET executes requests with the same Sessionid sequentially, and ASP.NET always issues the Sessionid through cookie by default. If a page takes a long time to respond, it will significantly degrade server performance just by pressing F5 on the browser. In the fix, we added a counter to track the queued requests and terminate the requests when they exceed a specified limit. The default value is 50. If the the limit is reached, a warning will be logged in the event log, and an HTTP 500 response may be recorded in the IIS log. +In the .NET Framework 4.6.2 and earlier, ASP.NET executes requests with the same Sessionid sequentially, and ASP.NET always issues the Sessionid through cookies by default. If a page takes a long time to respond, it will significantly degrade server performance just by pressing F5 on the browser. In the fix, we added a counter to track the queued requests and terminate the requests when they exceed a specified limit. The default value is 50. If the limit is reached, a warning will be logged in the event log, and an HTTP 500 response may be recorded in the IIS log. - [x] Quirked - [ ] Build-time break From 16ddbfb14dbc6a27868f6f642ec60f30a82c461c Mon Sep 17 00:00:00 2001 From: Zach Montoya Date: Tue, 12 Dec 2017 13:17:40 -0800 Subject: [PATCH 531/872] Add release notes for UWP 6.0.5 --- releases/UWP/net-native1.7/README.md | 3 +++ releases/UWP/net-native2.0/README.md | 5 +++++ 2 files changed, 8 insertions(+) diff --git a/releases/UWP/net-native1.7/README.md b/releases/UWP/net-native1.7/README.md index 782811c98..fe8674125 100644 --- a/releases/UWP/net-native1.7/README.md +++ b/releases/UWP/net-native1.7/README.md @@ -4,6 +4,9 @@ You can see what was included in each .NET Native 1.7 ([Microsoft.NETCore.Univer When using Visual Studio these packages require Visual Studio 2017 or later. +### UWP 6.0.5 (.NET native tools 1.7.3) (December 12th, 2017) +- Fixes for a GC memory leak. [506391] + ### UWP 6.0.4 (.NET native tools 1.7.2) (December 4th, 2017) - Fixed an unhandled exception when ClientWebSocket loses connection to server. [518456] - Fixed a regression in the 1.7 toolchain causing winmd file corruption when the file stream is left open. [496929] diff --git a/releases/UWP/net-native2.0/README.md b/releases/UWP/net-native2.0/README.md index 055dc31d2..a4553397c 100644 --- a/releases/UWP/net-native2.0/README.md +++ b/releases/UWP/net-native2.0/README.md @@ -4,6 +4,11 @@ You can see what was included in each .NET Native 2.0 ([Microsoft.NETCore.Univer When using Visual Studio these packages require Visual Studio 2017 Version 15.4 or later. +### UWP 6.0.5 (.NET native tools 2.0.2) (December 12th, 2017) + +#### Quality fixes +- Updates the .NET native 1.7 tool chain to 1.7.3 [.NET Native 1.7 (UWP 5.4.x) Release Notes](https://github.com/Microsoft/dotnet/blob/master/releases/UWP/net-native1.7/README.md). + ### UWP 6.0.4 (.NET native tools 2.0.2) (December 4th, 2017) #### Quality fixes - Fixes a crash in debug config with static analysis enabled in project properties. [473689] From 5e8e290a19958165838c2c7697a90386b373f7f5 Mon Sep 17 00:00:00 2001 From: Zach Montoya Date: Tue, 12 Dec 2017 13:32:38 -0800 Subject: [PATCH 532/872] Add more consistency to net-native1.7 readme --- releases/UWP/net-native1.7/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/releases/UWP/net-native1.7/README.md b/releases/UWP/net-native1.7/README.md index fe8674125..832d24b62 100644 --- a/releases/UWP/net-native1.7/README.md +++ b/releases/UWP/net-native1.7/README.md @@ -11,10 +11,10 @@ When using Visual Studio these packages require Visual Studio 2017 or later. - Fixed an unhandled exception when ClientWebSocket loses connection to server. [518456] - Fixed a regression in the 1.7 toolchain causing winmd file corruption when the file stream is left open. [496929] -### 5.4.1 (October 9, 2017) +### UWP 5.4.1 (.NET native tools 1.7.1) (October 9th, 2017) - Fixed an issue with Microsoft.NetNative.targets that prevented C++ hybrid apps from compiling; apps would fail to compile due to an attempt to write a file to a folder that does not exist. [511674] -### 5.4.0 (August 11, 2017) +### UWP 5.4.0 (.NET native tools 1.7.0) (August 11th, 2017) #### Improved Diagnostics and Better Support for Portable PDBs - In .NET Native 1.7, we added support for the new [Portable PDB format](https://github.com/dotnet/corefx/blob/master/src/System.Reflection.Metadata/specs/PortablePdb-Metadata.md) for representing symbol information in the .NET Native UWP compiler. The portable PDB format was originally developed to support cross-platform symbol information for managed code as well as drastically reduce the size of debug info - the format makes use of the MSIL module metadata instead of duplicating it and, because of this, it is typically an order of magnitude shorter than the equivalent Windows PDB. In addition to that, the portable PDB format supports an "embedded" flavor in which the symbol information is directly attached to the MSIL executable in form of a binary blob, making it much easier to deploy such managed binaries, not having to care about two different files (with all the related problems of mutual compatibility, signing etc.). The debugging experience is on par with Windows PDB's - we encode the same debug information just in a more compact manner. The previous version of the .NET Native toolchain was oblivious of the portable PDB format. [1640097] From abbf18cc67a69d31541253d541792f0fe611bdf3 Mon Sep 17 00:00:00 2001 From: Ron Petrusha Date: Wed, 13 Dec 2017 09:59:35 -0800 Subject: [PATCH 533/872] Replaced unprintable characters. (#586) --- Documentation/compatibility/wpf-accessibility-improvements.MD | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Documentation/compatibility/wpf-accessibility-improvements.MD b/Documentation/compatibility/wpf-accessibility-improvements.MD index 0a511a382..42c2a3599 100644 --- a/Documentation/compatibility/wpf-accessibility-improvements.MD +++ b/Documentation/compatibility/wpf-accessibility-improvements.MD @@ -29,12 +29,12 @@ __Screen reader interaction improvements__ - controls are now correctly announced as groups (expand/collapse) by screen readers. - controls are now correctly announced as data grid cell (localized) by screen readers. - Screen readers will now announce the name of an editable . -- controls are no longer announced as “no item in view” by screen readers. +- controls are no longer announced as "no item in view" by screen readers. __LiveRegion support__ -Screen readers such as Narrator help people know the UI contents of an application, usually by describing something about the UI that’s currently focused, because that is probably the element of most interest to the user. However, if a UI element changes somewhere in the screen and it does not have the focus, the user may not be informed and miss important information. +Screen readers such as Narrator help people know the UI contents of an application, usually by describing something about the UI that's currently focused, because that is probably the element of most interest to the user. However, if a UI element changes somewhere in the screen and it does not have the focus, the user may not be informed and miss important information. LiveRegions are meant to solve this problem. A developer can use them to inform the screen reader or any other [UI Automation][UI Automation Overview](https://docs.microsoft.com/dotnet/framework/ui-automation/ui-automation-overview) client that an important change has been made to a UI element. The screen reader can then decide how and when to inform the user of this change. The LiveSetting property also lets the screen reader know how important it is to inform the user of the change made to the UI. From 129afaca2ce7517f3976e990b03fc3fb73617d24 Mon Sep 17 00:00:00 2001 From: Ron Petrusha Date: Thu, 14 Dec 2017 16:08:44 -0800 Subject: [PATCH 534/872] Fixed links broken in dotnet/docs (#588) --- .../compatibility/workflow-designer-accessibility.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Documentation/compatibility/workflow-designer-accessibility.md b/Documentation/compatibility/workflow-designer-accessibility.md index ca438a2d4..3bcc19a13 100644 --- a/Documentation/compatibility/workflow-designer-accessibility.md +++ b/Documentation/compatibility/workflow-designer-accessibility.md @@ -25,7 +25,7 @@ The Windows Workflow Foundation (WF) workflow designer is improving how it works - Setting default values for variables or arguments - Screen readers can now correctly recognize: - Breakpoints set in the workflow designer. - - The , , and activities. + - The , , and activities. - The contents of the activity. - The Target Type for the activity. - The Exception combobox and the Finally section in the activity. @@ -37,7 +37,7 @@ The Windows Workflow Foundation (WF) workflow designer is improving how it works - The zoom percentage in the Workflow Designer. - The separator in and activities. - The activity. - - The Select Types window for dictionary activities (, , etc.). + - The Select Types window for dictionary activities (`Microsoft.Activities.AddToDictionary`, `Microsoft.Activities.RemoveFromDictionary`, etc.). - The Browse and Select .NET Type window. - Breadcrumbs in the Workflow Designer. - Users who choose High Contrast themes will see many improvements in the visibility of the Workflow Designer and its controls like better contrast ratios between elements and more noticeable selection boxes used for focus elements. From 60d0fe307cde2d8ff21e307d63ddefb657231555 Mon Sep 17 00:00:00 2001 From: Krzysztof Wicher Date: Wed, 3 Jan 2018 12:20:40 -0800 Subject: [PATCH 535/872] Update DeflateStream compatibility doc (#591) * Update DeflateStream compatibility doc * fix typo * Apply feedback --- .../deflatestream-uses-native-apis-for-decompression.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/Documentation/compatibility/deflatestream-uses-native-apis-for-decompression.md b/Documentation/compatibility/deflatestream-uses-native-apis-for-decompression.md index c6b82ee2e..66d69a168 100644 --- a/Documentation/compatibility/deflatestream-uses-native-apis-for-decompression.md +++ b/Documentation/compatibility/deflatestream-uses-native-apis-for-decompression.md @@ -11,13 +11,15 @@ NotPlanned ### Change Description -Starting with the .NET Framework 4.7.2, the implementation of decompression in the `T:System.IO.Compression.DeflateStream` class has changed to use native Windows APIs by default. Typically, this results in a substantial performance improvement. All .NET applications running on machines with versions of the .NET Framework starting with version 4.7.2 will now use the native implementation. +Starting with the .NET Framework 4.7.2, the implementation of decompression in the `T:System.IO.Compression.DeflateStream` class has changed to use native Windows APIs by default. Typically, this results in a substantial performance improvement. All .NET applications targeting the .NET Framework version 4.7.2 or higher use the native implementation. This change might result in some differences in behavior, which include: - Exception messages may be different. However, the type of exception thrown remains the same. - - Some special situations, such as not having enough memory to complete an operation, may be handled differently. +- There are known differences for parsing gzip header (note: only `GZipStream` set for decompression is affected): + - Exceptions when parsing invalid headers may be thrown at different times. + - The native implementation enforces that values for some reserved flags inside the gzip header (i.e. [FLG](http://www.zlib.org/rfc-gzip.html#header-trailer)) are set according to the specification, which may cause it to throw an exception where previously invalid values were ignored. - [X] Quirked - [ ] Build-time break From 9ccef2f69e4253504be74ccb7a635589c9448b27 Mon Sep 17 00:00:00 2001 From: Holly Muenchow Date: Tue, 9 Jan 2018 10:26:51 -0800 Subject: [PATCH 536/872] Updated the readme with the 5.2.4 release. --- releases/UWP/net-native1.4/README.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/releases/UWP/net-native1.4/README.md b/releases/UWP/net-native1.4/README.md index fa7704952..a3f096b0c 100644 --- a/releases/UWP/net-native1.4/README.md +++ b/releases/UWP/net-native1.4/README.md @@ -4,8 +4,10 @@ You can see what was included in each .NET Native 1.4 ([Microsoft.NETCore.Univer When using Visual Studio these packages require Visual Studio 2015 Update 3 or later. -### 5.2.3 (March 7, 2017) +### 5.2.4 (January 9th, 2018) +- Fixed CVE-2018-0786: Security Feature Bypass in X509 Certificate Validation: https://github.com/Microsoft/dotnet/issues/597 +### 5.2.3 (March 7, 2017) - Fixed an [issue](https://github.com/dotnet/corefx/issues/10374) that caused DataContractJsonSerializer to fail to serialize any [DataContract] type whose default constructor is not public. - Fixed a regression in 5.2.2 where [4 Libraries were accidently no longer referenced by default](https://github.com/dotnet/corefx/issues/10338) - System.Collections.NonGeneric @@ -21,7 +23,6 @@ You can read more about these changes in the Visual Studio 2015 Update 3 blog [p - Improved runtime performance for XAML applications and Unity games. ## Resources - - [Getting Started with .NET Native](https://docs.microsoft.com/en-us/dotnet/framework/net-native/getting-started-with-net-native) - [Microsoft.NETCore.UniversalWindowsPlatform NuGet Package Details](https://www.nuget.org/packages/Microsoft.NETCore.UniversalWindowsPlatform) - [Windows Dev Center](https://developer.microsoft.com/en-us/windows/apps/getstarted) From 2d28dcbbf174831001bca4f41eb5e26a2aa58895 Mon Sep 17 00:00:00 2001 From: Holly Muenchow Date: Tue, 9 Jan 2018 10:29:28 -0800 Subject: [PATCH 537/872] Updated README with the 5.3.5 release --- releases/UWP/net-native1.6/README.md | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/releases/UWP/net-native1.6/README.md b/releases/UWP/net-native1.6/README.md index ed2f8876c..4935bff08 100644 --- a/releases/UWP/net-native1.6/README.md +++ b/releases/UWP/net-native1.6/README.md @@ -4,20 +4,19 @@ You can see what was included in each .NET Native 1.6 ([Microsoft.NETCore.Univer When using Visual Studio these packages require Visual Studio 2017 or later. -### 5.3.4 (August 4, 2017) +### 5.3.5 (January 9th, 2018) +- Fixed CVE-2018-0786: Security Feature Bypass in X509 Certificate Validation: https://github.com/Microsoft/dotnet/issues/597 +### 5.3.4 (August 4, 2017) - Corrected an issue where System.Threading.Thread.MemoryBarrier was implemented as no-op on x86 release builds. ### 5.3.3 (April 24, 2017) - - Corrected an [issue](http://stackoverflow.com/questions/43530071/how-to-fix-app-submission-error-of-1300) for projects that have Visual Studio configuration values that are not "DEBUG" or "RELEASE" that causes Windows Store submission failure (error code 1300). For example, most Unity apps use a configuration named "Master". ### 5.3.2 (April 6, 2017) - - Fixed an issue that caused MAKEPRI build warnings to be emitted when building app packages for UWP projects. ### 5.3.1 (March 7, 2017) - - Fixed an [issue](https://github.com/dotnet/corefx/issues/10374) that caused DataContractJsonSerializer to fail to serialize any [DataContract] type whose default constructor is not public. - Fixed a regression in 5.3.0 where [4 Libraries were accidently no longer referenced by default](https://github.com/dotnet/corefx/issues/10338) - System.Collections.NonGeneric From 018e0d24d69ba54752ef52ab3f8de900e35e36dc Mon Sep 17 00:00:00 2001 From: Holly Muenchow Date: Tue, 9 Jan 2018 10:30:43 -0800 Subject: [PATCH 538/872] Updated the README with the 5.4.2 release --- releases/UWP/net-native1.7/README.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/releases/UWP/net-native1.7/README.md b/releases/UWP/net-native1.7/README.md index 832d24b62..fa57d0aec 100644 --- a/releases/UWP/net-native1.7/README.md +++ b/releases/UWP/net-native1.7/README.md @@ -1,11 +1,13 @@ # .NET native tools 1.7 Release Notes - You can see what was included in each .NET Native 1.7 ([Microsoft.NETCore.UniversalWindowsPlatform 5.4.x](https://www.nuget.org/packages/Microsoft.NETCore.UniversalWindowsPlatform)) release below. When using Visual Studio these packages require Visual Studio 2017 or later. +### UWP 5.4.2 (.NET native tools 1.7.3) (January 9th, 2018) +- Fixed CVE-2018-0786: Security Feature Bypass in X509 Certificate Validation: https://github.com/Microsoft/dotnet/issues/597 + ### UWP 6.0.5 (.NET native tools 1.7.3) (December 12th, 2017) -- Fixes for a GC memory leak. [506391] +- Fixed a GC memory leak. [506391] ### UWP 6.0.4 (.NET native tools 1.7.2) (December 4th, 2017) - Fixed an unhandled exception when ClientWebSocket loses connection to server. [518456] From bc5fd0b41dda8b1193f3604d46ddde1efffff16a Mon Sep 17 00:00:00 2001 From: Holly Muenchow Date: Tue, 9 Jan 2018 10:36:11 -0800 Subject: [PATCH 539/872] Updated README with 6.0.6 release. --- releases/UWP/net-native2.0/README.md | 29 +++++++++++++--------------- 1 file changed, 13 insertions(+), 16 deletions(-) diff --git a/releases/UWP/net-native2.0/README.md b/releases/UWP/net-native2.0/README.md index a4553397c..6704b3f36 100644 --- a/releases/UWP/net-native2.0/README.md +++ b/releases/UWP/net-native2.0/README.md @@ -3,27 +3,24 @@ You can see what was included in each .NET Native 2.0 ([Microsoft.NETCore.UniversalWindowsPlatform 6.0.x](https://www.nuget.org/packages/Microsoft.NETCore.UniversalWindowsPlatform)) release below. When using Visual Studio these packages require Visual Studio 2017 Version 15.4 or later. +### UWP 6.0.6 (.NET native tools 2.0.2) (January 9th, 2018) +- Fixed CVE-2018-0786: Security Feature Bypass in X509 Certificate Validation: https://github.com/Microsoft/dotnet/issues/597 ### UWP 6.0.5 (.NET native tools 2.0.2) (December 12th, 2017) +- Updated the .NET native 1.7 tool chain to 1.7.3 [.NET Native 1.7 (UWP 5.4.x) Release Notes](https://github.com/Microsoft/dotnet/blob/master/releases/UWP/net-native1.7/README.md). -#### Quality fixes -- Updates the .NET native 1.7 tool chain to 1.7.3 [.NET Native 1.7 (UWP 5.4.x) Release Notes](https://github.com/Microsoft/dotnet/blob/master/releases/UWP/net-native1.7/README.md). - -### UWP 6.0.4 (.NET native tools 2.0.2) (December 4th, 2017) -#### Quality fixes -- Fixes a crash in debug config with static analysis enabled in project properties. [473689] -- Improves telemetry included in ILC crashes, enabling failure determination. [521523] -- Fixes for a GC memory leak. [506391] -- Updates the .NET native 1.7 tool chain to 1.7.2. [.NET Native 1.7 (UWP 5.4.x) Release Notes](https://github.com/Microsoft/dotnet/blob/master/releases/UWP/net-native1.7/README.md). +### UWP 6.0.4 (.NET native tools 2.0.2) (December 4th, 2017) +- Fixed a crash in debug config with static analysis enabled in project properties. [473689] +- Improved telemetry included in ILC crashes, enabling failure determination. [521523] +- Fixed for a GC memory leak. [506391] +- Updated the .NET native 1.7 tool chain to 1.7.2. [.NET Native 1.7 (UWP 5.4.x) Release Notes](https://github.com/Microsoft/dotnet/blob/master/releases/UWP/net-native1.7/README.md). ### UWP 6.0.2 (.NET native tools 2.0.1) (November 20, 2017) - -#### Quality fixes -- Fixes an issue when building UWP apps that target RS3 and reference the Microsoft Store Services SDK and Microsoft Advertising SDK or Store Engagement SDK [514498] -- Fixes crashes due to an error in the compiler's garbage collection reporting (affects ARM apps built with .NET Native) [507618] -- Improves performance for creating new UWP Projects. [512775] -- Fixes issues that enable Windows Application Packaging (Centennial) projects publishing scenarios [521438] -- Enables a P/Invoke feature for WindowsSDK Store in RS3 [518300] +- Fixed an issue when building UWP apps that target RS3 and reference the Microsoft Store Services SDK and Microsoft Advertising SDK or Store Engagement SDK [514498] +- Fixed crashes due to an error in the compiler's garbage collection reporting (affects ARM apps built with .NET Native) [507618] +- Improved performance for creating new UWP Projects. [512775] +- Fixed issues that enable Windows Application Packaging (Centennial) projects publishing scenarios [521438] +- Enabled a P/Invoke feature for WindowsSDK Store in RS3 [518300] ### 6.0.1 (October 5, 2017) From e883180b967de13f24a04c9ba023bcfecb624398 Mon Sep 17 00:00:00 2001 From: Vivek Mishra Date: Tue, 9 Jan 2018 11:15:34 -0800 Subject: [PATCH 540/872] Added the link for ZDP update for Known Issues fixed by it. (#595) * Added the link for ZDP update for Known Issues fixed by it. * Added platform information --- ...ibraries might be broken when running on .NET 4.7.1.md | 3 +++ ...tics.StackTrace might run more slowly on .NET 4.7.1.md | 7 ++++++- ... of .NET do not correctly deserialize on .NET 4.7.1.md | 8 ++++++-- 3 files changed, 15 insertions(+), 3 deletions(-) diff --git a/releases/net471/KnownIssues/510901-BCL Apps targeting .NET-4.6.1 that use .NET Standard libraries might be broken when running on .NET 4.7.1.md b/releases/net471/KnownIssues/510901-BCL Apps targeting .NET-4.6.1 that use .NET Standard libraries might be broken when running on .NET 4.7.1.md index bf231bfe8..6933f7625 100644 --- a/releases/net471/KnownIssues/510901-BCL Apps targeting .NET-4.6.1 that use .NET Standard libraries might be broken when running on .NET 4.7.1.md +++ b/releases/net471/KnownIssues/510901-BCL Apps targeting .NET-4.6.1 that use .NET Standard libraries might be broken when running on .NET 4.7.1.md @@ -56,3 +56,6 @@ There are two ways to work around this issue: - When running on .NET Framework 4.7.1, remove the binding redirects from the app.config file for the assemblies that are now part of the .NET Framework. - Re-target your application to target the .NET Framwork 4.7 or .NET Framework 4.7.1. +## Resolution + +[09-Jan-2018] The fix for this issue is included in the [Update for .NET Framework 4.7.1 - KB4054856](http://go.microsoft.com/fwlink/?LinkId=866028) for all platforms except Windows 10 Fall Creators Update. \ No newline at end of file diff --git a/releases/net471/KnownIssues/517815-BCL Applications making heavy use of System.Diagnostics.StackTrace might run more slowly on .NET 4.7.1.md b/releases/net471/KnownIssues/517815-BCL Applications making heavy use of System.Diagnostics.StackTrace might run more slowly on .NET 4.7.1.md index 1a452b81f..c4ec05bd5 100644 --- a/releases/net471/KnownIssues/517815-BCL Applications making heavy use of System.Diagnostics.StackTrace might run more slowly on .NET 4.7.1.md +++ b/releases/net471/KnownIssues/517815-BCL Applications making heavy use of System.Diagnostics.StackTrace might run more slowly on .NET 4.7.1.md @@ -1,9 +1,11 @@ # Applications making heavy use of System.Diagnostics.StackTrace or Exception.StackTrace might run more slowly on the .NET Framework 4.7.1 ## Symptoms + An application that had acceptable performance running on the .NET Framework 4.7 or earlier versions executes more slowly when running on the .NET Framework 4.7.1 ## Cause + The .NET Framework 4.7.1 added support for detecting and parsing the Portable PDB file format to show file and line number information in stack traces. As part of this change, each function in a stack trace has its defining module checked to determine if that module uses the Portable PDB format. Due to some differences in the internal caching policy, the runtime spends far more time searching for Portable PDBs than previous .NET Framework versions spent searching for classic Windows PDBs. This causes formatted stack traces to be @@ -12,8 +14,11 @@ produced more slowly than before. The issue was originally reported here: https://github.com/Microsoft/dotnet/issues/529 ## Workarounds + Call the [System.Diagnostics.StackTrace.#ctor(Boolean)](https://docs.microsoft.com/dotnet/api/system.diagnostics.stacktrace.-ctor?view=netframework-4.7.1#System_Diagnostics_StackTrace__ctor_System_Boolean_) constructor with `false` argument to avoid capturing source information. This avoids the portion of the code where performance regressed. ## Resolution -The fix for this issue is expected in a future servicing update. + +[09-Jan-2018] The fix for this issue is included in the [Update for .NET Framework 4.7.1 - KB4054856](http://go.microsoft.com/fwlink/?LinkId=866028) for all platforms except Windows 10 Fall Creators Update. + diff --git a/releases/net471/KnownIssues/521954 - BCL CultureAwareComparer with ignore casing on serialized on previous versions of .NET do not correctly deserialize on .NET 4.7.1.md b/releases/net471/KnownIssues/521954 - BCL CultureAwareComparer with ignore casing on serialized on previous versions of .NET do not correctly deserialize on .NET 4.7.1.md index f9b0f13e5..03b31f030 100644 --- a/releases/net471/KnownIssues/521954 - BCL CultureAwareComparer with ignore casing on serialized on previous versions of .NET do not correctly deserialize on .NET 4.7.1.md +++ b/releases/net471/KnownIssues/521954 - BCL CultureAwareComparer with ignore casing on serialized on previous versions of .NET do not correctly deserialize on .NET 4.7.1.md @@ -21,8 +21,12 @@ P:System.StringComparer.CurrentCultureIgnoreCase Ensure that both serialization and deserialization occurs on systems running a version of the .NET Framework starting with 4.7.1. +## Resolution + If you are running on Windows 10 Fall Creators Update, an update is available that addresses this issue. Select one of the following links based on your processor architecture: -x86: https://go.microsoft.com/fwlink/?linkid=862758 + x86: https://go.microsoft.com/fwlink/?linkid=862758 + + x64: https://go.microsoft.com/fwlink/?linkid=862762 -x64: https://go.microsoft.com/fwlink/?linkid=862762 +[09-Jan-2018] The fix for this issue is included in the [Update for .NET Framework 4.7.1 - KB4054856](http://go.microsoft.com/fwlink/?LinkId=866028) for all platforms except Windows 10 Fall Creators Update. \ No newline at end of file From d9c3de2f4c2aa61bb30787e8048d9696baf768f6 Mon Sep 17 00:00:00 2001 From: Ron Petrusha Date: Fri, 26 Jan 2018 15:40:19 -0800 Subject: [PATCH 541/872] Added Switch.System.Net.DontEnableSystemDefaultTlsVersions AppContext switch (#603) * Replaced MSDN link with link to docs.microsoft.com * Corrected typos * Added Switch.System.Net.DontEnableSystemDefaultTlsVersions switch --- ...defaults-to-securityprotocoltype.systemdefault.md | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/Documentation/compatibility/servicepointmanager.securityprotocol-defaults-to-securityprotocoltype.systemdefault.md b/Documentation/compatibility/servicepointmanager.securityprotocol-defaults-to-securityprotocoltype.systemdefault.md index bd5b72308..7674b7a2e 100644 --- a/Documentation/compatibility/servicepointmanager.securityprotocol-defaults-to-securityprotocoltype.systemdefault.md +++ b/Documentation/compatibility/servicepointmanager.securityprotocol-defaults-to-securityprotocoltype.systemdefault.md @@ -12,7 +12,7 @@ NotPlanned ### Change Description Starting with apps that target the .NET Framework 4.7, the default value of the property is . This change allows .NET Framework networking APIs based on SslStream (such as FTP, HTTPS, and SMTP) to inherit the default security protocols from the operating system instead of using hard-coded values defined by the .NET Framework. The default varies by operating system and any custom configuration performed by the system administrator. For information on the default SChannel protocol in each version of the Windows operating system, see [Protocols in TLS/SSL (Schannel SSP)](https://msdn.microsoft.com/library/windows/desktop/mt808159.aspx). -For applications that target an earlier version of the .NET Framework, the default value of the property depends on the version of the .NET Framework targeted. See [Retargeting Changes in the .NET Framework 4.6](docs.microsoft.com/dotnet/framework/migration-guide/retargeting) for more information. +For applications that target an earlier version of the .NET Framework, the default value of the property depends on the version of the .NET Framework targeted. See the [Networking section of Retargeting Changes for Migration from .NET Framework 4.5.2 to 4.6](https://docs.microsoft.com/en-us/dotnet/framework/migration-guide/retargeting/4.5.2-4.6#Networking) for more information. - [X] Quirked - [ ] Build-time break @@ -20,7 +20,15 @@ For applications that target an earlier version of the .NET Framework, the defau ### Recommended Action This change affects applications that target the .NET Framework 4.7 or later versions. -If you prefer to use a defined protocol rather than relying on the system default, you can explicitly set the value of the property. +If you prefer to use a defined protocol rather than relying on the system default, you can explicitly set the value of the property. + +If this change is undesirable, you can opt out of it by adding a configuration setting to the [``](https://docs.microsoft.com/dotnet/framework/configure-apps/file-schema/runtime/runtime-element) section of your application configuration file. The following example shows both the `` section and the `Switch.System.Net.DontEnableSystemDefaultTlsVersions` opt-out switch: + +```xml + + + +``` ### Affected APIs - `P:System.Net.ServicePointManager.SecurityProtocol` From 455742adf1074632a35b00424a715b5dee6dd90a Mon Sep 17 00:00:00 2001 From: Noah Falk Date: Tue, 30 Jan 2018 16:18:40 -0800 Subject: [PATCH 542/872] Clarify Portable PDB feature disabled in 4.7.1 (#606) --- ...iagnostics.StackTrace might run more slowly on .NET 4.7.1.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/releases/net471/KnownIssues/517815-BCL Applications making heavy use of System.Diagnostics.StackTrace might run more slowly on .NET 4.7.1.md b/releases/net471/KnownIssues/517815-BCL Applications making heavy use of System.Diagnostics.StackTrace might run more slowly on .NET 4.7.1.md index c4ec05bd5..9292494f9 100644 --- a/releases/net471/KnownIssues/517815-BCL Applications making heavy use of System.Diagnostics.StackTrace might run more slowly on .NET 4.7.1.md +++ b/releases/net471/KnownIssues/517815-BCL Applications making heavy use of System.Diagnostics.StackTrace might run more slowly on .NET 4.7.1.md @@ -20,5 +20,5 @@ regressed. ## Resolution -[09-Jan-2018] The fix for this issue is included in the [Update for .NET Framework 4.7.1 - KB4054856](http://go.microsoft.com/fwlink/?LinkId=866028) for all platforms except Windows 10 Fall Creators Update. +[09-Jan-2018] The fix for this issue is included in the [Update for .NET Framework 4.7.1 - KB4054856](http://go.microsoft.com/fwlink/?LinkId=866028) for all platforms except Windows 10 Fall Creators Update. This fix removes the Portable PDB functionality from 4.7.1. In 4.7.2 we anticipate having an improved fix available which both performs well and re-enables the portable PDB functionality. From 93ee93c8714bc6e60c5b3eed026553c479010313 Mon Sep 17 00:00:00 2001 From: Noah Falk Date: Fri, 2 Feb 2018 17:39:52 -0800 Subject: [PATCH 543/872] Update guidance for Portable PDB in 4.7.1 (#607) * Update guidance for Portable PDB in 4.7.1 * Address review feedback * More review feedback --- ...g information in the Portable PDB format.md | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 releases/net471/KnownIssues/517815-BCL Stack traces are missing source information for frames with debug information in the Portable PDB format.md diff --git a/releases/net471/KnownIssues/517815-BCL Stack traces are missing source information for frames with debug information in the Portable PDB format.md b/releases/net471/KnownIssues/517815-BCL Stack traces are missing source information for frames with debug information in the Portable PDB format.md new file mode 100644 index 000000000..95e58c437 --- /dev/null +++ b/releases/net471/KnownIssues/517815-BCL Stack traces are missing source information for frames with debug information in the Portable PDB format.md @@ -0,0 +1,18 @@ +# Stack traces are missing source information for frames with debug information in the Portable PDB format when running on .NET Framework 4.7.1 + +## Symptoms + +An application that formats stack traces is missing source information for some or all frames. This includes stack traces formatted via [System.Exception.ToString()](https://docs.microsoft.com/en-us/dotnet/api/system.exception.tostring?view=netframework-4.7.1), [System.Exception.StackTrace](https://docs.microsoft.com/en-us/dotnet/api/system.exception.stacktrace?view=netframework-4.7.1) and [System.Diagnostics.StackTrace.ToString()](https://docs.microsoft.com/en-us/dotnet/api/system.diagnostics.stacktrace.tostring?view=netframework-4.7.1). +The frames missing source information reside in assemblies that have pdbs in the [Portable PDB format](https://github.com/dotnet/core/blob/master/Documentation/diagnostics/portable_pdb.md) present on disk. + +## Cause + +The .NET Framework 4.7.1 added support for detecting and parsing the Portable PDB file format to show file and line number information in stack traces. However, due to an [implementation issue](https://github.com/Microsoft/dotnet/blob/master/releases/net471/KnownIssues/517815-BCL%20Applications%20making%20heavy%20use%20of%20System.Diagnostics.StackTrace%20might%20run%20more%20slowly%20on%20.NET%204.7.1.md), the feature had an unacceptable performance impact and Microsoft intentionally disabled it. + +## Workarounds + +- If you control the build process for the problematic assemblies you may be able to configure it to generate the classic Windows PDB format instead. + +## Resolution + +A fix is anticipated in .NET Framework 4.7.2, in the near future, that restores Portable PDB functionality with greatly improved performance. \ No newline at end of file From 28dc8e37a2446da8508ab71799db207538b6e956 Mon Sep 17 00:00:00 2001 From: Vivek Mishra Date: Fri, 2 Feb 2018 17:43:01 -0800 Subject: [PATCH 544/872] Added new known issue for 517815-BCL --- releases/net471/dotnet471-known-issues.md | 1 + 1 file changed, 1 insertion(+) diff --git a/releases/net471/dotnet471-known-issues.md b/releases/net471/dotnet471-known-issues.md index 727db62a7..225f60fcf 100644 --- a/releases/net471/dotnet471-known-issues.md +++ b/releases/net471/dotnet471-known-issues.md @@ -11,5 +11,6 @@ This document lists the known issues that you may experience after you install t - [510901 - BCL - Applications targeting .NET 4.6.1 that use .NET Standard libraries might be broken when running on .NET 4.7.1](https://github.com/Microsoft/dotnet/blob/master/releases/net471/KnownIssues/510901-BCL%20Apps%20targeting%20.NET-4.6.1%20that%20use%20.NET%20Standard%20libraries%20might%20be%20broken%20when%20running%20on%20.NET%204.7.1.md) - [521954 - BCL - CultureAwareComparer with ignore casing serialized on previous versions of .NET Framework does not correctly deserialize on .NET Framework 4.7.1](https://github.com/Microsoft/dotnet/blob/master/releases/net471/KnownIssues/521954%20-%20BCL%20CultureAwareComparer%20with%20ignore%20casing%20on%20serialized%20on%20previous%20versions%20of%20.NET%20do%20not%20correctly%20deserialize%20on%20.NET%204.7.1.md) - [517815 - BCL - Applications making heavy use of System.Diagnostics.StackTrace or Exception.StackTrace might run more slowly on the .NET Framework 4.7.1](https://github.com/Microsoft/dotnet/blob/master/releases/net471/KnownIssues/517815-BCL%20Applications%20making%20heavy%20use%20of%20System.Diagnostics.StackTrace%20might%20run%20more%20slowly%20on%20.NET%204.7.1.md) +- [517815 - BCL - Stack traces are missing source information for frames with debug information in the Portable PDB format when running on .NET Framework 4.7.1](https://github.com/Microsoft/dotnet/blob/master/releases/net471/KnownIssues/517815-BCL%20Stack%20traces%20are%20missing%20source%20information%20for%20frames%20with%20debug%20information%20in%20the%20Portable%20PDB%20format.md) - [523633 - Setup - Application crashes occur when running on the .NET Framework 4.7.1 after upgrading from Windows 10 Anniversary Update to Windows 10 Creators Update](https://github.com/Microsoft/dotnet/blob/master/releases/net471/KnownIssues/523633%20-%20Setup%20-%20OS%20upgrade%20to%20Windows%2010%20gets%20the%20product%20in%20bad%20state.md) - [534719 - Networking - ServicePoint.ConnectionLimit default behavior with loopback changed unexpectedly](https://github.com/Microsoft/dotnet/blob/master/releases/net471/KnownIssues/534719-Networking%20ServicePoint.ConnectionLimit%20default%20behavior%20with%20loopback%20changed%20unexpectedly.md) From 22dca3e1947bc14342644b8a5acec768ad5f470e Mon Sep 17 00:00:00 2001 From: Lee Culver Date: Tue, 6 Feb 2018 09:28:12 -0800 Subject: [PATCH 545/872] Add known issue for 470006 - GC large object crashes Added a known issue, written by Chris Ahna, about GC crashes when we have a high rate of large object allocations and frees. --- ...th high rate of large object allocation.md | 36 +++++++++++++++++++ releases/net471/dotnet471-known-issues.md | 1 + 2 files changed, 37 insertions(+) create mode 100644 releases/net471/KnownIssues/470006-GC Crashes with high rate of large object allocation.md diff --git a/releases/net471/KnownIssues/470006-GC Crashes with high rate of large object allocation.md b/releases/net471/KnownIssues/470006-GC Crashes with high rate of large object allocation.md new file mode 100644 index 000000000..b0a8f1027 --- /dev/null +++ b/releases/net471/KnownIssues/470006-GC Crashes with high rate of large object allocation.md @@ -0,0 +1,36 @@ +# Rare crashes can occur when background GC is enabled in applications which allocate and free large objects at a high rate + +## Symptoms + +When background GC is enabled, an application running against .NET Framework 4.7.1 experiences +intermittent crashes which did not occur when running against other .NET Framework versions. + +## Cause + +Changes to the GC in .NET Framework 4.7.1 caused this problem. + +Specifically, .NET Framework 4.7.1 contains changes which improve background GC performance. +These changes unintentionally introduced cases where a rare combination of factors can cause +the background GC to reclaim a large object while the program is still using it. + +## Impact + +This problem impacts applications which run with the background GC enabled and which also allocate +and free large objects at a high rate. As described in [this article](https://docs.microsoft.com/en-us/dotnet/standard/garbage-collection/fundamentals#the-managed-heap), +a large object is any object that is 85,000 bytes or larger in size. + +This problem is rare, and is more likely to occur when running against the x86 version of the +.NET Framework than when running against the x64 version of the .NET Framework. + +## Workarounds + +The most practical workaround is to disable the background GC using the configuration file +elements described in [this article](https://docs.microsoft.com/en-us/dotnet/framework/configure-apps/file-schema/runtime/gcconcurrent-element). + +The only other workaround is to change the application to allocate and free large objects +at a much lower rate. + +## Resolution + +This problem is fixed in .NET Framework 4.7.2. + diff --git a/releases/net471/dotnet471-known-issues.md b/releases/net471/dotnet471-known-issues.md index 225f60fcf..33c32ca37 100644 --- a/releases/net471/dotnet471-known-issues.md +++ b/releases/net471/dotnet471-known-issues.md @@ -4,6 +4,7 @@ This document lists the known issues that you may experience after you install the Microsoft .NET Framework 4.7.1. ## Product issues for the .NET Framework 4.7.1 +- [470006 - GC - Rare crashes can occur when background GC is enabled in applications which allocate and free large objects at a high rate](https://github.com/Microsoft/dotnet/blob/master/releases/net471/KnownIssues/470006-GC%20Crashes%20with%20high%20rate%20of%20large%20object%20allocation.md) - [479874 - WPF - Touch Stops Working After Rapid/Prolonged Use Of Popups](https://github.com/Microsoft/dotnet/blob/master/releases/net471/KnownIssues/479874-WPF%20Touch%20Stops%20Working%20After%20Prolonged%20Use%20of%20Popups.md) - [481090 - WPF - Touch generates a NullReferenceException in WispLogic.ProcessInputReport](https://github.com/Microsoft/dotnet/blob/master/releases/net471/KnownIssues/481090-WPF%20Touch%20generates%20NullReferenceException%20in%20ProcessInputReport.md) - [489937 - WPF - Touch/Stylus Generates AccessViolations and Heap Corruption in GetPenEventMultiple](https://github.com/Microsoft/dotnet/blob/master/releases/net471/KnownIssues/489937-WPF%20Touch%20and%20Stylus%20AccessViolation%20in%20GetPenEventMultiple.md) From efd7b756b2d6503b5ea3a43292cb9702590b586e Mon Sep 17 00:00:00 2001 From: Lee Culver Date: Tue, 6 Feb 2018 12:53:41 -0800 Subject: [PATCH 546/872] Updated to include proposed changes from review --- ...th high rate of large object allocation.md | 30 +++++++++---------- 1 file changed, 14 insertions(+), 16 deletions(-) diff --git a/releases/net471/KnownIssues/470006-GC Crashes with high rate of large object allocation.md b/releases/net471/KnownIssues/470006-GC Crashes with high rate of large object allocation.md index b0a8f1027..c3e1c2a01 100644 --- a/releases/net471/KnownIssues/470006-GC Crashes with high rate of large object allocation.md +++ b/releases/net471/KnownIssues/470006-GC Crashes with high rate of large object allocation.md @@ -1,36 +1,34 @@ -# Rare crashes can occur when background GC is enabled in applications which allocate and free large objects at a high rate +# Rare crashes can occur when background GC is enabled in applications that allocate and free large objects at a high rate ## Symptoms -When background GC is enabled, an application running against .NET Framework 4.7.1 experiences -intermittent crashes which did not occur when running against other .NET Framework versions. +When background GC is enabled, an application running on .NET Framework 4.7.1 experiences +intermittent crashes that did not occur when running on other .NET Framework versions. ## Cause -Changes to the GC in .NET Framework 4.7.1 caused this problem. - -Specifically, .NET Framework 4.7.1 contains changes which improve background GC performance. -These changes unintentionally introduced cases where a rare combination of factors can cause -the background GC to reclaim a large object while the program is still using it. +.NET Framework 4.7.1 includes changes that improve background GC performance. +Because of these changes, a rare combination of factors can cause the background GC +to reclaim a large object while the program is still using it. ## Impact -This problem impacts applications which run with the background GC enabled and which also allocate -and free large objects at a high rate. As described in [this article](https://docs.microsoft.com/en-us/dotnet/standard/garbage-collection/fundamentals#the-managed-heap), +This problem impacts applications that run with the background GC enabled and that also allocate +and free large objects at a high rate. As described in the article [Fundamentals of Garbage Collection](https://docs.microsoft.com/en-us/dotnet/standard/garbage-collection/fundamentals#the-managed-heap), a large object is any object that is 85,000 bytes or larger in size. -This problem is rare, and is more likely to occur when running against the x86 version of the -.NET Framework than when running against the x64 version of the .NET Framework. +This problem is rare, and is more likely to occur when running on the x86 version of the +.NET Framework than when running on the x64 version of the 4.7.1 .NET Framework. ## Workarounds -The most practical workaround is to disable the background GC using the configuration file -elements described in [this article](https://docs.microsoft.com/en-us/dotnet/framework/configure-apps/file-schema/runtime/gcconcurrent-element). - +The most practical workaround is to disable the background GC by setting the enabled attribute of the [ element](https://docs.microsoft.com/en-us/dotnet/framework/configure-apps/file-schema/runtime/gcconcurrent-element) in the + section of your application configuration file to false. + The only other workaround is to change the application to allocate and free large objects at a much lower rate. ## Resolution -This problem is fixed in .NET Framework 4.7.2. +This problem is fixed in [.NET Framework 4.7.2](http://go.microsoft.com/fwlink/?LinkId=863281). From 97ec633bc68a1706174b811ebf616019bfd7cf81 Mon Sep 17 00:00:00 2001 From: Lee Culver Date: Tue, 6 Feb 2018 12:54:37 -0800 Subject: [PATCH 547/872] Updated to incorporate feedback --- releases/net471/dotnet471-known-issues.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/releases/net471/dotnet471-known-issues.md b/releases/net471/dotnet471-known-issues.md index 33c32ca37..551943b3c 100644 --- a/releases/net471/dotnet471-known-issues.md +++ b/releases/net471/dotnet471-known-issues.md @@ -4,7 +4,7 @@ This document lists the known issues that you may experience after you install the Microsoft .NET Framework 4.7.1. ## Product issues for the .NET Framework 4.7.1 -- [470006 - GC - Rare crashes can occur when background GC is enabled in applications which allocate and free large objects at a high rate](https://github.com/Microsoft/dotnet/blob/master/releases/net471/KnownIssues/470006-GC%20Crashes%20with%20high%20rate%20of%20large%20object%20allocation.md) +- [470006 - GC - Rare crashes can occur when background GC is enabled in applications that allocate and free large objects at a high rate](https://github.com/Microsoft/dotnet/blob/master/releases/net471/KnownIssues/470006-GC%20Crashes%20with%20high%20rate%20of%20large%20object%20allocation.md) - [479874 - WPF - Touch Stops Working After Rapid/Prolonged Use Of Popups](https://github.com/Microsoft/dotnet/blob/master/releases/net471/KnownIssues/479874-WPF%20Touch%20Stops%20Working%20After%20Prolonged%20Use%20of%20Popups.md) - [481090 - WPF - Touch generates a NullReferenceException in WispLogic.ProcessInputReport](https://github.com/Microsoft/dotnet/blob/master/releases/net471/KnownIssues/481090-WPF%20Touch%20generates%20NullReferenceException%20in%20ProcessInputReport.md) - [489937 - WPF - Touch/Stylus Generates AccessViolations and Heap Corruption in GetPenEventMultiple](https://github.com/Microsoft/dotnet/blob/master/releases/net471/KnownIssues/489937-WPF%20Touch%20and%20Stylus%20AccessViolation%20in%20GetPenEventMultiple.md) From ed4016d2815740207299db77427444765974c5ab Mon Sep 17 00:00:00 2001 From: Ron Petrusha Date: Wed, 7 Feb 2018 07:00:55 -0800 Subject: [PATCH 548/872] fixed formatting (#614) * fixed formatting (hopefully) * Fixed links broken after migration --- ...scapes-spaces-in-strings-passed-in-via-route-parameters.md | 2 +- .../remove-ssl3-from-the-wcf-transportdefaults.md | 4 ++-- .../compatibility/winforms-accessibility-changes-471.md | 4 ++-- .../wpf-selector-selectionchanged-and-selectedvalue.md | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/Documentation/compatibility/asp_net-mvc-now-escapes-spaces-in-strings-passed-in-via-route-parameters.md b/Documentation/compatibility/asp_net-mvc-now-escapes-spaces-in-strings-passed-in-via-route-parameters.md index b356a5bac..158bace05 100644 --- a/Documentation/compatibility/asp_net-mvc-now-escapes-spaces-in-strings-passed-in-via-route-parameters.md +++ b/Documentation/compatibility/asp_net-mvc-now-escapes-spaces-in-strings-passed-in-via-route-parameters.md @@ -19,7 +19,7 @@ In order to conform to RFC 2396, spaces in route paths are now escaped when popu Code should be updated to unescape string parameters from a route. If the original URI is needed, it can be accessed with the .OriginalString API. ### Affected APIs -* `M:System.Web.Http.RouteAttribute.#ctor(System.String)` +* `M:System.Web.Http.RouteAttribute.%23ctor(System.String)` ### Category ASP.NET diff --git a/Documentation/compatibility/remove-ssl3-from-the-wcf-transportdefaults.md b/Documentation/compatibility/remove-ssl3-from-the-wcf-transportdefaults.md index 3ad2c0a5c..a881bc4a6 100644 --- a/Documentation/compatibility/remove-ssl3-from-the-wcf-transportdefaults.md +++ b/Documentation/compatibility/remove-ssl3-from-the-wcf-transportdefaults.md @@ -27,8 +27,8 @@ Ssl3 to the list of negotiated protocols. * * -* [\ section of \](https://docs.microsoft.com/en-us/dotnet/articles/framework/configure-apps/file-schema/wcf/transport-of-nettcpbinding) -* [\ section of \](https://docs.microsoft.com/en-us/dotnet/articles/framework/configure-apps/file-schema/wcf/sslstreamsecurity) +* [\ section of \](https://docs.microsoft.com/en-us/dotnet/articles/framework/configure-apps/file-schema/wcf/transport-of-nettcpbinding) +* [\ section of \](https://docs.microsoft.com/en-us/dotnet/articles/framework/configure-apps/file-schema/wcf/sslstreamsecurity) ### Affected APIs * `P:System.ServiceModel.Channels.SslStreamSecurityBindingElement.SslProtocols` diff --git a/Documentation/compatibility/winforms-accessibility-changes-471.md b/Documentation/compatibility/winforms-accessibility-changes-471.md index c89abc292..1732e3682 100644 --- a/Documentation/compatibility/winforms-accessibility-changes-471.md +++ b/Documentation/compatibility/winforms-accessibility-changes-471.md @@ -1,4 +1,4 @@ -## Accessibility improvements in Windows Forms controls +## Accessibility improvements in Windows Forms controls ### Scope Major @@ -109,7 +109,7 @@ NOTE: Windows10 has changed values for some high contrast system colors. Windows ### Affected APIs * `M:System.Windows.Forms.ToolStripDropDownButton.CreateAccessibilityInstance` * `P:System.Windows.Forms.DomainUpDown.DomainUpDownAccessibleObject.Name` -* `T:System.Windows.Forms.MonthCalendar.MonthCalendarAccessibleObject` +* `T:System.Windows.Forms.MonthCalendar.AccessibilityObject` ### Category diff --git a/Documentation/compatibility/wpf-selector-selectionchanged-and-selectedvalue.md b/Documentation/compatibility/wpf-selector-selectionchanged-and-selectedvalue.md index 8b4e41a8c..5d3f3ae54 100644 --- a/Documentation/compatibility/wpf-selector-selectionchanged-and-selectedvalue.md +++ b/Documentation/compatibility/wpf-selector-selectionchanged-and-selectedvalue.md @@ -12,7 +12,7 @@ NotPlanned ### Change Description Starting with the .Net Framework 4.7.1, a always updates the value of its property before raising the - event, when its selection changes. + event, when its selection changes. This makes the SelectedValue property consistent with the other selection properties ( and ), which are updated before raising the event. From daf78b17d39916a52c07dc0e5b7f857f46d823aa Mon Sep 17 00:00:00 2001 From: Ron Petrusha Date: Wed, 7 Feb 2018 18:05:33 -0800 Subject: [PATCH 549/872] Documented two .NET Framework 4.6 app compat switches (#615) * Documented DontEnableSchSendAuxRecord switch * added note * added second switch * Finished documenting switches * Added readme * Fixed formatting issues --- Documentation/compatibility/README.md | 4 +- .../certificate-eku-oid-validation.md | 48 +++++++++++++++++++ ...ord-flag-to-the-underlying-schannel-api.md | 48 +++++++++++++++++++ 3 files changed, 99 insertions(+), 1 deletion(-) create mode 100644 Documentation/compatibility/certificate-eku-oid-validation.md create mode 100644 Documentation/compatibility/tls-1-x-by-default-passes-sch-send-aux-record-flag-to-the-underlying-schannel-api.md diff --git a/Documentation/compatibility/README.md b/Documentation/compatibility/README.md index 8aae91d82..49c80d84c 100644 --- a/Documentation/compatibility/README.md +++ b/Documentation/compatibility/README.md @@ -93,6 +93,7 @@ Please help us improve the [.NET Framework Application Compatibility documents]( - [Attempting a TCP/IP connection to a SQL Server database that resolves to `localhost` fails](sql-server-database-connection-that-resolves-to-localhost.md) - [Calling Attribute.GetCustomAttributes on an indexer property no longer throws AmbiguousMatchException if the ambiguity can be resolved by index's type](calling-attribute_getcustomattributes-on-an-indexer-property-no-longer-throws-ambiguousmatchexception.md) - [Calling CreateDefaultAuthorizationContext with a null argument has changed](calling-createdefaultauthorizationcontext-with-a-null-argument-has-changed.md) +- [Certificate EKU OID validation](certificate-eku-oid-validation.md) - [ClickOnce supports SHA-256 on 4.0-targeted apps](clickonce-supports-sha-256-on-4_0-targeted-apps.md) - [CoerceIsSelectionBoxHighlighted](coerceisselectionboxhighlighted.md) - [ContentDisposition DateTimes returns slightly different string](contentdisposition-datetimes-returns-slightly-different-string.md) @@ -110,7 +111,8 @@ Please help us improve the [.NET Framework Application Compatibility documents]( - [Reflection objects can no longer be passed from managed code to out-of-process DCOM clients](reflection-objects-can-no-longer-be-passed-from-managed-code-to-out-of-process-dcom-clients.md) - [TargetFrameworkName for default app domain no longer defaults to null if not set](targetframeworkname-for-default-app-domain-no-longer-defaults-to-null-if-not-set.md) - [The .NET Framework 4.6 does not use a 4.5.x.x version when registering itself in the registry](the-_net-framework-4_6-does-not-use-a-4_5_x_x-version-when-registering-itself-in-the-registry.md) -- [WCF services that use NETTCP with SSL sercurity and MD5 certificate authentication](wcf-services-using-nettcp-with-ssl-security-and-md5-certificate-authentication.md) +- [TLS 1.x by default passes the SCH_SEND_AUX_RECORD flag to the underlying SCHANNEL API](tls-1-x-by-default-passes-sch-send-aux-record-flag-to-the-underlying-schannel-api.md) +- [WCF services that use NETTCP with SSL security and MD5 certificate authentication](wcf-services-using-nettcp-with-ssl-security-and-md5-certificate-authentication.md) - [WPF layout rounding of margins has changed](wpf-layout-rounding-of-margins-has-changed.md) - [WPF spell checking in text-enabled controls will not work in Windows 10 for languages not in the OS's input language list](wpf-spell-checking-in-text-enabled-controls-will-not-work-in-windows-10-for-languages-not-in-the-input-language-list.md) - [WPF windows are rendered without clipping when extending outside a single monitor](wpf-windows-are-rendered-without-clipping-when-extending-outside-a-single-monitor.md) diff --git a/Documentation/compatibility/certificate-eku-oid-validation.md b/Documentation/compatibility/certificate-eku-oid-validation.md new file mode 100644 index 000000000..6868bb185 --- /dev/null +++ b/Documentation/compatibility/certificate-eku-oid-validation.md @@ -0,0 +1,48 @@ +## Certificate EKU OID validation + +### Scope +Minor + +### Version Introduced +4.6 + +### Source Analyzer Status +NotPlanned + +### Change Description + +Starting with .NET Framework 4.6, the or classes perform enhanced key use (EKU) object identifier (OID) validation. An enhanced key usage (EKU) extension is a collection of object identifiers (OIDs) that indicate the applications that use the key. EKU OID validation uses remote certificate callbacks to ensure that the remote certificate has the correct OIDs for the intended purpose. + +- [X] Quirked +- [ ] Build-time break + +### Recommended Action + +If this change is undesirable, you can disable certificate EKU OID validation by adding the following switch to the [`\` element](https://docs.microsoft.com/en-us/dotnet/framework/configure-apps/file-schema/runtime/appcontextswitchoverrides-element) in the [`\ section](https://docs.microsoft.com/en-us/dotnet/framework/configure-apps/file-schema/runtime/runtime-element) of your app configuration file: + +```xml + + + +``` +> [!IMPORTANT] +> This setting is provided for backward compatibility only. Its use is otherwise not recommended. + + +### Affected APIs +* `T:System.Net.Security.SslStream` +* `T:System.Net.ServicePointManager` +* `T:System.Net.Http.HttpClient` +* `T:System.Net.Mail.SmtpClient` +* `T:System.Net.HttpWebRequest` +* `T:System.Net.FtpWebRequest` + +### Category +Networking + + + + diff --git a/Documentation/compatibility/tls-1-x-by-default-passes-sch-send-aux-record-flag-to-the-underlying-schannel-api.md b/Documentation/compatibility/tls-1-x-by-default-passes-sch-send-aux-record-flag-to-the-underlying-schannel-api.md new file mode 100644 index 000000000..6746d9280 --- /dev/null +++ b/Documentation/compatibility/tls-1-x-by-default-passes-sch-send-aux-record-flag-to-the-underlying-schannel-api.md @@ -0,0 +1,48 @@ +## TLS 1.x by default passes the SCH_SEND_AUX_RECORD flag to the underlying SCHANNEL API + +### Scope +Edge + +### Version Introduced +4.6 + +### Source Analyzer Status +NotPlanned + +### Change Description + +When using TLS 1.x, the .NET Framework relies on the underlying Windows SCHANNEL API. Starting with .NET Framework 4.6, the [`SCH_SEND_AUX_RECORD`](https://msdn.microsoft.com/en-us/library/windows/desktop/aa379810(v=vs.85).aspx) flag is passed by default to SCHANNEL. This causes SCHANNEL to split data to be encrypted into two separate records, the first as a single byte and the second as *n*-1 bytes. + +In rare cases, this breaks communication between clients and existing servers that make the assumption that the data resides in a single record. + +- [X] Quirked +- [ ] Build-time break + +### Recommended Action + +If this change breaks communication with an existing server, you can disable sending the [`SCH_SEND_AUX_RECORD`](https://msdn.microsoft.com/en-us/library/windows/desktop/aa379810(v=vs.85).aspx) flag and restore the previous behavior of not splitting data into separate records by adding the following switch to the [`\` element](https://docs.microsoft.com/en-us/dotnet/framework/configure-apps/file-schema/runtime/appcontextswitchoverrides-element) in the [`\ section](https://docs.microsoft.com/en-us/dotnet/framework/configure-apps/file-schema/runtime/runtime-element) of your app configuration file: + +```xml + + + +``` +> [!IMPORTANT] +> This setting is provided for backward compatibility only. Its use is otherwise not recommended. + +### Affected APIs +* `T:System.Net.Security.SslStream` +* `T:System.Net.ServicePointManager` +* `T:System.Net.Http.HttpClient` +* `T:System.Net.Mail.SmtpClient` +* `T:System.Net.HttpWebRequest` +* `T:System.Net.FtpWebRequest` + +### Category +Networking + + + From 58429c0620e4022664ba3dbf3443bc073aa99eb4 Mon Sep 17 00:00:00 2001 From: Noah Falk Date: Wed, 7 Feb 2018 18:12:46 -0800 Subject: [PATCH 550/872] Adding additional fix info (#616) * Adding additional fix info Adding info for the Fall Creators Update patch * Update 517815-BCL Applications making heavy use of System.Diagnostics.StackTrace might run more slowly on .NET 4.7.1.md * Update 517815-BCL Applications making heavy use of System.Diagnostics.StackTrace might run more slowly on .NET 4.7.1.md Fixing links (copy/pasting doesn't format them correctly) * Update 517815-BCL Applications making heavy use of System.Diagnostics.StackTrace might run more slowly on .NET 4.7.1.md Minor changes --- ...stics.StackTrace might run more slowly on .NET 4.7.1.md | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/releases/net471/KnownIssues/517815-BCL Applications making heavy use of System.Diagnostics.StackTrace might run more slowly on .NET 4.7.1.md b/releases/net471/KnownIssues/517815-BCL Applications making heavy use of System.Diagnostics.StackTrace might run more slowly on .NET 4.7.1.md index 9292494f9..e089f5bcf 100644 --- a/releases/net471/KnownIssues/517815-BCL Applications making heavy use of System.Diagnostics.StackTrace might run more slowly on .NET 4.7.1.md +++ b/releases/net471/KnownIssues/517815-BCL Applications making heavy use of System.Diagnostics.StackTrace might run more slowly on .NET 4.7.1.md @@ -20,5 +20,10 @@ regressed. ## Resolution -[09-Jan-2018] The fix for this issue is included in the [Update for .NET Framework 4.7.1 - KB4054856](http://go.microsoft.com/fwlink/?LinkId=866028) for all platforms except Windows 10 Fall Creators Update. This fix removes the Portable PDB functionality from 4.7.1. In 4.7.2 we anticipate having an improved fix available which both performs well and re-enables the portable PDB functionality. +[09-Jan-2018] The fix for this issue is available as follows: +- For Windows 10 Fall Creators Update, see the update https://support.microsoft.com/en-us/help/4058258/windows-10-update-kb4058258. +- For all other platforms, the fix for this issue is included in the [Update for .NET Framework 4.7.1 - KB4054856](http://go.microsoft.com/fwlink/?LinkId=866028). + +This fix removes the Portable PDB functionality from 4.7.1. In [.NET Framework 4.7.2](http://go.microsoft.com/fwlink/?LinkId=863281), we anticipate having an improved fix available which both performs well and re-enables the portable PDB functionality. + From 8c1a54271054e5671094776e2151a0192acbfe4f Mon Sep 17 00:00:00 2001 From: Holly Muenchow Date: Thu, 8 Feb 2018 13:44:07 -0800 Subject: [PATCH 551/872] Update .NET UWP release notes for 6.0.7 release --- releases/UWP/net-native2.0/README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/releases/UWP/net-native2.0/README.md b/releases/UWP/net-native2.0/README.md index 6704b3f36..96286e645 100644 --- a/releases/UWP/net-native2.0/README.md +++ b/releases/UWP/net-native2.0/README.md @@ -3,6 +3,9 @@ You can see what was included in each .NET Native 2.0 ([Microsoft.NETCore.UniversalWindowsPlatform 6.0.x](https://www.nuget.org/packages/Microsoft.NETCore.UniversalWindowsPlatform)) release below. When using Visual Studio these packages require Visual Studio 2017 Version 15.4 or later. +### UWP 6.0.7 (.NET native tools 2.0.2) (February 7th, 2018) +- ILC updated to copy all .pdb files to the output .appxsyms, including ones that do not have matching binaries. #524755 + ### UWP 6.0.6 (.NET native tools 2.0.2) (January 9th, 2018) - Fixed CVE-2018-0786: Security Feature Bypass in X509 Certificate Validation: https://github.com/Microsoft/dotnet/issues/597 From 3cce542a8912197c45c733d43e060072aebe3577 Mon Sep 17 00:00:00 2001 From: Holly Muenchow Date: Thu, 8 Feb 2018 16:13:52 -0800 Subject: [PATCH 552/872] fixed based on feedback. --- releases/UWP/net-native2.0/README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/releases/UWP/net-native2.0/README.md b/releases/UWP/net-native2.0/README.md index 96286e645..281019260 100644 --- a/releases/UWP/net-native2.0/README.md +++ b/releases/UWP/net-native2.0/README.md @@ -1,10 +1,10 @@ -# .NET native tools 2.0 (UWP 6.0.x) Release Notes +# .NET native tools 2.0 (UWP 6.0.x) Release Notes You can see what was included in each .NET Native 2.0 ([Microsoft.NETCore.UniversalWindowsPlatform 6.0.x](https://www.nuget.org/packages/Microsoft.NETCore.UniversalWindowsPlatform)) release below. When using Visual Studio these packages require Visual Studio 2017 Version 15.4 or later. -### UWP 6.0.7 (.NET native tools 2.0.2) (February 7th, 2018) -- ILC updated to copy all .pdb files to the output .appxsyms, including ones that do not have matching binaries. #524755 +### UWP 6.0.7 (.NET native tools 2.0.3) (February 7th, 2018) +- Updated ILC to copy all .pdb files to the output .appxsyms, including ones that do not have matching binaries. [524755] ### UWP 6.0.6 (.NET native tools 2.0.2) (January 9th, 2018) - Fixed CVE-2018-0786: Security Feature Bypass in X509 Certificate Validation: https://github.com/Microsoft/dotnet/issues/597 From 5f009926a39abc78046abe71c9869b5dcfbaee56 Mon Sep 17 00:00:00 2001 From: Charles Lowell Date: Mon, 12 Feb 2018 14:46:07 -0800 Subject: [PATCH 553/872] Fix inline code span (#618) * Fix inline code ' -> ` * Update wpf-selector-crash-when-removing-item-from-custom-collection.md --- ...-selector-crash-when-removing-item-from-custom-collection.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Documentation/compatibility/wpf-selector-crash-when-removing-item-from-custom-collection.md b/Documentation/compatibility/wpf-selector-crash-when-removing-item-from-custom-collection.md index c9032f8ca..46d1ad288 100644 --- a/Documentation/compatibility/wpf-selector-crash-when-removing-item-from-custom-collection.md +++ b/Documentation/compatibility/wpf-selector-crash-when-removing-item-from-custom-collection.md @@ -13,7 +13,7 @@ Minor NotPlanned ### Change Description -An 'T:System.InvalidOperationException` can occur in the following scenario: +An `T:System.InvalidOperationException` can occur in the following scenario: * The ItemsSource for a `T:System.Windows.Controls.Primitives.Selector` is a collection with a custom implementation of `T:System.Collections.Specialized.INotifyCollectionChanged`. * The selected item is removed from the collection. From 11c6dd22dc50cbe8268dc8d6230ebfc26fdd0982 Mon Sep 17 00:00:00 2001 From: Ron Petrusha Date: Tue, 13 Feb 2018 15:28:52 -0800 Subject: [PATCH 554/872] Fixed formatting of opening XML tag (#622) --- Documentation/compatibility/new-64-bit-jit-compiler.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Documentation/compatibility/new-64-bit-jit-compiler.md b/Documentation/compatibility/new-64-bit-jit-compiler.md index 9f7a58cc6..32d1f0247 100644 --- a/Documentation/compatibility/new-64-bit-jit-compiler.md +++ b/Documentation/compatibility/new-64-bit-jit-compiler.md @@ -37,7 +37,7 @@ If you encounter the issues listed above, you can address them by doing any of t **Mitigation of other issues** If you encounter any other difference in behavior between code compiled with the older 64-bit compiler and the new 64-bit JIT compiler, or between the debug and release versions of your app that are both compiled with the new 64-bit JIT compiler, you can do the following to compile your app with the older 64-bit JIT compiler: -- On a per-application basis, you can add the [](https://docs.microsoft.com/dotnet/framework/configure-apps/file-schema/runtime/uselegacyjit-element) element to your application's configuration file. The following disables compilation with the new 64-bit JIT compiler and instead uses the legacy 64-bit JIT compiler. +- On a per-application basis, you can add the [\](https://docs.microsoft.com/dotnet/framework/configure-apps/file-schema/runtime/uselegacyjit-element) element to your application's configuration file. The following disables compilation with the new 64-bit JIT compiler and instead uses the legacy 64-bit JIT compiler. ```xml From b070889016a9faff07ab75a011235ea81d310e70 Mon Sep 17 00:00:00 2001 From: Noah Falk Date: Thu, 15 Feb 2018 13:18:20 -0800 Subject: [PATCH 555/872] Update known issue 517815-BCL Stack traces are missing source information (#623) * Update 517815-BCL Stack traces are missing source information for frames with debug information in the Portable PDB format.md Add the portable PDB conversion tool as a workaround now that it is better documented how to use it. * Update 517815-BCL Stack traces are missing source information for frames with debug information in the Portable PDB format.md PR feedback --- ...rames with debug information in the Portable PDB format.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/releases/net471/KnownIssues/517815-BCL Stack traces are missing source information for frames with debug information in the Portable PDB format.md b/releases/net471/KnownIssues/517815-BCL Stack traces are missing source information for frames with debug information in the Portable PDB format.md index 95e58c437..8be3b104d 100644 --- a/releases/net471/KnownIssues/517815-BCL Stack traces are missing source information for frames with debug information in the Portable PDB format.md +++ b/releases/net471/KnownIssues/517815-BCL Stack traces are missing source information for frames with debug information in the Portable PDB format.md @@ -1,3 +1,4 @@ + # Stack traces are missing source information for frames with debug information in the Portable PDB format when running on .NET Framework 4.7.1 ## Symptoms @@ -12,7 +13,8 @@ The .NET Framework 4.7.1 added support for detecting and parsing the Portable PD ## Workarounds - If you control the build process for the problematic assemblies you may be able to configure it to generate the classic Windows PDB format instead. +- You can use the [PDB conversion tool](https://github.com/dotnet/symreader-converter) to convert the Portable PDBs into the classic Windows PDB format and deploy those with the application instead. ## Resolution -A fix is anticipated in .NET Framework 4.7.2, in the near future, that restores Portable PDB functionality with greatly improved performance. \ No newline at end of file +A fix is anticipated in .NET Framework 4.7.2 in the near future that restores Portable PDB functionality with greatly improved performance. From a6ede26927a4c87a0872e7cbc83bed0ec6856527 Mon Sep 17 00:00:00 2001 From: Ron Petrusha Date: Tue, 20 Feb 2018 10:29:52 -0800 Subject: [PATCH 556/872] Assorted changes (#625) * Assorted changes * Removed remaining occurences of 'en-us' --- Documentation/compatibility/! Template.md | 4 ++-- ...-SignedXML-and-SignedCMS-default-algorithms-to-SHA256.md | 4 ++-- .../SignedXml.GetPublicKey-returns-RSACng-on-net462.md | 2 +- ...nt-implementations-of-imessagefilter_prefiltermessage.md | 2 +- ...apes-spaces-in-strings-passed-in-via-route-parameters.md | 4 +--- ...as-'selecteditem')-to-a-static-property-does-not-work.md | 2 +- .../compatibility/certificate-eku-oid-validation.md | 2 +- .../change-in-path-separator-character-in-zip-files.md | 2 +- ...ol-blocking-period-for-azure-sql-databases-is-removed.md | 2 +- ...pparameters_parentwindowhandle-now-expects-hwnd-value.md | 2 +- .../compatibility/currentculture-flows-across-tasks.md | 4 ++-- ...ulture-not-preserved-across-wpf-dispatcher-operations.md | 2 +- ...deserialization-of-objects-across-appdomains-can-fail.md | 2 +- ...ng_tasks_task-no-longer-propagate-on-finalizer-thread.md | 2 +- ..._extent-return-different-values-beginning-in-_net-4_5.md | 2 +- .../httprequest_contentencoding-property-prohibits-utf7.md | 2 +- .../httputility_javascriptstringencode-escapes-ampersand.md | 2 +- ...selected-binding-issue-with-observablecollection_move.md | 2 +- ...d-marshal_ptrtostructure-overloads-break-dynamic-code.md | 4 ++-- .../no-longer-able-to-set-enableviewstatemac-to-false.md | 2 +- ...eattribute-and-deprecatedattribute-in-winmd-scenarios.md | 4 ++-- .../remove-ssl3-from-the-wcf-transportdefaults.md | 4 ++-- ...otocol-defaults-to-securityprotocoltype.systemdefault.md | 2 +- ...n-the-web-farm-to-use-the-same-_net-framework-version.md | 2 +- ...to-sql-server-1997-or-databases-using-the-via-adapter.md | 4 ++-- .../compatibility/sslstream-support-for-tls-alerts.md | 2 +- ...5_x_x-version-when-registering-itself-in-the-registry.md | 2 +- ...h-send-aux-record-flag-to-the-underlying-schannel-api.md | 4 ++-- ..._htmldecode-no-longer-decodes-invalid-input-sequences.md | 2 +- .../compatibility/winforms-accessibility-changes-471.md | 6 +++--- .../wpf-layout-rounding-of-margins-has-changed.md | 2 +- ...rtificateclaimset_findclaims-considers-all-claimtypes.md | 2 +- 32 files changed, 42 insertions(+), 44 deletions(-) diff --git a/Documentation/compatibility/! Template.md b/Documentation/compatibility/! Template.md index 5b0354868..7afbd4656 100644 --- a/Documentation/compatibility/! Template.md +++ b/Documentation/compatibility/! Template.md @@ -6,7 +6,7 @@ ### Scope [|Major|Minor|Edge|Transparent|] -//A description of the Scope values can be found at https://docs.microsoft.com/en-us/dotnet/articles/framework/migration-guide/net-compatibility-diagnostics +//A description of the Scope values can be found at https://docs.microsoft.com/dotnet/articles/framework/migration-guide/net-compatibility-diagnostics ### Version Introduced [|Version in which the breaking change first occurred|] @@ -39,7 +39,7 @@ [| List of APIs affected by change referred to using docids|] // For details on how to generate docids, please look at other change files or -// see https://msdn.microsoft.com/en-us/library/fsbx0t7x.aspx for the spec. +// see https://msdn.microsoft.com/library/fsbx0t7x.aspx for the spec. // // For example, if all members of System.Xml.XmlTextReader is affected, we would have the following item: // * `T:System.Xml.XmlTextReader` diff --git a/Documentation/compatibility/Change-SignedXML-and-SignedCMS-default-algorithms-to-SHA256.md b/Documentation/compatibility/Change-SignedXML-and-SignedCMS-default-algorithms-to-SHA256.md index 019447523..76ad8dd4e 100644 --- a/Documentation/compatibility/Change-SignedXML-and-SignedCMS-default-algorithms-to-SHA256.md +++ b/Documentation/compatibility/Change-SignedXML-and-SignedCMS-default-algorithms-to-SHA256.md @@ -24,13 +24,13 @@ There are two new context switch values to control whether SHA1 (insecure) or SH - Switch.System.Security.Cryptography.Pkcs.UseInsecureHashAlgorithms -For applications that target the .NET Framework 4.7.1 and later versions, if the use of SHA256 is undesirable, you can restore the default to SHA1 by adding the following configuration switch to the [runtime](https://docs.microsoft.com/en-us/dotnet/framework/configure-apps/file-schema/runtime/runtime-element) section of your app config file: +For applications that target the .NET Framework 4.7.1 and later versions, if the use of SHA256 is undesirable, you can restore the default to SHA1 by adding the following configuration switch to the [runtime](~/docs/framework/configure-apps/file-schema/runtime/runtime-element.md) section of your app config file: ```xml ``` -For applications that target the .NET Framework 4.7 and earlier versions, you can opt into this change by adding the following configuration switch to the [runtime](https://docs.microsoft.com/en-us/dotnet/framework/configure-apps/file-schema/runtime/runtime-element) section of your app config file: +For applications that target the .NET Framework 4.7 and earlier versions, you can opt into this change by adding the following configuration switch to the [runtime](~/docs/framework/configure-apps/file-schema/runtime/runtime-element.md) section of your app config file: ```xml diff --git a/Documentation/compatibility/SignedXml.GetPublicKey-returns-RSACng-on-net462.md b/Documentation/compatibility/SignedXml.GetPublicKey-returns-RSACng-on-net462.md index a892a3723..f71f70bb3 100644 --- a/Documentation/compatibility/SignedXml.GetPublicKey-returns-RSACng-on-net462.md +++ b/Documentation/compatibility/SignedXml.GetPublicKey-returns-RSACng-on-net462.md @@ -21,7 +21,7 @@ Starting with the .NET Framework 4.6.2, the concrete type of the object returned ### Recommended Action -Starting with apps running on the .NET Framework 4.7.1, you can use the CryptoServiceProvider implementation used by default in the .NET Framework 4.6.1 and earlier versions by adding the following configuration switch to the [runtime](https://docs.microsoft.com/en-us/dotnet/framework/configure-apps/file-schema/runtime/runtime-element) section of your app config file: +Starting with apps running on the .NET Framework 4.7.1, you can use the CryptoServiceProvider implementation used by default in the .NET Framework 4.6.1 and earlier versions by adding the following configuration switch to the [runtime](~/docs/framework/configure-apps/file-schema/runtime/runtime-element.md) section of your app config file: ```xml diff --git a/Documentation/compatibility/application_filtermessage-no-longer-throws-for-re-entrant-implementations-of-imessagefilter_prefiltermessage.md b/Documentation/compatibility/application_filtermessage-no-longer-throws-for-re-entrant-implementations-of-imessagefilter_prefiltermessage.md index abef1e5ad..82da4feab 100644 --- a/Documentation/compatibility/application_filtermessage-no-longer-throws-for-re-entrant-implementations-of-imessagefilter_prefiltermessage.md +++ b/Documentation/compatibility/application_filtermessage-no-longer-throws-for-re-entrant-implementations-of-imessagefilter_prefiltermessage.md @@ -38,7 +38,7 @@ Framework 4.6.1. Apps targeting the .NET Framework 4.6.1 can opt out of this change (or apps targeting older Frameworks may opt in) by using the -[DontSupportReentrantFilterMessage](https://docs.microsoft.com/en-us/dotnet/articles/framework/migration-guide/mitigation-custom-imessagefilter-prefiltermessage-implementations#mitigation) +[DontSupportReentrantFilterMessage](~/docs/framework/migration-guide/mitigation-custom-imessagefilter-prefiltermessage-implementations#mitigation.md) compatibility switch. ### Affected APIs diff --git a/Documentation/compatibility/asp_net-mvc-now-escapes-spaces-in-strings-passed-in-via-route-parameters.md b/Documentation/compatibility/asp_net-mvc-now-escapes-spaces-in-strings-passed-in-via-route-parameters.md index 158bace05..5f58a9092 100644 --- a/Documentation/compatibility/asp_net-mvc-now-escapes-spaces-in-strings-passed-in-via-route-parameters.md +++ b/Documentation/compatibility/asp_net-mvc-now-escapes-spaces-in-strings-passed-in-via-route-parameters.md @@ -19,13 +19,11 @@ In order to conform to RFC 2396, spaces in route paths are now escaped when popu Code should be updated to unescape string parameters from a route. If the original URI is needed, it can be accessed with the .OriginalString API. ### Affected APIs -* `M:System.Web.Http.RouteAttribute.%23ctor(System.String)` +* `M:System.Web.Mvc.RouteAttribute.#ctor(System.String)` ### Category ASP.NET -[More information](http://connect.microsoft.com/VisualStudio/feedback/details/878827/issues-with-encoding-in-web-api-in-4-5-2) - diff --git a/Documentation/compatibility/currentculture-not-preserved-across-wpf-dispatcher-operations.md b/Documentation/compatibility/currentculture-not-preserved-across-wpf-dispatcher-operations.md index da136b19f..30fb36682 100644 --- a/Documentation/compatibility/currentculture-not-preserved-across-wpf-dispatcher-operations.md +++ b/Documentation/compatibility/currentculture-not-preserved-across-wpf-dispatcher-operations.md @@ -67,7 +67,7 @@ setting the following compatibility switch: ``` This issue has been fixed by WPF in .NET Framework 4.6.2. It has also been fixed -in .NET Frameworks 4.6, 4.6.1 through [KB 3139549](https://support.microsoft.com/en-us/kb/3139549). +in .NET Frameworks 4.6, 4.6.1 through [KB 3139549](https://support.microsoft.com/kb/3139549). Applications targeting .NET 4.6 or later will automatically get the right behavior in WPF applications - /) diff --git a/Documentation/compatibility/deserialization-of-objects-across-appdomains-can-fail.md b/Documentation/compatibility/deserialization-of-objects-across-appdomains-can-fail.md index 6ca5ff3fc..770f48d77 100644 --- a/Documentation/compatibility/deserialization-of-objects-across-appdomains-can-fail.md +++ b/Documentation/compatibility/deserialization-of-objects-across-appdomains-can-fail.md @@ -16,7 +16,7 @@ In some cases, when an app uses two or more app domains with different applicati - [ ] Build-time break ### Recommended Action -See [Mitigation: Deserialization of Objects Across App Domains](https://docs.microsoft.com/en-us/dotnet/articles/framework/migration-guide/mitigation-deserialization-of-objects-across-app-domains) +See [Mitigation: Deserialization of Objects Across App Domains](~/docs/framework/migration-guide/mitigation-deserialization-of-objects-across-app-domains.md) ### Affected APIs * Not detectable via API analysis diff --git a/Documentation/compatibility/exceptions-during-unobserved-processing-in-system_threading_tasks_task-no-longer-propagate-on-finalizer-thread.md b/Documentation/compatibility/exceptions-during-unobserved-processing-in-system_threading_tasks_task-no-longer-propagate-on-finalizer-thread.md index 54b0c6758..918b4fa17 100644 --- a/Documentation/compatibility/exceptions-during-unobserved-processing-in-system_threading_tasks_task-no-longer-propagate-on-finalizer-thread.md +++ b/Documentation/compatibility/exceptions-during-unobserved-processing-in-system_threading_tasks_task-no-longer-propagate-on-finalizer-thread.md @@ -29,7 +29,7 @@ finalizer thread, the previous behavior can be restored by providing an appropriate handler for the event, or by setting a -[runtime configuration element](https://docs.microsoft.com/en-us/dotnet/articles/framework/configure-apps/file-schema/runtime/throwunobservedtaskexceptions-element). +[runtime configuration element](~/docs/framework/configure-apps/file-schema/runtime/throwunobservedtaskexceptions-element.md). ### Affected APIs * `M:System.Threading.Tasks.Task.Run(System.Action)` diff --git a/Documentation/compatibility/glyphrun_computeinkboundingbox()-and-formattedtext_extent-return-different-values-beginning-in-_net-4_5.md b/Documentation/compatibility/glyphrun_computeinkboundingbox()-and-formattedtext_extent-return-different-values-beginning-in-_net-4_5.md index acc51e8d7..39f391395 100644 --- a/Documentation/compatibility/glyphrun_computeinkboundingbox()-and-formattedtext_extent-return-different-values-beginning-in-_net-4_5.md +++ b/Documentation/compatibility/glyphrun_computeinkboundingbox()-and-formattedtext_extent-return-different-values-beginning-in-_net-4_5.md @@ -43,6 +43,6 @@ the app.config file: ### Category Windows Presentation Foundation (WPF) -[More information](http://support.microsoft.com/en-us/kb/3009678) +[More information](http://support.microsoft.com/kb/3009678) diff --git a/Documentation/compatibility/httprequest_contentencoding-property-prohibits-utf7.md b/Documentation/compatibility/httprequest_contentencoding-property-prohibits-utf7.md index 803711149..254c93763 100644 --- a/Documentation/compatibility/httprequest_contentencoding-property-prohibits-utf7.md +++ b/Documentation/compatibility/httprequest_contentencoding-property-prohibits-utf7.md @@ -25,7 +25,7 @@ Ideally, applications should be updated to not use UTF-7 encoding in s. Alternatively, legacy behavior can be restored by using the `aspnet:AllowUtf7RequestContentEncoding` attribute of the -[appSettings](https://msdn.microsoft.com/en-us/library/hh975440(v=vs.110).aspx) +[appSettings](https://msdn.microsoft.com/library/hh975440(v=vs.110).aspx) element. ### Affected APIs diff --git a/Documentation/compatibility/httputility_javascriptstringencode-escapes-ampersand.md b/Documentation/compatibility/httputility_javascriptstringencode-escapes-ampersand.md index 789a87fa1..b851ba4da 100644 --- a/Documentation/compatibility/httputility_javascriptstringencode-escapes-ampersand.md +++ b/Documentation/compatibility/httputility_javascriptstringencode-escapes-ampersand.md @@ -21,7 +21,7 @@ escapes the ampersand (&) character. If your app depends on the previous behavior of this method, you can add an aspnet:JavaScriptDoNotEncodeAmpersand setting to the -[ASP.NET appSettings element](https://msdn.microsoft.com/en-us/library/hh975440(v=vs.110).aspx) +[ASP.NET appSettings element](https://msdn.microsoft.com/library/hh975440.aspx) in your configuration file. ### Affected APIs diff --git a/Documentation/compatibility/listboxitem-isselected-binding-issue-with-observablecollection_move.md b/Documentation/compatibility/listboxitem-isselected-binding-issue-with-observablecollection_move.md index 25321ae61..ebbe37bbb 100644 --- a/Documentation/compatibility/listboxitem-isselected-binding-issue-with-observablecollection_move.md +++ b/Documentation/compatibility/listboxitem-isselected-binding-issue-with-observablecollection_move.md @@ -43,6 +43,6 @@ Framework. ### Category Windows Presentation Foundation (WPF) -[More information](http://social.msdn.microsoft.com/Forums/en-US/afcbc8b3-a2f2-41e4-b402-2efc9eab1ffe/listboxitem-isselected-binding-issue-with-observablecollectiontmove?forum=wpf) +[More information](http://social.msdn.microsoft.com/Forums/afcbc8b3-a2f2-41e4-b402-2efc9eab1ffe/listboxitem-isselected-binding-issue-with-observablecollectiontmove?forum=wpf) diff --git a/Documentation/compatibility/marshal_sizeof-and-marshal_ptrtostructure-overloads-break-dynamic-code.md b/Documentation/compatibility/marshal_sizeof-and-marshal_ptrtostructure-overloads-break-dynamic-code.md index 797260b3f..724684164 100644 --- a/Documentation/compatibility/marshal_sizeof-and-marshal_ptrtostructure-overloads-break-dynamic-code.md +++ b/Documentation/compatibility/marshal_sizeof-and-marshal_ptrtostructure-overloads-break-dynamic-code.md @@ -29,7 +29,7 @@ have been added that may be ambiguous to the scripting engines. Update scripts to clearly indicate which overload should be used. This can typically done by explicitly casting the methods' type parameters as -. See [this link](https://support.microsoft.com/en-us/kb/2909958/) +. See [this link](https://support.microsoft.com/kb/2909958/) for more detail and examples of how to workaround the issue. ### Affected APIs @@ -38,7 +38,7 @@ for more detail and examples of how to workaround the issue. ### Category Core -[More information](https://support.microsoft.com/en-us/kb/2909958/) +[More information](https://support.microsoft.com/kb/2909958/) diff --git a/Documentation/compatibility/sqlconnection-can-no-longer-connect-to-sql-server-1997-or-databases-using-the-via-adapter.md b/Documentation/compatibility/sqlconnection-can-no-longer-connect-to-sql-server-1997-or-databases-using-the-via-adapter.md index e53181db2..1c803fefe 100644 --- a/Documentation/compatibility/sqlconnection-can-no-longer-connect-to-sql-server-1997-or-databases-using-the-via-adapter.md +++ b/Documentation/compatibility/sqlconnection-can-no-longer-connect-to-sql-server-1997-or-databases-using-the-via-adapter.md @@ -10,7 +10,7 @@ Edge Planned ### Change Description -Connections to SQL Server databases using the [Virtual Interface Adapter (VIA) protocol](https://technet.microsoft.com/en-us/library/ms191229%28v=sql.105%29.aspx) are no longer supported. +Connections to SQL Server databases using the [Virtual Interface Adapter (VIA) protocol](https://technet.microsoft.com/library/ms191229%28v=sql.105%29.aspx) are no longer supported. The protocol used to connect to a SQL Server database is visible in the connection string. A VIA connection will contain via:\. If this app is connecting to SQL via a protocol other than VIA (tcp: or np: for example), then no breaking change will be encountered. @@ -20,7 +20,7 @@ Also, connections to SQL Server 7 (1997) are no longer supported. - [ ] Build-time break ### Recommended Action -The VIA protocol is deprecated, so an alternative protocol should be used to connect to SQL databases. The most common protocol used is TCP/IP. Instructions for enabling the TCP/IP protocol can be found [here](https://msdn.microsoft.com/en-us/library/bb909712(v=vs.120).aspx). If the database is only accessed from within an intranet, the shared pipes protocol may provide better performance if the network is slow. +The VIA protocol is deprecated, so an alternative protocol should be used to connect to SQL databases. The most common protocol used is TCP/IP. Instructions for enabling the TCP/IP protocol can be found [here](https://msdn.microsoft.com/library/bb909712.aspx). If the database is only accessed from within an intranet, the shared pipes protocol may provide better performance if the network is slow. ### Affected APIs * `M:System.Data.SqlClient.SqlConnection.#ctor(System.String)` diff --git a/Documentation/compatibility/sslstream-support-for-tls-alerts.md b/Documentation/compatibility/sslstream-support-for-tls-alerts.md index b311132ec..d6be2a543 100644 --- a/Documentation/compatibility/sslstream-support-for-tls-alerts.md +++ b/Documentation/compatibility/sslstream-support-for-tls-alerts.md @@ -18,7 +18,7 @@ be thrown by the first I/O Read/Write operation. The code for the can be mapped to the TLS Alert from the remote party using this -[Schannel documentation](https://msdn.microsoft.com/en-us/library/windows/desktop/dd721886%28v=vs.85%29.aspx). +[Schannel documentation](https://msdn.microsoft.com/library/windows/desktop/dd721886%28v=vs.85%29.aspx). For more information, see [RFC 2246: Section 7.2.2 Error alerts](https://tools.ietf.org/html/rfc2246#section-7.2.2) diff --git a/Documentation/compatibility/the-_net-framework-4_6-does-not-use-a-4_5_x_x-version-when-registering-itself-in-the-registry.md b/Documentation/compatibility/the-_net-framework-4_6-does-not-use-a-4_5_x_x-version-when-registering-itself-in-the-registry.md index 6fec39a19..d63f0871f 100644 --- a/Documentation/compatibility/the-_net-framework-4_6-does-not-use-a-4_5_x_x-version-when-registering-itself-in-the-registry.md +++ b/Documentation/compatibility/the-_net-framework-4_6-does-not-use-a-4_5_x_x-version-when-registering-itself-in-the-registry.md @@ -24,6 +24,6 @@ Update apps probing for a .NET Framework 4.5 install by looking for 4.5 registry ### Category Setup and Deployment -[More information](https://docs.microsoft.com/en-us/dotnet/articles/framework/migration-guide/mitigation-product-versioning) +[More information](~/docs/framework/migration-guide/mitigation-product-versioning.md) diff --git a/Documentation/compatibility/tls-1-x-by-default-passes-sch-send-aux-record-flag-to-the-underlying-schannel-api.md b/Documentation/compatibility/tls-1-x-by-default-passes-sch-send-aux-record-flag-to-the-underlying-schannel-api.md index 6746d9280..08eeb1b3c 100644 --- a/Documentation/compatibility/tls-1-x-by-default-passes-sch-send-aux-record-flag-to-the-underlying-schannel-api.md +++ b/Documentation/compatibility/tls-1-x-by-default-passes-sch-send-aux-record-flag-to-the-underlying-schannel-api.md @@ -11,7 +11,7 @@ NotPlanned ### Change Description -When using TLS 1.x, the .NET Framework relies on the underlying Windows SCHANNEL API. Starting with .NET Framework 4.6, the [`SCH_SEND_AUX_RECORD`](https://msdn.microsoft.com/en-us/library/windows/desktop/aa379810(v=vs.85).aspx) flag is passed by default to SCHANNEL. This causes SCHANNEL to split data to be encrypted into two separate records, the first as a single byte and the second as *n*-1 bytes. +When using TLS 1.x, the .NET Framework relies on the underlying Windows SCHANNEL API. Starting with .NET Framework 4.6, the [`SCH_SEND_AUX_RECORD`](https://msdn.microsoft.com/library/windows/desktop/aa379810.aspx) flag is passed by default to SCHANNEL. This causes SCHANNEL to split data to be encrypted into two separate records, the first as a single byte and the second as *n*-1 bytes. In rare cases, this breaks communication between clients and existing servers that make the assumption that the data resides in a single record. @@ -20,7 +20,7 @@ In rare cases, this breaks communication between clients and existing servers th ### Recommended Action -If this change breaks communication with an existing server, you can disable sending the [`SCH_SEND_AUX_RECORD`](https://msdn.microsoft.com/en-us/library/windows/desktop/aa379810(v=vs.85).aspx) flag and restore the previous behavior of not splitting data into separate records by adding the following switch to the [`\` element](https://docs.microsoft.com/en-us/dotnet/framework/configure-apps/file-schema/runtime/appcontextswitchoverrides-element) in the [`\ section](https://docs.microsoft.com/en-us/dotnet/framework/configure-apps/file-schema/runtime/runtime-element) of your app configuration file: +If this change breaks communication with an existing server, you can disable sending the [`SCH_SEND_AUX_RECORD`](https://msdn.microsoft.com/library/windows/desktop/aa379810.aspx) flag and restore the previous behavior of not splitting data into separate records by adding the following switch to the [`\` element](~/docs/framework/configure-apps/file-schema/runtime/appcontextswitchoverrides-element.md) in the [`\ section](~/docs/framework/configure-apps/file-schema/runtime/runtime-element.md) of your app configuration file: ```xml diff --git a/Documentation/compatibility/webutility_htmldecode-no-longer-decodes-invalid-input-sequences.md b/Documentation/compatibility/webutility_htmldecode-no-longer-decodes-invalid-input-sequences.md index 7ee29d7be..8d1daf250 100644 --- a/Documentation/compatibility/webutility_htmldecode-no-longer-decodes-invalid-input-sequences.md +++ b/Documentation/compatibility/webutility_htmldecode-no-longer-decodes-invalid-input-sequences.md @@ -16,7 +16,7 @@ By default, decoding methods no longer decode an invalid input sequence into an - [ ] Build-time break ### Recommended Action -The change in decoder output should matter only if you store binary data instead of UTF-16 data in strings. To explicitly control this behavior, set the `aspnet:AllowRelaxedUnicodeDecoding` attribute of the [appSettings](https://msdn.microsoft.com/en-us/library/ms228154(v=vs.110).aspx) element to true to enable legacy behavior or to false to enable the current behavior. +The change in decoder output should matter only if you store binary data instead of UTF-16 data in strings. To explicitly control this behavior, set the `aspnet:AllowRelaxedUnicodeDecoding` attribute of the [appSettings](~/docs/framework/configure-apps/file-schema/appsettings.md) element to `true` to enable legacy behavior or to `false` to enable the current behavior. ### Affected APIs * `M:System.Net.WebUtility.HtmlDecode(System.String)` diff --git a/Documentation/compatibility/winforms-accessibility-changes-471.md b/Documentation/compatibility/winforms-accessibility-changes-471.md index 1732e3682..5d4226aa7 100644 --- a/Documentation/compatibility/winforms-accessibility-changes-471.md +++ b/Documentation/compatibility/winforms-accessibility-changes-471.md @@ -51,7 +51,7 @@ For an overview of UI automation, see the [UI Automation Overview](https://docs. **Added support for UI Automation patterns and properties** -Accessibility clients can take advantage of new WinForms accessibility functionality by using common, publicly described invocation patterns. These patterns are not WinForms-specific. For instance, accessibility clients can call the QueryInterface method on the IAccessible interface (MAAS) to obtain an IServiceProvider interface. If this interface is available, clients can use its QueryService method to request an IAccessibleEx interface. For more information, see [Using IAccessibleEx from a Client](https://msdn.microsoft.com/en-us/library/windows/desktop/dd561924(v=vs.85).aspx). Starting with the .NET Framework 4.7.1, IServiceProvider and [IAccessibleEx]( https://msdn.microsoft.com/en-us/library/windows/desktop/dd561898(v=vs.85).aspx) (where applicable) are available for WinForms accessibility objects. +Accessibility clients can take advantage of new WinForms accessibility functionality by using common, publicly described invocation patterns. These patterns are not WinForms-specific. For instance, accessibility clients can call the QueryInterface method on the IAccessible interface (MAAS) to obtain an IServiceProvider interface. If this interface is available, clients can use its QueryService method to request an IAccessibleEx interface. For more information, see [Using IAccessibleEx from a Client](https://msdn.microsoft.com/library/windows/desktop/dd561924.aspx). Starting with the .NET Framework 4.7.1, IServiceProvider and [IAccessibleEx]( https://msdn.microsoft.com/library/windows/desktop/dd561898.aspx) (where applicable) are available for WinForms accessibility objects. The .NET Framework 4.7.1 adds support for the following UI automation patterns and properties: @@ -102,14 +102,14 @@ NOTE: Windows10 has changed values for some high contrast system colors. Windows - The `T:System.Windows.Forms.CheckedListBox` control now notifies Narrator when the `P:System.Windows.Forms.CheckState` property has been changed. Previously, Narrator did not recieve notification and as a result users would not be informed that the `P:System.Windows.Forms.CheckState` had been updated. - The `T:System.Windows.Forms.LinkLabel` control has changed the way it notifies Narrator of the text of in the control. Previously, Narrator announced this text twice and read "&" symbols as real text even though they are not visible to a user. The duplicated text was removed from the Narrator announcements, as well as unnecessary "&" symbols. - The `T:System.Windows.Forms.DataGridViewCell` control types now correctly report the read-only status to Narrator and other assistive technologies. -- Narrator is now able to read the System Menu of child windows in [Multiple-Document Interface](https://docs.microsoft.com/en-us/dotnet/framework/winforms/advanced/multiple-document-interface-mdi-applications) applications. +- Narrator is now able to read the System Menu of child windows in [Multiple-Document Interface]~/docs/framework/winforms/advanced/multiple-document-interface-mdi-applications.md) applications. - Narrator is now able to read `T:System.Windows.Forms.ToolStripMenuItem` controls with a `P:System.Windows.Forms.ToolStripItem.Enabled` property set to _false_. Previously, Narrator was unable to focus on disabled menu items to read hte content. ### Affected APIs * `M:System.Windows.Forms.ToolStripDropDownButton.CreateAccessibilityInstance` * `P:System.Windows.Forms.DomainUpDown.DomainUpDownAccessibleObject.Name` -* `T:System.Windows.Forms.MonthCalendar.AccessibilityObject` +* [MonthCalendar.AccessibilityObject](xref:System.Windows.Forms.Control.AccessibilityObject) ### Category diff --git a/Documentation/compatibility/wpf-layout-rounding-of-margins-has-changed.md b/Documentation/compatibility/wpf-layout-rounding-of-margins-has-changed.md index f2351a6d6..dff018e26 100644 --- a/Documentation/compatibility/wpf-layout-rounding-of-margins-has-changed.md +++ b/Documentation/compatibility/wpf-layout-rounding-of-margins-has-changed.md @@ -32,6 +32,6 @@ Apps that target the .NET Framework 4.6 but want WPF controls to render using th ### Category Windows Presentation Foundation (WPF) -[More information](https://docs.microsoft.com/en-us/dotnet/articles/framework/migration-guide/mitigation-wpf-layout) +[More information](~/docs/framework/migration-guide/mitigation-wpf-layout.md) diff --git a/Documentation/compatibility/x509certificateclaimset_findclaims-considers-all-claimtypes.md b/Documentation/compatibility/x509certificateclaimset_findclaims-considers-all-claimtypes.md index 938932a01..29e65c46d 100644 --- a/Documentation/compatibility/x509certificateclaimset_findclaims-considers-all-claimtypes.md +++ b/Documentation/compatibility/x509certificateclaimset_findclaims-considers-all-claimtypes.md @@ -27,7 +27,7 @@ method attempts to match the claimType argument only with the last DNS entry. This change only affects applications targeting the .NET Framework 4.6.1. This change may be disabled (or enabled if targetting pre-4.6.1) with the -[DisableMultipleDNSEntries](https://docs.microsoft.com/en-us/dotnet/articles/framework/migration-guide/mitigation-x509certificateclaimset-findclaims-method#mitigation) +[DisableMultipleDNSEntries](~/docs/framework/migration-guide/mitigation-x509certificateclaimset-findclaims-method#mitigation.md) compatibility switch. ### Affected APIs From 8e89a4cc902b39681c5fcea3c7b422210c44c73d Mon Sep 17 00:00:00 2001 From: Ron Petrusha Date: Wed, 21 Feb 2018 16:00:57 -0800 Subject: [PATCH 557/872] Removed comments (#628) --- ...arent-of-a-textblock-control-affects-any-child-controls.md | 4 ++-- .../etw-event-names-cannot-differ-only-by-suffix.md | 4 ++-- .../compatibility/horizontal-scrolling-and-virtualization.md | 4 ++-- ...l-server-database-connection-that-resolves-to-localhost.md | 4 ++-- ...cp-with-ssl-security-and-md5-certificate-authentication.md | 4 ++-- 5 files changed, 10 insertions(+), 10 deletions(-) diff --git a/Documentation/compatibility/changing-the-isenabled-property-of-the-parent-of-a-textblock-control-affects-any-child-controls.md b/Documentation/compatibility/changing-the-isenabled-property-of-the-parent-of-a-textblock-control-affects-any-child-controls.md index 892494fa3..a60ddd8f0 100644 --- a/Documentation/compatibility/changing-the-isenabled-property-of-the-parent-of-a-textblock-control-affects-any-child-controls.md +++ b/Documentation/compatibility/changing-the-isenabled-property-of-the-parent-of-a-textblock-control-affects-any-child-controls.md @@ -22,8 +22,8 @@ reflect the state of the property of the parent. -- [ ] Quirked // Uses some mechanism to turn the feature on or off, usually using runtime targeting, AppContext or config files. Needs to be turned on automatically for some situations. -- [ ] Build-time break // Causes a break if attempted to recompile +- [ ] Quirked +- [ ] Build-time break ### Recommended Action None. This change conforms to the expected behavior for controls inside a control. diff --git a/Documentation/compatibility/etw-event-names-cannot-differ-only-by-suffix.md b/Documentation/compatibility/etw-event-names-cannot-differ-only-by-suffix.md index 69a725b98..95e560f80 100644 --- a/Documentation/compatibility/etw-event-names-cannot-differ-only-by-suffix.md +++ b/Documentation/compatibility/etw-event-names-cannot-differ-only-by-suffix.md @@ -16,8 +16,8 @@ NotPlanned ### Change Description In the .NET Framework 4.6 and 4.6.1, the runtime throws an when two Event Tracing for Windows (ETW) event names differ only by a "Start" or "Stop" suffix (as when one event is named `LogUser` and another is named `LogUserStart`). In this case, the runtime cannot construct the event source, which cannot emit any logging. -- [X] Quirked // Uses some mechanism to turn the feature on or off, usually using runtime targeting, AppContext or config files. Needs to be turned on automatically for some situations. -- [ ] Build-time break // Causes a break if attempted to recompile +- [X] Quirked +- [ ] Build-time break ### Recommended Action diff --git a/Documentation/compatibility/horizontal-scrolling-and-virtualization.md b/Documentation/compatibility/horizontal-scrolling-and-virtualization.md index 7016c20bb..4d4c949a2 100644 --- a/Documentation/compatibility/horizontal-scrolling-and-virtualization.md +++ b/Documentation/compatibility/horizontal-scrolling-and-virtualization.md @@ -51,8 +51,8 @@ after a horizontal scroll, whether invoked by the end user or by an explicit call to . -- [ ] Quirked // Uses some mechanism to turn the feature on or off, usually using runtime targeting, AppContext or config files. Needs to be turned on automatically for some situations. -- [ ] Build-time break // Causes a break if attempted to recompile +- [ ] Quirked +- [ ] Build-time break ### Recommended Action diff --git a/Documentation/compatibility/sql-server-database-connection-that-resolves-to-localhost.md b/Documentation/compatibility/sql-server-database-connection-that-resolves-to-localhost.md index ad3c7951f..cccb03cf0 100644 --- a/Documentation/compatibility/sql-server-database-connection-that-resolves-to-localhost.md +++ b/Documentation/compatibility/sql-server-database-connection-that-resolves-to-localhost.md @@ -16,8 +16,8 @@ NotPlanned In the .NET Framework 4.6 and 4.6.1, attempting a TCP/IP connection to a SQL Server database that resolves to `localhost` fails with the error, "A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: SQL Network Interfaces, error: 26 - Error Locating Server/Instance Specified)" -- [ ] Quirked // Uses some mechanism to turn the feature on or off, usually using runtime targeting, AppContext or config files. Needs to be turned on automatically for some situations. -- [ ] Build-time break // Causes a break if attempted to recompile +- [ ] Quirked +- [ ] Build-time break ### Recommended Action diff --git a/Documentation/compatibility/wcf-services-using-nettcp-with-ssl-security-and-md5-certificate-authentication.md b/Documentation/compatibility/wcf-services-using-nettcp-with-ssl-security-and-md5-certificate-authentication.md index 439f12031..70a9ebd95 100644 --- a/Documentation/compatibility/wcf-services-using-nettcp-with-ssl-security-and-md5-certificate-authentication.md +++ b/Documentation/compatibility/wcf-services-using-nettcp-with-ssl-security-and-md5-certificate-authentication.md @@ -14,8 +14,8 @@ The .NET Framework 4.6 adds TLS 1.1 and TLS 1.2 to the WCF SSL default protocol TLS 1.2 does not support MD5 certificate authentication. As a result, if a customer uses an MD5 certificate, the WCF client will fail to connect to the WCF service. -- [ ] Quirked // Uses some mechanism to turn the feature on or off, usually using runtime targeting, AppContext or config files. Needs to be turned on automatically for some situations. -- [ ] Build-time break // Causes a break if attempted to recompile +- [ ] Quirked +- [ ] Build-time break ### Recommended Action You can work around this issue so that a WCF client can connect to a WCF server by doing any of the following: From c96c7d5f4e37e965bdedbeaaecc269e88522fd30 Mon Sep 17 00:00:00 2001 From: Charles Lowell Date: Fri, 23 Feb 2018 16:00:14 -0800 Subject: [PATCH 558/872] Fix compat doc links (#632) * ~/docsframework -> ~/docs/framework * fix bookmark: #Networking.md -> #Networking * fix bookmark: #mitigation.md -> #mitigation --- ...tations-of-imessagefilter_prefiltermessage.md | 2 +- .../certificate-eku-oid-validation.md | 16 ++++++++-------- ...ults-to-securityprotocoltype.systemdefault.md | 6 +++--- ...aimset_findclaims-considers-all-claimtypes.md | 2 +- 4 files changed, 13 insertions(+), 13 deletions(-) diff --git a/Documentation/compatibility/application_filtermessage-no-longer-throws-for-re-entrant-implementations-of-imessagefilter_prefiltermessage.md b/Documentation/compatibility/application_filtermessage-no-longer-throws-for-re-entrant-implementations-of-imessagefilter_prefiltermessage.md index 82da4feab..df514e774 100644 --- a/Documentation/compatibility/application_filtermessage-no-longer-throws-for-re-entrant-implementations-of-imessagefilter_prefiltermessage.md +++ b/Documentation/compatibility/application_filtermessage-no-longer-throws-for-re-entrant-implementations-of-imessagefilter_prefiltermessage.md @@ -38,7 +38,7 @@ Framework 4.6.1. Apps targeting the .NET Framework 4.6.1 can opt out of this change (or apps targeting older Frameworks may opt in) by using the -[DontSupportReentrantFilterMessage](~/docs/framework/migration-guide/mitigation-custom-imessagefilter-prefiltermessage-implementations#mitigation.md) +[DontSupportReentrantFilterMessage](~/docs/framework/migration-guide/mitigation-custom-imessagefilter-prefiltermessage-implementations#mitigation) compatibility switch. ### Affected APIs diff --git a/Documentation/compatibility/certificate-eku-oid-validation.md b/Documentation/compatibility/certificate-eku-oid-validation.md index 61a97ec09..7cd1f0b68 100644 --- a/Documentation/compatibility/certificate-eku-oid-validation.md +++ b/Documentation/compatibility/certificate-eku-oid-validation.md @@ -11,25 +11,25 @@ NotPlanned ### Change Description -Starting with .NET Framework 4.6, the or classes perform enhanced key use (EKU) object identifier (OID) validation. An enhanced key usage (EKU) extension is a collection of object identifiers (OIDs) that indicate the applications that use the key. EKU OID validation uses remote certificate callbacks to ensure that the remote certificate has the correct OIDs for the intended purpose. +Starting with .NET Framework 4.6, the or classes perform enhanced key use (EKU) object identifier (OID) validation. An enhanced key usage (EKU) extension is a collection of object identifiers (OIDs) that indicate the applications that use the key. EKU OID validation uses remote certificate callbacks to ensure that the remote certificate has the correct OIDs for the intended purpose. -- [X] Quirked +- [X] Quirked - [ ] Build-time break ### Recommended Action -If this change is undesirable, you can disable certificate EKU OID validation by adding the following switch to the [`\` element](~/docs/framework/configure-apps/file-schema/runtime/appcontextswitchoverrides-element.md) in the [`\ section](~/docsframework/configure-apps/file-schema/runtime/runtime-element.md) of your app configuration file: +If this change is undesirable, you can disable certificate EKU OID validation by adding the following switch to the [`\` element](~/docs/framework/configure-apps/file-schema/runtime/appcontextswitchoverrides-element.md) in the [`\ section](~/docs/framework/configure-apps/file-schema/runtime/runtime-element.md) of your app configuration file: ```xml - + ``` -> [!IMPORTANT] +> [!IMPORTANT] > This setting is provided for backward compatibility only. Its use is otherwise not recommended. - + ### Affected APIs * `T:System.Net.Security.SslStream` * `T:System.Net.ServicePointManager` @@ -42,7 +42,7 @@ If this change is undesirable, you can disable certificate EKU OID validation by Networking diff --git a/Documentation/compatibility/servicepointmanager.securityprotocol-defaults-to-securityprotocoltype.systemdefault.md b/Documentation/compatibility/servicepointmanager.securityprotocol-defaults-to-securityprotocoltype.systemdefault.md index 12a5f8679..a9db5f2fe 100644 --- a/Documentation/compatibility/servicepointmanager.securityprotocol-defaults-to-securityprotocoltype.systemdefault.md +++ b/Documentation/compatibility/servicepointmanager.securityprotocol-defaults-to-securityprotocoltype.systemdefault.md @@ -12,13 +12,13 @@ NotPlanned ### Change Description Starting with apps that target the .NET Framework 4.7, the default value of the property is . This change allows .NET Framework networking APIs based on SslStream (such as FTP, HTTPS, and SMTP) to inherit the default security protocols from the operating system instead of using hard-coded values defined by the .NET Framework. The default varies by operating system and any custom configuration performed by the system administrator. For information on the default SChannel protocol in each version of the Windows operating system, see [Protocols in TLS/SSL (Schannel SSP)](https://msdn.microsoft.com/library/windows/desktop/mt808159.aspx). -For applications that target an earlier version of the .NET Framework, the default value of the property depends on the version of the .NET Framework targeted. See the [Networking section of Retargeting Changes for Migration from .NET Framework 4.5.2 to 4.6](~/docs/framework/migration-guide/retargeting/4.5.2-4.6.md#Networking.md) for more information. +For applications that target an earlier version of the .NET Framework, the default value of the property depends on the version of the .NET Framework targeted. See the [Networking section of Retargeting Changes for Migration from .NET Framework 4.5.2 to 4.6](~/docs/framework/migration-guide/retargeting/4.5.2-4.6.md#Networking) for more information. -- [X] Quirked +- [X] Quirked - [ ] Build-time break ### Recommended Action -This change affects applications that target the .NET Framework 4.7 or later versions. +This change affects applications that target the .NET Framework 4.7 or later versions. If you prefer to use a defined protocol rather than relying on the system default, you can explicitly set the value of the property. diff --git a/Documentation/compatibility/x509certificateclaimset_findclaims-considers-all-claimtypes.md b/Documentation/compatibility/x509certificateclaimset_findclaims-considers-all-claimtypes.md index 29e65c46d..5454c9191 100644 --- a/Documentation/compatibility/x509certificateclaimset_findclaims-considers-all-claimtypes.md +++ b/Documentation/compatibility/x509certificateclaimset_findclaims-considers-all-claimtypes.md @@ -27,7 +27,7 @@ method attempts to match the claimType argument only with the last DNS entry. This change only affects applications targeting the .NET Framework 4.6.1. This change may be disabled (or enabled if targetting pre-4.6.1) with the -[DisableMultipleDNSEntries](~/docs/framework/migration-guide/mitigation-x509certificateclaimset-findclaims-method#mitigation.md) +[DisableMultipleDNSEntries](~/docs/framework/migration-guide/mitigation-x509certificateclaimset-findclaims-method#mitigation) compatibility switch. ### Affected APIs From d25d835a2141ff5f7f377c81dc9eb80646582016 Mon Sep 17 00:00:00 2001 From: Connie Yau Date: Fri, 23 Feb 2018 16:09:06 -0800 Subject: [PATCH 559/872] Fixing index.md URI (#633) --- ...lity_htmldecode-no-longer-decodes-invalid-input-sequences.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Documentation/compatibility/webutility_htmldecode-no-longer-decodes-invalid-input-sequences.md b/Documentation/compatibility/webutility_htmldecode-no-longer-decodes-invalid-input-sequences.md index 8d1daf250..94b0d9448 100644 --- a/Documentation/compatibility/webutility_htmldecode-no-longer-decodes-invalid-input-sequences.md +++ b/Documentation/compatibility/webutility_htmldecode-no-longer-decodes-invalid-input-sequences.md @@ -16,7 +16,7 @@ By default, decoding methods no longer decode an invalid input sequence into an - [ ] Build-time break ### Recommended Action -The change in decoder output should matter only if you store binary data instead of UTF-16 data in strings. To explicitly control this behavior, set the `aspnet:AllowRelaxedUnicodeDecoding` attribute of the [appSettings](~/docs/framework/configure-apps/file-schema/appsettings.md) element to `true` to enable legacy behavior or to `false` to enable the current behavior. +The change in decoder output should matter only if you store binary data instead of UTF-16 data in strings. To explicitly control this behavior, set the `aspnet:AllowRelaxedUnicodeDecoding` attribute of the [appSettings](~/docs/framework/configure-apps/file-schema/appsettings/index.md) element to `true` to enable legacy behavior or to `false` to enable the current behavior. ### Affected APIs * `M:System.Net.WebUtility.HtmlDecode(System.String)` From 0e2bb0309c949e96587b633b6e2d75dad6e235c4 Mon Sep 17 00:00:00 2001 From: Ron Petrusha Date: Mon, 26 Feb 2018 18:55:52 -0800 Subject: [PATCH 560/872] Update 4.7.2 branch with changes to master (#635) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Corrected category to remove duplication, generated readme (#542) * Fixed bad links (#543) * Making relative link use home operation (#544) * Link fixes (#545) * fixed xrefs and links * reverted change * Update the issue with the list of types potentially impacted (#538) * Update the issue with the list of types potentially impacted * Update 510901-BCL Apps targeting .NET-4.6.1 that use .NET Standard libraries might be broken when running on .NET 4.7.1.md * Update 510901-BCL Apps targeting .NET-4.6.1 that use .NET Standard libraries might be broken when running on .NET 4.7.1.md * Update 510901-BCL Apps targeting .NET-4.6.1 that use .NET Standard libraries might be broken when running on .NET 4.7.1.md * Update 510901-BCL Apps targeting .NET-4.6.1 that use .NET Standard libraries might be broken when running on .NET 4.7.1.md * Update 510901-BCL Apps targeting .NET-4.6.1 that use .NET Standard libraries might be broken when running on .NET 4.7.1.md (#546) * Add Neutronium reference (#547) * Adding Neutronium link * As by PR * Create 521954 - BCL CultureAwareComparer with ignore casing on serial… (#553) * Create 521954 - BCL CultureAwareComparer with ignore casing on serialized on previous versions of .NET do not correctly deserialize on .NET 4.7.1.md * Update 521954 - BCL CultureAwareComparer with ignore casing on serialized on previous versions of .NET do not correctly deserialize on .NET 4.7.1.md * Update 521954 - BCL CultureAwareComparer with ignore casing on serialized on previous versions of .NET do not correctly deserialize on .NET 4.7.1.md * Update known issues for #521954 * Update 521954 - BCL CultureAwareComparer with ignore casing on serial… (#555) * Update 521954 - BCL CultureAwareComparer with ignore casing on serialized on previous versions of .NET do not correctly deserialize on .NET 4.7.1.md * Update 521954 - BCL CultureAwareComparer with ignore casing on serialized on previous versions of .NET do not correctly deserialize on .NET 4.7.1.md * Update 521954 - BCL CultureAwareComparer with ignore casing on serialized on previous versions of .NET do not correctly deserialize on .NET 4.7.1.md (#558) LGTM * Update 521954 - BCL CultureAwareComparer with ignore casing on serialized on previous versions of .NET do not correctly deserialize on .NET 4.7.1.md * Typo fix (#554) * Add known issue for 523633 (#559) * Add known issue for 523633 * Add known issue for 523633 * Fixes for review comments for 523633 * Fixes for review comments for 523633 * Changes so content syncs with PR #3686 in dotnet/docs (#561) * Added Core WF and Orleans.Activities (#562) * Update platforms.json Update .NET Core entries to include the November Update release. * Added release notes for 6.0.2 * Update README.md * Update README.md * Update README.md * Adding Known Issue for the 471 stack trace perf issue (#567) * Adding Known Issue for the 471 stack trace perf issue * Incorporated review comments * Update dotnet471-known-issues.md * Add ServicetStack to frameworks list (#574) Adding in link to the ServiceStack web framework (which I am not involved with or a representative of, but that I use and have contributed minor tweaks to) * Miscellanous formatting fixes (#573) * Miscellanous formatting fixes * Corrected quirked/build time break sections * 2.0.2 release notes * 1.7.2 release notes * readability fixes * Resolving PR feedback * Resolving PR feedback * Resolving PR feedback * Converted asset IDs to xrefs, corrected formatting (#581) * Add .NET 4.7.1 Networking known issue 534719 (#580) * Add .NET 4.7.1 Networking known issue 534719 Add known issue document for bug 534719-Networking ServicePoint.ConnectionLimit default behavior with loopback changed unexpectedly. * Addressed PR feedback * Removed duplicate words (#583) * Add release notes for UWP 6.0.5 * Add more consistency to net-native1.7 readme * Replaced unprintable characters. (#586) * Fixed links broken in dotnet/docs (#588) * Updated the readme with the 5.2.4 release. * Updated README with the 5.3.5 release * Updated the README with the 5.4.2 release * Updated README with 6.0.6 release. * Added the link for ZDP update for Known Issues fixed by it. (#595) * Added the link for ZDP update for Known Issues fixed by it. * Added platform information * Added Switch.System.Net.DontEnableSystemDefaultTlsVersions AppContext switch (#603) * Replaced MSDN link with link to docs.microsoft.com * Corrected typos * Added Switch.System.Net.DontEnableSystemDefaultTlsVersions switch * Clarify Portable PDB feature disabled in 4.7.1 (#606) * Update guidance for Portable PDB in 4.7.1 (#607) * Update guidance for Portable PDB in 4.7.1 * Address review feedback * More review feedback * Added new known issue for 517815-BCL * Add known issue for 470006 - GC large object crashes Added a known issue, written by Chris Ahna, about GC crashes when we have a high rate of large object allocations and frees. * Updated to include proposed changes from review * Updated to incorporate feedback * fixed formatting (#614) * fixed formatting (hopefully) * Fixed links broken after migration * Documented two .NET Framework 4.6 app compat switches (#615) * Documented DontEnableSchSendAuxRecord switch * added note * added second switch * Finished documenting switches * Added readme * Fixed formatting issues * Adding additional fix info (#616) * Adding additional fix info Adding info for the Fall Creators Update patch * Update 517815-BCL Applications making heavy use of System.Diagnostics.StackTrace might run more slowly on .NET 4.7.1.md * Update 517815-BCL Applications making heavy use of System.Diagnostics.StackTrace might run more slowly on .NET 4.7.1.md Fixing links (copy/pasting doesn't format them correctly) * Update 517815-BCL Applications making heavy use of System.Diagnostics.StackTrace might run more slowly on .NET 4.7.1.md Minor changes * Update .NET UWP release notes for 6.0.7 release * fixed based on feedback. * Fix inline code span (#618) * Fix inline code ' -> ` * Update wpf-selector-crash-when-removing-item-from-custom-collection.md * Fixed formatting of opening XML tag (#622) * Update known issue 517815-BCL Stack traces are missing source information (#623) * Update 517815-BCL Stack traces are missing source information for frames with debug information in the Portable PDB format.md Add the portable PDB conversion tool as a workaround now that it is better documented how to use it. * Update 517815-BCL Stack traces are missing source information for frames with debug information in the Portable PDB format.md PR feedback * Assorted changes (#625) * Assorted changes * Removed remaining occurences of 'en-us' * Removed comments (#628) * Fix compat doc links (#632) * ~/docsframework -> ~/docs/framework * fix bookmark: #Networking.md -> #Networking * fix bookmark: #mitigation.md -> #mitigation * Fixing index.md URI (#633) --- Documentation/compatibility/! Template.md | 4 +- .../ASPNET-accessibility-improvement.md | 8 +- ...-SignedCMS-default-algorithms-to-SHA256.md | 6 +- Documentation/compatibility/README.md | 4 +- ...SerialPort-background-thread-exceptions.md | 8 +- ...ase-doesnt-propagate-OnStart-exceptions.md | 4 +- ...l.GetPublicKey-returns-RSACng-on-net462.md | 4 +- ...ion-if-an-addressHeader-element-is-null.md | 4 +- ...shAlgorithm-default-value-is-now-SHA256.md | 5 +- ...ection.GetHashAlgorithm-now-uses-SHA256.md | 5 +- ...ions-of-imessagefilter_prefiltermessage.md | 2 +- ...-strings-passed-in-via-route-parameters.md | 4 +- ...em')-to-a-static-property-does-not-work.md | 2 +- .../certificate-eku-oid-validation.md | 48 ++++++++++++ ...n-path-separator-character-in-zip-files.md | 2 +- ...lock-control-affects-any-child-controls.md | 4 +- ...riod-for-azure-sql-databases-is-removed.md | 2 +- ...rentwindowhandle-now-expects-hwnd-value.md | 2 +- .../currentculture-flows-across-tasks.md | 4 +- ...served-across-wpf-dispatcher-operations.md | 2 +- ...jobinfo-jobstream-must-be-in-xps-format.md | 6 +- ...n-of-objects-across-appdomains-can-fail.md | 2 +- ...vent-names-cannot-differ-only-by-suffix.md | 4 +- ...no-longer-propagate-on-finalizer-thread.md | 2 +- ...-different-values-beginning-in-_net-4_5.md | 2 +- ...horizontal-scrolling-and-virtualization.md | 4 +- ...contentencoding-property-prohibits-utf7.md | 2 +- ...avascriptstringencode-escapes-ampersand.md | 2 +- ...ng-issue-with-observablecollection_move.md | 2 +- .../compatibility/long-path-support.md | 4 +- ...ostructure-overloads-break-dynamic-code.md | 4 +- .../compatibility/new-64-bit-jit-compiler.md | 2 +- ...able-to-set-enableviewstatemac-to-false.md | 4 +- ...-deprecatedattribute-in-winmd-scenarios.md | 4 +- ...ove-ssl3-from-the-wcf-transportdefaults.md | 6 +- ...-deserialization-of-mailmessage-objects.md | 6 +- ...ow-compatible-with-ecmascript-v6-and-v8.md | 2 +- ...s-to-securityprotocoltype.systemdefault.md | 16 +++- ...-to-use-the-same-_net-framework-version.md | 2 +- ...e-connection-that-resolves-to-localhost.md | 4 +- ...1997-or-databases-using-the-via-adapter.md | 4 +- .../sslstream-support-for-tls-alerts.md | 2 +- ...when-registering-itself-in-the-registry.md | 2 +- ...hrottle-concurrent-requests-per-session.md | 2 +- ...ord-flag-to-the-underlying-schannel-api.md | 48 ++++++++++++ ...ecurity-unable-to-use-tls1_1-and-tls1_2.md | 2 +- ...rity-and-md5-certificate-authentication.md | 8 +- ...-longer-decodes-invalid-input-sequences.md | 2 +- ...essfully-converts-icons-with-png-frames.md | 4 +- .../winforms-accessibility-changes-471.md | 10 +-- .../workflow-3_0-types-are-obsolete.md | 2 +- .../workflow-designer-accessibility.md | 24 +++--- .../wpf-accessibility-improvements.MD | 28 +++---- ...-layout-rounding-of-margins-has-changed.md | 2 +- ...en-removing-item-from-custom-collection.md | 2 +- ...ctor-selectionchanged-and-selectedvalue.md | 15 ++-- ...ol-selectionchanged-and-selectedcontent.md | 6 +- ...set_findclaims-considers-all-claimtypes.md | 2 +- data/platforms.json | 6 +- dotnet-developer-projects.md | 4 + releases/UWP/net-native1.4/README.md | 5 +- releases/UWP/net-native1.6/README.md | 7 +- releases/UWP/net-native1.7/README.md | 20 +++-- releases/UWP/net-native2.0/README.md | 26 ++++++- ...th high rate of large object allocation.md | 34 +++++++++ ...ht be broken when running on .NET 4.7.1.md | 46 +++++++++++- ...ace might run more slowly on .NET 4.7.1.md | 29 ++++++++ ... information in the Portable PDB format.md | 20 +++++ ...not correctly deserialize on .NET 4.7.1.md | 32 ++++++++ ...indows 10 gets the product in bad state.md | 23 ++++++ ...vior with loopback changed unexpectedly.md | 73 +++++++++++++++++++ releases/net471/dotnet471-known-issues.md | 16 ++-- 72 files changed, 555 insertions(+), 155 deletions(-) create mode 100644 Documentation/compatibility/certificate-eku-oid-validation.md create mode 100644 Documentation/compatibility/tls-1-x-by-default-passes-sch-send-aux-record-flag-to-the-underlying-schannel-api.md create mode 100644 releases/net471/KnownIssues/470006-GC Crashes with high rate of large object allocation.md create mode 100644 releases/net471/KnownIssues/517815-BCL Applications making heavy use of System.Diagnostics.StackTrace might run more slowly on .NET 4.7.1.md create mode 100644 releases/net471/KnownIssues/517815-BCL Stack traces are missing source information for frames with debug information in the Portable PDB format.md create mode 100644 releases/net471/KnownIssues/521954 - BCL CultureAwareComparer with ignore casing on serialized on previous versions of .NET do not correctly deserialize on .NET 4.7.1.md create mode 100644 releases/net471/KnownIssues/523633 - Setup - OS upgrade to Windows 10 gets the product in bad state.md create mode 100644 releases/net471/KnownIssues/534719-Networking ServicePoint.ConnectionLimit default behavior with loopback changed unexpectedly.md diff --git a/Documentation/compatibility/! Template.md b/Documentation/compatibility/! Template.md index 5b0354868..7afbd4656 100644 --- a/Documentation/compatibility/! Template.md +++ b/Documentation/compatibility/! Template.md @@ -6,7 +6,7 @@ ### Scope [|Major|Minor|Edge|Transparent|] -//A description of the Scope values can be found at https://docs.microsoft.com/en-us/dotnet/articles/framework/migration-guide/net-compatibility-diagnostics +//A description of the Scope values can be found at https://docs.microsoft.com/dotnet/articles/framework/migration-guide/net-compatibility-diagnostics ### Version Introduced [|Version in which the breaking change first occurred|] @@ -39,7 +39,7 @@ [| List of APIs affected by change referred to using docids|] // For details on how to generate docids, please look at other change files or -// see https://msdn.microsoft.com/en-us/library/fsbx0t7x.aspx for the spec. +// see https://msdn.microsoft.com/library/fsbx0t7x.aspx for the spec. // // For example, if all members of System.Xml.XmlTextReader is affected, we would have the following item: // * `T:System.Xml.XmlTextReader` diff --git a/Documentation/compatibility/ASPNET-accessibility-improvement.md b/Documentation/compatibility/ASPNET-accessibility-improvement.md index 33c60eb3b..0e3fc930f 100644 --- a/Documentation/compatibility/ASPNET-accessibility-improvement.md +++ b/Documentation/compatibility/ASPNET-accessibility-improvement.md @@ -27,20 +27,20 @@ Starting with the .NET Framework 4.7.1, ASP.NET has improved how ASP.NET Web Con ### Recommended Action -**How to opt in or out of these changes** - +**How to opt in or out of these changes** + In order for the Visual Studio Designer to benefit from these changes, it must run on the .NET Framework 4.7.1 or later. The web application can benefit from these changes in either of the following ways: - Install Visual Studio 2017 15.3 or later, which supports the new accessibility features with the following AppContext Switch by default. -- Opt out of the legacy accessibility behaviors by adding the `Switch.UseLegacyAccessibility` AppContext switch to the `` section in the devenv.exe.config file and setting it to `false`, as the following example shows. +- Opt out of the legacy accessibility behaviors by adding the `Switch.UseLegacyAccessibilityFeatures` AppContext switch to the `` section in the devenv.exe.config file and setting it to `false`, as the following example shows. ```xml ... - + ... diff --git a/Documentation/compatibility/Change-SignedXML-and-SignedCMS-default-algorithms-to-SHA256.md b/Documentation/compatibility/Change-SignedXML-and-SignedCMS-default-algorithms-to-SHA256.md index e893fa3ee..76ad8dd4e 100644 --- a/Documentation/compatibility/Change-SignedXML-and-SignedCMS-default-algorithms-to-SHA256.md +++ b/Documentation/compatibility/Change-SignedXML-and-SignedCMS-default-algorithms-to-SHA256.md @@ -10,7 +10,7 @@ Minor NotPlanned ### Change Description -In the .NET Framework 4.7 and earlier, SignedXML and SignedCMS default to SHA1 for some operations. +In the .NET Framework 4.7 and earlier, SignedXML and SignedCMS default to SHA1 for some operations. Starting with the .NET Framework 4.7.1, SHA256 is enabled by default for these operations. This change is necessary because SHA1 is no longer considered to be secure. @@ -24,13 +24,13 @@ There are two new context switch values to control whether SHA1 (insecure) or SH - Switch.System.Security.Cryptography.Pkcs.UseInsecureHashAlgorithms -For applications that target the .NET Framework 4.7.1 and later versions, if the use of SHA256 is undesirable, you can restore the default to SHA1 by adding the following configuration switch to the [runtime](https://docs.microsoft.com/en-us/dotnet/framework/configure-apps/file-schema/runtime/runtime-element) section of your app config file: +For applications that target the .NET Framework 4.7.1 and later versions, if the use of SHA256 is undesirable, you can restore the default to SHA1 by adding the following configuration switch to the [runtime](~/docs/framework/configure-apps/file-schema/runtime/runtime-element.md) section of your app config file: ```xml ``` -For applications that target the .NET Framework 4.7 and earlier versions, you can opt into this change by adding the following configuration switch to the [runtime](https://docs.microsoft.com/en-us/dotnet/framework/configure-apps/file-schema/runtime/runtime-element) section of your app config file: +For applications that target the .NET Framework 4.7 and earlier versions, you can opt into this change by adding the following configuration switch to the [runtime](~/docs/framework/configure-apps/file-schema/runtime/runtime-element.md) section of your app config file: ```xml diff --git a/Documentation/compatibility/README.md b/Documentation/compatibility/README.md index 8aae91d82..49c80d84c 100644 --- a/Documentation/compatibility/README.md +++ b/Documentation/compatibility/README.md @@ -93,6 +93,7 @@ Please help us improve the [.NET Framework Application Compatibility documents]( - [Attempting a TCP/IP connection to a SQL Server database that resolves to `localhost` fails](sql-server-database-connection-that-resolves-to-localhost.md) - [Calling Attribute.GetCustomAttributes on an indexer property no longer throws AmbiguousMatchException if the ambiguity can be resolved by index's type](calling-attribute_getcustomattributes-on-an-indexer-property-no-longer-throws-ambiguousmatchexception.md) - [Calling CreateDefaultAuthorizationContext with a null argument has changed](calling-createdefaultauthorizationcontext-with-a-null-argument-has-changed.md) +- [Certificate EKU OID validation](certificate-eku-oid-validation.md) - [ClickOnce supports SHA-256 on 4.0-targeted apps](clickonce-supports-sha-256-on-4_0-targeted-apps.md) - [CoerceIsSelectionBoxHighlighted](coerceisselectionboxhighlighted.md) - [ContentDisposition DateTimes returns slightly different string](contentdisposition-datetimes-returns-slightly-different-string.md) @@ -110,7 +111,8 @@ Please help us improve the [.NET Framework Application Compatibility documents]( - [Reflection objects can no longer be passed from managed code to out-of-process DCOM clients](reflection-objects-can-no-longer-be-passed-from-managed-code-to-out-of-process-dcom-clients.md) - [TargetFrameworkName for default app domain no longer defaults to null if not set](targetframeworkname-for-default-app-domain-no-longer-defaults-to-null-if-not-set.md) - [The .NET Framework 4.6 does not use a 4.5.x.x version when registering itself in the registry](the-_net-framework-4_6-does-not-use-a-4_5_x_x-version-when-registering-itself-in-the-registry.md) -- [WCF services that use NETTCP with SSL sercurity and MD5 certificate authentication](wcf-services-using-nettcp-with-ssl-security-and-md5-certificate-authentication.md) +- [TLS 1.x by default passes the SCH_SEND_AUX_RECORD flag to the underlying SCHANNEL API](tls-1-x-by-default-passes-sch-send-aux-record-flag-to-the-underlying-schannel-api.md) +- [WCF services that use NETTCP with SSL security and MD5 certificate authentication](wcf-services-using-nettcp-with-ssl-security-and-md5-certificate-authentication.md) - [WPF layout rounding of margins has changed](wpf-layout-rounding-of-margins-has-changed.md) - [WPF spell checking in text-enabled controls will not work in Windows 10 for languages not in the OS's input language list](wpf-spell-checking-in-text-enabled-controls-will-not-work-in-windows-10-for-languages-not-in-the-input-language-list.md) - [WPF windows are rendered without clipping when extending outside a single monitor](wpf-windows-are-rendered-without-clipping-when-extending-outside-a-single-monitor.md) diff --git a/Documentation/compatibility/SerialPort-background-thread-exceptions.md b/Documentation/compatibility/SerialPort-background-thread-exceptions.md index 13071bafc..920548067 100644 --- a/Documentation/compatibility/SerialPort-background-thread-exceptions.md +++ b/Documentation/compatibility/SerialPort-background-thread-exceptions.md @@ -10,9 +10,9 @@ Minor NotPlanned ### Change Description -Background threads created with streams no longer terminate the process when OS exceptions are thrown. +Background threads created with streams no longer terminate the process when OS exceptions are thrown. -In applications that target the .NET Framework 4.7 and earlier versions, a process is terminated when an operating system exception is thrown on a background thread created with a stream. +In applications that target the .NET Framework 4.7 and earlier versions, a process is terminated when an operating system exception is thrown on a background thread created with a stream. In applications that target the .NET Framework 4.7.1 or a later version, background threads wait for OS events related to the active serial port and could crash in some cases, such as sudden removal of the serial port. @@ -21,7 +21,7 @@ In applications that target the .NET Framework 4.7.1 or a later version, backgro ### Recommended Action -For apps that target the .NET Framework 4.7.1, you can opt out of the exception handling if it is not desirable by adding the following to to the `` section of your `app.config` file: +For apps that target the .NET Framework 4.7.1, you can opt out of the exception handling if it is not desirable by adding the following to the `` section of your `app.config` file: ```xml @@ -29,7 +29,7 @@ For apps that target the .NET Framework 4.7.1, you can opt out of the exception ``` -For apps that target earlier versions of the .NET Framework but run on the .NET Framework 4.7.1 or later, you can opt in to the exception handling by adding the following to to the `` section of your `app.config` file: +For apps that target earlier versions of the .NET Framework but run on the .NET Framework 4.7.1 or later, you can opt in to the exception handling by adding the following to the `` section of your `app.config` file: ```xml diff --git a/Documentation/compatibility/ServiceBase-doesnt-propagate-OnStart-exceptions.md b/Documentation/compatibility/ServiceBase-doesnt-propagate-OnStart-exceptions.md index 0b45c0a43..27210e6ba 100644 --- a/Documentation/compatibility/ServiceBase-doesnt-propagate-OnStart-exceptions.md +++ b/Documentation/compatibility/ServiceBase-doesnt-propagate-OnStart-exceptions.md @@ -13,9 +13,9 @@ NotPlanned ### Change Description -In the .NET Framework 4.7 and earlier versions, exceptions thrown on service startup are not propagated to the caller of . +In the .NET Framework 4.7 and earlier versions, exceptions thrown on service startup are not propagated to the caller of . -Starting with applications that target the .NET Framework 4.7.1, the runtime propagates exceptions to for services that fail to start. +Starting with applications that target the .NET Framework 4.7.1, the runtime propagates exceptions to for services that fail to start. - [x] Quirked - [ ] Build-time break diff --git a/Documentation/compatibility/SignedXml.GetPublicKey-returns-RSACng-on-net462.md b/Documentation/compatibility/SignedXml.GetPublicKey-returns-RSACng-on-net462.md index 70443b8b9..f71f70bb3 100644 --- a/Documentation/compatibility/SignedXml.GetPublicKey-returns-RSACng-on-net462.md +++ b/Documentation/compatibility/SignedXml.GetPublicKey-returns-RSACng-on-net462.md @@ -14,14 +14,14 @@ NotPlanned ### Change Description -Starting with the .NET Framework 4.6.2, the concrete type of the object returned by the method changed (without a quirk) from a CryptoServiceProvider implementation to a Cng implementation. This is because the implementation changed from using `certificate.PublicKey.Key` to using the internal `certificate.GetAnyPublicKey` which forwards to . +Starting with the .NET Framework 4.6.2, the concrete type of the object returned by the method changed (without a quirk) from a CryptoServiceProvider implementation to a Cng implementation. This is because the implementation changed from using `certificate.PublicKey.Key` to using the internal `certificate.GetAnyPublicKey` which forwards to . - [x] Quirked - [ ] Build-time break ### Recommended Action -Starting with apps running on the .NET Framework 4.7.1, you can use the CryptoServiceProvider implementation used by default in the .NET Framework 4.6.1 and earlier versions by adding the following configuration switch to the [runtime](https://docs.microsoft.com/en-us/dotnet/framework/configure-apps/file-schema/runtime/runtime-element) section of your app config file: +Starting with apps running on the .NET Framework 4.7.1, you can use the CryptoServiceProvider implementation used by default in the .NET Framework 4.6.1 and earlier versions by adding the following configuration switch to the [runtime](~/docs/framework/configure-apps/file-schema/runtime/runtime-element.md) section of your app config file: ```xml diff --git a/Documentation/compatibility/WCF-AddressHeaderCollection-now-throws-an-ArgumentException-if-an-addressHeader-element-is-null.md b/Documentation/compatibility/WCF-AddressHeaderCollection-now-throws-an-ArgumentException-if-an-addressHeader-element-is-null.md index d1f8ff4c4..323b52053 100644 --- a/Documentation/compatibility/WCF-AddressHeaderCollection-now-throws-an-ArgumentException-if-an-addressHeader-element-is-null.md +++ b/Documentation/compatibility/WCF-AddressHeaderCollection-now-throws-an-ArgumentException-if-an-addressHeader-element-is-null.md @@ -10,7 +10,7 @@ Minor NotPlanned ### Change Description -Starting with the .NET Framework 4.7.1, the `M:System.ServiceModel.Channels.AddressHeaderCollection.#ctor(System.Collections.Generic.IEnumerable{System.ServiceModel.Channels.AddressHeader})` constructor throws an `T:System.ArgumentException` if one of the elements is `null`. In the .NET Framework 4.7 and earlier versions, no exception is thrown. +Starting with the .NET Framework 4.7.1, the constructor throws an if one of the elements is `null`. In the .NET Framework 4.7 and earlier versions, no exception is thrown. ### Recommended Action If you encounter compatibility issues with this change on the .NET Framework 4.7.1 or a later version, you can opt-out of it by adding the following line to the `` section of the app.config file:: @@ -27,7 +27,7 @@ If you encounter compatibility issues with this change on the .NET Framework 4.7 * `M:System.ServiceModel.Channels.AddressHeaderCollection.#ctor(System.Collections.Generic.IEnumerable{System.ServiceModel.Channels.AddressHeader})` ### Category -* Windows Communication Foundation (WCF) +Windows Communication Foundation (WCF) + + diff --git a/Documentation/compatibility/change-in-path-separator-character-in-zip-files.md b/Documentation/compatibility/change-in-path-separator-character-in-zip-files.md index a202005df..bbdf827c8 100644 --- a/Documentation/compatibility/change-in-path-separator-character-in-zip-files.md +++ b/Documentation/compatibility/change-in-path-separator-character-in-zip-files.md @@ -20,7 +20,7 @@ Decompressing a zip file created by an app that targets a previous version of th ### Recommended Action -The impact of this change on .ZIP files that are decompressed on the Windows operating system by APIs in the .NET Framework namespace should be minimal, since these APIs can seamlessly handle either a slash ("/") or a backslash ("\\") as the path separator character. +The impact of this change on .ZIP files that are decompressed on the Windows operating system by APIs in the .NET Framework namespace should be minimal, since these APIs can seamlessly handle either a slash ("/") or a backslash ("\\") as the path separator character. If this change is undesirable, you can opt out of it by adding a configuration setting to the [``](https://docs.microsoft.com/dotnet/framework/configure-apps/file-schema/runtime/runtime-element.md) section of your application configuration file. The following example shows both the ` property of the parent. -- [ ] Quirked // Uses some mechanism to turn the feature on or off, usually using runtime targeting, AppContext or config files. Needs to be turned on automatically for some situations. -- [ ] Build-time break // Causes a break if attempted to recompile +- [ ] Quirked +- [ ] Build-time break ### Recommended Action None. This change conforms to the expected behavior for controls inside a control. diff --git a/Documentation/compatibility/connection-pool-blocking-period-for-azure-sql-databases-is-removed.md b/Documentation/compatibility/connection-pool-blocking-period-for-azure-sql-databases-is-removed.md index ae55515cb..8f3f37d62 100644 --- a/Documentation/compatibility/connection-pool-blocking-period-for-azure-sql-databases-is-removed.md +++ b/Documentation/compatibility/connection-pool-blocking-period-for-azure-sql-databases-is-removed.md @@ -24,7 +24,7 @@ In the .NET Framework 4.6.1 and earlier versions, when an app encounters a transient connection failure when connecting to a database, the connection attempt cannot be retried quickly, because the connection pool caches the error and re-throws it for 5 seconds to 1 minute. For more information, see -[SQL Server Connection Pooling (ADO.NET)](https://docs.microsoft.com/en-us/dotnet/articles/framework/data/adonet/sql-server-connection-pooling). +[SQL Server Connection Pooling (ADO.NET)](~/docs/framework/data/adonet/sql-server-connection-pooling.md). This behavior is problematic for connections to Azure SQL databases, which often fail with transient errors that are typically recovered from within a few seconds. The connection pool blocking feature means that the app cannot connect diff --git a/Documentation/compatibility/cspparameters_parentwindowhandle-now-expects-hwnd-value.md b/Documentation/compatibility/cspparameters_parentwindowhandle-now-expects-hwnd-value.md index 6f846a8ad..1cabf4756 100644 --- a/Documentation/compatibility/cspparameters_parentwindowhandle-now-expects-hwnd-value.md +++ b/Documentation/compatibility/cspparameters_parentwindowhandle-now-expects-hwnd-value.md @@ -26,7 +26,7 @@ cspParameters.ParentWindowHandle = form.Handle; In previous versions of the .NET Framework, the value was expected to be an representing a location in memory where the -[HWND](https://msdn.microsoft.com/en-us/library/windows/desktop/aa383751(v=vs.85).aspx#HWND) value resided. +[HWND](https://msdn.microsoft.com/library/windows/desktop/aa383751.aspx#HWND) value resided. Setting the property to form.Handle on Windows 7 and earlier versions had no effect, but on Windows 8 and later versions, it results in a ": The parameter is incorrect." diff --git a/Documentation/compatibility/currentculture-flows-across-tasks.md b/Documentation/compatibility/currentculture-flows-across-tasks.md index 329f2b46c..99498555a 100644 --- a/Documentation/compatibility/currentculture-flows-across-tasks.md +++ b/Documentation/compatibility/currentculture-flows-across-tasks.md @@ -44,7 +44,7 @@ AppContext.SetSwitch("Switch.System.Globalization.NoAsyncCurrentCulture", true); ``` This issue has been fixed by WPF in .NET Framework 4.6.2. It has also been fixed -in .NET Frameworks 4.6, 4.6.1 through [KB 3139549](https://support.microsoft.com/en-us/kb/3139549). +in .NET Frameworks 4.6, 4.6.1 through [KB 3139549](https://support.microsoft.com/kb/3139549). Applications targeting .NET 4.6 or later will automatically get the right behavior in WPF applications - /) @@ -59,6 +59,6 @@ would be preserved across Dispatcher operations. ### Category Core -[More information](https://docs.microsoft.com/en-us/dotnet/api/system.globalization.cultureinfo#Async) +[More information](https://docs.microsoft.com/dotnet/api/system.globalization.cultureinfo#Async) diff --git a/Documentation/compatibility/currentculture-not-preserved-across-wpf-dispatcher-operations.md b/Documentation/compatibility/currentculture-not-preserved-across-wpf-dispatcher-operations.md index da136b19f..30fb36682 100644 --- a/Documentation/compatibility/currentculture-not-preserved-across-wpf-dispatcher-operations.md +++ b/Documentation/compatibility/currentculture-not-preserved-across-wpf-dispatcher-operations.md @@ -67,7 +67,7 @@ setting the following compatibility switch: ``` This issue has been fixed by WPF in .NET Framework 4.6.2. It has also been fixed -in .NET Frameworks 4.6, 4.6.1 through [KB 3139549](https://support.microsoft.com/en-us/kb/3139549). +in .NET Frameworks 4.6, 4.6.1 through [KB 3139549](https://support.microsoft.com/kb/3139549). Applications targeting .NET 4.6 or later will automatically get the right behavior in WPF applications - /) diff --git a/Documentation/compatibility/data-written-to-printsystemjobinfo-jobstream-must-be-in-xps-format.md b/Documentation/compatibility/data-written-to-printsystemjobinfo-jobstream-must-be-in-xps-format.md index 1b23b4d05..8d2f99528 100644 --- a/Documentation/compatibility/data-written-to-printsystemjobinfo-jobstream-must-be-in-xps-format.md +++ b/Documentation/compatibility/data-written-to-printsystemjobinfo-jobstream-must-be-in-xps-format.md @@ -10,7 +10,7 @@ Minor NotPlanned ### Change Description -The `P:System.Printing.PrintSystemJobInfo.JobStream` property exposes the stream of a print job. The user can send raw data to the underlying operating system printing components by writing to this stream. +The property exposes the stream of a print job. The user can send raw data to the underlying operating system printing components by writing to this stream. Starting with the .NET Framework 4.5 on Windows 8 and later versions of the Windows operating system, data written to this stream must be in XPS format as a package stream. @@ -21,9 +21,9 @@ Starting with the .NET Framework 4.5 on Windows 8 and later versions of the Wind To output print content, you can do either of the following: -- Use the `T:System.Windows.Xps.XpsDocumentWriter` class to output print content. This is the recommended alternative. +- Use the class to output print content. This is the recommended alternative. -- Ensure that the data sent to the stream returned by the `P:System.Printing.PrintSystemJobInfo.JobStream` property is in XPS format as a package stream. +- Ensure that the data sent to the stream returned by the property is in XPS format as a package stream. ### Affected APIs * `P:System.Printing.PrintSystemJobInfo.JobStream` diff --git a/Documentation/compatibility/deserialization-of-objects-across-appdomains-can-fail.md b/Documentation/compatibility/deserialization-of-objects-across-appdomains-can-fail.md index 6ca5ff3fc..770f48d77 100644 --- a/Documentation/compatibility/deserialization-of-objects-across-appdomains-can-fail.md +++ b/Documentation/compatibility/deserialization-of-objects-across-appdomains-can-fail.md @@ -16,7 +16,7 @@ In some cases, when an app uses two or more app domains with different applicati - [ ] Build-time break ### Recommended Action -See [Mitigation: Deserialization of Objects Across App Domains](https://docs.microsoft.com/en-us/dotnet/articles/framework/migration-guide/mitigation-deserialization-of-objects-across-app-domains) +See [Mitigation: Deserialization of Objects Across App Domains](~/docs/framework/migration-guide/mitigation-deserialization-of-objects-across-app-domains.md) ### Affected APIs * Not detectable via API analysis diff --git a/Documentation/compatibility/etw-event-names-cannot-differ-only-by-suffix.md b/Documentation/compatibility/etw-event-names-cannot-differ-only-by-suffix.md index 69a725b98..95e560f80 100644 --- a/Documentation/compatibility/etw-event-names-cannot-differ-only-by-suffix.md +++ b/Documentation/compatibility/etw-event-names-cannot-differ-only-by-suffix.md @@ -16,8 +16,8 @@ NotPlanned ### Change Description In the .NET Framework 4.6 and 4.6.1, the runtime throws an when two Event Tracing for Windows (ETW) event names differ only by a "Start" or "Stop" suffix (as when one event is named `LogUser` and another is named `LogUserStart`). In this case, the runtime cannot construct the event source, which cannot emit any logging. -- [X] Quirked // Uses some mechanism to turn the feature on or off, usually using runtime targeting, AppContext or config files. Needs to be turned on automatically for some situations. -- [ ] Build-time break // Causes a break if attempted to recompile +- [X] Quirked +- [ ] Build-time break ### Recommended Action diff --git a/Documentation/compatibility/exceptions-during-unobserved-processing-in-system_threading_tasks_task-no-longer-propagate-on-finalizer-thread.md b/Documentation/compatibility/exceptions-during-unobserved-processing-in-system_threading_tasks_task-no-longer-propagate-on-finalizer-thread.md index 54b0c6758..918b4fa17 100644 --- a/Documentation/compatibility/exceptions-during-unobserved-processing-in-system_threading_tasks_task-no-longer-propagate-on-finalizer-thread.md +++ b/Documentation/compatibility/exceptions-during-unobserved-processing-in-system_threading_tasks_task-no-longer-propagate-on-finalizer-thread.md @@ -29,7 +29,7 @@ finalizer thread, the previous behavior can be restored by providing an appropriate handler for the event, or by setting a -[runtime configuration element](https://docs.microsoft.com/en-us/dotnet/articles/framework/configure-apps/file-schema/runtime/throwunobservedtaskexceptions-element). +[runtime configuration element](~/docs/framework/configure-apps/file-schema/runtime/throwunobservedtaskexceptions-element.md). ### Affected APIs * `M:System.Threading.Tasks.Task.Run(System.Action)` diff --git a/Documentation/compatibility/glyphrun_computeinkboundingbox()-and-formattedtext_extent-return-different-values-beginning-in-_net-4_5.md b/Documentation/compatibility/glyphrun_computeinkboundingbox()-and-formattedtext_extent-return-different-values-beginning-in-_net-4_5.md index acc51e8d7..39f391395 100644 --- a/Documentation/compatibility/glyphrun_computeinkboundingbox()-and-formattedtext_extent-return-different-values-beginning-in-_net-4_5.md +++ b/Documentation/compatibility/glyphrun_computeinkboundingbox()-and-formattedtext_extent-return-different-values-beginning-in-_net-4_5.md @@ -43,6 +43,6 @@ the app.config file: ### Category Windows Presentation Foundation (WPF) -[More information](http://support.microsoft.com/en-us/kb/3009678) +[More information](http://support.microsoft.com/kb/3009678) diff --git a/Documentation/compatibility/horizontal-scrolling-and-virtualization.md b/Documentation/compatibility/horizontal-scrolling-and-virtualization.md index 7016c20bb..4d4c949a2 100644 --- a/Documentation/compatibility/horizontal-scrolling-and-virtualization.md +++ b/Documentation/compatibility/horizontal-scrolling-and-virtualization.md @@ -51,8 +51,8 @@ after a horizontal scroll, whether invoked by the end user or by an explicit call to . -- [ ] Quirked // Uses some mechanism to turn the feature on or off, usually using runtime targeting, AppContext or config files. Needs to be turned on automatically for some situations. -- [ ] Build-time break // Causes a break if attempted to recompile +- [ ] Quirked +- [ ] Build-time break ### Recommended Action diff --git a/Documentation/compatibility/httprequest_contentencoding-property-prohibits-utf7.md b/Documentation/compatibility/httprequest_contentencoding-property-prohibits-utf7.md index 803711149..254c93763 100644 --- a/Documentation/compatibility/httprequest_contentencoding-property-prohibits-utf7.md +++ b/Documentation/compatibility/httprequest_contentencoding-property-prohibits-utf7.md @@ -25,7 +25,7 @@ Ideally, applications should be updated to not use UTF-7 encoding in s. Alternatively, legacy behavior can be restored by using the `aspnet:AllowUtf7RequestContentEncoding` attribute of the -[appSettings](https://msdn.microsoft.com/en-us/library/hh975440(v=vs.110).aspx) +[appSettings](https://msdn.microsoft.com/library/hh975440(v=vs.110).aspx) element. ### Affected APIs diff --git a/Documentation/compatibility/httputility_javascriptstringencode-escapes-ampersand.md b/Documentation/compatibility/httputility_javascriptstringencode-escapes-ampersand.md index 789a87fa1..b851ba4da 100644 --- a/Documentation/compatibility/httputility_javascriptstringencode-escapes-ampersand.md +++ b/Documentation/compatibility/httputility_javascriptstringencode-escapes-ampersand.md @@ -21,7 +21,7 @@ escapes the ampersand (&) character. If your app depends on the previous behavior of this method, you can add an aspnet:JavaScriptDoNotEncodeAmpersand setting to the -[ASP.NET appSettings element](https://msdn.microsoft.com/en-us/library/hh975440(v=vs.110).aspx) +[ASP.NET appSettings element](https://msdn.microsoft.com/library/hh975440.aspx) in your configuration file. ### Affected APIs diff --git a/Documentation/compatibility/listboxitem-isselected-binding-issue-with-observablecollection_move.md b/Documentation/compatibility/listboxitem-isselected-binding-issue-with-observablecollection_move.md index 25321ae61..ebbe37bbb 100644 --- a/Documentation/compatibility/listboxitem-isselected-binding-issue-with-observablecollection_move.md +++ b/Documentation/compatibility/listboxitem-isselected-binding-issue-with-observablecollection_move.md @@ -43,6 +43,6 @@ Framework. ### Category Windows Presentation Foundation (WPF) -[More information](http://social.msdn.microsoft.com/Forums/en-US/afcbc8b3-a2f2-41e4-b402-2efc9eab1ffe/listboxitem-isselected-binding-issue-with-observablecollectiontmove?forum=wpf) +[More information](http://social.msdn.microsoft.com/Forums/afcbc8b3-a2f2-41e4-b402-2efc9eab1ffe/listboxitem-isselected-binding-issue-with-observablecollectiontmove?forum=wpf) diff --git a/Documentation/compatibility/long-path-support.md b/Documentation/compatibility/long-path-support.md index b0fc3f119..6afeb6ea3 100644 --- a/Documentation/compatibility/long-path-support.md +++ b/Documentation/compatibility/long-path-support.md @@ -35,7 +35,7 @@ exceeds 260 characters. ### Recommended Action For apps that target the .NET Framework 4.6.2, you can opt out of long path -support if it is not desirable by adding the following to to the `` +support if it is not desirable by adding the following to the `` section of your `app.config` file: ```xml @@ -46,7 +46,7 @@ section of your `app.config` file: For apps that target earlier versions of the .NET Framework but run on the .NET Framework 4.6.2 or later, you can opt in to long path support by adding the -following to to the `` section of your `app.config` file: +following to the `` section of your `app.config` file: ```xml diff --git a/Documentation/compatibility/marshal_sizeof-and-marshal_ptrtostructure-overloads-break-dynamic-code.md b/Documentation/compatibility/marshal_sizeof-and-marshal_ptrtostructure-overloads-break-dynamic-code.md index 797260b3f..724684164 100644 --- a/Documentation/compatibility/marshal_sizeof-and-marshal_ptrtostructure-overloads-break-dynamic-code.md +++ b/Documentation/compatibility/marshal_sizeof-and-marshal_ptrtostructure-overloads-break-dynamic-code.md @@ -29,7 +29,7 @@ have been added that may be ambiguous to the scripting engines. Update scripts to clearly indicate which overload should be used. This can typically done by explicitly casting the methods' type parameters as -. See [this link](https://support.microsoft.com/en-us/kb/2909958/) +. See [this link](https://support.microsoft.com/kb/2909958/) for more detail and examples of how to workaround the issue. ### Affected APIs @@ -38,7 +38,7 @@ for more detail and examples of how to workaround the issue. ### Category Core -[More information](https://support.microsoft.com/en-us/kb/2909958/) +[More information](https://support.microsoft.com/kb/2909958/) diff --git a/Documentation/compatibility/serialization-deserialization-of-mailmessage-objects.md b/Documentation/compatibility/serialization-deserialization-of-mailmessage-objects.md index 0063a167b..7019da700 100644 --- a/Documentation/compatibility/serialization-deserialization-of-mailmessage-objects.md +++ b/Documentation/compatibility/serialization-deserialization-of-mailmessage-objects.md @@ -10,17 +10,17 @@ Minor Investigating ### Change Description -Starting with the .NET Framework 4.5, `T:System.Web.Mail.MailMessage` objects can include non-ASCII characters. In the .NET Framework 4, only ASCII characters are supported. `T:System.Web.Mail.MailMessage` objects that contain non-ASCII characters and that are serialized under the .NET Framework 4.5 or later cannot be deserialized under the .NET Framework 4. +Starting with the .NET Framework 4.5, objects can include non-ASCII characters. In the .NET Framework 4, only ASCII characters are supported. objects that contain non-ASCII characters and that are serialized under the .NET Framework 4.5 or later cannot be deserialized under the .NET Framework 4. - [ ] Quirked - [ ] Build-time break ### Recommended Action -Ensure that your code provides exception handling when deserializing a `T:System.Web.Mail.MailMessage` object. +Ensure that your code provides exception handling when deserializing a object. ### Affected APIs -`T:System.Web.Mail.MailMessage` + ### Category Networking diff --git a/Documentation/compatibility/serialization-of-control-characters-with-datacontractjsonserializer-is-now-compatible-with-ecmascript-v6-and-v8.md b/Documentation/compatibility/serialization-of-control-characters-with-datacontractjsonserializer-is-now-compatible-with-ecmascript-v6-and-v8.md index 2f54a0c05..95ad659b9 100644 --- a/Documentation/compatibility/serialization-of-control-characters-with-datacontractjsonserializer-is-now-compatible-with-ecmascript-v6-and-v8.md +++ b/Documentation/compatibility/serialization-of-control-characters-with-datacontractjsonserializer-is-now-compatible-with-ecmascript-v6-and-v8.md @@ -39,6 +39,6 @@ following line to the `` section of the app.config or web.config file: * `M:System.Runtime.Serialization.Json.DataContractJsonSerializer.WriteObject(System.Xml.XmlWriter,System.Object)` ### Category -* Windows Communication Foundation (WCF) +Windows Communication Foundation (WCF) diff --git a/Documentation/compatibility/servicepointmanager.securityprotocol-defaults-to-securityprotocoltype.systemdefault.md b/Documentation/compatibility/servicepointmanager.securityprotocol-defaults-to-securityprotocoltype.systemdefault.md index bd5b72308..a9db5f2fe 100644 --- a/Documentation/compatibility/servicepointmanager.securityprotocol-defaults-to-securityprotocoltype.systemdefault.md +++ b/Documentation/compatibility/servicepointmanager.securityprotocol-defaults-to-securityprotocoltype.systemdefault.md @@ -12,15 +12,23 @@ NotPlanned ### Change Description Starting with apps that target the .NET Framework 4.7, the default value of the property is . This change allows .NET Framework networking APIs based on SslStream (such as FTP, HTTPS, and SMTP) to inherit the default security protocols from the operating system instead of using hard-coded values defined by the .NET Framework. The default varies by operating system and any custom configuration performed by the system administrator. For information on the default SChannel protocol in each version of the Windows operating system, see [Protocols in TLS/SSL (Schannel SSP)](https://msdn.microsoft.com/library/windows/desktop/mt808159.aspx). -For applications that target an earlier version of the .NET Framework, the default value of the property depends on the version of the .NET Framework targeted. See [Retargeting Changes in the .NET Framework 4.6](docs.microsoft.com/dotnet/framework/migration-guide/retargeting) for more information. +For applications that target an earlier version of the .NET Framework, the default value of the property depends on the version of the .NET Framework targeted. See the [Networking section of Retargeting Changes for Migration from .NET Framework 4.5.2 to 4.6](~/docs/framework/migration-guide/retargeting/4.5.2-4.6.md#Networking) for more information. -- [X] Quirked +- [X] Quirked - [ ] Build-time break ### Recommended Action -This change affects applications that target the .NET Framework 4.7 or later versions. +This change affects applications that target the .NET Framework 4.7 or later versions. -If you prefer to use a defined protocol rather than relying on the system default, you can explicitly set the value of the property. +If you prefer to use a defined protocol rather than relying on the system default, you can explicitly set the value of the property. + +If this change is undesirable, you can opt out of it by adding a configuration setting to the [``](https://docs.microsoft.com/dotnet/framework/configure-apps/file-schema/runtime/runtime-element) section of your application configuration file. The following example shows both the `` section and the `Switch.System.Net.DontEnableSystemDefaultTlsVersions` opt-out switch: + +```xml + + + +``` ### Affected APIs - `P:System.Net.ServicePointManager.SecurityProtocol` diff --git a/Documentation/compatibility/sharing-session-state-with-asp_net-stateserver-requires-all-servers-in-the-web-farm-to-use-the-same-_net-framework-version.md b/Documentation/compatibility/sharing-session-state-with-asp_net-stateserver-requires-all-servers-in-the-web-farm-to-use-the-same-_net-framework-version.md index 4b871f20f..460ffb3c3 100644 --- a/Documentation/compatibility/sharing-session-state-with-asp_net-stateserver-requires-all-servers-in-the-web-farm-to-use-the-same-_net-framework-version.md +++ b/Documentation/compatibility/sharing-session-state-with-asp_net-stateserver-requires-all-servers-in-the-web-farm-to-use-the-same-_net-framework-version.md @@ -34,7 +34,7 @@ ASP.NET diff --git a/Documentation/compatibility/sql-server-database-connection-that-resolves-to-localhost.md b/Documentation/compatibility/sql-server-database-connection-that-resolves-to-localhost.md index ad3c7951f..cccb03cf0 100644 --- a/Documentation/compatibility/sql-server-database-connection-that-resolves-to-localhost.md +++ b/Documentation/compatibility/sql-server-database-connection-that-resolves-to-localhost.md @@ -16,8 +16,8 @@ NotPlanned In the .NET Framework 4.6 and 4.6.1, attempting a TCP/IP connection to a SQL Server database that resolves to `localhost` fails with the error, "A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: SQL Network Interfaces, error: 26 - Error Locating Server/Instance Specified)" -- [ ] Quirked // Uses some mechanism to turn the feature on or off, usually using runtime targeting, AppContext or config files. Needs to be turned on automatically for some situations. -- [ ] Build-time break // Causes a break if attempted to recompile +- [ ] Quirked +- [ ] Build-time break ### Recommended Action diff --git a/Documentation/compatibility/sqlconnection-can-no-longer-connect-to-sql-server-1997-or-databases-using-the-via-adapter.md b/Documentation/compatibility/sqlconnection-can-no-longer-connect-to-sql-server-1997-or-databases-using-the-via-adapter.md index e53181db2..1c803fefe 100644 --- a/Documentation/compatibility/sqlconnection-can-no-longer-connect-to-sql-server-1997-or-databases-using-the-via-adapter.md +++ b/Documentation/compatibility/sqlconnection-can-no-longer-connect-to-sql-server-1997-or-databases-using-the-via-adapter.md @@ -10,7 +10,7 @@ Edge Planned ### Change Description -Connections to SQL Server databases using the [Virtual Interface Adapter (VIA) protocol](https://technet.microsoft.com/en-us/library/ms191229%28v=sql.105%29.aspx) are no longer supported. +Connections to SQL Server databases using the [Virtual Interface Adapter (VIA) protocol](https://technet.microsoft.com/library/ms191229%28v=sql.105%29.aspx) are no longer supported. The protocol used to connect to a SQL Server database is visible in the connection string. A VIA connection will contain via:\. If this app is connecting to SQL via a protocol other than VIA (tcp: or np: for example), then no breaking change will be encountered. @@ -20,7 +20,7 @@ Also, connections to SQL Server 7 (1997) are no longer supported. - [ ] Build-time break ### Recommended Action -The VIA protocol is deprecated, so an alternative protocol should be used to connect to SQL databases. The most common protocol used is TCP/IP. Instructions for enabling the TCP/IP protocol can be found [here](https://msdn.microsoft.com/en-us/library/bb909712(v=vs.120).aspx). If the database is only accessed from within an intranet, the shared pipes protocol may provide better performance if the network is slow. +The VIA protocol is deprecated, so an alternative protocol should be used to connect to SQL databases. The most common protocol used is TCP/IP. Instructions for enabling the TCP/IP protocol can be found [here](https://msdn.microsoft.com/library/bb909712.aspx). If the database is only accessed from within an intranet, the shared pipes protocol may provide better performance if the network is slow. ### Affected APIs * `M:System.Data.SqlClient.SqlConnection.#ctor(System.String)` diff --git a/Documentation/compatibility/sslstream-support-for-tls-alerts.md b/Documentation/compatibility/sslstream-support-for-tls-alerts.md index b311132ec..d6be2a543 100644 --- a/Documentation/compatibility/sslstream-support-for-tls-alerts.md +++ b/Documentation/compatibility/sslstream-support-for-tls-alerts.md @@ -18,7 +18,7 @@ be thrown by the first I/O Read/Write operation. The code for the can be mapped to the TLS Alert from the remote party using this -[Schannel documentation](https://msdn.microsoft.com/en-us/library/windows/desktop/dd721886%28v=vs.85%29.aspx). +[Schannel documentation](https://msdn.microsoft.com/library/windows/desktop/dd721886%28v=vs.85%29.aspx). For more information, see [RFC 2246: Section 7.2.2 Error alerts](https://tools.ietf.org/html/rfc2246#section-7.2.2) diff --git a/Documentation/compatibility/the-_net-framework-4_6-does-not-use-a-4_5_x_x-version-when-registering-itself-in-the-registry.md b/Documentation/compatibility/the-_net-framework-4_6-does-not-use-a-4_5_x_x-version-when-registering-itself-in-the-registry.md index 6fec39a19..d63f0871f 100644 --- a/Documentation/compatibility/the-_net-framework-4_6-does-not-use-a-4_5_x_x-version-when-registering-itself-in-the-registry.md +++ b/Documentation/compatibility/the-_net-framework-4_6-does-not-use-a-4_5_x_x-version-when-registering-itself-in-the-registry.md @@ -24,6 +24,6 @@ Update apps probing for a .NET Framework 4.5 install by looking for 4.5 registry ### Category Setup and Deployment -[More information](https://docs.microsoft.com/en-us/dotnet/articles/framework/migration-guide/mitigation-product-versioning) +[More information](~/docs/framework/migration-guide/mitigation-product-versioning.md) diff --git a/Documentation/compatibility/throttle-concurrent-requests-per-session.md b/Documentation/compatibility/throttle-concurrent-requests-per-session.md index 66078ce39..2fbf1eec2 100644 --- a/Documentation/compatibility/throttle-concurrent-requests-per-session.md +++ b/Documentation/compatibility/throttle-concurrent-requests-per-session.md @@ -10,7 +10,7 @@ Edge NotPlanned ### Change Description -In the .NET Framework 4.6.2 and earlier, ASP.NET executes requests with the same Sessionid sequentially, and ASP.NET always issues the Sessionid through cookie by default. If a page takes a long time to respond, it will significantly degrade server performance just by pressing F5 on the browser. In the fix, we added a counter to track the queued requests and terminate the requests when they exceed a specified limit. The default value is 50. If the the limit is reached, a warning will be logged in the event log, and an HTTP 500 response may be recorded in the IIS log. +In the .NET Framework 4.6.2 and earlier, ASP.NET executes requests with the same Sessionid sequentially, and ASP.NET always issues the Sessionid through cookies by default. If a page takes a long time to respond, it will significantly degrade server performance just by pressing F5 on the browser. In the fix, we added a counter to track the queued requests and terminate the requests when they exceed a specified limit. The default value is 50. If the limit is reached, a warning will be logged in the event log, and an HTTP 500 response may be recorded in the IIS log. - [x] Quirked - [ ] Build-time break diff --git a/Documentation/compatibility/tls-1-x-by-default-passes-sch-send-aux-record-flag-to-the-underlying-schannel-api.md b/Documentation/compatibility/tls-1-x-by-default-passes-sch-send-aux-record-flag-to-the-underlying-schannel-api.md new file mode 100644 index 000000000..08eeb1b3c --- /dev/null +++ b/Documentation/compatibility/tls-1-x-by-default-passes-sch-send-aux-record-flag-to-the-underlying-schannel-api.md @@ -0,0 +1,48 @@ +## TLS 1.x by default passes the SCH_SEND_AUX_RECORD flag to the underlying SCHANNEL API + +### Scope +Edge + +### Version Introduced +4.6 + +### Source Analyzer Status +NotPlanned + +### Change Description + +When using TLS 1.x, the .NET Framework relies on the underlying Windows SCHANNEL API. Starting with .NET Framework 4.6, the [`SCH_SEND_AUX_RECORD`](https://msdn.microsoft.com/library/windows/desktop/aa379810.aspx) flag is passed by default to SCHANNEL. This causes SCHANNEL to split data to be encrypted into two separate records, the first as a single byte and the second as *n*-1 bytes. + +In rare cases, this breaks communication between clients and existing servers that make the assumption that the data resides in a single record. + +- [X] Quirked +- [ ] Build-time break + +### Recommended Action + +If this change breaks communication with an existing server, you can disable sending the [`SCH_SEND_AUX_RECORD`](https://msdn.microsoft.com/library/windows/desktop/aa379810.aspx) flag and restore the previous behavior of not splitting data into separate records by adding the following switch to the [`\` element](~/docs/framework/configure-apps/file-schema/runtime/appcontextswitchoverrides-element.md) in the [`\ section](~/docs/framework/configure-apps/file-schema/runtime/runtime-element.md) of your app configuration file: + +```xml + + + +``` +> [!IMPORTANT] +> This setting is provided for backward compatibility only. Its use is otherwise not recommended. + +### Affected APIs +* `T:System.Net.Security.SslStream` +* `T:System.Net.ServicePointManager` +* `T:System.Net.Http.HttpClient` +* `T:System.Net.Mail.SmtpClient` +* `T:System.Net.HttpWebRequest` +* `T:System.Net.FtpWebRequest` + +### Category +Networking + + + diff --git a/Documentation/compatibility/wcf-message-security-unable-to-use-tls1_1-and-tls1_2.md b/Documentation/compatibility/wcf-message-security-unable-to-use-tls1_1-and-tls1_2.md index 94ee93f8a..ed0368215 100644 --- a/Documentation/compatibility/wcf-message-security-unable-to-use-tls1_1-and-tls1_2.md +++ b/Documentation/compatibility/wcf-message-security-unable-to-use-tls1_1-and-tls1_2.md @@ -25,6 +25,6 @@ In the .NET Framework 4.7, support for TLS1.1 and TLS1.2 in WCF message security ``` ### Category -* Windows Communication Foundation (WCF) +Windows Communication Foundation (WCF) diff --git a/Documentation/compatibility/wcf-services-using-nettcp-with-ssl-security-and-md5-certificate-authentication.md b/Documentation/compatibility/wcf-services-using-nettcp-with-ssl-security-and-md5-certificate-authentication.md index 35924850d..70a9ebd95 100644 --- a/Documentation/compatibility/wcf-services-using-nettcp-with-ssl-security-and-md5-certificate-authentication.md +++ b/Documentation/compatibility/wcf-services-using-nettcp-with-ssl-security-and-md5-certificate-authentication.md @@ -1,7 +1,7 @@ -## WCF services that use NETTCP with SSL sercurity and MD5 certificate authentication +## WCF services that use NETTCP with SSL security and MD5 certificate authentication ### Scope -Minor| +Minor ### Version Introduced 4.6 @@ -14,8 +14,8 @@ The .NET Framework 4.6 adds TLS 1.1 and TLS 1.2 to the WCF SSL default protocol TLS 1.2 does not support MD5 certificate authentication. As a result, if a customer uses an MD5 certificate, the WCF client will fail to connect to the WCF service. -- [ ] Quirked // Uses some mechanism to turn the feature on or off, usually using runtime targeting, AppContext or config files. Needs to be turned on automatically for some situations. -- [ ] Build-time break // Causes a break if attempted to recompile +- [ ] Quirked +- [ ] Build-time break ### Recommended Action You can work around this issue so that a WCF client can connect to a WCF server by doing any of the following: diff --git a/Documentation/compatibility/webutility_htmldecode-no-longer-decodes-invalid-input-sequences.md b/Documentation/compatibility/webutility_htmldecode-no-longer-decodes-invalid-input-sequences.md index 7ee29d7be..94b0d9448 100644 --- a/Documentation/compatibility/webutility_htmldecode-no-longer-decodes-invalid-input-sequences.md +++ b/Documentation/compatibility/webutility_htmldecode-no-longer-decodes-invalid-input-sequences.md @@ -16,7 +16,7 @@ By default, decoding methods no longer decode an invalid input sequence into an - [ ] Build-time break ### Recommended Action -The change in decoder output should matter only if you store binary data instead of UTF-16 data in strings. To explicitly control this behavior, set the `aspnet:AllowRelaxedUnicodeDecoding` attribute of the [appSettings](https://msdn.microsoft.com/en-us/library/ms228154(v=vs.110).aspx) element to true to enable legacy behavior or to false to enable the current behavior. +The change in decoder output should matter only if you store binary data instead of UTF-16 data in strings. To explicitly control this behavior, set the `aspnet:AllowRelaxedUnicodeDecoding` attribute of the [appSettings](~/docs/framework/configure-apps/file-schema/appsettings/index.md) element to `true` to enable legacy behavior or to `false` to enable the current behavior. ### Affected APIs * `M:System.Net.WebUtility.HtmlDecode(System.String)` diff --git a/Documentation/compatibility/windows-forms-icon-tobitmap-method-successfully-converts-icons-with-png-frames.md b/Documentation/compatibility/windows-forms-icon-tobitmap-method-successfully-converts-icons-with-png-frames.md index f0d7ebea4..9aacf9663 100644 --- a/Documentation/compatibility/windows-forms-icon-tobitmap-method-successfully-converts-icons-with-png-frames.md +++ b/Documentation/compatibility/windows-forms-icon-tobitmap-method-successfully-converts-icons-with-png-frames.md @@ -17,8 +17,8 @@ In apps that target the .NET Framework 4.5.2 and earlier versions, the that is thrown when an Icon object has PNG frames. When running under the .NET Framework 4.6, the conversion is successful, an is no longer thrown, and therefore the exception handler is no longer invoked. -- [X] Quirked // Uses some mechanism to turn the feature on or off, usually using runtime targeting, AppContext or config files. Needs to be turned on automatically for some situations. -- [ ] Build-time break // Causes a break if attempted to recompile +- [X] Quirked +- [ ] Build-time break ### Recommended Action If this behavior is undesirable, you can retain the previous behavior by adding the following element to the `` section of your app.config file: diff --git a/Documentation/compatibility/winforms-accessibility-changes-471.md b/Documentation/compatibility/winforms-accessibility-changes-471.md index 770852aac..5d4226aa7 100644 --- a/Documentation/compatibility/winforms-accessibility-changes-471.md +++ b/Documentation/compatibility/winforms-accessibility-changes-471.md @@ -1,4 +1,4 @@ -## Accessibility improvements in Windows Forms controls +## Accessibility improvements in Windows Forms controls ### Scope Major @@ -51,7 +51,7 @@ For an overview of UI automation, see the [UI Automation Overview](https://docs. **Added support for UI Automation patterns and properties** -Accessibility clients can take advantage of new WinForms accessibility functionality by using common, publicly described invocation patterns. These patterns are not WinForms-specific. For instance, accessibility clients can call the QueryInterface method on the IAccessible interface (MAAS) to obtain an IServiceProvider interface. If this interface is available, clients can use its QueryService method to request an IAccessibleEx interface. For more information, see [Using IAccessibleEx from a Client](https://msdn.microsoft.com/en-us/library/windows/desktop/dd561924(v=vs.85).aspx). Starting with the .NET Framework 4.7.1, IServiceProvider and [IAccessibleEx]( https://msdn.microsoft.com/en-us/library/windows/desktop/dd561898(v=vs.85).aspx) (where applicable) are available for WinForms accessibility objects. +Accessibility clients can take advantage of new WinForms accessibility functionality by using common, publicly described invocation patterns. These patterns are not WinForms-specific. For instance, accessibility clients can call the QueryInterface method on the IAccessible interface (MAAS) to obtain an IServiceProvider interface. If this interface is available, clients can use its QueryService method to request an IAccessibleEx interface. For more information, see [Using IAccessibleEx from a Client](https://msdn.microsoft.com/library/windows/desktop/dd561924.aspx). Starting with the .NET Framework 4.7.1, IServiceProvider and [IAccessibleEx]( https://msdn.microsoft.com/library/windows/desktop/dd561898.aspx) (where applicable) are available for WinForms accessibility objects. The .NET Framework 4.7.1 adds support for the following UI automation patterns and properties: @@ -102,14 +102,14 @@ NOTE: Windows10 has changed values for some high contrast system colors. Windows - The `T:System.Windows.Forms.CheckedListBox` control now notifies Narrator when the `P:System.Windows.Forms.CheckState` property has been changed. Previously, Narrator did not recieve notification and as a result users would not be informed that the `P:System.Windows.Forms.CheckState` had been updated. - The `T:System.Windows.Forms.LinkLabel` control has changed the way it notifies Narrator of the text of in the control. Previously, Narrator announced this text twice and read "&" symbols as real text even though they are not visible to a user. The duplicated text was removed from the Narrator announcements, as well as unnecessary "&" symbols. - The `T:System.Windows.Forms.DataGridViewCell` control types now correctly report the read-only status to Narrator and other assistive technologies. -- Narrator is now able to read the System Menu of child windows in [Multiple-Document Interface](https://docs.microsoft.com/en-us/dotnet/framework/winforms/advanced/multiple-document-interface-mdi-applications) applications. +- Narrator is now able to read the System Menu of child windows in [Multiple-Document Interface]~/docs/framework/winforms/advanced/multiple-document-interface-mdi-applications.md) applications. - Narrator is now able to read `T:System.Windows.Forms.ToolStripMenuItem` controls with a `P:System.Windows.Forms.ToolStripItem.Enabled` property set to _false_. Previously, Narrator was unable to focus on disabled menu items to read hte content. -### Affected APIs not detectable via API analysis +### Affected APIs * `M:System.Windows.Forms.ToolStripDropDownButton.CreateAccessibilityInstance` * `P:System.Windows.Forms.DomainUpDown.DomainUpDownAccessibleObject.Name` -* `T:Sysetm.Windows.Forms.MonthCalendar.MonthCalendarAccessibleObject` +* [MonthCalendar.AccessibilityObject](xref:System.Windows.Forms.Control.AccessibilityObject) ### Category diff --git a/Documentation/compatibility/workflow-3_0-types-are-obsolete.md b/Documentation/compatibility/workflow-3_0-types-are-obsolete.md index c6914f223..cc73fd6d1 100644 --- a/Documentation/compatibility/workflow-3_0-types-are-obsolete.md +++ b/Documentation/compatibility/workflow-3_0-types-are-obsolete.md @@ -16,7 +16,7 @@ Windows Workflow Foundation (WWF) 3.0 APIs (those from the System.Workflow names - [x] Build-time break ### Recommended Action -New WWF 4.0 APIs (in System.Activities) should be used instead. An example of using the new APIs can be found [here](../../../../framework/windows-workflow-foundation/how-to-update-the-definition-of-a-running-workflow-instance.md) and further guidance is available [here](http://blogs.msdn.com/b/workflowteam/archive/2012/02/08/deprecatingwf3.aspx). Alternatively, since the WWF 3.0 APIs are still supported, they may be used and the build-time warning avoided either by suppressing it or by using an older compiler. +New WWF 4.0 APIs (in System.Activities) should be used instead. An example of using the new APIs can be found [here](~/docs/framework/windows-workflow-foundation/how-to-update-the-definition-of-a-running-workflow-instance.md) and further guidance is available [here](http://blogs.msdn.com/b/workflowteam/archive/2012/02/08/deprecatingwf3.aspx). Alternatively, since the WWF 3.0 APIs are still supported, they may be used and the build-time warning avoided either by suppressing it or by using an older compiler. ### Affected APIs * Not detectable via API analysis diff --git a/Documentation/compatibility/workflow-designer-accessibility.md b/Documentation/compatibility/workflow-designer-accessibility.md index f47ee8964..3bcc19a13 100644 --- a/Documentation/compatibility/workflow-designer-accessibility.md +++ b/Documentation/compatibility/workflow-designer-accessibility.md @@ -12,8 +12,8 @@ NotPlanned ### Change Description The Windows Workflow Foundation (WF) workflow designer is improving how it works with accessibility technologies. These improvements include the following changes: - The tab order is changed to left to right and top to bottom in some controls: - - The initialize correlation window for setting correlation data for the `T:System.ServiceModel.Activities.InitializeCorrelation` activity - - The content definition window for the `T:System.ServiceModel.Activities.Receive`, `T:System.ServiceModel.Activities.Send`, `T:System.ServiceModel.Activities.SendReply`, and `T:System.ServiceModel.Activities.ReceiveReply` activities + - The initialize correlation window for setting correlation data for the activity + - The content definition window for the , , , and activities - More functions are available via the keyboard: - When editing the properties of an activity, property groups can be collapsed by keyboard the first time they are focused. - Warning icons are now accessible by keyboard. @@ -21,23 +21,23 @@ The Windows Workflow Foundation (WF) workflow designer is improving how it works - Keyboard users now can access the header items in the Arguments and Variables panes of the Workflow Designer. - Improved visibility of items with focus, such as when: - Adding rows to data grids used by the Workflow Designer and activity designers. - - Tabbing through fields in the `T:System.ServiceModel.Activities.ReceiveReply` and `T:System.ServiceModel.Activities.SendReply` activities. + - Tabbing through fields in the and activities. - Setting default values for variables or arguments - Screen readers can now correctly recognize: - Breakpoints set in the workflow designer. - - The `T:System.Activities.Statements.FlowSwitch`, `T:System.Activities.Statements.FlowDecision`, and `T:System.ServiceModel.Activities.CorrelationScope` activities. - - The contents of the `T:System.ServiceModel.Activities.Receive` activity. - - The Target Type for the `T:System.Activities.Statements.InvokeMethod` activity. - - The Exception combobox and the Finally section in the `T:System.Activities.Statements.TryCatch` activity. - - The Message Type combobox, the splitter in the Add Correlation Initializers window, the Content Definition window, and the CorrelatesOn Defintion window in the messaging activities (`T:System.ServiceModel.Activities.Receive`, `T:System.ServiceModel.Activities.Send`, `T:System.ServiceModel.Activities.SendReply`, and `T:System.ServiceModel.Activities.ReceiveReply`). + - The , , and activities. + - The contents of the activity. + - The Target Type for the activity. + - The Exception combobox and the Finally section in the activity. + - The Message Type combobox, the splitter in the Add Correlation Initializers window, the Content Definition window, and the CorrelatesOn Defintion window in the messaging activities (, , , and ). - State machine transitions and transitions destinations. - - Annotations and connectors on `T:System.Activities.Statements.FlowDecision` activities. + - Annotations and connectors on activities. - The context (right-click) menus for activities. - The property value editors, the Clear Search button, the By Category and Alphabetical sort buttons, and the Expression Editor dialog in the properties grid. - The zoom percentage in the Workflow Designer. - - The separator in `T:System.Activities.Statements.Parallel` and `T:System.Activities.Statements.Pick` activities. - - The `T:System.Activities.Statements.InvokeDelegate` activity. - - The Select Types window for dictionary activities (`T:Microsoft.Activities.AddToDictionary`, `T:Microsoft.Activities.RemoveFromDictionary`, etc.). + - The separator in and activities. + - The activity. + - The Select Types window for dictionary activities (`Microsoft.Activities.AddToDictionary`, `Microsoft.Activities.RemoveFromDictionary`, etc.). - The Browse and Select .NET Type window. - Breadcrumbs in the Workflow Designer. - Users who choose High Contrast themes will see many improvements in the visibility of the Workflow Designer and its controls like better contrast ratios between elements and more noticeable selection boxes used for focus elements. diff --git a/Documentation/compatibility/wpf-accessibility-improvements.MD b/Documentation/compatibility/wpf-accessibility-improvements.MD index f52b507b8..42c2a3599 100644 --- a/Documentation/compatibility/wpf-accessibility-improvements.MD +++ b/Documentation/compatibility/wpf-accessibility-improvements.MD @@ -12,29 +12,29 @@ NotPlanned ### Change Description __High Contrast improvements__ -- The focus for the `T:System.Windows.Controls.Expander` control is now visible. In previous versions of the .NET Framework, it was not. -- The text in `T:System.Windows.Controls.CheckBox` and `T:System.Windows.Controls.RadioButton` controls when they are selected is now easier to see than in previous .NET Framework versions. -- The border of a disabled `T:System.Windows.Controls.ComboBox` is now the same color as the disabled text. In previous versions of the .NET Framework, it was not. +- The focus for the control is now visible. In previous versions of the .NET Framework, it was not. +- The text in and controls when they are selected is now easier to see than in previous .NET Framework versions. +- The border of a disabled is now the same color as the disabled text. In previous versions of the .NET Framework, it was not. - Disabled and focused buttons now use the correct theme color. In previous versions of the .NET Framework, they did not. -- The dropdown button is now visible when a `T:System.Windows.Controls.ComboBox` control's style is set to , In previous versions of the .NET Framework, it was not. -- The sort indicator arrow in a `T:System.Windows.Controls.DataGrid` control now uses theme colors. In previous versions of the .NET Framework, it did not. +- The dropdown button is now visible when a control's style is set to , In previous versions of the .NET Framework, it was not. +- The sort indicator arrow in a control now uses theme colors. In previous versions of the .NET Framework, it did not. - The default hyperlink style now changes to the correct theme color on mouse over. In previous versions of the .NET Framework, it did not. - The Keyboard focus on radio buttons is now visible. In previous versions of the .NET Framework, it was not. -- The `T:System.Windows.Controls.DataGrid` control's checkbox column now uses the expected colors for keyboard focus feedback. In previous versions of the .NET Framework, it did not. -- the Keyboard focus visuals are now visible on `T:System.Windows.Controls.ComboBox` and `T:System.Windows.Controls.ListBox`. In previous versions of the .NET Framework, it was not. +- The control's checkbox column now uses the expected colors for keyboard focus feedback. In previous versions of the .NET Framework, it did not. +- the Keyboard focus visuals are now visible on and . In previous versions of the .NET Framework, it was not. __Screen reader interaction improvements__ -- `T:System.Windows.Controls.Expander` controls are now correctly announced as groups (expand/collapse) by screen readers. -- `T:System.Windows.Controls.DataGridCell` controls are now correctly announced as data grid cell (localized) by screen readers. -- Screen readers will now announce the name of an editable `T:System.Windows.Controls.ComboBox`. -- `T:System.Windows.Controls.PasswordBox` controls are no longer announced as “no item in view” by screen readers. +- controls are now correctly announced as groups (expand/collapse) by screen readers. +- controls are now correctly announced as data grid cell (localized) by screen readers. +- Screen readers will now announce the name of an editable . +- controls are no longer announced as "no item in view" by screen readers. -__LiveRegion support__ +__LiveRegion support__ -Screen readers such as Narrator help people know the UI contents of an application, usually by describing something about the UI that’s currently focused, because that is probably the element of most interest to the user. However, if a UI element changes somewhere in the screen and it does not have the focus, the user may not be informed and miss important information. +Screen readers such as Narrator help people know the UI contents of an application, usually by describing something about the UI that's currently focused, because that is probably the element of most interest to the user. However, if a UI element changes somewhere in the screen and it does not have the focus, the user may not be informed and miss important information. LiveRegions are meant to solve this problem. A developer can use them to inform the screen reader or any other [UI Automation][UI Automation Overview](https://docs.microsoft.com/dotnet/framework/ui-automation/ui-automation-overview) client that an important change has been made to a UI element. The screen reader can then decide how and when to inform the user of this change. The LiveSetting property also lets the screen reader know how important it is to inform the user of the change made to the UI. @@ -47,7 +47,7 @@ __How to opt in or out of these changes__ In order for the application to benefit from these changes, it must run on the .NET Framework 4.7.1 or later. The application can benefit from these changes in either of the following ways: - It is recompiled to target the .NET Framework 4.7.1. These accessibility changes are enabled by default on WPF applications that target the .NET Framework 4.7.1 or later. -- It opts out of the legacy accessibility behaviors by adding the following [AppContext Switch](https://docs.microsoft.com/dotnet/framework/configure-apps/file-schema/runtime/appcontextswitchoverrides-element) in the `````` section of the app config file and setting it to false, as the following example shows. +- It opts out of the legacy accessibility behaviors by adding the following [AppContext Switch](https://docs.microsoft.com/dotnet/framework/configure-apps/file-schema/runtime/appcontextswitchoverrides-element) in the `` section of the app config file and setting it to false, as the following example shows. ``` diff --git a/Documentation/compatibility/wpf-layout-rounding-of-margins-has-changed.md b/Documentation/compatibility/wpf-layout-rounding-of-margins-has-changed.md index f2351a6d6..dff018e26 100644 --- a/Documentation/compatibility/wpf-layout-rounding-of-margins-has-changed.md +++ b/Documentation/compatibility/wpf-layout-rounding-of-margins-has-changed.md @@ -32,6 +32,6 @@ Apps that target the .NET Framework 4.6 but want WPF controls to render using th ### Category Windows Presentation Foundation (WPF) -[More information](https://docs.microsoft.com/en-us/dotnet/articles/framework/migration-guide/mitigation-wpf-layout) +[More information](~/docs/framework/migration-guide/mitigation-wpf-layout.md) diff --git a/Documentation/compatibility/wpf-selector-crash-when-removing-item-from-custom-collection.md b/Documentation/compatibility/wpf-selector-crash-when-removing-item-from-custom-collection.md index c9032f8ca..46d1ad288 100644 --- a/Documentation/compatibility/wpf-selector-crash-when-removing-item-from-custom-collection.md +++ b/Documentation/compatibility/wpf-selector-crash-when-removing-item-from-custom-collection.md @@ -13,7 +13,7 @@ Minor NotPlanned ### Change Description -An 'T:System.InvalidOperationException` can occur in the following scenario: +An `T:System.InvalidOperationException` can occur in the following scenario: * The ItemsSource for a `T:System.Windows.Controls.Primitives.Selector` is a collection with a custom implementation of `T:System.Collections.Specialized.INotifyCollectionChanged`. * The selected item is removed from the collection. diff --git a/Documentation/compatibility/wpf-selector-selectionchanged-and-selectedvalue.md b/Documentation/compatibility/wpf-selector-selectionchanged-and-selectedvalue.md index d91fe18be..5d3f3ae54 100644 --- a/Documentation/compatibility/wpf-selector-selectionchanged-and-selectedvalue.md +++ b/Documentation/compatibility/wpf-selector-selectionchanged-and-selectedvalue.md @@ -10,16 +10,16 @@ Minor NotPlanned ### Change Description -Starting with the .Net Framework 4.7.1, a `T:System.Windows.Controls.Primitives.Selector` always updates the value of its -`P:System.Windows.Controls.Primitives.Selector.SelectedValue` property before raising the -`E:System.Windows.Controls.Primitives.Selector.SelectionChanged` event, when its selection changes. +Starting with the .Net Framework 4.7.1, a always updates the value of its + property before raising the + event, when its selection changes. This makes the SelectedValue property consistent with the other selection properties -(`P:System.Windows.Controls.Primitives.Selector.SelectedItem` and -`P:System.Windows.Controls.Primitives.Selector.SelectedIndex`), which are updated before raising the event. +( and +), which are updated before raising the event. In the .NET Framework 4.7 and earlier versions, the update to SelectedValue happened before the event in most cases, but it happened after the event if the selection change was caused by changing the -`P:System.Windows.Controls.Primitives.Selector.SelectedValue` property. + property. - [X] Quirked - [ ] Build-time break @@ -30,7 +30,8 @@ by adding the following to the `` section of the application configurat ```xml - + ``` diff --git a/Documentation/compatibility/wpf-tabcontrol-selectionchanged-and-selectedcontent.md b/Documentation/compatibility/wpf-tabcontrol-selectionchanged-and-selectedcontent.md index 1cf1f61c1..676d747db 100644 --- a/Documentation/compatibility/wpf-tabcontrol-selectionchanged-and-selectedcontent.md +++ b/Documentation/compatibility/wpf-tabcontrol-selectionchanged-and-selectedcontent.md @@ -10,9 +10,9 @@ Minor NotPlanned ### Change Description -Starting with the .NET Framework 4.7.1, a `T:System.Windows.Controls.TabControl` updates the value of its -`P:System.Windows.Controls.TabControl.SelectedContent` property before raising the -`E:System.Windows.Controls.Primitives.Selector.SelectionChanged` event, when its selection changes. +Starting with the .NET Framework 4.7.1, a updates the value of its + property before raising the + event, when its selection changes. In the .NET Framework 4.7 and earlier versions, the update to SelectedContent happened after the event. diff --git a/Documentation/compatibility/x509certificateclaimset_findclaims-considers-all-claimtypes.md b/Documentation/compatibility/x509certificateclaimset_findclaims-considers-all-claimtypes.md index 938932a01..5454c9191 100644 --- a/Documentation/compatibility/x509certificateclaimset_findclaims-considers-all-claimtypes.md +++ b/Documentation/compatibility/x509certificateclaimset_findclaims-considers-all-claimtypes.md @@ -27,7 +27,7 @@ method attempts to match the claimType argument only with the last DNS entry. This change only affects applications targeting the .NET Framework 4.6.1. This change may be disabled (or enabled if targetting pre-4.6.1) with the -[DisableMultipleDNSEntries](https://docs.microsoft.com/en-us/dotnet/articles/framework/migration-guide/mitigation-x509certificateclaimset-findclaims-method#mitigation) +[DisableMultipleDNSEntries](~/docs/framework/migration-guide/mitigation-x509certificateclaimset-findclaims-method#mitigation) compatibility switch. ### Affected APIs diff --git a/data/platforms.json b/data/platforms.json index 3505e75d4..264c560c3 100644 --- a/data/platforms.json +++ b/data/platforms.json @@ -55,7 +55,7 @@ "runtime": [ { "name": ".NET Core 2.0", - "link": "https://github.com/dotnet/core/blob/master/release-notes/download-archives/2.0.0-download.md" + "link": "https://github.com/dotnet/core/blob/master/release-notes/download-archives/2.0.3.md" } ] }, @@ -74,11 +74,11 @@ "runtime": [ { "name": ".NET Core 1.0", - "link": "https://github.com/dotnet/core/releases/tag/1.0.4" + "link": "https://github.com/dotnet/core/releases/tag/1.0.8" }, { "name": ".NET Core 1.1", - "link": "https://github.com/dotnet/core/releases/tag/1.1.1" + "link": "https://github.com/dotnet/core/releases/tag/1.1.5" } ] }, diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 1f79669f3..095768edf 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -68,6 +68,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [DotVVM](https://github.com/riganti/dotvvm) - MVVM framework for people who don't like to write JavaScript, with OWIN and ASP.NET Core support and a free extension for Visual Studio 2015 and 2017. * [Nancy](https://github.com/NancyFx/Nancy) - A lightweight, low-ceremony, framework for building HTTP based services on .NET and Mono. * [NemerleWeb](https://github.com/NemerleWeb/NemerleWeb) - Web MVVM library for .Net. It uses reactive data model which allows creating rich internet applications. + * [ServiceStack](https://servicestack.net) - Comprehensive and lightning fast message-based framework including ORM, caching, authentication, templating, SPA integrations, etc. ## Static Site Generators * [FsBlog](https://github.com/fsprojects/FsBlog/) - Blog aware, static site generation using F#. @@ -342,6 +343,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [Material Design in XAML Toolkit](https://github.com/ButchersBoy/MaterialDesignInXamlToolkit) - WPF/XAML resources, styles & templates for creating applications using Material Design * [Mono XWT](https://github.com/mono/xwt) - A cross-platform UI toolkit for creating desktop apps * [UWP Community Toolkit](https://github.com/Microsoft/UWPCommunityToolkit) - The UWP Community Toolkit is a collection of helper functions, custom controls, and app services. It simplifies and demonstrates common developer tasks building UWP apps for Windows 10. + * [Neutronium](https://github.com/NeutroniumCore/Neutronium) - Neutronium is a library to create .NET desktop applications using HTML, CSS and javascript. It uses the MVVM pattern exactly the same way as WPF applications. ## Windows Services * [King.Service](https://github.com/jefking/King.Service) - Task scheduling for Azure and Windows @@ -367,6 +369,8 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [Orleans](https://github.com/dotnet/orleans) - Framework that provides a straight-forward approach to building distributed high-scale computing applications using virtual actor model. ## Windows Workflow + * [Core WF](https://github.com/dmetzgar/corewf) - WF runtime ported to work on .NET Core. + * [Orleans.Activities](https://github.com/OrleansContrib/Orleans.Activities) - WF over [Microsoft Orleans](https://github.com/dotnet/orleans) framework. * [Workflow Extractor](https://github.com/punitganshani/WorkflowExtractor) - Document Windows Workflow logic into a Word document or Excel sheet. ## Amazon Echo/Alexa Integration diff --git a/releases/UWP/net-native1.4/README.md b/releases/UWP/net-native1.4/README.md index fa7704952..a3f096b0c 100644 --- a/releases/UWP/net-native1.4/README.md +++ b/releases/UWP/net-native1.4/README.md @@ -4,8 +4,10 @@ You can see what was included in each .NET Native 1.4 ([Microsoft.NETCore.Univer When using Visual Studio these packages require Visual Studio 2015 Update 3 or later. -### 5.2.3 (March 7, 2017) +### 5.2.4 (January 9th, 2018) +- Fixed CVE-2018-0786: Security Feature Bypass in X509 Certificate Validation: https://github.com/Microsoft/dotnet/issues/597 +### 5.2.3 (March 7, 2017) - Fixed an [issue](https://github.com/dotnet/corefx/issues/10374) that caused DataContractJsonSerializer to fail to serialize any [DataContract] type whose default constructor is not public. - Fixed a regression in 5.2.2 where [4 Libraries were accidently no longer referenced by default](https://github.com/dotnet/corefx/issues/10338) - System.Collections.NonGeneric @@ -21,7 +23,6 @@ You can read more about these changes in the Visual Studio 2015 Update 3 blog [p - Improved runtime performance for XAML applications and Unity games. ## Resources - - [Getting Started with .NET Native](https://docs.microsoft.com/en-us/dotnet/framework/net-native/getting-started-with-net-native) - [Microsoft.NETCore.UniversalWindowsPlatform NuGet Package Details](https://www.nuget.org/packages/Microsoft.NETCore.UniversalWindowsPlatform) - [Windows Dev Center](https://developer.microsoft.com/en-us/windows/apps/getstarted) diff --git a/releases/UWP/net-native1.6/README.md b/releases/UWP/net-native1.6/README.md index ed2f8876c..4935bff08 100644 --- a/releases/UWP/net-native1.6/README.md +++ b/releases/UWP/net-native1.6/README.md @@ -4,20 +4,19 @@ You can see what was included in each .NET Native 1.6 ([Microsoft.NETCore.Univer When using Visual Studio these packages require Visual Studio 2017 or later. -### 5.3.4 (August 4, 2017) +### 5.3.5 (January 9th, 2018) +- Fixed CVE-2018-0786: Security Feature Bypass in X509 Certificate Validation: https://github.com/Microsoft/dotnet/issues/597 +### 5.3.4 (August 4, 2017) - Corrected an issue where System.Threading.Thread.MemoryBarrier was implemented as no-op on x86 release builds. ### 5.3.3 (April 24, 2017) - - Corrected an [issue](http://stackoverflow.com/questions/43530071/how-to-fix-app-submission-error-of-1300) for projects that have Visual Studio configuration values that are not "DEBUG" or "RELEASE" that causes Windows Store submission failure (error code 1300). For example, most Unity apps use a configuration named "Master". ### 5.3.2 (April 6, 2017) - - Fixed an issue that caused MAKEPRI build warnings to be emitted when building app packages for UWP projects. ### 5.3.1 (March 7, 2017) - - Fixed an [issue](https://github.com/dotnet/corefx/issues/10374) that caused DataContractJsonSerializer to fail to serialize any [DataContract] type whose default constructor is not public. - Fixed a regression in 5.3.0 where [4 Libraries were accidently no longer referenced by default](https://github.com/dotnet/corefx/issues/10338) - System.Collections.NonGeneric diff --git a/releases/UWP/net-native1.7/README.md b/releases/UWP/net-native1.7/README.md index f3bd6de05..fa57d0aec 100644 --- a/releases/UWP/net-native1.7/README.md +++ b/releases/UWP/net-native1.7/README.md @@ -1,14 +1,22 @@ -# .NET Native 1.7 (UWP 5.4.x) Release Notes - -You can see what was included in each .NET Native 1.7 ([Microsoft.NETCore.UniversalWindowsPlatform 5.4.x](https://www.nuget.org/packages/Microsoft.NETCore.UniversalWindowsPlatform)) release, below. +# .NET native tools 1.7 Release Notes +You can see what was included in each .NET Native 1.7 ([Microsoft.NETCore.UniversalWindowsPlatform 5.4.x](https://www.nuget.org/packages/Microsoft.NETCore.UniversalWindowsPlatform)) release below. When using Visual Studio these packages require Visual Studio 2017 or later. -### 5.4.1 (October 9, 2017) -- Fixed an issue with Microsoft.NetNative.targets that prevented C++ hybrid apps from compiling; apps would fail to compile due to an attempt to write a file to a folder that does not exist. [511674] +### UWP 5.4.2 (.NET native tools 1.7.3) (January 9th, 2018) +- Fixed CVE-2018-0786: Security Feature Bypass in X509 Certificate Validation: https://github.com/Microsoft/dotnet/issues/597 + +### UWP 6.0.5 (.NET native tools 1.7.3) (December 12th, 2017) +- Fixed a GC memory leak. [506391] -### 5.4.0 (August 11, 2017) +### UWP 6.0.4 (.NET native tools 1.7.2) (December 4th, 2017) +- Fixed an unhandled exception when ClientWebSocket loses connection to server. [518456] +- Fixed a regression in the 1.7 toolchain causing winmd file corruption when the file stream is left open. [496929] + +### UWP 5.4.1 (.NET native tools 1.7.1) (October 9th, 2017) +- Fixed an issue with Microsoft.NetNative.targets that prevented C++ hybrid apps from compiling; apps would fail to compile due to an attempt to write a file to a folder that does not exist. [511674] +### UWP 5.4.0 (.NET native tools 1.7.0) (August 11th, 2017) #### Improved Diagnostics and Better Support for Portable PDBs - In .NET Native 1.7, we added support for the new [Portable PDB format](https://github.com/dotnet/corefx/blob/master/src/System.Reflection.Metadata/specs/PortablePdb-Metadata.md) for representing symbol information in the .NET Native UWP compiler. The portable PDB format was originally developed to support cross-platform symbol information for managed code as well as drastically reduce the size of debug info - the format makes use of the MSIL module metadata instead of duplicating it and, because of this, it is typically an order of magnitude shorter than the equivalent Windows PDB. In addition to that, the portable PDB format supports an "embedded" flavor in which the symbol information is directly attached to the MSIL executable in form of a binary blob, making it much easier to deploy such managed binaries, not having to care about two different files (with all the related problems of mutual compatibility, signing etc.). The debugging experience is on par with Windows PDB's - we encode the same debug information just in a more compact manner. The previous version of the .NET Native toolchain was oblivious of the portable PDB format. [1640097] diff --git a/releases/UWP/net-native2.0/README.md b/releases/UWP/net-native2.0/README.md index 2c64b32f8..281019260 100644 --- a/releases/UWP/net-native2.0/README.md +++ b/releases/UWP/net-native2.0/README.md @@ -1,11 +1,31 @@ -# .NET Native 2.0 (UWP 6.0.x) Release Notes +# .NET native tools 2.0 (UWP 6.0.x) Release Notes -You can see what was included in each .NET Native 2.0 ([Microsoft.NETCore.UniversalWindowsPlatform 6.0.x](https://www.nuget.org/packages/Microsoft.NETCore.UniversalWindowsPlatform)) release, below. +You can see what was included in each .NET Native 2.0 ([Microsoft.NETCore.UniversalWindowsPlatform 6.0.x](https://www.nuget.org/packages/Microsoft.NETCore.UniversalWindowsPlatform)) release below. When using Visual Studio these packages require Visual Studio 2017 Version 15.4 or later. +### UWP 6.0.7 (.NET native tools 2.0.3) (February 7th, 2018) +- Updated ILC to copy all .pdb files to the output .appxsyms, including ones that do not have matching binaries. [524755] -### 6.0.1 (October 5, 2017) +### UWP 6.0.6 (.NET native tools 2.0.2) (January 9th, 2018) +- Fixed CVE-2018-0786: Security Feature Bypass in X509 Certificate Validation: https://github.com/Microsoft/dotnet/issues/597 + +### UWP 6.0.5 (.NET native tools 2.0.2) (December 12th, 2017) +- Updated the .NET native 1.7 tool chain to 1.7.3 [.NET Native 1.7 (UWP 5.4.x) Release Notes](https://github.com/Microsoft/dotnet/blob/master/releases/UWP/net-native1.7/README.md). + +### UWP 6.0.4 (.NET native tools 2.0.2) (December 4th, 2017) +- Fixed a crash in debug config with static analysis enabled in project properties. [473689] +- Improved telemetry included in ILC crashes, enabling failure determination. [521523] +- Fixed for a GC memory leak. [506391] +- Updated the .NET native 1.7 tool chain to 1.7.2. [.NET Native 1.7 (UWP 5.4.x) Release Notes](https://github.com/Microsoft/dotnet/blob/master/releases/UWP/net-native1.7/README.md). +### UWP 6.0.2 (.NET native tools 2.0.1) (November 20, 2017) +- Fixed an issue when building UWP apps that target RS3 and reference the Microsoft Store Services SDK and Microsoft Advertising SDK or Store Engagement SDK [514498] +- Fixed crashes due to an error in the compiler's garbage collection reporting (affects ARM apps built with .NET Native) [507618] +- Improved performance for creating new UWP Projects. [512775] +- Fixed issues that enable Windows Application Packaging (Centennial) projects publishing scenarios [521438] +- Enabled a P/Invoke feature for WindowsSDK Store in RS3 [518300] + +### 6.0.1 (October 5, 2017) #### .NET Standard 2.0 Support diff --git a/releases/net471/KnownIssues/470006-GC Crashes with high rate of large object allocation.md b/releases/net471/KnownIssues/470006-GC Crashes with high rate of large object allocation.md new file mode 100644 index 000000000..c3e1c2a01 --- /dev/null +++ b/releases/net471/KnownIssues/470006-GC Crashes with high rate of large object allocation.md @@ -0,0 +1,34 @@ +# Rare crashes can occur when background GC is enabled in applications that allocate and free large objects at a high rate + +## Symptoms + +When background GC is enabled, an application running on .NET Framework 4.7.1 experiences +intermittent crashes that did not occur when running on other .NET Framework versions. + +## Cause + +.NET Framework 4.7.1 includes changes that improve background GC performance. +Because of these changes, a rare combination of factors can cause the background GC +to reclaim a large object while the program is still using it. + +## Impact + +This problem impacts applications that run with the background GC enabled and that also allocate +and free large objects at a high rate. As described in the article [Fundamentals of Garbage Collection](https://docs.microsoft.com/en-us/dotnet/standard/garbage-collection/fundamentals#the-managed-heap), +a large object is any object that is 85,000 bytes or larger in size. + +This problem is rare, and is more likely to occur when running on the x86 version of the +.NET Framework than when running on the x64 version of the 4.7.1 .NET Framework. + +## Workarounds + +The most practical workaround is to disable the background GC by setting the enabled attribute of the [ element](https://docs.microsoft.com/en-us/dotnet/framework/configure-apps/file-schema/runtime/gcconcurrent-element) in the + section of your application configuration file to false. + +The only other workaround is to change the application to allocate and free large objects +at a much lower rate. + +## Resolution + +This problem is fixed in [.NET Framework 4.7.2](http://go.microsoft.com/fwlink/?LinkId=863281). + diff --git a/releases/net471/KnownIssues/510901-BCL Apps targeting .NET-4.6.1 that use .NET Standard libraries might be broken when running on .NET 4.7.1.md b/releases/net471/KnownIssues/510901-BCL Apps targeting .NET-4.6.1 that use .NET Standard libraries might be broken when running on .NET 4.7.1.md index e1301a784..6933f7625 100644 --- a/releases/net471/KnownIssues/510901-BCL Apps targeting .NET-4.6.1 that use .NET Standard libraries might be broken when running on .NET 4.7.1.md +++ b/releases/net471/KnownIssues/510901-BCL Apps targeting .NET-4.6.1 that use .NET Standard libraries might be broken when running on .NET 4.7.1.md @@ -2,20 +2,60 @@ ## Symptoms -Applications that target the .NET Framework 4.6.1 and use .NET Standard libraries may experience exceptions when running on the .NET Framework 4.7.1 +Applications that target the .NET Framework 4.6.1 and use .NET Standard libraries may experience System.TypeLoadException exceptions when running on the .NET Framework 4.7.1 ## Cause The .NET Framework 4.7.1 adds support for .NET Standard in-box. As part of this change, a few assemblies that used to ship independently from the .NET Framework have now been added to the .NET Framework. As these .NET Standard assemblies were not part of the .NET Framework prior to .NET 4.7.1, they were deployed with the application, and a binding redirect was added to the application's app.config file. -When running on the .NET Framework 4.7.1, where the assemblies are now part of the Framework, the application now has two types with different identities, and that leads to a . One type comes from the app-local assembly, and the other one comes from the .NET Framework assembly. +When running on the .NET Framework 4.7.1, where the assemblies are now part of the Framework, the application now has two types with different identities, and that leads to a TypeLoadException. One type comes from the app-local assembly, and the other one comes from the .NET Framework assembly. Also reported here: https://github.com/Microsoft/dotnet-framework-early-access/issues/9 +## Impact + +The following types are potentially impacted by this issue. + +- System.Data.Common.DbColumn +- System.Data.Common.DbDataReaderExtensions +- System.Data.Common.IDbColumnSchemaGenerator +- System.Diagnostics.StackFrameExtensions +- System.Globalization.GlobalizationExtensions +- System.Net.Sockets.SocketReceiveFromResult +- System.Net.Sockets.SocketReceiveMessageFromResult +- System.Net.Sockets.SocketTaskExtensions +- System.Runtime.CompilerServices.TupleElementNamesAttribute +- System.Runtime.InteropServices.Architecture +- System.Runtime.InteropServices.OSPlatform +- System.Runtime.InteropServices.RuntimeInformation +- System.Runtime.Serialization.DataContractSerializerExtensions +- System.Runtime.Serialization.ISerializationSurrogateProvider +- System.Security.Cryptography.ECCurve +- System.Security.Cryptography.ECParameters +- System.Security.Cryptography.ECPoint +- System.Security.Cryptography.IncrementalHash +- System.Security.SecureStringMarshal +- System.StringNormalizationExtensions +- System.Threading.PreAllocatedOverlapped +- System.Threading.ThreadPoolBoundHandle +- System.TupleExtensions +- System.ValueTuple +- System.ValueTuple`1 +- System.ValueTuple`2 +- System.ValueTuple`3 +- System.ValueTuple`4 +- System.ValueTuple`5 +- System.ValueTuple`6 +- System.ValueTuple`7 +- System.ValueTuple`8 +- System.Xml.XPath.XDocumentExtensions ## Workarounds There are two ways to work around this issue: - When running on .NET Framework 4.7.1, remove the binding redirects from the app.config file for the assemblies that are now part of the .NET Framework. - - Re-target your application to target the .NET Framwork 4.7.1 + - Re-target your application to target the .NET Framwork 4.7 or .NET Framework 4.7.1. +## Resolution + +[09-Jan-2018] The fix for this issue is included in the [Update for .NET Framework 4.7.1 - KB4054856](http://go.microsoft.com/fwlink/?LinkId=866028) for all platforms except Windows 10 Fall Creators Update. \ No newline at end of file diff --git a/releases/net471/KnownIssues/517815-BCL Applications making heavy use of System.Diagnostics.StackTrace might run more slowly on .NET 4.7.1.md b/releases/net471/KnownIssues/517815-BCL Applications making heavy use of System.Diagnostics.StackTrace might run more slowly on .NET 4.7.1.md new file mode 100644 index 000000000..e089f5bcf --- /dev/null +++ b/releases/net471/KnownIssues/517815-BCL Applications making heavy use of System.Diagnostics.StackTrace might run more slowly on .NET 4.7.1.md @@ -0,0 +1,29 @@ +# Applications making heavy use of System.Diagnostics.StackTrace or Exception.StackTrace might run more slowly on the .NET Framework 4.7.1 + +## Symptoms + +An application that had acceptable performance running on the .NET Framework 4.7 or earlier versions executes more slowly when running on the .NET Framework 4.7.1 + +## Cause + +The .NET Framework 4.7.1 added support for detecting and parsing the Portable PDB file format to show file and line number information in stack traces. As part of this change, each function in a +stack trace has its defining module checked to determine if that module uses the Portable PDB format. Due to some differences in the internal caching policy, the +runtime spends far more time searching for Portable PDBs than previous .NET Framework versions spent searching for classic Windows PDBs. This causes formatted stack traces to be +produced more slowly than before. + +The issue was originally reported here: https://github.com/Microsoft/dotnet/issues/529 + +## Workarounds + +Call the [System.Diagnostics.StackTrace.#ctor(Boolean)](https://docs.microsoft.com/dotnet/api/system.diagnostics.stacktrace.-ctor?view=netframework-4.7.1#System_Diagnostics_StackTrace__ctor_System_Boolean_) constructor with `false` argument to avoid capturing source information. This avoids the portion of the code where performance +regressed. + +## Resolution + +[09-Jan-2018] The fix for this issue is available as follows: +- For Windows 10 Fall Creators Update, see the update https://support.microsoft.com/en-us/help/4058258/windows-10-update-kb4058258. +- For all other platforms, the fix for this issue is included in the [Update for .NET Framework 4.7.1 - KB4054856](http://go.microsoft.com/fwlink/?LinkId=866028). + +This fix removes the Portable PDB functionality from 4.7.1. In [.NET Framework 4.7.2](http://go.microsoft.com/fwlink/?LinkId=863281), we anticipate having an improved fix available which both performs well and re-enables the portable PDB functionality. + + diff --git a/releases/net471/KnownIssues/517815-BCL Stack traces are missing source information for frames with debug information in the Portable PDB format.md b/releases/net471/KnownIssues/517815-BCL Stack traces are missing source information for frames with debug information in the Portable PDB format.md new file mode 100644 index 000000000..8be3b104d --- /dev/null +++ b/releases/net471/KnownIssues/517815-BCL Stack traces are missing source information for frames with debug information in the Portable PDB format.md @@ -0,0 +1,20 @@ + +# Stack traces are missing source information for frames with debug information in the Portable PDB format when running on .NET Framework 4.7.1 + +## Symptoms + +An application that formats stack traces is missing source information for some or all frames. This includes stack traces formatted via [System.Exception.ToString()](https://docs.microsoft.com/en-us/dotnet/api/system.exception.tostring?view=netframework-4.7.1), [System.Exception.StackTrace](https://docs.microsoft.com/en-us/dotnet/api/system.exception.stacktrace?view=netframework-4.7.1) and [System.Diagnostics.StackTrace.ToString()](https://docs.microsoft.com/en-us/dotnet/api/system.diagnostics.stacktrace.tostring?view=netframework-4.7.1). +The frames missing source information reside in assemblies that have pdbs in the [Portable PDB format](https://github.com/dotnet/core/blob/master/Documentation/diagnostics/portable_pdb.md) present on disk. + +## Cause + +The .NET Framework 4.7.1 added support for detecting and parsing the Portable PDB file format to show file and line number information in stack traces. However, due to an [implementation issue](https://github.com/Microsoft/dotnet/blob/master/releases/net471/KnownIssues/517815-BCL%20Applications%20making%20heavy%20use%20of%20System.Diagnostics.StackTrace%20might%20run%20more%20slowly%20on%20.NET%204.7.1.md), the feature had an unacceptable performance impact and Microsoft intentionally disabled it. + +## Workarounds + +- If you control the build process for the problematic assemblies you may be able to configure it to generate the classic Windows PDB format instead. +- You can use the [PDB conversion tool](https://github.com/dotnet/symreader-converter) to convert the Portable PDBs into the classic Windows PDB format and deploy those with the application instead. + +## Resolution + +A fix is anticipated in .NET Framework 4.7.2 in the near future that restores Portable PDB functionality with greatly improved performance. diff --git a/releases/net471/KnownIssues/521954 - BCL CultureAwareComparer with ignore casing on serialized on previous versions of .NET do not correctly deserialize on .NET 4.7.1.md b/releases/net471/KnownIssues/521954 - BCL CultureAwareComparer with ignore casing on serialized on previous versions of .NET do not correctly deserialize on .NET 4.7.1.md new file mode 100644 index 000000000..03b31f030 --- /dev/null +++ b/releases/net471/KnownIssues/521954 - BCL CultureAwareComparer with ignore casing on serialized on previous versions of .NET do not correctly deserialize on .NET 4.7.1.md @@ -0,0 +1,32 @@ +# CultureAwareComparer with ignore casing serialized on previous versions of .NET Framework does not correctly deserialize on .NET Framework 4.7.1 + +## Symptoms + +When deserializing a CultureAwareComparer that was serialized using ignore case on a previous version of .NET Framework on a machine running .NET Framework 4.7.1, the comparer becomes case sensitive. + +## Cause + +In the .NET Framework 4.7.1 we added the ability to specify more comparer options when doing a culture-aware comparison. +As part of that change we introduced a new field on the comparer that holds the information about what kind of comparison is requested. + +When that type, coming from a version of .NET Framework prior to 4.7.1 is deserialized on a .NET Framework 4.7.1 machine, the private field introduced in the .NET Framework 4.7.1 is reset to zero, which makes the comparer case sensitive. + +## Impact + +The following 2 comparers are susceptible to this issue. These comparers are usually used with collection types like Dictionary and Hashtable. +P:System.StringComparer.InvariantCultureIgnoreCase +P:System.StringComparer.CurrentCultureIgnoreCase + +## Workarounds + +Ensure that both serialization and deserialization occurs on systems running a version of the .NET Framework starting with 4.7.1. + +## Resolution + +If you are running on Windows 10 Fall Creators Update, an update is available that addresses this issue. Select one of the following links based on your processor architecture: + + x86: https://go.microsoft.com/fwlink/?linkid=862758 + + x64: https://go.microsoft.com/fwlink/?linkid=862762 + +[09-Jan-2018] The fix for this issue is included in the [Update for .NET Framework 4.7.1 - KB4054856](http://go.microsoft.com/fwlink/?LinkId=866028) for all platforms except Windows 10 Fall Creators Update. \ No newline at end of file diff --git a/releases/net471/KnownIssues/523633 - Setup - OS upgrade to Windows 10 gets the product in bad state.md b/releases/net471/KnownIssues/523633 - Setup - OS upgrade to Windows 10 gets the product in bad state.md new file mode 100644 index 000000000..499b8cd55 --- /dev/null +++ b/releases/net471/KnownIssues/523633 - Setup - OS upgrade to Windows 10 gets the product in bad state.md @@ -0,0 +1,23 @@ +# Application crashes occur when running on the .NET Framework 4.7.1 after upgrading from Windows 10 Anniversary Update to Windows 10 Creators Update + +## Symptoms +When you install the .NET Framework 4.7.1 on Windows 10 Anniversary Update (version 1607) and your system is upgraded to Windows 10 Creators Update (version 1703), applications that depend on any version of the .NET Framework 4.x may experience unexpected crashes. + +Consider the following scenario: + 1. On a Windows 10 Anniversary Update (version 1607) machine, install the .NET Framework 4.7.1. + 2. Upgrade the machine to Windows 10 Creators Update (version 1703) from Windows Update. + 3. Run an application that uses any version of .NET 4.X. + 4. The application experiences an unexpected crash. + +Note: Windows 10 Anniversary Update (version 1607) comes pre-installed with .NET Framework 4.6.2, and you can install .NET 4.7.1 on it using an offline (or web) installer. Similarly, Windows 10 Creators Update (version 1703) comes pre-installed with .NET Framework 4.7. + +## Cause +This issue occurs because the .NET Framework 4.7.1 product installation gets into a corrupted state after the OS upgrade. The OS upgrade preserves all the .NET 4.7.1 assemblies in the GAC as is, but the in-box assemblies are reverted to the in-box version (4.7). Due to this mixed state, the .NET applications exhibit unexpected behaviors. + +## Impact +Applications may experience unexpected crashes in certain scenarios. + +Note: This issue does not occur when you do an upgrade from Windows 10 Anniversary Update (version 1607) to Windows 10 Fall Creators Update (version 1709). + +## Resolution +To get the .NET Framework 4.7.1 product into a working state, you need to reinstall .NET 4.7.1. diff --git a/releases/net471/KnownIssues/534719-Networking ServicePoint.ConnectionLimit default behavior with loopback changed unexpectedly.md b/releases/net471/KnownIssues/534719-Networking ServicePoint.ConnectionLimit default behavior with loopback changed unexpectedly.md new file mode 100644 index 000000000..c6ca2d76f --- /dev/null +++ b/releases/net471/KnownIssues/534719-Networking ServicePoint.ConnectionLimit default behavior with loopback changed unexpectedly.md @@ -0,0 +1,73 @@ +# ServicePoint.ConnectionLimit default behavior with loopback changed unexpectedly + +## Symptoms +The limit for HTTP connections per endpoint is controlled by the `ServicePointManager.DefaultConnectionLimit` property. +This value defaults to 2. In the .NET Framework 4.7 and earlier versions, the limit applied only to non-loopback +addresses such as http://www.microsoft.com. For loopback addresses such as http://localhost, the limit for connections +was always int.MaxValue (2,147,483,647) unless changed by calling the `ServicePoint.ConnectionLimit` API. + +In the .NET Framework 4.7.1 when using HttpClient APIs, the connection limit for loopback addresses now matches the limit +for non-loopback addresses. Thus, the default limit is 2. This can cause applications to run slower or hang when +doing multiple, parallel, requests to the http://localhost addresses. + +Here is code that shows the problem: + +```c# +using System; +using System.Net; +using System.Net.Http; + +namespace ConsoleApp +{ + class Program + { + static void Main(string[] args) + { + Console.WriteLine($"ServicePointManager.DefaultConnectionLimit: {ServicePointManager.DefaultConnectionLimit}"); + + var uriLoopback = new Uri("http://localhost/"); + var uriExternal = new Uri("http://www.microsoft.com/"); + + Console.WriteLine("Before using HttpClient APIs"); + ServicePoint spLoopback = ServicePointManager.FindServicePoint(uriLoopback); + Console.WriteLine($"{uriLoopback.AbsoluteUri}, ConnectionLimit (should be {int.MaxValue}): {spLoopback.ConnectionLimit}"); + + ServicePoint spExternal = ServicePointManager.FindServicePoint(uriExternal); + Console.WriteLine($"{uriExternal.AbsoluteUri}, ConnectionLimit (should be {ServicePointManager.DefaultConnectionLimit}): {spExternal.ConnectionLimit}"); + + Console.WriteLine("Use HttpClient APIs"); + var client = new HttpClient(); + try + { + HttpResponseMessage response = client.GetAsync(uriLoopback).Result; + } + catch (Exception) + { + // Ignore any network error since there is probably not a loopback server present. + } + + Console.WriteLine("After using HttpClient APIs"); + + // BUG - due to the bug in .NET Framework 4.7.1, the ConnectionLimit for this loopback ServicePoint is changed + // unexpectedly. + Console.WriteLine($"{uriLoopback.AbsoluteUri}, ConnectionLimit (should be {int.MaxValue}): {spLoopback.ConnectionLimit}"); + } + } +} +``` + +## Cause +Changes in .NET Framework 4.7.1 to the `System.Net.Http.HttpClientHandler` class caused this problem. + +## Resolution +To work around the problem using HttpClient APIs, you can use the following code to increase the connection limit. +This code should be added before calling any HttpClient APIs. + +```c# +ServicePointManager.DefaultConnectionLimit = 20; // Actual value should be based on your requirements. +``` + +Note: This will also change the limits for non-loopback addresses. + +## More information +We will fix this problem in a future .NET Framework Quality Rollup release. diff --git a/releases/net471/dotnet471-known-issues.md b/releases/net471/dotnet471-known-issues.md index b1afb4970..551943b3c 100644 --- a/releases/net471/dotnet471-known-issues.md +++ b/releases/net471/dotnet471-known-issues.md @@ -4,8 +4,14 @@ This document lists the known issues that you may experience after you install the Microsoft .NET Framework 4.7.1. ## Product issues for the .NET Framework 4.7.1 -- [479874 - WPF Touch Stops Working After Rapid/Prolonged Use Of Popups](https://github.com/Microsoft/dotnet/blob/master/releases/net471/KnownIssues/479874-WPF%20Touch%20Stops%20Working%20After%20Prolonged%20Use%20of%20Popups.md) -- [481090 - WPF Touch generates a NullReferenceException in WispLogic.ProcessInputReport](https://github.com/Microsoft/dotnet/blob/master/releases/net471/KnownIssues/481090-WPF%20Touch%20generates%20NullReferenceException%20in%20ProcessInputReport.md) -- [489937 - WPF Touch/Stylus Generates AccessViolations and Heap Corruption in GetPenEventMultiple](https://github.com/Microsoft/dotnet/blob/master/releases/net471/KnownIssues/489937-WPF%20Touch%20and%20Stylus%20AccessViolation%20in%20GetPenEventMultiple.md) -- [493108 - WPF InvalidCastException when displaying a checked MenuItem](https://github.com/Microsoft/dotnet/blob/master/releases/net471/KnownIssues/493108-WPF%20InvalidCastException%20when%20displaying%20a%20checked%20MenuItem.md) -- [510901 - Applications targeting .NET 4.6.1 that use .NET Standard libraries might be broken when running on .NET 4.7.1](https://github.com/Microsoft/dotnet/blob/master/releases/net471/KnownIssues/510901-BCL%20Apps%20targeting%20.NET-4.6.1%20that%20use%20.NET%20Standard%20libraries%20might%20be%20broken%20when%20running%20on%20.NET%204.7.1.md) +- [470006 - GC - Rare crashes can occur when background GC is enabled in applications that allocate and free large objects at a high rate](https://github.com/Microsoft/dotnet/blob/master/releases/net471/KnownIssues/470006-GC%20Crashes%20with%20high%20rate%20of%20large%20object%20allocation.md) +- [479874 - WPF - Touch Stops Working After Rapid/Prolonged Use Of Popups](https://github.com/Microsoft/dotnet/blob/master/releases/net471/KnownIssues/479874-WPF%20Touch%20Stops%20Working%20After%20Prolonged%20Use%20of%20Popups.md) +- [481090 - WPF - Touch generates a NullReferenceException in WispLogic.ProcessInputReport](https://github.com/Microsoft/dotnet/blob/master/releases/net471/KnownIssues/481090-WPF%20Touch%20generates%20NullReferenceException%20in%20ProcessInputReport.md) +- [489937 - WPF - Touch/Stylus Generates AccessViolations and Heap Corruption in GetPenEventMultiple](https://github.com/Microsoft/dotnet/blob/master/releases/net471/KnownIssues/489937-WPF%20Touch%20and%20Stylus%20AccessViolation%20in%20GetPenEventMultiple.md) +- [493108 - WPF - InvalidCastException when displaying a checked MenuItem](https://github.com/Microsoft/dotnet/blob/master/releases/net471/KnownIssues/493108-WPF%20InvalidCastException%20when%20displaying%20a%20checked%20MenuItem.md) +- [510901 - BCL - Applications targeting .NET 4.6.1 that use .NET Standard libraries might be broken when running on .NET 4.7.1](https://github.com/Microsoft/dotnet/blob/master/releases/net471/KnownIssues/510901-BCL%20Apps%20targeting%20.NET-4.6.1%20that%20use%20.NET%20Standard%20libraries%20might%20be%20broken%20when%20running%20on%20.NET%204.7.1.md) +- [521954 - BCL - CultureAwareComparer with ignore casing serialized on previous versions of .NET Framework does not correctly deserialize on .NET Framework 4.7.1](https://github.com/Microsoft/dotnet/blob/master/releases/net471/KnownIssues/521954%20-%20BCL%20CultureAwareComparer%20with%20ignore%20casing%20on%20serialized%20on%20previous%20versions%20of%20.NET%20do%20not%20correctly%20deserialize%20on%20.NET%204.7.1.md) +- [517815 - BCL - Applications making heavy use of System.Diagnostics.StackTrace or Exception.StackTrace might run more slowly on the .NET Framework 4.7.1](https://github.com/Microsoft/dotnet/blob/master/releases/net471/KnownIssues/517815-BCL%20Applications%20making%20heavy%20use%20of%20System.Diagnostics.StackTrace%20might%20run%20more%20slowly%20on%20.NET%204.7.1.md) +- [517815 - BCL - Stack traces are missing source information for frames with debug information in the Portable PDB format when running on .NET Framework 4.7.1](https://github.com/Microsoft/dotnet/blob/master/releases/net471/KnownIssues/517815-BCL%20Stack%20traces%20are%20missing%20source%20information%20for%20frames%20with%20debug%20information%20in%20the%20Portable%20PDB%20format.md) +- [523633 - Setup - Application crashes occur when running on the .NET Framework 4.7.1 after upgrading from Windows 10 Anniversary Update to Windows 10 Creators Update](https://github.com/Microsoft/dotnet/blob/master/releases/net471/KnownIssues/523633%20-%20Setup%20-%20OS%20upgrade%20to%20Windows%2010%20gets%20the%20product%20in%20bad%20state.md) +- [534719 - Networking - ServicePoint.ConnectionLimit default behavior with loopback changed unexpectedly](https://github.com/Microsoft/dotnet/blob/master/releases/net471/KnownIssues/534719-Networking%20ServicePoint.ConnectionLimit%20default%20behavior%20with%20loopback%20changed%20unexpectedly.md) From 853c1f92d4554936cf9f464f442cc61c7a3f6344 Mon Sep 17 00:00:00 2001 From: Ron Petrusha Date: Tue, 27 Feb 2018 08:14:44 -0800 Subject: [PATCH 561/872] Corrected language tags, formatting issue (#637) --- ...ryformatter-can-fail-to-find-type-from-loadfrom-context.md | 4 ++-- .../change-in-path-separator-character-in-zip-files.md | 2 +- ...cspparameters_parentwindowhandle-now-expects-hwnd-value.md | 4 ++-- .../compatibility/currentculture-flows-across-tasks.md | 2 +- ...tculture-not-preserved-across-wpf-dispatcher-operations.md | 2 +- .../compatibility/sslstream-support-for-tls-alerts.md | 4 ++-- Documentation/compatibility/wpf-accessibility-improvements.MD | 2 +- 7 files changed, 10 insertions(+), 10 deletions(-) diff --git a/Documentation/compatibility/binaryformatter-can-fail-to-find-type-from-loadfrom-context.md b/Documentation/compatibility/binaryformatter-can-fail-to-find-type-from-loadfrom-context.md index 69c79c9f5..01042b128 100644 --- a/Documentation/compatibility/binaryformatter-can-fail-to-find-type-from-loadfrom-context.md +++ b/Documentation/compatibility/binaryformatter-can-fail-to-find-type-from-loadfrom-context.md @@ -29,12 +29,12 @@ when a type is being loaded from an assembly loaded in a different context, a ### Recommended Action If this exception is seen, the `Binder` property of the can be set to a custom binder that will find the correct type. -```C# +```csharp var formatter = new BinaryFormatter { Binder = new TypeFinderBinder() } ``` And then the custom binder: -```C# +```csharp public class TypeFinderBinder : SerializationBinder { private static readonly string s_assemblyName = Assembly.GetExecutingAssembly().FullName; diff --git a/Documentation/compatibility/change-in-path-separator-character-in-zip-files.md b/Documentation/compatibility/change-in-path-separator-character-in-zip-files.md index bbdf827c8..0aed8ba19 100644 --- a/Documentation/compatibility/change-in-path-separator-character-in-zip-files.md +++ b/Documentation/compatibility/change-in-path-separator-character-in-zip-files.md @@ -20,7 +20,7 @@ Decompressing a zip file created by an app that targets a previous version of th ### Recommended Action -The impact of this change on .ZIP files that are decompressed on the Windows operating system by APIs in the .NET Framework namespace should be minimal, since these APIs can seamlessly handle either a slash ("/") or a backslash ("\\") as the path separator character. +The impact of this change on .ZIP files that are decompressed on the Windows operating system by APIs in the .NET Framework namespace should be minimal, since these APIs can seamlessly handle either a slash ("`/`") or a backslash ("`\`") as the path separator character. If this change is undesirable, you can opt out of it by adding a configuration setting to the [``](https://docs.microsoft.com/dotnet/framework/configure-apps/file-schema/runtime/runtime-element.md) section of your application configuration file. The following example shows both the ` property with code like the following: -```C# +```csharp cspParameters.ParentWindowHandle = form.Handle; ``` @@ -37,7 +37,7 @@ effect, but on Windows 8 and later versions, it results in a ### Recommended Action Applications targeting .NET 4.7 or higher wishing to register a parent window relationship are encouraged to use the simplified form: -```C# +```csharp cspParameters.ParentWindowHandle = form.Handle; ``` diff --git a/Documentation/compatibility/currentculture-flows-across-tasks.md b/Documentation/compatibility/currentculture-flows-across-tasks.md index 99498555a..7d6d028af 100644 --- a/Documentation/compatibility/currentculture-flows-across-tasks.md +++ b/Documentation/compatibility/currentculture-flows-across-tasks.md @@ -39,7 +39,7 @@ as the first operation in an async Task. Alternatively, the old behavior (of not flowing /) may be opted into by setting the following compatibility switch: -```C# +```csharp AppContext.SetSwitch("Switch.System.Globalization.NoAsyncCurrentCulture", true); ``` diff --git a/Documentation/compatibility/currentculture-not-preserved-across-wpf-dispatcher-operations.md b/Documentation/compatibility/currentculture-not-preserved-across-wpf-dispatcher-operations.md index 30fb36682..ed2d09a62 100644 --- a/Documentation/compatibility/currentculture-not-preserved-across-wpf-dispatcher-operations.md +++ b/Documentation/compatibility/currentculture-not-preserved-across-wpf-dispatcher-operations.md @@ -62,7 +62,7 @@ can be avoided by targeting the .NET Framework 4.5.2. Apps that target .NET Framework 4.6 or later can also work around this by setting the following compatibility switch: - ``` + ```csharp AppContext.SetSwitch("Switch.System.Globalization.NoAsyncCurrentCulture", true); ``` diff --git a/Documentation/compatibility/sslstream-support-for-tls-alerts.md b/Documentation/compatibility/sslstream-support-for-tls-alerts.md index d6be2a543..0a45176a4 100644 --- a/Documentation/compatibility/sslstream-support-for-tls-alerts.md +++ b/Documentation/compatibility/sslstream-support-for-tls-alerts.md @@ -47,13 +47,13 @@ for .NET 4.6 and above applications running on .NET 4.7 or higher framework. Must be the very first thing the application does since ServicePointManager will initialize only once:   -```C# +```csharp AppContext.SetSwitch("TestSwitch.LocalAppContext.DisableCaching", true); AppContext.SetSwitch("Switch.System.Net.DontEnableTlsAlerts", true); // Set to 'false' to enable the feature in .NET 4.6 - 4.6.2. ``` * AppConfig: -```XML +```xml diff --git a/Documentation/compatibility/wpf-accessibility-improvements.MD b/Documentation/compatibility/wpf-accessibility-improvements.MD index 42c2a3599..b3454ec91 100644 --- a/Documentation/compatibility/wpf-accessibility-improvements.MD +++ b/Documentation/compatibility/wpf-accessibility-improvements.MD @@ -48,7 +48,7 @@ __How to opt in or out of these changes__ In order for the application to benefit from these changes, it must run on the .NET Framework 4.7.1 or later. The application can benefit from these changes in either of the following ways: - It is recompiled to target the .NET Framework 4.7.1. These accessibility changes are enabled by default on WPF applications that target the .NET Framework 4.7.1 or later. - It opts out of the legacy accessibility behaviors by adding the following [AppContext Switch](https://docs.microsoft.com/dotnet/framework/configure-apps/file-schema/runtime/appcontextswitchoverrides-element) in the `` section of the app config file and setting it to false, as the following example shows. -``` +```xml From 4396f2a14c2b8274fd8a8b62126449e1428f39f4 Mon Sep 17 00:00:00 2001 From: Max Kerr Date: Tue, 27 Feb 2018 11:00:15 -0800 Subject: [PATCH 562/872] Add compatibility documentation for Unicode bidirectional character fix. (#636) * Add draft documentation for Unicode bidirectional character fix. * Clarify that unencoded bidi control characters will be encoded. * Address feedback. --- .../uri-unicode-bidirectional-characters.md | 45 +++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 Documentation/compatibility/uri-unicode-bidirectional-characters.md diff --git a/Documentation/compatibility/uri-unicode-bidirectional-characters.md b/Documentation/compatibility/uri-unicode-bidirectional-characters.md new file mode 100644 index 000000000..b52fda469 --- /dev/null +++ b/Documentation/compatibility/uri-unicode-bidirectional-characters.md @@ -0,0 +1,45 @@ +## Allow Unicode Bidirectional Control Characters in URIs + +### Scope +Minor + +### Version Introduced +4.7.2 + +### Source Analyzer Status +NotPlanned + +### Change Description +Unicode specifies several special control characters used to specify the orientation of text. +In previous versions of the .NET Framework, these characters were incorrectly stripped +from all URIs even if they were present in their percent-encoded form. In order to better +follow [RFC 3987](http://tools.ietf.org/html/rfc3987), we now allow these characters in URIs. When found unencoded +in a URI, they are percent-encoded. When found percent-encoded they are left as-is. + +- [x] Quirked +- [ ] Build-time break + +### Recommended Action +For applications that target versions of .NET Framework starting with 4.7.2, support for Unicode bidirectional characters is enabled by default. If this change is undesirable, you can disable it by adding the following [AppContextSwitchOverrides](~/docs/framework/configure-apps/file-schema/runtime/appcontextswitchoverrides-element.md) switch to the `` section of the application configuration file: +```xml + + + +``` +For applications that target earlier versions of the .NET Framework but are running under versions starting with .NET Framework 4.7.2, support for Unicode bidirectional characters is disabled by default. You can enable it by adding the following [AppContextSwitchOverrides](~/docs/framework/configure-apps/file-schema/runtime/appcontextswitchoverrides-element.md) switch to the `` section of the application configuration file:: +```xml + + + +``` + +### Affected APIs +* `T:System.Uri` + +### Category +Core + + \ No newline at end of file From f91b544ca5fc978f9d3eaf14f1db674ef5785c14 Mon Sep 17 00:00:00 2001 From: Ron Petrusha Date: Tue, 27 Feb 2018 11:17:55 -0800 Subject: [PATCH 563/872] removed app compat issue for 472 branch (#640) --- .../uri-unicode-bidirectional-characters.md | 45 ------------------- 1 file changed, 45 deletions(-) delete mode 100644 Documentation/compatibility/uri-unicode-bidirectional-characters.md diff --git a/Documentation/compatibility/uri-unicode-bidirectional-characters.md b/Documentation/compatibility/uri-unicode-bidirectional-characters.md deleted file mode 100644 index b52fda469..000000000 --- a/Documentation/compatibility/uri-unicode-bidirectional-characters.md +++ /dev/null @@ -1,45 +0,0 @@ -## Allow Unicode Bidirectional Control Characters in URIs - -### Scope -Minor - -### Version Introduced -4.7.2 - -### Source Analyzer Status -NotPlanned - -### Change Description -Unicode specifies several special control characters used to specify the orientation of text. -In previous versions of the .NET Framework, these characters were incorrectly stripped -from all URIs even if they were present in their percent-encoded form. In order to better -follow [RFC 3987](http://tools.ietf.org/html/rfc3987), we now allow these characters in URIs. When found unencoded -in a URI, they are percent-encoded. When found percent-encoded they are left as-is. - -- [x] Quirked -- [ ] Build-time break - -### Recommended Action -For applications that target versions of .NET Framework starting with 4.7.2, support for Unicode bidirectional characters is enabled by default. If this change is undesirable, you can disable it by adding the following [AppContextSwitchOverrides](~/docs/framework/configure-apps/file-schema/runtime/appcontextswitchoverrides-element.md) switch to the `` section of the application configuration file: -```xml - - - -``` -For applications that target earlier versions of the .NET Framework but are running under versions starting with .NET Framework 4.7.2, support for Unicode bidirectional characters is disabled by default. You can enable it by adding the following [AppContextSwitchOverrides](~/docs/framework/configure-apps/file-schema/runtime/appcontextswitchoverrides-element.md) switch to the `` section of the application configuration file:: -```xml - - - -``` - -### Affected APIs -* `T:System.Uri` - -### Category -Core - - \ No newline at end of file From 78887e912872a67c60252fb9d688e1445da29f60 Mon Sep 17 00:00:00 2001 From: Ron Petrusha Date: Tue, 27 Feb 2018 11:28:14 -0800 Subject: [PATCH 564/872] Moved app compat issue from master (#639) --- .../uri-unicode-bidirectional-characters.md | 45 +++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 Documentation/compatibility/uri-unicode-bidirectional-characters.md diff --git a/Documentation/compatibility/uri-unicode-bidirectional-characters.md b/Documentation/compatibility/uri-unicode-bidirectional-characters.md new file mode 100644 index 000000000..b52fda469 --- /dev/null +++ b/Documentation/compatibility/uri-unicode-bidirectional-characters.md @@ -0,0 +1,45 @@ +## Allow Unicode Bidirectional Control Characters in URIs + +### Scope +Minor + +### Version Introduced +4.7.2 + +### Source Analyzer Status +NotPlanned + +### Change Description +Unicode specifies several special control characters used to specify the orientation of text. +In previous versions of the .NET Framework, these characters were incorrectly stripped +from all URIs even if they were present in their percent-encoded form. In order to better +follow [RFC 3987](http://tools.ietf.org/html/rfc3987), we now allow these characters in URIs. When found unencoded +in a URI, they are percent-encoded. When found percent-encoded they are left as-is. + +- [x] Quirked +- [ ] Build-time break + +### Recommended Action +For applications that target versions of .NET Framework starting with 4.7.2, support for Unicode bidirectional characters is enabled by default. If this change is undesirable, you can disable it by adding the following [AppContextSwitchOverrides](~/docs/framework/configure-apps/file-schema/runtime/appcontextswitchoverrides-element.md) switch to the `` section of the application configuration file: +```xml + + + +``` +For applications that target earlier versions of the .NET Framework but are running under versions starting with .NET Framework 4.7.2, support for Unicode bidirectional characters is disabled by default. You can enable it by adding the following [AppContextSwitchOverrides](~/docs/framework/configure-apps/file-schema/runtime/appcontextswitchoverrides-element.md) switch to the `` section of the application configuration file:: +```xml + + + +``` + +### Affected APIs +* `T:System.Uri` + +### Category +Core + + \ No newline at end of file From 8cae25bd0199f0eb077cc90329ebf8c11ef1ad24 Mon Sep 17 00:00:00 2001 From: Charles Lowell Date: Tue, 27 Feb 2018 15:49:47 -0800 Subject: [PATCH 565/872] Correct docs site bookmarks (#634) --- ...ntrant-implementations-of-imessagefilter_prefiltermessage.md | 2 +- ...typrotocol-defaults-to-securityprotocoltype.systemdefault.md | 2 +- ...09certificateclaimset_findclaims-considers-all-claimtypes.md | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Documentation/compatibility/application_filtermessage-no-longer-throws-for-re-entrant-implementations-of-imessagefilter_prefiltermessage.md b/Documentation/compatibility/application_filtermessage-no-longer-throws-for-re-entrant-implementations-of-imessagefilter_prefiltermessage.md index df514e774..b9f98d690 100644 --- a/Documentation/compatibility/application_filtermessage-no-longer-throws-for-re-entrant-implementations-of-imessagefilter_prefiltermessage.md +++ b/Documentation/compatibility/application_filtermessage-no-longer-throws-for-re-entrant-implementations-of-imessagefilter_prefiltermessage.md @@ -38,7 +38,7 @@ Framework 4.6.1. Apps targeting the .NET Framework 4.6.1 can opt out of this change (or apps targeting older Frameworks may opt in) by using the -[DontSupportReentrantFilterMessage](~/docs/framework/migration-guide/mitigation-custom-imessagefilter-prefiltermessage-implementations#mitigation) +[DontSupportReentrantFilterMessage](~/docs/framework/migration-guide/mitigation-custom-imessagefilter-prefiltermessage-implementations.md#mitigation) compatibility switch. ### Affected APIs diff --git a/Documentation/compatibility/servicepointmanager.securityprotocol-defaults-to-securityprotocoltype.systemdefault.md b/Documentation/compatibility/servicepointmanager.securityprotocol-defaults-to-securityprotocoltype.systemdefault.md index a9db5f2fe..3dc786dd4 100644 --- a/Documentation/compatibility/servicepointmanager.securityprotocol-defaults-to-securityprotocoltype.systemdefault.md +++ b/Documentation/compatibility/servicepointmanager.securityprotocol-defaults-to-securityprotocoltype.systemdefault.md @@ -12,7 +12,7 @@ NotPlanned ### Change Description Starting with apps that target the .NET Framework 4.7, the default value of the property is . This change allows .NET Framework networking APIs based on SslStream (such as FTP, HTTPS, and SMTP) to inherit the default security protocols from the operating system instead of using hard-coded values defined by the .NET Framework. The default varies by operating system and any custom configuration performed by the system administrator. For information on the default SChannel protocol in each version of the Windows operating system, see [Protocols in TLS/SSL (Schannel SSP)](https://msdn.microsoft.com/library/windows/desktop/mt808159.aspx). -For applications that target an earlier version of the .NET Framework, the default value of the property depends on the version of the .NET Framework targeted. See the [Networking section of Retargeting Changes for Migration from .NET Framework 4.5.2 to 4.6](~/docs/framework/migration-guide/retargeting/4.5.2-4.6.md#Networking) for more information. +For applications that target an earlier version of the .NET Framework, the default value of the property depends on the version of the .NET Framework targeted. See the [Networking section of Retargeting Changes for Migration from .NET Framework 4.5.2 to 4.6](~/docs/framework/migration-guide/retargeting/4.5.2-4.6.md#networking) for more information. - [X] Quirked - [ ] Build-time break diff --git a/Documentation/compatibility/x509certificateclaimset_findclaims-considers-all-claimtypes.md b/Documentation/compatibility/x509certificateclaimset_findclaims-considers-all-claimtypes.md index 5454c9191..28848e69d 100644 --- a/Documentation/compatibility/x509certificateclaimset_findclaims-considers-all-claimtypes.md +++ b/Documentation/compatibility/x509certificateclaimset_findclaims-considers-all-claimtypes.md @@ -27,7 +27,7 @@ method attempts to match the claimType argument only with the last DNS entry. This change only affects applications targeting the .NET Framework 4.6.1. This change may be disabled (or enabled if targetting pre-4.6.1) with the -[DisableMultipleDNSEntries](~/docs/framework/migration-guide/mitigation-x509certificateclaimset-findclaims-method#mitigation) +[DisableMultipleDNSEntries](~/docs/framework/migration-guide/mitigation-x509certificateclaimset-findclaims-method.md#mitigation) compatibility switch. ### Affected APIs From 032b744d3aaad260aee6d66c3ce3ffc9bcf588aa Mon Sep 17 00:00:00 2001 From: Ron Petrusha Date: Wed, 28 Feb 2018 16:06:28 -0800 Subject: [PATCH 566/872] Misc issues (#644) * Miscellaneous formatting and link changes * Proper usage of .NET Framework * Removed 'please' --- .../ASPNET-accessibility-improvement.md | 2 +- ...-be-deserialized-by-_net-4_5_1-or-4_5_2.md | 2 +- ...em')-to-a-static-property-does-not-work.md | 2 +- ...waitall-methods-with-time-out-arguments.md | 4 +- ...-in-data-definition-language-(ddl)-apis.md | 10 +-- .../changes-in-path-normalization.md | 2 +- ...e-supports-sha-256-on-4_0-targeted-apps.md | 4 +- .../coerceisselectionboxhighlighted.md | 2 +- ...riod-for-azure-sql-databases-is-removed.md | 2 +- ...rentwindowhandle-now-expects-hwnd-value.md | 2 +- .../currentculture-flows-across-tasks.md | 2 +- ...served-across-wpf-dispatcher-operations.md | 2 +- ...view-throws-argumentoutofrangeexception.md | 4 +- ...providerservices_createdatabase-methods.md | 4 +- .../ef-version-must-match-netfx-version.md | 4 +- .../encoderparameter-ctor-is-obsolete.md | 2 +- ...wly-in-apps-launched-from-visual-studio.md | 2 +- ...le_empty-always-returns-cached-instance.md | 2 +- ...erialization-in-case-of-an-unknown-type.md | 4 +- ...-different-values-beginning-in-_net-4_5.md | 2 +- ...horizontal-scrolling-and-virtualization.md | 2 +- ...ged-event-behaviour-changed-in-_net-4_5.md | 2 +- .../il-ret-not-allowed-in-a-try-region.md | 4 +- ...plementation-of-memberdescriptor_equals.md | 12 ++-- ...-because-it-is-now-a-browser-capability.md | 2 +- ...st-with-items-of-different-pixel-height.md | 12 ++-- ...ot-remove-duplicates-from-selecteditems.md | 2 +- ...join-throws-argumentoutofrangeexception.md | 2 +- ...hrow-exception-when-modifying-list-item.md | 4 +- ...acing-changed-when-using-antixssencoder.md | 4 +- ...tablelayoutpanel-cell-may-be-rearranged.md | 2 +- ...oads-could-result-in-different-behavior.md | 2 +- ...-leak-memory-if-not-explicitly-disposed.md | 2 +- ...executestorequery-now-support-enum-type.md | 4 +- ...sedexception-thrown-by-wpf-spellchecker.md | 4 +- ...-current-returns-null-in-a-using-clause.md | 52 +++++++------- ...ndar-now-uses-the-hijri-solar-algorithm.md | 9 ++- ...-set-to-transparent-in-localized-builds.md | 4 +- ...-and-similar-ordered-collection-objects.md | 2 +- ...-(handled)-entrypointnotfoundexceptions.md | 2 +- .../sslstream-support-for-tls-alerts.md | 42 ++++++------ ...stem_uri-escaping-now-supports-rfc-3986.md | 4 +- .../system_uri-parsing-adheres-to-rfc-3987.md | 10 +-- ...-for-generic-variables-with-constraints.md | 2 +- ...ption-from-invokemethod-activity-in-wf4.md | 3 +- ...e-qualification-for-system_windows-apis.md | 2 +- ...portwithmessagecredential-security-mode.md | 2 +- ...k-results-when-using-reentrant-services.md | 3 +- .../winforms-accessibility-changes-471.md | 67 ++++++++++--------- ...ager.DefaultHashAlgorithm-is-now-SHA256.md | 2 +- .../wpf-accessibility-improvements.MD | 6 +- ...es-toggle-button-doesn't-show-any-state.md | 2 +- ...ew-copy-instead-of-the-current-instance.md | 2 +- .../wpf-hang-when-resizing-a-grid.md | 6 +- ...-layout-rounding-of-margins-has-changed.md | 12 +++- .../wpf-pointer-based-touch-stack.md | 2 +- ...en-removing-item-from-custom-collection.md | 8 +-- ...ctor-selectionchanged-and-selectedvalue.md | 2 +- ...f-textbox-defaults-to-undo-limit-of-100.md | 2 +- ...ent-color-when-the-text-box-is-inactive.md | 4 +- .../xml-schema-validation-is-stricter.md | 2 +- ...ound-keys-are-used-and-one-key-is-empty.md | 2 +- 62 files changed, 194 insertions(+), 182 deletions(-) diff --git a/Documentation/compatibility/ASPNET-accessibility-improvement.md b/Documentation/compatibility/ASPNET-accessibility-improvement.md index 0e3fc930f..9ee08322f 100644 --- a/Documentation/compatibility/ASPNET-accessibility-improvement.md +++ b/Documentation/compatibility/ASPNET-accessibility-improvement.md @@ -1,4 +1,4 @@ -## ASP.NET Accessibility Improvements in .NET 4.7.1 +## ASP.NET Accessibility Improvements in .NET Framework 4.7.1 ### Scope Minor diff --git a/Documentation/compatibility/a-concurrentdictionary-serialized-in-_net-4_5-with-netdatacontractserializer-cannot-be-deserialized-by-_net-4_5_1-or-4_5_2.md b/Documentation/compatibility/a-concurrentdictionary-serialized-in-_net-4_5-with-netdatacontractserializer-cannot-be-deserialized-by-_net-4_5_1-or-4_5_2.md index 2342782c7..dee240375 100644 --- a/Documentation/compatibility/a-concurrentdictionary-serialized-in-_net-4_5-with-netdatacontractserializer-cannot-be-deserialized-by-_net-4_5_1-or-4_5_2.md +++ b/Documentation/compatibility/a-concurrentdictionary-serialized-in-_net-4_5-with-netdatacontractserializer-cannot-be-deserialized-by-_net-4_5_1-or-4_5_2.md @@ -1,4 +1,4 @@ -## A ConcurrentDictionary serialized in .NET 4.5 with NetDataContractSerializer cannot be deserialized by .NET 4.5.1 or 4.5.2 +## A ConcurrentDictionary serialized in .NET Framework 4.5 with NetDataContractSerializer cannot be deserialized by .NET Framework 4.5.1 or 4.5.2 ### Scope Minor diff --git a/Documentation/compatibility/binding-a-wpf-selector-property-(such-as-'selecteditem')-to-a-static-property-does-not-work.md b/Documentation/compatibility/binding-a-wpf-selector-property-(such-as-'selecteditem')-to-a-static-property-does-not-work.md index c39b69c29..6168776e3 100644 --- a/Documentation/compatibility/binding-a-wpf-selector-property-(such-as-'selecteditem')-to-a-static-property-does-not-work.md +++ b/Documentation/compatibility/binding-a-wpf-selector-property-(such-as-'selecteditem')-to-a-static-property-does-not-work.md @@ -19,7 +19,7 @@ In the .NET Framework 4.5, WPF Selector properties (such as 'SelectedItem' on behavior was made more consistent in .NET Framework 4.5. In the .NET Framework 4, these methods behaved inconsistently. When the time-out expired, if one or more tasks were completed or canceled before the method call, @@ -28,7 +28,7 @@ call) and no other tasks are still running. - [ ] Build-time break ### Recommended Action -If an was being caught as a means of detecting a task that was cancelled prior to the WaitAll call being invoked, that code should instead do the same detection via the IsCanceled property (for example: .Any(t => t.IsCanceled)) since .NET 4.6 will only throw in that case if all awaited tasks are completed prior to the timeout. +If an was being caught as a means of detecting a task that was cancelled prior to the call being invoked, that code should instead do the same detection via the property (for example: .Any(t => t.IsCanceled)) since .NET Framework 4.6 will only throw in that case if all awaited tasks are completed prior to the timeout. ### Affected APIs * `M:System.Threading.Tasks.Task.WaitAll(System.Threading.Tasks.Task[],System.Int32)` diff --git a/Documentation/compatibility/change-in-behavior-in-data-definition-language-(ddl)-apis.md b/Documentation/compatibility/change-in-behavior-in-data-definition-language-(ddl)-apis.md index a7bc86662..dce58a6cd 100644 --- a/Documentation/compatibility/change-in-behavior-in-data-definition-language-(ddl)-apis.md +++ b/Documentation/compatibility/change-in-behavior-in-data-definition-language-(ddl)-apis.md @@ -12,17 +12,17 @@ Available ### Change Description The behavior of DDL APIs when AttachDBFilename is specified has changed as follows: * Connection strings need not specify an Initial Catalog value. Previously, both AttachDBFilename and Initial Catalog were required. -* If both AttachDBFilename and Initial Catalog are specified and the given MDF file exists, the ObjectContext.DatabaseExists method returns true. Previously, it returned false. -* If both AttachDBFilename and Initial Catalog are specified and the given MDF file exists, calling the ObjectContext.DeleteDatabase method deletes the files. -* If ObjectContext.DeleteDatabase is called when the connection string specifies an AttachDBFilename value with an MDF that doesn't exist and an Initial Catalog that doesn't exist, the method throws an InvalidOperationException exception. Previously, it threw a SqlException exception. +* If both AttachDBFilename and Initial Catalog are specified and the given MDF file exists, the method returns `true`. Previously, it returned `false`. +* If both AttachDBFilename and Initial Catalog are specified and the given MDF file exists, calling the method deletes the files. +* If is called when the connection string specifies an AttachDBFilename value with an MDF that doesn't exist and an Initial Catalog that doesn't exist, the method throws an exception. Previously, it threw a exception. - [ ] Quirked - [ ] Build-time break ### Recommended Action These changes make it easier to build tools and applications that use the DDL APIs. These changes can affect application compatibility in the following scenarios: -- The user writes code that executes a DROP DATABASE command directly instead of calling ObjectContext.DeleteDatabase if ObjectContext.DatabaseExists returns true. This breaks existing code If the database is not attached but the MDF file exists. -- The user writes code that expects the ObjectContext.DeleteDatabase method to throw a SqlException exception rather than an InvalidOperationException exception when the Initial Catalog and MDF file don't exist. +- The user writes code that executes a `DROP DATABASE` command directly instead of calling if returns `true`. This breaks existing code If the database is not attached but the MDF file exists. +- The user writes code that expects the method to throw a rather than an when the Initial Catalog and MDF file don't exist. ### Affected APIs * Not detectable via API analysis diff --git a/Documentation/compatibility/changes-in-path-normalization.md b/Documentation/compatibility/changes-in-path-normalization.md index 3fe8e1fd4..aeb7db1b5 100644 --- a/Documentation/compatibility/changes-in-path-normalization.md +++ b/Documentation/compatibility/changes-in-path-normalization.md @@ -27,7 +27,7 @@ in path normalization are enabled by default: - The runtime defers to the operating system's [GetFullPathName](https://msdn.microsoft.com/library/windows/desktop/aa364963(v=vs.85).aspx) function to normalize paths. - Normalization no longer involves trimming the end of directory segments (such as a space at the end of a directory name). -- Support for device path syntax in full trust, including `\\.\` and, for file I/O APIs in mscorlib.dll, '\\?\'. +- Support for device path syntax in full trust, including \\.\ and, for file I/O APIs in mscorlib.dll, \\?\. - The runtime does not validate device syntax paths. - The use of device syntax to access alternate data streams is supported. diff --git a/Documentation/compatibility/clickonce-supports-sha-256-on-4_0-targeted-apps.md b/Documentation/compatibility/clickonce-supports-sha-256-on-4_0-targeted-apps.md index 982750c8b..04d42ef7b 100644 --- a/Documentation/compatibility/clickonce-supports-sha-256-on-4_0-targeted-apps.md +++ b/Documentation/compatibility/clickonce-supports-sha-256-on-4_0-targeted-apps.md @@ -11,8 +11,8 @@ Planned ### Change Description Previously, a ClickOnce app with a certificate signed with SHA-256 would require -.NET 4.5 or later to be present, even if the app targeted 4.0. Now, 4.0-targeted -ClickOnce apps can run on 4.0, even if signed with SHA-256. +.NET Framework 4.5 or later to be present, even if the app targeted 4.0. Now, .NET Framework 4.0-targeted +ClickOnce apps can run on .NET Framework 4.0, even if signed with SHA-256. - [ ] Quirked - [x] Build-time break diff --git a/Documentation/compatibility/coerceisselectionboxhighlighted.md b/Documentation/compatibility/coerceisselectionboxhighlighted.md index 2ddfad324..b42395517 100644 --- a/Documentation/compatibility/coerceisselectionboxhighlighted.md +++ b/Documentation/compatibility/coerceisselectionboxhighlighted.md @@ -20,7 +20,7 @@ and its data source can result in a /) would be preserved across Dispatcher operations. diff --git a/Documentation/compatibility/currentculture-not-preserved-across-wpf-dispatcher-operations.md b/Documentation/compatibility/currentculture-not-preserved-across-wpf-dispatcher-operations.md index ed2d09a62..d3676f22e 100644 --- a/Documentation/compatibility/currentculture-not-preserved-across-wpf-dispatcher-operations.md +++ b/Documentation/compatibility/currentculture-not-preserved-across-wpf-dispatcher-operations.md @@ -68,7 +68,7 @@ setting the following compatibility switch: This issue has been fixed by WPF in .NET Framework 4.6.2. It has also been fixed in .NET Frameworks 4.6, 4.6.1 through [KB 3139549](https://support.microsoft.com/kb/3139549). -Applications targeting .NET 4.6 or later will automatically +Applications targeting .NET Framework 4.6 or later will automatically get the right behavior in WPF applications - /) would be preserved across Dispatcher operations. diff --git a/Documentation/compatibility/datagridcellspanel_bringintoview-throws-argumentoutofrangeexception.md b/Documentation/compatibility/datagridcellspanel_bringintoview-throws-argumentoutofrangeexception.md index 00fc3f441..7ea6623f6 100644 --- a/Documentation/compatibility/datagridcellspanel_bringintoview-throws-argumentoutofrangeexception.md +++ b/Documentation/compatibility/datagridcellspanel_bringintoview-throws-argumentoutofrangeexception.md @@ -26,8 +26,8 @@ asynchronous work happens, an ### Recommended Action Any one of the following: -1. Upgrade to .NET 4.7. -2. Install the latest servicing patch for .NET 4.6.2. +1. Upgrade to .NET Framework 4.7. +2. Install the latest servicing patch for .NET Framework 4.6.2. 3. Avoid removing columns until the asynchronous response to has completed. ### Affected APIs diff --git a/Documentation/compatibility/different-exception-handling-for-objectcontext_createdatabase-and-dbproviderservices_createdatabase-methods.md b/Documentation/compatibility/different-exception-handling-for-objectcontext_createdatabase-and-dbproviderservices_createdatabase-methods.md index 66bf88cdb..8b6126f98 100644 --- a/Documentation/compatibility/different-exception-handling-for-objectcontext_createdatabase-and-dbproviderservices_createdatabase-methods.md +++ b/Documentation/compatibility/different-exception-handling-for-objectcontext_createdatabase-and-dbproviderservices_createdatabase-methods.md @@ -11,11 +11,11 @@ Available ### Change Description -Beginning in .NET 4.5, if database creation fails, `CreateDatabase` methods will +Beginning in .NET Framework 4.5, if database creation fails, `CreateDatabase` methods will attempt to drop the empty database. If that operation succeeds, the original will be propagated (instead of the -that was always thrown in .NET 4.0) +that was always thrown in .NET Framework 4.0) - [ ] Quirked - [ ] Build-time break diff --git a/Documentation/compatibility/ef-version-must-match-netfx-version.md b/Documentation/compatibility/ef-version-must-match-netfx-version.md index 3036bce41..dca80963a 100644 --- a/Documentation/compatibility/ef-version-must-match-netfx-version.md +++ b/Documentation/compatibility/ef-version-must-match-netfx-version.md @@ -12,8 +12,8 @@ Planned ### Change Description The entity framework version should be matched with the .NET framework version. -Entity Framework 5 is recommended for .NET 4.5. There are some known issues with -EF 4.x in a .NET 4.5 project around +Entity Framework 5 is recommended for .NET Framework 4.5. There are some known issues with +EF 4.x in a .NET Framework 4.5 project around . In .NET 4.5, these were moved to a different assembly, so there are issues determining which annotations to use. diff --git a/Documentation/compatibility/encoderparameter-ctor-is-obsolete.md b/Documentation/compatibility/encoderparameter-ctor-is-obsolete.md index 7ef8f15a8..18958e0a4 100644 --- a/Documentation/compatibility/encoderparameter-ctor-is-obsolete.md +++ b/Documentation/compatibility/encoderparameter-ctor-is-obsolete.md @@ -21,7 +21,7 @@ Although the constructor will continue to work, the following constructor should be used -instead to avoid the obsolete build warning when re-compiling code with .NET 4.5 +instead to avoid the obsolete build warning when re-compiling code with .NET Framework 4.5 tools: . diff --git a/Documentation/compatibility/entityframework-6_0-loads-very-slowly-in-apps-launched-from-visual-studio.md b/Documentation/compatibility/entityframework-6_0-loads-very-slowly-in-apps-launched-from-visual-studio.md index a77ac5f08..4cba74fc7 100644 --- a/Documentation/compatibility/entityframework-6_0-loads-very-slowly-in-apps-launched-from-visual-studio.md +++ b/Documentation/compatibility/entityframework-6_0-loads-very-slowly-in-apps-launched-from-visual-studio.md @@ -16,7 +16,7 @@ Launching an app from Visual Studio 2013 that uses EntityFramework 6.0 can be ve - [ ] Build-time break ### Recommended Action -This issue is fixed in EntityFramework 6.0.2. Please update EntityFramework to avoid the performance issue. +This issue is fixed in EntityFramework 6.0.2. Uupdate EntityFramework to avoid the performance issue. ### Affected APIs * Not detectable via API analysis diff --git a/Documentation/compatibility/enumerable_empty-always-returns-cached-instance.md b/Documentation/compatibility/enumerable_empty-always-returns-cached-instance.md index 30ac1d138..cc4b47798 100644 --- a/Documentation/compatibility/enumerable_empty-always-returns-cached-instance.md +++ b/Documentation/compatibility/enumerable_empty-always-returns-cached-instance.md @@ -11,7 +11,7 @@ Available ### Change Description -Beginning in .NET 4.5, +Beginning in .NET Framework 4.5, always returns a cached internal instance . diff --git a/Documentation/compatibility/exception-message-has-changed-for-failed-datacontract-serialization-in-case-of-an-unknown-type.md b/Documentation/compatibility/exception-message-has-changed-for-failed-datacontract-serialization-in-case-of-an-unknown-type.md index 1a452b25b..29c5f6c47 100644 --- a/Documentation/compatibility/exception-message-has-changed-for-failed-datacontract-serialization-in-case-of-an-unknown-type.md +++ b/Documentation/compatibility/exception-message-has-changed-for-failed-datacontract-serialization-in-case-of-an-unknown-type.md @@ -21,8 +21,8 @@ fails to serialize or deserialize due to missing 'known types' has been clarifie ### Recommended Action -Apps should not depend on specific exception messages. If an app depending on -this message, please either update it to expect the new message or (preferably) +Apps should not depend on specific exception messages. If an app depends on +this message, either update it to expect the new message or (preferably) change it to depend only on the exception type. ### Affected APIs diff --git a/Documentation/compatibility/glyphrun_computeinkboundingbox()-and-formattedtext_extent-return-different-values-beginning-in-_net-4_5.md b/Documentation/compatibility/glyphrun_computeinkboundingbox()-and-formattedtext_extent-return-different-values-beginning-in-_net-4_5.md index 39f391395..946e05919 100644 --- a/Documentation/compatibility/glyphrun_computeinkboundingbox()-and-formattedtext_extent-return-different-values-beginning-in-_net-4_5.md +++ b/Documentation/compatibility/glyphrun_computeinkboundingbox()-and-formattedtext_extent-return-different-values-beginning-in-_net-4_5.md @@ -1,4 +1,4 @@ -## GlyphRun.ComputeInkBoundingBox() and FormattedText.Extent return different values beginning in .NET 4.5 +## GlyphRun.ComputeInkBoundingBox() and FormattedText.Extent return different values beginning in .NET Framework 4.5 ### Scope Edge diff --git a/Documentation/compatibility/horizontal-scrolling-and-virtualization.md b/Documentation/compatibility/horizontal-scrolling-and-virtualization.md index 4d4c949a2..4c075b21d 100644 --- a/Documentation/compatibility/horizontal-scrolling-and-virtualization.md +++ b/Documentation/compatibility/horizontal-scrolling-and-virtualization.md @@ -29,7 +29,7 @@ After scrolling to the new offset, the notion of "here" or "right edge" may have changed because newly de-virtualized content has changed the value of . -Prior to .Net 4.6.2, the scroll operation simply uses the candidate offset, even +Prior to .NET Framework 4.6.2, the scroll operation simply uses the candidate offset, even though it may not be "here" or at the "right edge" any more. This results in effects like "bouncing" the scroll thumb, best illustrated by example. Suppose a has diff --git a/Documentation/compatibility/icommand_canexecutechanged-event-behaviour-changed-in-_net-4_5.md b/Documentation/compatibility/icommand_canexecutechanged-event-behaviour-changed-in-_net-4_5.md index d72dde089..9b7aeceda 100644 --- a/Documentation/compatibility/icommand_canexecutechanged-event-behaviour-changed-in-_net-4_5.md +++ b/Documentation/compatibility/icommand_canexecutechanged-event-behaviour-changed-in-_net-4_5.md @@ -1,4 +1,4 @@ -## ICommand.CanExecuteChanged event behaviour changed in .NET 4.5 +## ICommand.CanExecuteChanged event behaviour changed in .NET Framework 4.5 ### Scope Minor diff --git a/Documentation/compatibility/il-ret-not-allowed-in-a-try-region.md b/Documentation/compatibility/il-ret-not-allowed-in-a-try-region.md index a60f84c6c..df01e2cbe 100644 --- a/Documentation/compatibility/il-ret-not-allowed-in-a-try-region.md +++ b/Documentation/compatibility/il-ret-not-allowed-in-a-try-region.md @@ -10,13 +10,13 @@ Edge Planned ### Change Description -Unlike the JIT64 just-in-time compiler, RyuJIT (used in .NET 4.6) does not allow an IL ret instruction in a try region. Returning from a try region is disallowed by the ECMA-335 specification, and no known managed compiler generates such IL. However, the JIT64 compiler will execute such IL if it is generated using reflection emit. +Unlike the JIT64 just-in-time compiler, RyuJIT (used in .NET Framework 4.6) does not allow an IL ret instruction in a try region. Returning from a try region is disallowed by the ECMA-335 specification, and no known managed compiler generates such IL. However, the JIT64 compiler will execute such IL if it is generated using reflection emit. - [x] Quirked - [ ] Build-time break ### Recommended Action -If an app is generating IL that includes a ret opcode in a try region, the app may target .NET 4.5 to use the old JIT and avoid this break. Alternatively, the generated IL may be updated to return after the try region. +If an app is generating IL that includes a ret opcode in a try region, the app may target .NET Framework 4.5 to use the old JIT and avoid this break. Alternatively, the generated IL may be updated to return after the try region. ### Affected APIs * Not detectable via API analysis diff --git a/Documentation/compatibility/incorrect-implementation-of-memberdescriptor_equals.md b/Documentation/compatibility/incorrect-implementation-of-memberdescriptor_equals.md index 4ced9ff6f..e45e991da 100644 --- a/Documentation/compatibility/incorrect-implementation-of-memberdescriptor_equals.md +++ b/Documentation/compatibility/incorrect-implementation-of-memberdescriptor_equals.md @@ -28,11 +28,11 @@ are equivalent, and you are targeting 4.6.2 version of the .NET Framework, you h running Equals method. 2. Opt out from this change by adding the following value to the app.config file: -```xml - - - -``` + ```xml + + + + ``` If your application targets 4.6.1 or lower version of the .NET Framework, and you want this change enabled, you can set the compatibility switch to false by adding the following value to the @@ -40,7 +40,7 @@ app.config file: ```xml - + ``` diff --git a/Documentation/compatibility/ipad-should-not-be-used-in-custom-capabilities-file-because-it-is-now-a-browser-capability.md b/Documentation/compatibility/ipad-should-not-be-used-in-custom-capabilities-file-because-it-is-now-a-browser-capability.md index d109cd2a4..6fd681909 100644 --- a/Documentation/compatibility/ipad-should-not-be-used-in-custom-capabilities-file-because-it-is-now-a-browser-capability.md +++ b/Documentation/compatibility/ipad-should-not-be-used-in-custom-capabilities-file-because-it-is-now-a-browser-capability.md @@ -10,7 +10,7 @@ Edge Planned ### Change Description -Beginning in .NET 4.5, iPad is an identifier in the default ASP.NET browser capabilities file, so it should not be used in a custom capabilities file +Beginning in .NET Framework 4.5, iPad is an identifier in the default ASP.NET browser capabilities file, so it should not be used in a custom capabilities file - [ ] Quirked - [ ] Build-time break diff --git a/Documentation/compatibility/item-scrolling-a-flat-list-with-items-of-different-pixel-height.md b/Documentation/compatibility/item-scrolling-a-flat-list-with-items-of-different-pixel-height.md index bf1dbcf8a..0b2e5c2bc 100644 --- a/Documentation/compatibility/item-scrolling-a-flat-list-with-items-of-different-pixel-height.md +++ b/Documentation/compatibility/item-scrolling-a-flat-list-with-items-of-different-pixel-height.md @@ -22,7 +22,7 @@ whose height in pixels differs from its neighbors, the iterates over all items in the collection. The UI is unresponsive during this iteration; if the collection is large, this can be perceived as a hang. -The iteration occurs in other circumstances, even in previous .Net releases. For +The iteration occurs in other circumstances, even in previous .NET Framework releases. For example, it occurs when pixel-scrolling (`ScrollUnit=Pixel`) upon encountering an item with different pixel height, and when item-scrolling hierarchical data (such as a or an @@ -31,8 +31,8 @@ enabled) upon encountering an item with a different number of descendant items than its neighbors. For the case of item-scrolling and different pixel height, the iteration was -introduced in .Net 4.6.1 to fix bugs in the layout of hierarchical data. It is -not needed if the data is flat (no hierarchy), and .Net 4.6.2 does not do it in +introduced in .NET Framework 4.6.1 to fix bugs in the layout of hierarchical data. It is +not needed if the data is flat (no hierarchy), and .NET Framework 4.6.2 does not do it in that case. - [ ] Quirked @@ -40,13 +40,13 @@ that case. ### Recommended Action -If the iteration occurs in .Net 4.6.1 but not in earlier releases - that is, if +If the iteration occurs in .NET Framework 4.6.1 but not in earlier releases - that is, if the is item- scrolling a flat list with items of different pixel height - there are two remedies: -1. Install .Net 4.6.2. -2. Install hotfix HR 1605 for .Net 4.6.1. +1. Install .NET Framework 4.6.2. +2. Install hotfix HR 1605 for .NET Framework 4.6.1. ### Affected APIs * `T:System.Windows.Controls.VirtualizingStackPanel` diff --git a/Documentation/compatibility/items_clear-does-not-remove-duplicates-from-selecteditems.md b/Documentation/compatibility/items_clear-does-not-remove-duplicates-from-selecteditems.md index ef2c9e4be..18a1b7a07 100644 --- a/Documentation/compatibility/items_clear-does-not-remove-duplicates-from-selecteditems.md +++ b/Documentation/compatibility/items_clear-does-not-remove-duplicates-from-selecteditems.md @@ -30,7 +30,7 @@ contains items that are no longer in the data source. - [ ] Build-time break ### Recommended Action -Upgrade if possible to .NET 4.6.2. +Upgrade if possible to .NET Framework 4.6.2. ### Affected APIs * `P:System.Windows.Controls.Primitives.MultiSelector.SelectedItems` diff --git a/Documentation/compatibility/linq-to-ef-join-throws-argumentoutofrangeexception.md b/Documentation/compatibility/linq-to-ef-join-throws-argumentoutofrangeexception.md index 902986c96..2f9b46f22 100644 --- a/Documentation/compatibility/linq-to-ef-join-throws-argumentoutofrangeexception.md +++ b/Documentation/compatibility/linq-to-ef-join-throws-argumentoutofrangeexception.md @@ -23,7 +23,7 @@ Framework 4.5 ### Recommended Action -This issue was fixed in a servicing update. Please update the .NET Framework +This issue was fixed in a servicing update. Update the .NET Framework 4.5, or upgrade to .NET Framework 4.5.1 or later, to fix this issue. ### Affected APIs diff --git a/Documentation/compatibility/list_foreach-can-throw-exception-when-modifying-list-item.md b/Documentation/compatibility/list_foreach-can-throw-exception-when-modifying-list-item.md index dfc756ade..c6c718c28 100644 --- a/Documentation/compatibility/list_foreach-can-throw-exception-when-modifying-list-item.md +++ b/Documentation/compatibility/list_foreach-can-throw-exception-when-modifying-list-item.md @@ -11,7 +11,7 @@ Available ### Change Description -Beginning in .NET 4.5, a +Beginning in .NET Framework 4.5, a enumerator will throw an exception if an @@ -25,7 +25,7 @@ an exception but could lead to race conditions. Ideally, code should be fixed to not modify lists while enumerating their elements because that is never a safe operation. To revert to the previous -behavior, though, an app may target .NET 4.0. +behavior, though, an app may target .NET Framework 4.0. ### Affected APIs * ``M:System.Collections.Generic.List`1.ForEach(System.Action{`0})`` diff --git a/Documentation/compatibility/multi-line-asp_net-textbox-spacing-changed-when-using-antixssencoder.md b/Documentation/compatibility/multi-line-asp_net-textbox-spacing-changed-when-using-antixssencoder.md index 055418495..6fdd07ff0 100644 --- a/Documentation/compatibility/multi-line-asp_net-textbox-spacing-changed-when-using-antixssencoder.md +++ b/Documentation/compatibility/multi-line-asp_net-textbox-spacing-changed-when-using-antixssencoder.md @@ -15,14 +15,14 @@ In .NET Framework 4.0, extra lines were inserted between lines of a multi-line text box on postback, if using the . In .NET Framework 4.5, those extra line breaks are not included, but only if the web app -is targeting .NET 4.5 +is targeting .NET Framework 4.5 - [x] Quirked - [ ] Build-time break ### Recommended Action -Be aware that 4.0 web apps retargeted to .NET 4.5 may have multi-line text boxes +Be aware that 4.0 web apps retargeted to .NET Framework 4.5 may have multi-line text boxes improved to no longer insert extra line breaks. If this is not desirable, the app can have the old behavior when running on .NET Framework 4.5 by targeting the .NET Framework 4.0. diff --git a/Documentation/compatibility/multiple-items-in-a-single-tablelayoutpanel-cell-may-be-rearranged.md b/Documentation/compatibility/multiple-items-in-a-single-tablelayoutpanel-cell-may-be-rearranged.md index abcd210e7..1e7d5e710 100644 --- a/Documentation/compatibility/multiple-items-in-a-single-tablelayoutpanel-cell-may-be-rearranged.md +++ b/Documentation/compatibility/multiple-items-in-a-single-tablelayoutpanel-cell-may-be-rearranged.md @@ -24,7 +24,7 @@ be displayed in a different order than they were in the .NET Framework 4.0. ### Recommended Action This behavior was reverted in a servicing update for the .NET Framework 4.5. -Please update the .NET Framework 4.5, or upgrade to .NET Framework 4.5.1 or +Update the .NET Framework 4.5, or upgrade to .NET Framework 4.5.1 or later, to fix this issue. Alternatively, avoid the ambiguous case of multiple items in the same cell. diff --git a/Documentation/compatibility/new-(ambiguous)-dispatcher_invoke-overloads-could-result-in-different-behavior.md b/Documentation/compatibility/new-(ambiguous)-dispatcher_invoke-overloads-could-result-in-different-behavior.md index de97bd537..c136783e9 100644 --- a/Documentation/compatibility/new-(ambiguous)-dispatcher_invoke-overloads-could-result-in-different-behavior.md +++ b/Documentation/compatibility/new-(ambiguous)-dispatcher_invoke-overloads-could-result-in-different-behavior.md @@ -29,7 +29,7 @@ parameter is resolved as a call to a Dispatcher.Invoke overload with an To avoid ambiguity (and potential differences in exception handling or blocking behaviors), code calling Dispatcher.Invoke can pass an empty object[] as a -second parameter to the Invoke call to be sure of resolving to the .NET 4.0 +second parameter to the Invoke call to be sure of resolving to the .NET Framework 4.0 method overload. ### Affected APIs diff --git a/Documentation/compatibility/non-pooled-sql-connections-will-leak-memory-if-not-explicitly-disposed.md b/Documentation/compatibility/non-pooled-sql-connections-will-leak-memory-if-not-explicitly-disposed.md index 3b0c70375..7878fc8e2 100644 --- a/Documentation/compatibility/non-pooled-sql-connections-will-leak-memory-if-not-explicitly-disposed.md +++ b/Documentation/compatibility/non-pooled-sql-connections-will-leak-memory-if-not-explicitly-disposed.md @@ -20,7 +20,7 @@ In the .NET Framework 4.5, non-pooled SQL connections which are not explicitly e ### Recommended Action -This issue is fixed in a .NET Framework 4.5 servicing update. Please update the +This issue is fixed in a .NET Framework 4.5 servicing update. Update the .NET Framework 4.5, or upgrade to .NET Framework 4.5.1 or later, to fix this issue. Alternatively, this issue may be avoided by using the in a 'using' diff --git a/Documentation/compatibility/objectcontext_translate-and-objectcontext_executestorequery-now-support-enum-type.md b/Documentation/compatibility/objectcontext_translate-and-objectcontext_executestorequery-now-support-enum-type.md index 73920fccb..9200443ad 100644 --- a/Documentation/compatibility/objectcontext_translate-and-objectcontext_executestorequery-now-support-enum-type.md +++ b/Documentation/compatibility/objectcontext_translate-and-objectcontext_executestorequery-now-support-enum-type.md @@ -10,13 +10,13 @@ Edge Available ### Change Description -In .NET 4.0, the generic parameter `T` of `ObjectContext.Translate` and `ObjectContext.ExecuteStoreQuery` methods could not be an enum. That scenario is now supported. +In .NET Framework 4.0, the generic parameter `T` of `ObjectContext.Translate` and `ObjectContext.ExecuteStoreQuery` methods could not be an enum. That scenario is now supported. - [ ] Quirked - [ ] Build-time break ### Recommended Action -If Translate or ExecuteStoreQuery was called on an enum type in .NET 4.0, '0' was returned. If that behavior was desirable, the calls should be replaced with a constant 0 (or the enum equivalent of it). +If Translate or ExecuteStoreQuery was called on an enum type in .NET Framework 4.0, '0' was returned. If that behavior was desirable, the calls should be replaced with a constant 0 (or the enum equivalent of it). ### Affected APIs * ```M:System.Data.Objects.ObjectContext.Translate``1(System.Data.Common.DbDataReader)``` diff --git a/Documentation/compatibility/objectdisposedexception-thrown-by-wpf-spellchecker.md b/Documentation/compatibility/objectdisposedexception-thrown-by-wpf-spellchecker.md index 57bd66518..c30b63a39 100644 --- a/Documentation/compatibility/objectdisposedexception-thrown-by-wpf-spellchecker.md +++ b/Documentation/compatibility/objectdisposedexception-thrown-by-wpf-spellchecker.md @@ -16,7 +16,7 @@ NotPlanned WPF applications occasionally crash during application shutdown with an thrown by the -spellchecker. This is fixed in .NET 4.7 WPF by handling the exception +spellchecker. This is fixed in .NET Framework 4.7 WPF by handling the exception gracefully, and thus ensuring that applications are no longer adversely affected. It should be noted that occasional first-chance exceptions would continue to be observed in applications running under a debugger. @@ -25,7 +25,7 @@ continue to be observed in applications running under a debugger. - [ ] Build-time break ### Recommended Action -Upgrade to .NET 4.7 +Upgrade to .NET Framework 4.7 ### Affected APIs Not detectable via API analysis diff --git a/Documentation/compatibility/operationcontext-current-returns-null-in-a-using-clause.md b/Documentation/compatibility/operationcontext-current-returns-null-in-a-using-clause.md index f489ff98a..00191d5dc 100644 --- a/Documentation/compatibility/operationcontext-current-returns-null-in-a-using-clause.md +++ b/Documentation/compatibility/operationcontext-current-returns-null-in-a-using-clause.md @@ -21,13 +21,13 @@ Investigating - You retrieve the value of the property within the `using statement`. For example: - ```csharp - using (new OperationContextScope(OperationContext.Current)) - { - OperationContext context = OperationContext.Current; // OperationContext.Current is null. - // ... - } - ``` + ```csharp + using (new OperationContextScope(OperationContext.Current)) + { + OperationContext context = OperationContext.Current; // OperationContext.Current is null. + // ... + } + ``` - [X] Quirked - [ ] Build-time break @@ -38,30 +38,30 @@ To address this issue, you can do the following: - Modify your code as follows to instantiate a new non-`null` object: - ```csharp - OperationContext ocx = OperationContext.Current; - using (new OperationContextScope(OperationContext.Current)) - { -    OperationContext.Current = new OperationContext(ocx.Channel); -    // ... - } - ``` + ```csharp + OperationContext ocx = OperationContext.Current; + using (new OperationContextScope(OperationContext.Current)) + { +    OperationContext.Current = new OperationContext(ocx.Channel); +    // ... + } + ``` - Install the latest update to the .NET Framework 4.6.2, or upgrade to a later version of the .NET Framework. This disables the flow of the in and restores the behavior of WCF applications in the .NET Framework 4.6.1 and earlier versions. This behavior is configurable; it is equivalent to adding the following app setting to your configuration file: - ```xml - - - - ``` + ```xml + + + + ``` - If this change is undesirable and your application depends on execution context flowing between operation contexts, you can enable its flow as follows: + If this change is undesirable and your application depends on execution context flowing between operation contexts, you can enable its flow as follows: - ```xml - - - - ``` + ```xml + + + + ``` ### Affected APIs - `P:System.ServiceModel.OperationContext.Current` diff --git a/Documentation/compatibility/persian-calendar-now-uses-the-hijri-solar-algorithm.md b/Documentation/compatibility/persian-calendar-now-uses-the-hijri-solar-algorithm.md index 7b3722f5e..d69781a6a 100644 --- a/Documentation/compatibility/persian-calendar-now-uses-the-hijri-solar-algorithm.md +++ b/Documentation/compatibility/persian-calendar-now-uses-the-hijri-solar-algorithm.md @@ -16,17 +16,16 @@ Starting with the .NET Framework 4.6, the Hijri solar algorithm. Converting dates between the and other calendars may produce a slightly different result beginning with the .NET -Framework 4.6 for dates earlier than 1800 or later than 2023 (Gregorian). +Framework 4.6 for dates earlier than 1800 or later than 2023 (Gregorian). -Also, - -is now `March 22, 0622 instead of March 21, 0622`. +Also, +is now `March 22, 0622` instead of `March 21, 0622`. - [ ] Quirked - [ ] Build-time break ### Recommended Action -Be aware that some early or late dates may be slightly different when using the PersianCalendar in .NET 4.6. Also, when serializing dates between processes which may run on different .NET Framework versions, do not store them as PersianCalendar date strings (since those values may be different). +Be aware that some early or late dates may be slightly different when using the PersianCalendar in .NET Framework 4.6. Also, when serializing dates between processes which may run on different .NET Framework versions, do not store them as PersianCalendar date strings (since those values may be different). ### Affected APIs * `T:System.Globalization.PersianCalendar` diff --git a/Documentation/compatibility/ribbongroup-background-is-set-to-transparent-in-localized-builds.md b/Documentation/compatibility/ribbongroup-background-is-set-to-transparent-in-localized-builds.md index 8da0aaf67..678102375 100644 --- a/Documentation/compatibility/ribbongroup-background-is-set-to-transparent-in-localized-builds.md +++ b/Documentation/compatibility/ribbongroup-background-is-set-to-transparent-in-localized-builds.md @@ -16,7 +16,7 @@ NotPlanned background on localized builds was always painted with Transparent brush, -resulting in poor UI experience. This is fixed in .NET 4.7 WPF fix by updating +resulting in poor UI experience. This is fixed in .NET Framework 4.7 WPF fix by updating the localized resources for , which in turn ensures that the correct brush is selected. @@ -25,7 +25,7 @@ turn ensures that the correct brush is selected. - [ ] Build-time break ### Recommended Action -Upgrade to .NET 4.7 +Upgrade to .NET Framework 4.7 ### Affected APIs Not detectable via API analysis diff --git a/Documentation/compatibility/soapformatter-cannot-deserialize-hashtable-and-similar-ordered-collection-objects.md b/Documentation/compatibility/soapformatter-cannot-deserialize-hashtable-and-similar-ordered-collection-objects.md index 8dfb59f08..7b687eb5c 100644 --- a/Documentation/compatibility/soapformatter-cannot-deserialize-hashtable-and-similar-ordered-collection-objects.md +++ b/Documentation/compatibility/soapformatter-cannot-deserialize-hashtable-and-similar-ordered-collection-objects.md @@ -16,7 +16,7 @@ does not guarantee that objects serialized under one .NET Framework version will successfully deserialize under a different version. Specifically, some ordered collections (like ) added members between 4.0 and 4.5 such that objects of these types cannot -deserialize with .NET 4.0 if they were serialized with .NET 4.5. Note that if +deserialize with .NET Framework 4.0 if they were serialized with .NET Framework 4.5. Note that if the serialized data is both serialized and deserialized with the same .NET Framework version, no issue will occur. diff --git a/Documentation/compatibility/some-_net-apis-cause-first-chance-(handled)-entrypointnotfoundexceptions.md b/Documentation/compatibility/some-_net-apis-cause-first-chance-(handled)-entrypointnotfoundexceptions.md index dd6cf4a5d..8114ed2c1 100644 --- a/Documentation/compatibility/some-_net-apis-cause-first-chance-(handled)-entrypointnotfoundexceptions.md +++ b/Documentation/compatibility/some-_net-apis-cause-first-chance-(handled)-entrypointnotfoundexceptions.md @@ -16,7 +16,7 @@ Available In the .NET Framework 4.5, a small number of .NET methods began throwing first chance s. These -exceptions were handled within the .Net Framework, but could break test +exceptions were handled within the .NET Framework, but could break test automation that did not expect the first chance exceptions. These same APIs break some ApiVerifier scenarios when HighVersionLie is enabled. diff --git a/Documentation/compatibility/sslstream-support-for-tls-alerts.md b/Documentation/compatibility/sslstream-support-for-tls-alerts.md index 0a45176a4..682c3f7cc 100644 --- a/Documentation/compatibility/sslstream-support-for-tls-alerts.md +++ b/Documentation/compatibility/sslstream-support-for-tls-alerts.md @@ -23,7 +23,7 @@ can be mapped to the TLS Alert from the remote party using this For more information, see [RFC 2246: Section 7.2.2 Error alerts](https://tools.ietf.org/html/rfc2246#section-7.2.2) -The behavior in .NET 4.6.2 and below is that the transport channel (usually TCP +The behavior in .NET Framework 4.6.2 and earlier is that the transport channel (usually TCP connection) will timeout during either Write or Read if the other party failed the handshake and immediately afterwards rejected the connection. @@ -36,38 +36,40 @@ Applications calling network I/O APIs such as or . -The TLS Alerts feature is enabled by default starting with .NET 4.7. -Applications targeting .NET 4.0 - .NET 4.6.2 running on a .NET 4.7 or higher +The TLS Alerts feature is enabled by default starting with .NET Framework 4.7. +Applications targeting versions of the .NET Framework from 4.0 through 4.6.2 running on a .NET Framework 4.7 or higher system will have the feature disabled to preserve compatibility. The following configuration API is available to enable or disable the feature -for .NET 4.6 and above applications running on .NET 4.7 or higher framework. +for .NET Framework 4.6 and later applications running on .NET Framework 4.7 or later. * Programmatically: Must be the very first thing the application does since ServicePointManager will initialize only once: -   -```csharp +   + ```csharp AppContext.SetSwitch("TestSwitch.LocalAppContext.DisableCaching", true); - AppContext.SetSwitch("Switch.System.Net.DontEnableTlsAlerts", true); // Set to 'false' to enable the feature in .NET 4.6 - 4.6.2. -``` + AppContext.SetSwitch("Switch.System.Net.DontEnableTlsAlerts", true); // Set to 'false' to enable the feature in .NET Framework 4.6 - 4.6.2. + ``` + * AppConfig: -```xml - - - - -``` + ```xml + + + + + ``` + * Registry key (machine global): - Set the Value to 'false' to enable the feature in .NET 4.6 - 4.6.2. + Set the Value to 'false' to enable the feature in .NET Framework 4.6 - 4.6.2. -``` - Key = HKLM\SOFTWARE\[Wow6432Node\]Microsoft\.NETFramework\AppContext\Switch.System.Net.DontEnableTlsAlerts - Type = String - Value = "true" -``` + ``` + Key = HKLM\SOFTWARE\[Wow6432Node\]Microsoft\.NETFramework\AppContext\Switch.System.Net.DontEnableTlsAlerts + Type = String + Value = "true" + ``` ### Affected APIs * `T:System.Net.Security.SslStream` diff --git a/Documentation/compatibility/system_uri-escaping-now-supports-rfc-3986.md b/Documentation/compatibility/system_uri-escaping-now-supports-rfc-3986.md index 3967c109e..5d79e23e1 100644 --- a/Documentation/compatibility/system_uri-escaping-now-supports-rfc-3986.md +++ b/Documentation/compatibility/system_uri-escaping-now-supports-rfc-3986.md @@ -11,7 +11,7 @@ Available ### Change Description -URI escaping has changed in .NET 4.5 to support +URI escaping has changed in .NET Framework 4.5 to support [RFC 3986](http://tools.ietf.org/html/rfc3986). Specific changes include: - escapes reserved characters based on RFC 3986. @@ -24,7 +24,7 @@ URI escaping has changed in .NET 4.5 to support ### Recommended Action * Update applications to not rely on to throw in the case of an invalid escape sequence. Such sequences must be detected directly now. -* Similarly, expect that Escaped and Unescaped URI and Data strings may vary from .NET 4.0 and .NET 4.5 and should not be compared across .NET versions directly. Instead, they should be parsed and normalized in a single .NET version before any comparisons are made. +* Similarly, expect that Escaped and Unescaped URI and Data strings may vary from .NET Framework 4.0 and .NET Framework 4.5 and should not be compared across .NET versions directly. Instead, they should be parsed and normalized in a single .NET version before any comparisons are made. ### Affected APIs * `M:System.Uri.EscapeDataString(System.String)` diff --git a/Documentation/compatibility/system_uri-parsing-adheres-to-rfc-3987.md b/Documentation/compatibility/system_uri-parsing-adheres-to-rfc-3987.md index 211eb7f9f..01f4490c8 100644 --- a/Documentation/compatibility/system_uri-parsing-adheres-to-rfc-3987.md +++ b/Documentation/compatibility/system_uri-parsing-adheres-to-rfc-3987.md @@ -11,9 +11,9 @@ Available ### Change Description -URI parsing has changed in several ways in .NET 4.5. Note, however, that these -changes only affect code targeting .NET 4.5. If a binary targets .NET 4.0, the -old behavior will be observed. Changes to URI parsing in .NET 4.5 include: +URI parsing has changed in several ways in .NET Framework 4.5. Note, however, that these +changes only affect code targeting .NET Framework 4.5. If a binary targets .NET Framework 4.0, the +old behavior will be observed. Changes to URI parsing in .NET Framework 4.5 include: - URI parsing will perform normalization and character checking according to the latest IRI rules in RFC 3987. - Unicode normalization form C will only be performed on the host portion of the URI. @@ -28,8 +28,8 @@ old behavior will be observed. Changes to URI parsing in .NET 4.5 include: ### Recommended Action -If the old .NET 4.0 URI parsing semantics are necessary (they often aren't), -they can be used by targeting .NET 4.0. This can be accomplished by using a +If the old .NET Framework 4.0 URI parsing semantics are necessary (they often aren't), +they can be used by targeting .NET Framework 4.0. This can be accomplished by using a on the assembly, or through Visual Studio's project system UI in the 'project properties' page. diff --git a/Documentation/compatibility/type_isassignablefrom-returns-wrong-result-for-generic-variables-with-constraints.md b/Documentation/compatibility/type_isassignablefrom-returns-wrong-result-for-generic-variables-with-constraints.md index 5bfee3fe7..590f91e43 100644 --- a/Documentation/compatibility/type_isassignablefrom-returns-wrong-result-for-generic-variables-with-constraints.md +++ b/Documentation/compatibility/type_isassignablefrom-returns-wrong-result-for-generic-variables-with-constraints.md @@ -24,7 +24,7 @@ constraints. ### Recommended Action -This issue was fixed in a servicing update. Please update the .NET Framework +This issue was fixed in a servicing update. Update the .NET Framework 4.5, or upgrade to .NET Framework 4.5.1 or later, to fix this issue. Alternatively, avoid using IsAssignableFrom with generic types that have constraints on generic parameters. Reflection APIs can be used as a work-around. diff --git a/Documentation/compatibility/unexpected-invalidcastexception-from-invokemethod-activity-in-wf4.md b/Documentation/compatibility/unexpected-invalidcastexception-from-invokemethod-activity-in-wf4.md index cdacf7790..44a946a0e 100644 --- a/Documentation/compatibility/unexpected-invalidcastexception-from-invokemethod-activity-in-wf4.md +++ b/Documentation/compatibility/unexpected-invalidcastexception-from-invokemethod-activity-in-wf4.md @@ -24,8 +24,7 @@ targets a method with a nullable parameter can throw an ### Recommended Action -This behavior was reverted in a .NET Framework 4.5 servicing release. Please -update the .NET Framework 4.5 (or upgrade to .NET Framework 4.5.1 or later) to +This behavior was reverted in a .NET Framework 4.5 servicing release. Update the .NET Framework 4.5 (or upgrade to .NET Framework 4.5.1 or later) to fix the issue. ### Affected APIs diff --git a/Documentation/compatibility/vb_net-no-longer-supports-partial-namespace-qualification-for-system_windows-apis.md b/Documentation/compatibility/vb_net-no-longer-supports-partial-namespace-qualification-for-system_windows-apis.md index a9bbb3584..6fab92e39 100644 --- a/Documentation/compatibility/vb_net-no-longer-supports-partial-namespace-qualification-for-system_windows-apis.md +++ b/Documentation/compatibility/vb_net-no-longer-supports-partial-namespace-qualification-for-system_windows-apis.md @@ -10,7 +10,7 @@ Minor Available ### Change Description -Beginning in .NET 4.5.2, VB.NET projects cannot specify System.Windows APIs with partially-qualified namespaces. For example, referring to `Windows.Forms.DialogResult` will fail. Instead, code must refer to the fully qualified name () or import the specific namespace and refer simply to . +Beginning in .NET Framework 4.5.2, VB.NET projects cannot specify System.Windows APIs with partially-qualified namespaces. For example, referring to `Windows.Forms.DialogResult` will fail. Instead, code must refer to the fully qualified name () or import the specific namespace and refer simply to . - [ ] Quirked - [x] Build-time break diff --git a/Documentation/compatibility/wcf-binding-with-the-transportwithmessagecredential-security-mode.md b/Documentation/compatibility/wcf-binding-with-the-transportwithmessagecredential-security-mode.md index 1feb93c21..838895c83 100644 --- a/Documentation/compatibility/wcf-binding-with-the-transportwithmessagecredential-security-mode.md +++ b/Documentation/compatibility/wcf-binding-with-the-transportwithmessagecredential-security-mode.md @@ -12,7 +12,7 @@ Not planned ### Change Description Beginning in the .NET Framework 4.6.1, WCF binding that uses the TransportWithMessageCredential security mode can be set up to receive messages with unsigned "to" headers for asymmetric security keys. -By default, unsigned "to" headers will continue to be rejected in .NET 4.6.1. They will only be accepted if an application opts into this new mode of operation using the Switch.System.ServiceModel.AllowUnsignedToHeader configuration switch. +By default, unsigned "to" headers will continue to be rejected in .NET Framework 4.6.1. They will only be accepted if an application opts into this new mode of operation using the Switch.System.ServiceModel.AllowUnsignedToHeader configuration switch. Because this is an opt-in feature, it should not affect the behavior of existing apps. diff --git a/Documentation/compatibility/wcf-deadlock-results-when-using-reentrant-services.md b/Documentation/compatibility/wcf-deadlock-results-when-using-reentrant-services.md index 7fb417ee3..0df83b264 100644 --- a/Documentation/compatibility/wcf-deadlock-results-when-using-reentrant-services.md +++ b/Documentation/compatibility/wcf-deadlock-results-when-using-reentrant-services.md @@ -36,7 +36,8 @@ To address this issue, you can do the following: - + ``` + The value of `Switch.System.ServiceModel.DisableOperationContextAsyncFlow` should never be set to `false` for Rentrant services. ### Affected APIs diff --git a/Documentation/compatibility/winforms-accessibility-changes-471.md b/Documentation/compatibility/winforms-accessibility-changes-471.md index 5d4226aa7..f897a61da 100644 --- a/Documentation/compatibility/winforms-accessibility-changes-471.md +++ b/Documentation/compatibility/winforms-accessibility-changes-471.md @@ -47,68 +47,69 @@ In order for the application to benefit from these changes, it must run on the . Applications that target the .NET Framework 4.7.1 or later and want to preserve the legacy accessibility behavior can opt in to the use of legacy accessibility features by explicitly setting this AppContext switch to `true`. -For an overview of UI automation, see the [UI Automation Overview](https://docs.microsoft.com/dotnet/framework/ui-automation/ui-automation-overview). +For an overview of UI automation, see the [UI Automation Overview](https://docs.microsoft.com/dotnet/framework/ui-automation/ui-automation-overview). -**Added support for UI Automation patterns and properties** +**Added support for UI Automation patterns and properties** Accessibility clients can take advantage of new WinForms accessibility functionality by using common, publicly described invocation patterns. These patterns are not WinForms-specific. For instance, accessibility clients can call the QueryInterface method on the IAccessible interface (MAAS) to obtain an IServiceProvider interface. If this interface is available, clients can use its QueryService method to request an IAccessibleEx interface. For more information, see [Using IAccessibleEx from a Client](https://msdn.microsoft.com/library/windows/desktop/dd561924.aspx). Starting with the .NET Framework 4.7.1, IServiceProvider and [IAccessibleEx]( https://msdn.microsoft.com/library/windows/desktop/dd561898.aspx) (where applicable) are available for WinForms accessibility objects. The .NET Framework 4.7.1 adds support for the following UI automation patterns and properties: -- The `T:System.Windows.Forms.ToolStripSplitButton` and `T:System.Windows.Forms.ComboBox` controls support the [Expand/Collapse pattern](https://docs.microsoft.com/dotnet/framework/ui-automation/implementing-the-ui-automation-expandcollapse-control-pattern). -- The `T:System.Windows.Forms.ToolStripMenuItem` control has a [ControlType](https://docs.microsoft.com/dotnet/framework/ui-automation/ui-automation-support-for-the-menubar-control-type) property value . -- The `T:System.Windows.Forms.ToolStripItem` control supports the [Name](https://docs.microsoft.com/dotnet/api/system.windows.automation.automationelement.nameproperty) property and [Expand/Collapse pattern](https://docs.microsoft.com/dotnet/framework/ui-automation/implementing-the-ui-automation-expandcollapse-control-pattern). -- The `T:System.Windows.Forms.ToolStripDropDownItem` control supports [AccessibleEvents](https://docs.microsoft.com/dotnet/api/system.windows.forms.accessibleevents) indicating StateChange and NameChange when drop down is expanded or collapsed. -- The `T:System.Windows.Forms.ToolStripDropDownButton` control has a [ControlType](https://docs.microsoft.com/dotnet/framework/ui-automation/ui-automation-support-for-the-menubar-control-type) property value of . -- The `T:System.Windows.Forms.DataGridViewCheckBoxCell` control supports the [Toggle Pattern](https://docs.microsoft.com/dotnet/api/system.windows.automation.togglepattern). -- The `T:System.Windows.Forms.NumericUpDown` and `T:System.Windows.Forms.DomainUpDown` controls support the [Name](https://docs.microsoft.com/dotnet/api/system.windows.automation.automationelement.nameproperty) and have a [ControlType](https://docs.microsoft.com/dotnet/framework/ui-automation/ui-automation-support-for-the-spinner-control-type) of . +- The and controls support the [Expand/Collapse pattern](https://docs.microsoft.com/dotnet/framework/ui-automation/implementing-the-ui-automation-expandcollapse-control-pattern). +- The control has a [ControlType](https://docs.microsoft.com/dotnet/framework/ui-automation/ui-automation-support-for-the-menubar-control-type) property value . +- The control supports the [Name](https://docs.microsoft.com/dotnet/api/system.windows.automation.automationelement.nameproperty) property and the[Expand/Collapse pattern](https://docs.microsoft.com/dotnet/framework/ui-automation/implementing-the-ui-automation-expandcollapse-control-pattern). +- The control supports [AccessibleEvents](https://docs.microsoft.com/dotnet/api/system.windows.forms.accessibleevents) indicating StateChange and NameChange when drop down is expanded or collapsed. +- The control has a [ControlType](https://docs.microsoft.com/dotnet/framework/ui-automation/ui-automation-support-for-the-menubar-control-type) property value of . +- The control supports the [Toggle Pattern](https://docs.microsoft.com/dotnet/api/system.windows.automation.togglepattern). +- The and controls support the [Name](https://docs.microsoft.com/dotnet/api/system.windows.automation.automationelement.nameproperty) and have a [ControlType](https://docs.microsoft.com/dotnet/framework/ui-automation/ui-automation-support-for-the-spinner-control-type) of . -**Improvements to the PropertyGrid control** +**Improvements to the PropertyGrid control** The .NET Framework 4.7.1 adds the following improvements to the PropertyBrowser control: -- The **Details** button in the error dialog that is displayed when the user enters an incorrect value in the `T:System.Windows.Forms.PropertyGrid` control supports the [Expand/Collapse pattern](https://docs.microsoft.com/dotnet/framework/ui-automation/implementing-the-ui-automation-expandcollapse-control-pattern), state and name change notifications, and a [ControlType](https://docs.microsoft.com/dotnet/framework/ui-automation/ui-automation-support-for-the-menubar-control-type) property with a value of . +- The **Details** button in the error dialog that is displayed when the user enters an incorrect value in the control supports the [Expand/Collapse pattern](https://docs.microsoft.com/dotnet/framework/ui-automation/implementing-the-ui-automation-expandcollapse-control-pattern), state and name change notifications, and a [ControlType](https://docs.microsoft.com/dotnet/framework/ui-automation/ui-automation-support-for-the-menubar-control-type) property with a value of . - The message pane displayed when the **Details** button of the error dialog is expanded is now keyboard accessible and allows Narrator to announce the content of the error message. -- The [AccessibleRole](https://docs.microsoft.com/dotnet/api/system.windows.forms.accessiblerole) of rows in `T:System.Windows.Forms.PropertyGrid` control have changed from "Row" to "Cell". The cell maps to UIA ControlType "DataItem", which allows it to support appropriate keyboard shortcuts and Narrator announcements. -- The `T:System.Windows.Forms.PropertyGrid` control rows which represent header items when the `T:System.Windows.Forms.PropertyGrid` control has a `P:System.Windows.Forms.PropertySort` property set to `F:System.Windows.Forms.PropertySory.Categorized` have a [ControlType](https://docs.microsoft.com/dotnet/framework/ui-automation/ui-automation-support-for-the-menubar-control-type) property value of -- The `T:System.Windows.Forms.PropertyGrid` control rows which represent header items when the `T:System.Windows.Forms.PropertyGrid` control has a `P:System.Windows.Forms.PropertySort` property set to `F:System.Windows.Forms.PropertySory.Categorized` support the [Expand/Collapse pattern](https://docs.microsoft.com/dotnet/framework/ui-automation/implementing-the-ui-automation-expandcollapse-control-pattern). +- The [AccessibleRole](https://docs.microsoft.com/dotnet/api/system.windows.forms.accessiblerole) of rows in the control have changed from "Row" to "Cell". The cell maps to UIA ControlType "DataItem", which allows it to support appropriate keyboard shortcuts and Narrator announcements. +- The control rows that represent header items when the control has a property set to have a [ControlType](https://docs.microsoft.com/dotnet/framework/ui-automation/ui-automation-support-for-the-menubar-control-type) property value of . +- The control rows that represent header items when the control has a property set to support the [Expand/Collapse pattern](https://docs.microsoft.com/dotnet/framework/ui-automation/implementing-the-ui-automation-expandcollapse-control-pattern). - Improved keyboard navigation between the grid and the ToolBar above it. Pressing "Shift-Tab" now selects the first ToolBar button, instead of the whole ToolBar -- `T:System.Windows.Forms.PropertyGrid` controls displayed in High Contrast mode will now draw a focus rectangle around the ToolBar button which corresponds to the current `P:System.Windows.Forms.PropertySort` property value. -- `T:System.Windows.Forms.PropertyGrid` controls displayed in High Contrast mode and with a `P:System.Windows.Forms.PropertySort` property set to `F:System.Windows.Forms.PropertySory.Categorized` will now display the background of category headers in a highly contrasting color. -- `T:System.Windows.Forms.PropertyGrid` controls better differentiates between ToolBar items with focus and the ToolBar items which indicate the current value of the `P:System.Windows.Forms.PropertySort` property. This fix consists of a High Contrast change and a change for non-High Contrast scenarios. -- `T:System.Windows.Forms.PropertyGrid` control ToolBar items which indicates the current value of the `P:System.Windows.Forms.PropertySort` property support the [Toggle Pattern](https://docs.microsoft.com/dotnet/api/system.windows.automation.togglepattern). +- controls displayed in High Contrast mode will now draw a focus rectangle around the ToolBar button which corresponds to the current property value. +- controls displayed in High Contrast mode and with a property set to will now display the background of category headers in a highly contrasting color. +- controls better differentiates between ToolBar items with focus and the ToolBar items which indicate the current value of the control ToolBar items which indicates the current value of the property support the [Toggle Pattern](https://docs.microsoft.com/dotnet/api/system.windows.automation.togglepattern). - Improved Narrator support for distinguishing the selected alignment in the Alignment Picker. -- When an empty `T:System.Windows.Forms.PropertyGrid` control is displayed on a form, it will now receive focus where previously it would not. +- When an empty control is displayed on a form, it will now receive focus where previously it would not. **Use of OS-defined colors in High Contrast themes** -- `T:System.Windows.Forms.Button` and `T:System.Windows.Forms.CheckBox` controls with `P:System.Windows.Forms.Control.FlatStyle` set to , which is the default style, now use OS-defined colors in High Contrast theme when selected. Previously, text and background colors were not contrasting and were hard to read. -- `T:System.Windows.Forms.Button`, `T:System.Windows.Forms.CheckBox`, `T:System.Windows.Forms.RadioButton`, `T:System.Windows.Forms.Label`, `T:System.Windows.Forms.LinkLabel` and `T:System.Windows.Forms.GroupBox` with`P:System.Windows.Forms.Control.Enabled` set to _false_, used a shaded color to render text in High Contrast themes, resulting in low contrast against the background. Now these controls use "Disabled Text" color defined by the OS. This fix applies to controls with `P:System.Windows.Forms.Control.FlatStyle` property set to a value other than `F:System.Windows.Forms.FlatStyle.System`. The latter controls are rendered by the OS. -- `T:System.Windows.Forms.DataGridView` now renders a visible rectangle around the content of the cell which has the current focus. Previously, this was not visible in certain High Contrast themes. -- `T:System.Windows.Forms.ToolStripMenuItem` controls with a `P:System.Windows.Forms.ToolStripItem.Enabled` property set to _false_ now use the "Disabled Text" color defined by the OS. -- `T:System.Windows.Forms.ToolStripMenuItem` controls with a `P:System.Windows.Forms.ToolStripItem.Checked` property set to _true_ now render the associated check mark in a contrasting system color. Previously the check mark color was not contrasting enough and not visible in High Contrast themes. +- The and controls with their property set to , which is the default style, now use OS-defined colors in High Contrast theme when selected. Previously, text and background colors were not contrasting and were hard to read. +- The , , , , and controls with their property set to **false**, used a shaded color to render text in High Contrast themes, resulting in low contrast against the background. Now these controls use "Disabled Text" color defined by the OS. This fix applies to controls with the property set to a value other than . The latter controls are rendered by the OS. +- now renders a visible rectangle around the content of the cell which has the current focus. Previously, this was not visible in certain High Contrast themes. +- controls with a property set to **false** now use the "Disabled Text" color defined by the OS. +- controls with a property set to **true** now render the associated check mark in a contrasting system color. Previously the check mark color was not contrasting enough and not visible in High Contrast themes. -NOTE: Windows10 has changed values for some high contrast system colors. Windows Forms Framework is based on the Win32 framework. For the best experience, run on the latest version of Windows and opt in to the latest OS changes by adding an app.manifest file in a test application and uncommenting the following code: +NOTE: Windows 10 has changed values for some high contrast system colors. Windows Forms Framework is based on the Win32 framework. For the best experience, run on the latest version of Windows and opt in to the latest OS changes by adding an app.manifest file in a test application and uncommenting the following code: ```         ``` + **Improved keyboard navigation** -- When a `T:System.Windows.Forms.ComboBox` control has `P:System.Windows.Forms.ComboBox.DropDownStyle` set to `F:System.Windows.Forms.DropDownStyle.DropDownList` and is the first control in the tab order on the form, it now displays a focus rectangle when the parent form is opened using the keyboard. Before this change, keyboard focus was on this control, but a focus indicator was not rendered. +- When a control has its property set to and is the first control in the tab order on the form, it now displays a focus rectangle when the parent form is opened using the keyboard. Before this change, keyboard focus was on this control, but a focus indicator was not rendered. **Improved Narrator support** -- The `T:System.Windows.Forms.MonthCalendar` control has added support for assistive technologies to access the control, including the ability for Narrator to read the value of the control when previously it could not. -- The `T:System.Windows.Forms.CheckedListBox` control now notifies Narrator when the `P:System.Windows.Forms.CheckState` property has been changed. Previously, Narrator did not recieve notification and as a result users would not be informed that the `P:System.Windows.Forms.CheckState` had been updated. -- The `T:System.Windows.Forms.LinkLabel` control has changed the way it notifies Narrator of the text of in the control. Previously, Narrator announced this text twice and read "&" symbols as real text even though they are not visible to a user. The duplicated text was removed from the Narrator announcements, as well as unnecessary "&" symbols. -- The `T:System.Windows.Forms.DataGridViewCell` control types now correctly report the read-only status to Narrator and other assistive technologies. +- The control has added support for assistive technologies to access the control, including the ability for Narrator to read the value of the control when previously it could not. +- The control now notifies Narrator when a property has been changed. Previously, Narrator did not receive notification and as a result users would not be informed that the property had been updated. +- The control has changed the way it notifies Narrator of the text of in the control. Previously, Narrator announced this text twice and read "&" symbols as real text even though they are not visible to a user. The duplicated text was removed from the Narrator announcements, as well as unnecessary "&" symbols. +- The control types now correctly report the read-only status to Narrator and other assistive technologies. - Narrator is now able to read the System Menu of child windows in [Multiple-Document Interface]~/docs/framework/winforms/advanced/multiple-document-interface-mdi-applications.md) applications. -- Narrator is now able to read `T:System.Windows.Forms.ToolStripMenuItem` controls with a `P:System.Windows.Forms.ToolStripItem.Enabled` property set to _false_. Previously, Narrator was unable to focus on disabled menu items to read hte content. +- Narrator is now able to read controls with a property set to **false**. Previously, Narrator was unable to focus on disabled menu items to read the content. ### Affected APIs -* `M:System.Windows.Forms.ToolStripDropDownButton.CreateAccessibilityInstance` -* `P:System.Windows.Forms.DomainUpDown.DomainUpDownAccessibleObject.Name` +* `M:System.Windows.Forms.ToolStripDropDownButton.CreateAccessibilityInstance` +* `P:System.Windows.Forms.DomainUpDown.DomainUpDownAccessibleObject.Name` * [MonthCalendar.AccessibilityObject](xref:System.Windows.Forms.Control.AccessibilityObject) diff --git a/Documentation/compatibility/wpf-PackageDigitalSignatureManager.DefaultHashAlgorithm-is-now-SHA256.md b/Documentation/compatibility/wpf-PackageDigitalSignatureManager.DefaultHashAlgorithm-is-now-SHA256.md index acbd99b0b..a7fabb024 100644 --- a/Documentation/compatibility/wpf-PackageDigitalSignatureManager.DefaultHashAlgorithm-is-now-SHA256.md +++ b/Documentation/compatibility/wpf-PackageDigitalSignatureManager.DefaultHashAlgorithm-is-now-SHA256.md @@ -17,7 +17,7 @@ used for signing parts of a package was SHA1. Due to recent security concerns w - [ ] Build-time break ### Recommended Action -A developer who wants to utilize this change while targeting a framework version below .NET 4.7.1 or a developer who requires the previous functionality while targeting .NET 4.7.1 or greater +A developer who wants to utilize this change while targeting a framework version below .NET Framework 4.7.1 or a developer who requires the previous functionality while targeting .NET Framework 4.7.1 or greater can set the following AppContext flag appropriately. A value of true will result in SHA1 being used as the default algorithm; false results in SHA256. ```xml diff --git a/Documentation/compatibility/wpf-accessibility-improvements.MD b/Documentation/compatibility/wpf-accessibility-improvements.MD index b3454ec91..ef366266c 100644 --- a/Documentation/compatibility/wpf-accessibility-improvements.MD +++ b/Documentation/compatibility/wpf-accessibility-improvements.MD @@ -48,7 +48,8 @@ __How to opt in or out of these changes__ In order for the application to benefit from these changes, it must run on the .NET Framework 4.7.1 or later. The application can benefit from these changes in either of the following ways: - It is recompiled to target the .NET Framework 4.7.1. These accessibility changes are enabled by default on WPF applications that target the .NET Framework 4.7.1 or later. - It opts out of the legacy accessibility behaviors by adding the following [AppContext Switch](https://docs.microsoft.com/dotnet/framework/configure-apps/file-schema/runtime/appcontextswitchoverrides-element) in the `` section of the app config file and setting it to false, as the following example shows. -```xml + + ```xml @@ -59,7 +60,8 @@ In order for the application to benefit from these changes, it must run on the . -``` + ``` + Applications that target the .NET Framework 4.7.1 or later and want to preserve the legacy accessibility behavior can opt in to the use of legacy accessibility features by explicitly setting this AppContext switch to ```true```. For an overview of UI automation, see the [UI Automation Overview](https://docs.microsoft.com/dotnet/framework/ui-automation/ui-automation-overview). diff --git a/Documentation/compatibility/wpf-aero2-and-aerolite-themes-toggle-button-doesn't-show-any-state.md b/Documentation/compatibility/wpf-aero2-and-aerolite-themes-toggle-button-doesn't-show-any-state.md index 2118d7d87..8c1615143 100644 --- a/Documentation/compatibility/wpf-aero2-and-aerolite-themes-toggle-button-doesn't-show-any-state.md +++ b/Documentation/compatibility/wpf-aero2-and-aerolite-themes-toggle-button-doesn't-show-any-state.md @@ -19,7 +19,7 @@ In the .NET Framework 4.5, WPF's Aero2 and AeroLite themes do not show a differe - [ ] Build-time break ### Recommended Action -This issue was fixed in a servicing update. Please update the .NET Framework 4.5, or upgrade to .NET Framework 4.5.1 or later, to fix this issue. Alternatively, toggle buttons may be explicitly styled to work around this issue. +This issue was fixed in a servicing update. Update the .NET Framework 4.5, or upgrade to .NET Framework 4.5.1 or later, to fix this issue. Alternatively, toggle buttons may be explicitly styled to work around this issue. ### Affected APIs * T:System.Windows.Controls.Primitives.ToggleButton diff --git a/Documentation/compatibility/wpf-dispatchersynchronizationcontext_createcopy-now-returns-a-new-copy-instead-of-the-current-instance.md b/Documentation/compatibility/wpf-dispatchersynchronizationcontext_createcopy-now-returns-a-new-copy-instead-of-the-current-instance.md index 6ce6d1033..d7445a5f4 100644 --- a/Documentation/compatibility/wpf-dispatchersynchronizationcontext_createcopy-now-returns-a-new-copy-instead-of-the-current-instance.md +++ b/Documentation/compatibility/wpf-dispatchersynchronizationcontext_createcopy-now-returns-a-new-copy-instead-of-the-current-instance.md @@ -33,7 +33,7 @@ will now return a new object. Previously, code that used equivalence of references generated this way was not actually checking whether it was in the proper context, but does when built -against .NET 4.5 or newer. While unlikely to cause issues, exercising the +against .NET Framework 4.5 or later. While unlikely to cause issues, exercising the affected code paths should be enough to determine if this poses any problem. ### Affected APIs diff --git a/Documentation/compatibility/wpf-hang-when-resizing-a-grid.md b/Documentation/compatibility/wpf-hang-when-resizing-a-grid.md index d3df8e919..9ccf3ed7c 100644 --- a/Documentation/compatibility/wpf-hang-when-resizing-a-grid.md +++ b/Documentation/compatibility/wpf-hang-when-resizing-a-grid.md @@ -19,18 +19,18 @@ circumstances: * Row definitions contain two *-rows, both declaring a MinHeight and a MaxHeight. * Content of the *-rows doesn't exceed the corresponding MaxHeight * The Grid's available height is exceeded by the first MinHeight (plus any other fixed or Auto rows) -* The app targets .Net 4.7, or opts in to the 4.7 allocation algorithm by setting +* The app targets .NET Framework 4.7, or opts in to the 4.7 allocation algorithm by setting `Switch.System.Windows.Controls.Grid.StarDefinitionsCanExceedAvailableSpace=false` The loop would also happen with more than two rows, or in the analogous case for columns. -The issue is fixed in .Net 4.7.1. +The issue is fixed in .NET Framework 4.7.1. - [ ] Quirked - [ ] Build-time break ### Recommended Action -Upgrade to .Net 4.7.1. Alternatively, if you don't need the 4.7 allocation algorithm +Upgrade to .NET Framework 4.7.1. Alternatively, if you don't need the 4.7 allocation algorithm you can use the following configuration setting: ```xml diff --git a/Documentation/compatibility/wpf-layout-rounding-of-margins-has-changed.md b/Documentation/compatibility/wpf-layout-rounding-of-margins-has-changed.md index dff018e26..3dff6657d 100644 --- a/Documentation/compatibility/wpf-layout-rounding-of-margins-has-changed.md +++ b/Documentation/compatibility/wpf-layout-rounding-of-margins-has-changed.md @@ -22,9 +22,17 @@ By default, this new layout is enabled only for apps that target the .NET Framew - [ ] Build-time break ### Recommended Action -Since this modification tends to eliminate clipping of the right or bottom of WPF controls at high DPIs, apps that target earlier versions of the .NET Framework but are running on the .NET Framework 4.6 can opt into this new behavior by adding the following line to the `` section of the app.config file: `` +Since this modification tends to eliminate clipping of the right or bottom of WPF controls at high DPIs, apps that target earlier versions of the .NET Framework but are running on the .NET Framework 4.6 can opt into this new behavior by adding the following line to the `` section of the app.config file: -Apps that target the .NET Framework 4.6 but want WPF controls to render using the previous layout algorithm can do so by adding the following line to the `` section of the app.config file: ``. +```xml +` +``` + +Apps that target the .NET Framework 4.6 but want WPF controls to render using the previous layout algorithm can do so by adding the following line to the `` section of the app.config file: + +```xml +`. +``` ### Affected APIs * Not detectable via API analysis diff --git a/Documentation/compatibility/wpf-pointer-based-touch-stack.md b/Documentation/compatibility/wpf-pointer-based-touch-stack.md index bc788aa28..9f7efaf64 100644 --- a/Documentation/compatibility/wpf-pointer-based-touch-stack.md +++ b/Documentation/compatibility/wpf-pointer-based-touch-stack.md @@ -39,7 +39,7 @@ Developers who wish to enable this stack can add/merge the following to their ap Removing this or setting the value to false will turn this optional stack off. -Please note that this stack is available only on Windows 10 Creators Update and above. +Note that this stack is available only on Windows 10 Creators Update and above. ### Affected APIs Not detectable via API analysis diff --git a/Documentation/compatibility/wpf-selector-crash-when-removing-item-from-custom-collection.md b/Documentation/compatibility/wpf-selector-crash-when-removing-item-from-custom-collection.md index 46d1ad288..26006755f 100644 --- a/Documentation/compatibility/wpf-selector-crash-when-removing-item-from-custom-collection.md +++ b/Documentation/compatibility/wpf-selector-crash-when-removing-item-from-custom-collection.md @@ -26,15 +26,15 @@ The exception's callstack begins at System.Windows.DependencyObject.GetValue(DependencyProperty dp) at System.Windows.Controls.Primitives.Selector.GetIsSelected(DependencyObject element) -This exception can occur in .Net 4.5 if the application has more than one Dispatcher thread. -In .Net 4.7 the exception can also occur in applications with a single Dispatcher thread. -The issue is fixed in .Net 4.7.1. +This exception can occur in .NET Framework 4.5 if the application has more than one Dispatcher thread. +In .NET Framework 4.7 the exception can also occur in applications with a single Dispatcher thread. +The issue is fixed in .NET Framework 4.7.1. - [ ] Quirked - [ ] Build-time break ### Recommended Action -Upgrade to .Net 4.7.1. +Upgrade to .NET Framework 4.7.1. ### Affected APIs * Not detectable via API analysis diff --git a/Documentation/compatibility/wpf-selector-selectionchanged-and-selectedvalue.md b/Documentation/compatibility/wpf-selector-selectionchanged-and-selectedvalue.md index 5d3f3ae54..335e90d24 100644 --- a/Documentation/compatibility/wpf-selector-selectionchanged-and-selectedvalue.md +++ b/Documentation/compatibility/wpf-selector-selectionchanged-and-selectedvalue.md @@ -10,7 +10,7 @@ Minor NotPlanned ### Change Description -Starting with the .Net Framework 4.7.1, a always updates the value of its +Starting with the .NET Framework 4.7.1, a always updates the value of its property before raising the event, when its selection changes. This makes the SelectedValue property consistent with the other selection properties diff --git a/Documentation/compatibility/wpf-textbox-defaults-to-undo-limit-of-100.md b/Documentation/compatibility/wpf-textbox-defaults-to-undo-limit-of-100.md index 3db65140e..7383b404f 100644 --- a/Documentation/compatibility/wpf-textbox-defaults-to-undo-limit-of-100.md +++ b/Documentation/compatibility/wpf-textbox-defaults-to-undo-limit-of-100.md @@ -10,7 +10,7 @@ Edge Planned ### Change Description -In .NET 4.5, the default undo limit for a WPF textbox is 100 (as opposed to being unlimited in .NET 4.0) +In .NET Framework 4.5, the default undo limit for a WPF textbox is 100 (as opposed to being unlimited in .NET Framework 4.0) - [ ] Quirked - [ ] Build-time break diff --git a/Documentation/compatibility/wpf-textbox-selected-text-appears-a-different-color-when-the-text-box-is-inactive.md b/Documentation/compatibility/wpf-textbox-selected-text-appears-a-different-color-when-the-text-box-is-inactive.md index 6c2398b7f..22d071f95 100644 --- a/Documentation/compatibility/wpf-textbox-selected-text-appears-a-different-color-when-the-text-box-is-inactive.md +++ b/Documentation/compatibility/wpf-textbox-selected-text-appears-a-different-color-when-the-text-box-is-inactive.md @@ -11,7 +11,7 @@ Available ### Change Description -In .NET 4.5, when a WPF text box control is inactive (it doesn't have focus), +In .NET Framework 4.5, when a WPF text box control is inactive (it doesn't have focus), the selected text inside the box will appear a different color than when the control is active. @@ -20,7 +20,7 @@ control is active. ### Recommended Action -Previous (.NET 4.0) behavior may be restored by setting the +The previous (.NET Framework 4.0) behavior may be restored by setting the property to `false`. diff --git a/Documentation/compatibility/xml-schema-validation-is-stricter.md b/Documentation/compatibility/xml-schema-validation-is-stricter.md index c34ffbdd3..f03765179 100644 --- a/Documentation/compatibility/xml-schema-validation-is-stricter.md +++ b/Documentation/compatibility/xml-schema-validation-is-stricter.md @@ -16,7 +16,7 @@ In the .NET Framework 4.5, XML schema validation is more strict. If you use xsd: - [ ] Build-time break ### Recommended Action -If looser .NET Framework 4.0 validation is needed, the validating application can target version 4.0 of the .NET Framework. When retargeting to .NET 4.5, however, code review should be done to be sure that invalid URIs (with spaces) are not expected as attribute values with the anyURI data type. +If looser .NET Framework 4.0 validation is needed, the validating application can target version 4.0 of the .NET Framework. When retargeting to .NET Framework 4.5, however, code review should be done to be sure that invalid URIs (with spaces) are not expected as attribute values with the anyURI data type. ### Affected APIs * Not detectable via API analysis diff --git a/Documentation/compatibility/xsd-schema-validation-now-correctly-detects-violations-of-unique-constraints-if-compound-keys-are-used-and-one-key-is-empty.md b/Documentation/compatibility/xsd-schema-validation-now-correctly-detects-violations-of-unique-constraints-if-compound-keys-are-used-and-one-key-is-empty.md index 471670914..f62903026 100644 --- a/Documentation/compatibility/xsd-schema-validation-now-correctly-detects-violations-of-unique-constraints-if-compound-keys-are-used-and-one-key-is-empty.md +++ b/Documentation/compatibility/xsd-schema-validation-now-correctly-detects-violations-of-unique-constraints-if-compound-keys-are-used-and-one-key-is-empty.md @@ -24,7 +24,7 @@ previously would have. If looser .NET Framework 4.0 validation is needed, the validating application can target version 4.5 (or earlier) of the .NET Framework. When retargeting to -.NET 4.6, however, code review should be done to be sure that duplicate compound +.NET Framework 4.6, however, code review should be done to be sure that duplicate compound keys (as described in this issue's description) are not expected to validate. ### Affected APIs From 8322c94f97080cbdfe78ece5ffe97b1b4d5997db Mon Sep 17 00:00:00 2001 From: Charles Lowell Date: Fri, 2 Mar 2018 14:10:22 -0800 Subject: [PATCH 567/872] Fix typo (#646) --- ...6_0-loads-very-slowly-in-apps-launched-from-visual-studio.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Documentation/compatibility/entityframework-6_0-loads-very-slowly-in-apps-launched-from-visual-studio.md b/Documentation/compatibility/entityframework-6_0-loads-very-slowly-in-apps-launched-from-visual-studio.md index 4cba74fc7..910931784 100644 --- a/Documentation/compatibility/entityframework-6_0-loads-very-slowly-in-apps-launched-from-visual-studio.md +++ b/Documentation/compatibility/entityframework-6_0-loads-very-slowly-in-apps-launched-from-visual-studio.md @@ -16,7 +16,7 @@ Launching an app from Visual Studio 2013 that uses EntityFramework 6.0 can be ve - [ ] Build-time break ### Recommended Action -This issue is fixed in EntityFramework 6.0.2. Uupdate EntityFramework to avoid the performance issue. +This issue is fixed in EntityFramework 6.0.2. Update EntityFramework to avoid the performance issue. ### Affected APIs * Not detectable via API analysis From 90215951e51e3185d15e29bccf0cf8acc223ce6b Mon Sep 17 00:00:00 2001 From: Ron Petrusha Date: Fri, 2 Mar 2018 14:11:28 -0800 Subject: [PATCH 568/872] Changed docs.microsoft.com/dotnet URLs to relative URLs (#645) * Changed docs.microsoft.com/dotnet URLs to relative URLs * removed trailing spaces, added

and
HTML tags --- ...n-path-separator-character-in-zip-files.md | 4 +- .../compatibility/new-64-bit-jit-compiler.md | 2 +- ...-changes-in-net-framework-4-6-and-later.md | 4 +- ...s-to-securityprotocoltype.systemdefault.md | 8 +-- ...ord-flag-to-the-underlying-schannel-api.md | 2 +- .../winforms-accessibility-changes-471.md | 57 ++++++++++--------- .../workflow-designer-accessibility.md | 2 +- .../wpf-accessibility-improvements.MD | 22 +++---- 8 files changed, 51 insertions(+), 50 deletions(-) diff --git a/Documentation/compatibility/change-in-path-separator-character-in-zip-files.md b/Documentation/compatibility/change-in-path-separator-character-in-zip-files.md index 0aed8ba19..be0609ad6 100644 --- a/Documentation/compatibility/change-in-path-separator-character-in-zip-files.md +++ b/Documentation/compatibility/change-in-path-separator-character-in-zip-files.md @@ -22,7 +22,7 @@ Decompressing a zip file created by an app that targets a previous version of th The impact of this change on .ZIP files that are decompressed on the Windows operating system by APIs in the .NET Framework namespace should be minimal, since these APIs can seamlessly handle either a slash ("`/`") or a backslash ("`\`") as the path separator character. -If this change is undesirable, you can opt out of it by adding a configuration setting to the [``](https://docs.microsoft.com/dotnet/framework/configure-apps/file-schema/runtime/runtime-element.md) section of your application configuration file. The following example shows both the ``](~/docs/framework/configure-apps/file-schema/runtime/runtime-element.md) section of your application configuration file. The following example shows both the `` section and the `Switch.System.IO.Compression.ZipFile.UseBackslash` opt-out switch: ```xml @@ -30,7 +30,7 @@ If this change is undesirable, you can opt out of it by adding a configuration s ``` -In addition, apps that target previous versions of the .NET Framework but are running on the .NET Framework 4.6.1 and later versions can opt in to this behavior by adding a configuration setting to the [``](https://docs.microsoft.com/dotnet/framework/configure-apps/file-schema/runtime/runtime-element.md) section of the application configuration file. The following shows both the `` section and the `Switch.System.IO.Compression.ZipFile.UseBackslash` opt-in switch. +In addition, apps that target previous versions of the .NET Framework but are running on the .NET Framework 4.6.1 and later versions can opt in to this behavior by adding a configuration setting to the [``](~/docs/framework/configure-apps/file-schema/runtime/runtime-element.md) section of the application configuration file. The following shows both the `` section and the `Switch.System.IO.Compression.ZipFile.UseBackslash` opt-in switch. ```xml diff --git a/Documentation/compatibility/new-64-bit-jit-compiler.md b/Documentation/compatibility/new-64-bit-jit-compiler.md index 32d1f0247..c2487c66c 100644 --- a/Documentation/compatibility/new-64-bit-jit-compiler.md +++ b/Documentation/compatibility/new-64-bit-jit-compiler.md @@ -37,7 +37,7 @@ If you encounter the issues listed above, you can address them by doing any of t **Mitigation of other issues** If you encounter any other difference in behavior between code compiled with the older 64-bit compiler and the new 64-bit JIT compiler, or between the debug and release versions of your app that are both compiled with the new 64-bit JIT compiler, you can do the following to compile your app with the older 64-bit JIT compiler: -- On a per-application basis, you can add the [\](https://docs.microsoft.com/dotnet/framework/configure-apps/file-schema/runtime/uselegacyjit-element) element to your application's configuration file. The following disables compilation with the new 64-bit JIT compiler and instead uses the legacy 64-bit JIT compiler. +- On a per-application basis, you can add the [\](~/docs/framework/configure-apps/file-schema/runtime/uselegacyjit-element.md) element to your application's configuration file. The following disables compilation with the new 64-bit JIT compiler and instead uses the legacy 64-bit JIT compiler. ```xml diff --git a/Documentation/compatibility/product-versioning-changes-in-net-framework-4-6-and-later.md b/Documentation/compatibility/product-versioning-changes-in-net-framework-4-6-and-later.md index aed97ef9a..fa8c87835 100644 --- a/Documentation/compatibility/product-versioning-changes-in-net-framework-4-6-and-later.md +++ b/Documentation/compatibility/product-versioning-changes-in-net-framework-4-6-and-later.md @@ -24,7 +24,7 @@ The following are the detailed changes: - In the .NET Framework 4.6, 4.6.1, 4.6.2, 4.7, and 4.7.1, the property returns the fixed version string `4.0.30319.42000`. In the .NET Framework 4, 4.5, 4.5.1, and 4.5.2, it returns version strings in the format `4.0.30319.xxxxx` (for example, "4.0.30319.18010"). Note that we do not recommend application code taking any new dependency on the Environment.Version property. -For more information, see [How to: Determine which .NET Framework Versions Are Installed](https://docs.microsoft.com/dotnet/framework/migration-guide/how-to-determine-which-versions-are-installed). +For more information, see [How to: Determine which .NET Framework Versions Are Installed](~/docs/framework/migration-guide/how-to-determine-which-versions-are-installed.md). - [ ] Quirked - [ ] Build-time break @@ -32,7 +32,7 @@ For more information, see [How to: Determine which .NET Framework Versions Are I ### Recommended Action In general, applications should depend on the recommended techniques for detecting such things as the runtime version of the .NET Framework and the installation directory: -- To detect the runtime version of the .NET Framework, see [How to: Determine Which .NET Framework Versions Are Installed](https://docs.microsoft.com/dotnet/framework/migration-guide/how-to-determine-which-versions-are-installed.md). +- To detect the runtime version of the .NET Framework, see [How to: Determine Which .NET Framework Versions Are Installed](~/docs/framework/migration-guide/how-to-determine-which-versions-are-installed.md). - To determine the installation path for the .NET Framework, use the value of the `InstallPath` entry in the `HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full` key. diff --git a/Documentation/compatibility/servicepointmanager.securityprotocol-defaults-to-securityprotocoltype.systemdefault.md b/Documentation/compatibility/servicepointmanager.securityprotocol-defaults-to-securityprotocoltype.systemdefault.md index 3dc786dd4..021db3d58 100644 --- a/Documentation/compatibility/servicepointmanager.securityprotocol-defaults-to-securityprotocoltype.systemdefault.md +++ b/Documentation/compatibility/servicepointmanager.securityprotocol-defaults-to-securityprotocoltype.systemdefault.md @@ -10,7 +10,7 @@ Minor NotPlanned ### Change Description -Starting with apps that target the .NET Framework 4.7, the default value of the property is . This change allows .NET Framework networking APIs based on SslStream (such as FTP, HTTPS, and SMTP) to inherit the default security protocols from the operating system instead of using hard-coded values defined by the .NET Framework. The default varies by operating system and any custom configuration performed by the system administrator. For information on the default SChannel protocol in each version of the Windows operating system, see [Protocols in TLS/SSL (Schannel SSP)](https://msdn.microsoft.com/library/windows/desktop/mt808159.aspx). +Starting with apps that target the .NET Framework 4.7, the default value of the property is . This change allows .NET Framework networking APIs based on SslStream (such as FTP, HTTPS, and SMTP) to inherit the default security protocols from the operating system instead of using hard-coded values defined by the .NET Framework. The default varies by operating system and any custom configuration performed by the system administrator. For information on the default SChannel protocol in each version of the Windows operating system, see [Protocols in TLS/SSL (Schannel SSP)](https://msdn.microsoft.com/library/windows/desktop/mt808159.aspx).

For applications that target an earlier version of the .NET Framework, the default value of the property depends on the version of the .NET Framework targeted. See the [Networking section of Retargeting Changes for Migration from .NET Framework 4.5.2 to 4.6](~/docs/framework/migration-guide/retargeting/4.5.2-4.6.md#networking) for more information. @@ -18,11 +18,11 @@ For applications that target an earlier version of the .NET Framework, the defau - [ ] Build-time break ### Recommended Action -This change affects applications that target the .NET Framework 4.7 or later versions. +This change affects applications that target the .NET Framework 4.7 or later versions.
-If you prefer to use a defined protocol rather than relying on the system default, you can explicitly set the value of the property. +If you prefer to use a defined protocol rather than relying on the system default, you can explicitly set the value of the property.
-If this change is undesirable, you can opt out of it by adding a configuration setting to the [``](https://docs.microsoft.com/dotnet/framework/configure-apps/file-schema/runtime/runtime-element) section of your application configuration file. The following example shows both the `` section and the `Switch.System.Net.DontEnableSystemDefaultTlsVersions` opt-out switch: +If this change is undesirable, you can opt out of it by adding a configuration setting to the [``](~/docs/framework/configure-apps/file-schema/runtime/runtime-element.md) section of your application configuration file. The following example shows both the `` section and the `Switch.System.Net.DontEnableSystemDefaultTlsVersions` opt-out switch: ```xml diff --git a/Documentation/compatibility/tls-1-x-by-default-passes-sch-send-aux-record-flag-to-the-underlying-schannel-api.md b/Documentation/compatibility/tls-1-x-by-default-passes-sch-send-aux-record-flag-to-the-underlying-schannel-api.md index 08eeb1b3c..ef34b769d 100644 --- a/Documentation/compatibility/tls-1-x-by-default-passes-sch-send-aux-record-flag-to-the-underlying-schannel-api.md +++ b/Documentation/compatibility/tls-1-x-by-default-passes-sch-send-aux-record-flag-to-the-underlying-schannel-api.md @@ -20,7 +20,7 @@ In rare cases, this breaks communication between clients and existing servers th ### Recommended Action -If this change breaks communication with an existing server, you can disable sending the [`SCH_SEND_AUX_RECORD`](https://msdn.microsoft.com/library/windows/desktop/aa379810.aspx) flag and restore the previous behavior of not splitting data into separate records by adding the following switch to the [`\` element](~/docs/framework/configure-apps/file-schema/runtime/appcontextswitchoverrides-element.md) in the [`\ section](~/docs/framework/configure-apps/file-schema/runtime/runtime-element.md) of your app configuration file: +If this change breaks communication with an existing server, you can disable sending the [`SCH_SEND_AUX_RECORD`](https://msdn.microsoft.com/library/windows/desktop/aa379810.aspx) flag and restore the previous behavior of not splitting data into separate records by adding the following switch to the [``](~/docs/framework/configure-apps/file-schema/runtime/appcontextswitchoverrides-element.md) element in the [``](~/docs/framework/configure-apps/file-schema/runtime/runtime-element.md) section of your app configuration file: ```xml diff --git a/Documentation/compatibility/winforms-accessibility-changes-471.md b/Documentation/compatibility/winforms-accessibility-changes-471.md index f897a61da..cb3d838b8 100644 --- a/Documentation/compatibility/winforms-accessibility-changes-471.md +++ b/Documentation/compatibility/winforms-accessibility-changes-471.md @@ -24,13 +24,13 @@ Windows Forms is improving how it works with accessibility technologies to bette ### Recommended Action -**How to opt in or out of these changes** +**How to opt in or out of these changes**
In order for the application to benefit from these changes, it must run on the .NET Framework 4.7.1 or later. The application can benefit from these changes in either of the following ways: - It is recompiled to target the .NET Framework 4.7.1. These accessibility changes are enabled by default on Windows Forms applications that target the .NET Framework 4.7.1 or later. -- It opts out of the legacy accessibility behaviors by adding the following [AppContext switch](https://docs.microsoft.com/dotnet/framework/configure-apps/file-schema/runtime/appcontextswitchoverrides-element) to the `` section of the app.config file and setting it to `false`, as the following example shows. +- It opts out of the legacy accessibility behaviors by adding the following [AppContext switch](~/docs/framework/configure-apps/file-schema/runtime/appcontextswitchoverrides-element.md) to the `` section of the app.config file and setting it to `false`, as the following example shows. ```xml @@ -45,56 +45,57 @@ In order for the application to benefit from these changes, it must run on the .
``` -Applications that target the .NET Framework 4.7.1 or later and want to preserve the legacy accessibility behavior can opt in to the use of legacy accessibility features by explicitly setting this AppContext switch to `true`. +
Applications that target the .NET Framework 4.7.1 or later and want to preserve the legacy accessibility behavior can opt in to the use of legacy accessibility features by explicitly setting this AppContext switch to `true`.

-For an overview of UI automation, see the [UI Automation Overview](https://docs.microsoft.com/dotnet/framework/ui-automation/ui-automation-overview). +For an overview of UI automation, see the [UI Automation Overview](~/docs/framework/ui-automation/ui-automation-overview.md).

-**Added support for UI Automation patterns and properties** +**Added support for UI Automation patterns and properties**
-Accessibility clients can take advantage of new WinForms accessibility functionality by using common, publicly described invocation patterns. These patterns are not WinForms-specific. For instance, accessibility clients can call the QueryInterface method on the IAccessible interface (MAAS) to obtain an IServiceProvider interface. If this interface is available, clients can use its QueryService method to request an IAccessibleEx interface. For more information, see [Using IAccessibleEx from a Client](https://msdn.microsoft.com/library/windows/desktop/dd561924.aspx). Starting with the .NET Framework 4.7.1, IServiceProvider and [IAccessibleEx]( https://msdn.microsoft.com/library/windows/desktop/dd561898.aspx) (where applicable) are available for WinForms accessibility objects. +Accessibility clients can take advantage of new WinForms accessibility functionality by using common, publicly described invocation patterns. These patterns are not WinForms-specific. For instance, accessibility clients can call the QueryInterface method on the IAccessible interface (MAAS) to obtain an IServiceProvider interface. If this interface is available, clients can use its QueryService method to request an IAccessibleEx interface. For more information, see [Using IAccessibleEx from a Client](https://msdn.microsoft.com/library/windows/desktop/dd561924.aspx). Starting with the .NET Framework 4.7.1, IServiceProvider and [IAccessibleEx]( https://msdn.microsoft.com/library/windows/desktop/dd561898.aspx) (where applicable) are available for WinForms accessibility objects.
The .NET Framework 4.7.1 adds support for the following UI automation patterns and properties: -- The and controls support the [Expand/Collapse pattern](https://docs.microsoft.com/dotnet/framework/ui-automation/implementing-the-ui-automation-expandcollapse-control-pattern). -- The control has a [ControlType](https://docs.microsoft.com/dotnet/framework/ui-automation/ui-automation-support-for-the-menubar-control-type) property value . -- The control supports the [Name](https://docs.microsoft.com/dotnet/api/system.windows.automation.automationelement.nameproperty) property and the[Expand/Collapse pattern](https://docs.microsoft.com/dotnet/framework/ui-automation/implementing-the-ui-automation-expandcollapse-control-pattern). -- The control supports [AccessibleEvents](https://docs.microsoft.com/dotnet/api/system.windows.forms.accessibleevents) indicating StateChange and NameChange when drop down is expanded or collapsed. -- The control has a [ControlType](https://docs.microsoft.com/dotnet/framework/ui-automation/ui-automation-support-for-the-menubar-control-type) property value of . -- The control supports the [Toggle Pattern](https://docs.microsoft.com/dotnet/api/system.windows.automation.togglepattern). -- The and controls support the [Name](https://docs.microsoft.com/dotnet/api/system.windows.automation.automationelement.nameproperty) and have a [ControlType](https://docs.microsoft.com/dotnet/framework/ui-automation/ui-automation-support-for-the-spinner-control-type) of . +- The and controls support the [Expand/Collapse pattern](~/docs/framework/ui-automation/implementing-the-ui-automation-expandcollapse-control-pattern.md). +- The control has a [ControlType](~/docs/framework/ui-automation/ui-automation-support-for-the-menubar-control-type.md) property value . +- The control supports the [Name](xref:System.Windows.Automation.AutomationElement.NameProperty) property and the[Expand/Collapse pattern](~/docs/framework/ui-automation/implementing-the-ui-automation-expandcollapse-control-pattern.md). +- The control supports [AccessibleEvents](xref:System.Windows.Forms.AccessibleEvents) indicating StateChange and NameChange when drop down is expanded or collapsed. +- The control has a [ControlType](~/docs/framework/ui-automation/ui-automation-support-for-the-menubar-control-type.md) property value of . +- The control supports the [Toggle Pattern](~/docs/api/system.windows.automation.togglepattern.md). +- The and controls support the [Name](xref:System.Windows.Automation.AutomationElement.NameProperty) property and have a [ControlType](~/docs/framework/ui-automation/ui-automation-support-for-the-spinner-control-type.md) of .

-**Improvements to the PropertyGrid control** +**Improvements to the PropertyGrid control**
The .NET Framework 4.7.1 adds the following improvements to the PropertyBrowser control: -- The **Details** button in the error dialog that is displayed when the user enters an incorrect value in the control supports the [Expand/Collapse pattern](https://docs.microsoft.com/dotnet/framework/ui-automation/implementing-the-ui-automation-expandcollapse-control-pattern), state and name change notifications, and a [ControlType](https://docs.microsoft.com/dotnet/framework/ui-automation/ui-automation-support-for-the-menubar-control-type) property with a value of . +- The **Details** button in the error dialog that is displayed when the user enters an incorrect value in the control supports the [Expand/Collapse pattern](~/docs/framework/ui-automation/implementing-the-ui-automation-expandcollapse-control-pattern.md), state and name change notifications, and a [ControlType]~/docs/framework/ui-automation/ui-automation-support-for-the-menubar-control-type.md) property with a value of . - The message pane displayed when the **Details** button of the error dialog is expanded is now keyboard accessible and allows Narrator to announce the content of the error message. -- The [AccessibleRole](https://docs.microsoft.com/dotnet/api/system.windows.forms.accessiblerole) of rows in the control have changed from "Row" to "Cell". The cell maps to UIA ControlType "DataItem", which allows it to support appropriate keyboard shortcuts and Narrator announcements. -- The control rows that represent header items when the control has a property set to have a [ControlType](https://docs.microsoft.com/dotnet/framework/ui-automation/ui-automation-support-for-the-menubar-control-type) property value of . -- The control rows that represent header items when the control has a property set to support the [Expand/Collapse pattern](https://docs.microsoft.com/dotnet/framework/ui-automation/implementing-the-ui-automation-expandcollapse-control-pattern). -- Improved keyboard navigation between the grid and the ToolBar above it. Pressing "Shift-Tab" now selects the first ToolBar button, instead of the whole ToolBar +- The [AccessibleRole](xref:System.Windows.Forms.AccessibleRole) of rows in the control have changed from "Row" to "Cell". The cell maps to UIA ControlType "DataItem", which allows it to support appropriate keyboard shortcuts and Narrator announcements. +- The control rows that represent header items when the control has a property set to have a [ControlType](~/docs/framework/ui-automation/ui-automation-support-for-the-menubar-control-type.md) property value of . +- The control rows that represent header items when the control has a property set to support the [Expand/Collapse pattern](~/docs/framework/ui-automation/implementing-the-ui-automation-expandcollapse-control-pattern.md). +- Improved keyboard navigation between the grid and the ToolBar above it. Pressing "Shift-Tab" now selects the first ToolBar button, instead of the whole ToolBar. - controls displayed in High Contrast mode will now draw a focus rectangle around the ToolBar button which corresponds to the current property value. - controls displayed in High Contrast mode and with a property set to will now display the background of category headers in a highly contrasting color. -- controls better differentiates between ToolBar items with focus and the ToolBar items which indicate the current value of the control ToolBar items which indicates the current value of the property support the [Toggle Pattern](https://docs.microsoft.com/dotnet/api/system.windows.automation.togglepattern). +- controls better differentiates between ToolBar items with focus and the ToolBar items which indicate the current value of the property. This fix consists of a High Contrast change and a change for non-High Contrast scenarios. +- control ToolBar items which indicates the current value of the property support the [Toggle Pattern](xref:System.Windows.Automation.TogglePattern). - Improved Narrator support for distinguishing the selected alignment in the Alignment Picker. -- When an empty control is displayed on a form, it will now receive focus where previously it would not. +- When an empty control is displayed on a form, it will now receive focus where previously it would not.

-**Use of OS-defined colors in High Contrast themes** +**Use of OS-defined colors in High Contrast themes**
- The and controls with their property set to , which is the default style, now use OS-defined colors in High Contrast theme when selected. Previously, text and background colors were not contrasting and were hard to read. -- The , , , , and controls with their property set to **false**, used a shaded color to render text in High Contrast themes, resulting in low contrast against the background. Now these controls use "Disabled Text" color defined by the OS. This fix applies to controls with the property set to a value other than . The latter controls are rendered by the OS. +- The , , , , and controls with their property set to **false** used a shaded color to render text in High Contrast themes, resulting in low contrast against the background. Now these controls use the "Disabled Text" color defined by the OS. This fix applies to controls with the property set to a value other than . The latter controls are rendered by the OS. - now renders a visible rectangle around the content of the cell which has the current focus. Previously, this was not visible in certain High Contrast themes. - controls with a property set to **false** now use the "Disabled Text" color defined by the OS. - controls with a property set to **true** now render the associated check mark in a contrasting system color. Previously the check mark color was not contrasting enough and not visible in High Contrast themes. NOTE: Windows 10 has changed values for some high contrast system colors. Windows Forms Framework is based on the Win32 framework. For the best experience, run on the latest version of Windows and opt in to the latest OS changes by adding an app.manifest file in a test application and uncommenting the following code: -``` + +```xml         ``` -**Improved keyboard navigation** +
**Improved keyboard navigation** - When a control has its property set to and is the first control in the tab order on the form, it now displays a focus rectangle when the parent form is opened using the keyboard. Before this change, keyboard focus was on this control, but a focus indicator was not rendered. @@ -108,8 +109,8 @@ NOTE: Windows 10 has changed values for some high contrast system colors. Window ### Affected APIs -* `M:System.Windows.Forms.ToolStripDropDownButton.CreateAccessibilityInstance` -* `P:System.Windows.Forms.DomainUpDown.DomainUpDownAccessibleObject.Name` +* `M:System.Windows.Forms.ToolStripDropDownButton.CreateAccessibilityInstance` +* `P:System.Windows.Forms.DomainUpDown.DomainUpDownAccessibleObject.Name` * [MonthCalendar.AccessibilityObject](xref:System.Windows.Forms.Control.AccessibilityObject) diff --git a/Documentation/compatibility/workflow-designer-accessibility.md b/Documentation/compatibility/workflow-designer-accessibility.md index 3bcc19a13..eb3476368 100644 --- a/Documentation/compatibility/workflow-designer-accessibility.md +++ b/Documentation/compatibility/workflow-designer-accessibility.md @@ -49,7 +49,7 @@ The Windows Workflow Foundation (WF) workflow designer is improving how it works ### Recommended Action If you have an application with a re-hosted workflow designer, your application can benefit from these changes by performing either of these actions: - Recompile your application to target the .NET Framework 4.7.1. These accessibility changes are enabled by default. -- If your application targets the .NET Framework 4.7 or earlier but is running on the .NET Framework 4.7.1, you can opt out of these legacy accessibility behaviors by adding the following [AppContext switch](https://docs.microsoft.com/dotnet/framework/configure-apps/file-schema/runtime/appcontextswitchoverrides-element) to the `` section of the app.config file and set it to `false`, as the following example shows. +- If your application targets the .NET Framework 4.7 or earlier but is running on the .NET Framework 4.7.1, you can opt out of these legacy accessibility behaviors by adding the following [AppContext switch](~/docs/framework/configure-apps/file-schema/runtime/appcontextswitchoverrides-element.md) to the `` section of the app.config file and set it to `false`, as the following example shows. ``` diff --git a/Documentation/compatibility/wpf-accessibility-improvements.MD b/Documentation/compatibility/wpf-accessibility-improvements.MD index ef366266c..69e539960 100644 --- a/Documentation/compatibility/wpf-accessibility-improvements.MD +++ b/Documentation/compatibility/wpf-accessibility-improvements.MD @@ -10,7 +10,7 @@ Major NotPlanned ### Change Description -__High Contrast improvements__ +__High Contrast improvements__
- The focus for the control is now visible. In previous versions of the .NET Framework, it was not. - The text in and controls when they are selected is now easier to see than in previous .NET Framework versions. @@ -21,21 +21,21 @@ __High Contrast improvements__ - The default hyperlink style now changes to the correct theme color on mouse over. In previous versions of the .NET Framework, it did not. - The Keyboard focus on radio buttons is now visible. In previous versions of the .NET Framework, it was not. - The control's checkbox column now uses the expected colors for keyboard focus feedback. In previous versions of the .NET Framework, it did not. -- the Keyboard focus visuals are now visible on and . In previous versions of the .NET Framework, it was not. +- the Keyboard focus visuals are now visible on and controls. In previous versions of the .NET Framework, it was not.

-__Screen reader interaction improvements__ +__Screen reader interaction improvements__
- controls are now correctly announced as groups (expand/collapse) by screen readers. - controls are now correctly announced as data grid cell (localized) by screen readers. - Screen readers will now announce the name of an editable . -- controls are no longer announced as "no item in view" by screen readers. +- controls are no longer announced as "no item in view" by screen readers.

-__LiveRegion support__ +__LiveRegion support__
Screen readers such as Narrator help people know the UI contents of an application, usually by describing something about the UI that's currently focused, because that is probably the element of most interest to the user. However, if a UI element changes somewhere in the screen and it does not have the focus, the user may not be informed and miss important information. -LiveRegions are meant to solve this problem. A developer can use them to inform the screen reader or any other [UI Automation][UI Automation Overview](https://docs.microsoft.com/dotnet/framework/ui-automation/ui-automation-overview) client that an important change has been made to a UI element. The screen reader can then decide how and when to inform the user of this change. +LiveRegions are meant to solve this problem. A developer can use them to inform the screen reader or any other [UI Automation](~/docs/framework/ui-automation/ui-automation-overview.md) client that an important change has been made to a UI element. The screen reader can then decide how and when to inform the user of this change. The LiveSetting property also lets the screen reader know how important it is to inform the user of the change made to the UI. @@ -43,11 +43,11 @@ The LiveSetting property also lets the screen reader know how important it is to - [ ] Build-time break ### Recommended Action -__How to opt in or out of these changes__ +__How to opt in or out of these changes__
In order for the application to benefit from these changes, it must run on the .NET Framework 4.7.1 or later. The application can benefit from these changes in either of the following ways: -- It is recompiled to target the .NET Framework 4.7.1. These accessibility changes are enabled by default on WPF applications that target the .NET Framework 4.7.1 or later. -- It opts out of the legacy accessibility behaviors by adding the following [AppContext Switch](https://docs.microsoft.com/dotnet/framework/configure-apps/file-schema/runtime/appcontextswitchoverrides-element) in the `` section of the app config file and setting it to false, as the following example shows. +- Target the .NET Framework 4.7.1. This is the recommended approach. These accessibility changes are enabled by default on WPF applications that target the .NET Framework 4.7.1 or later. +- It opts out of the legacy accessibility behaviors by adding the following [AppContext Switch](~/docs/framework/configure-apps/file-schema/runtime/appcontextswitchoverrides-element.md) in the `` section of the app config file and setting it to `false`, as the following example shows. ```xml @@ -62,9 +62,9 @@ In order for the application to benefit from these changes, it must run on the .
``` -Applications that target the .NET Framework 4.7.1 or later and want to preserve the legacy accessibility behavior can opt in to the use of legacy accessibility features by explicitly setting this AppContext switch to ```true```. +Applications that target the .NET Framework 4.7.1 or later and want to preserve the legacy accessibility behavior can opt in to the use of legacy accessibility features by explicitly setting this AppContext switch to ```true```.
-For an overview of UI automation, see the [UI Automation Overview](https://docs.microsoft.com/dotnet/framework/ui-automation/ui-automation-overview). +For an overview of UI automation, see the [UI Automation Overview](~/docs/framework/ui-automation/ui-automation-overview.md). ### Affected APIs * `F:System.Windows.Automation.AutomationElementIdentifiers.LiveSettingProperty` From 7a54905060345051d15bcae00ac7c374a9bd128e Mon Sep 17 00:00:00 2001 From: Holly Muenchow Date: Mon, 5 Mar 2018 11:11:49 -0800 Subject: [PATCH 569/872] Updated with release notes for 6.0.8 --- releases/UWP/net-native2.0/README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/releases/UWP/net-native2.0/README.md b/releases/UWP/net-native2.0/README.md index 281019260..258bf6449 100644 --- a/releases/UWP/net-native2.0/README.md +++ b/releases/UWP/net-native2.0/README.md @@ -3,6 +3,9 @@ You can see what was included in each .NET Native 2.0 ([Microsoft.NETCore.UniversalWindowsPlatform 6.0.x](https://www.nuget.org/packages/Microsoft.NETCore.UniversalWindowsPlatform)) release below. When using Visual Studio these packages require Visual Studio 2017 Version 15.4 or later. +### UWP 6.0.8 (.NET native tools 2.0.3) (March 5th, 2018) +- Fixed a packaging and publishing issue. [570878] + ### UWP 6.0.7 (.NET native tools 2.0.3) (February 7th, 2018) - Updated ILC to copy all .pdb files to the output .appxsyms, including ones that do not have matching binaries. [524755] From 444496cef0dd4285d24998f89c1653d758be6be5 Mon Sep 17 00:00:00 2001 From: alirizaadiyahsi Date: Wed, 7 Mar 2018 20:51:52 +0300 Subject: [PATCH 570/872] Added new projects (#647) * Added new projects Added a new web framework, 2 new libraries and a project template * Fixed some typos --- dotnet-developer-projects.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 095768edf..95569da9e 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -65,6 +65,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [BeYourMarket](https://github.com/beyourmarket/beyourmarket) - BeYourMarket is a peer-to-peer marketplace framework http://beyourmarket.com ## Web Frameworks + * [ASP.NET Boilerplate](https://github.com/aspnetboilerplate/aspnetboilerplate) - ASP.NET Boilerplate is a general-purpose application framework specially designed for new modern web applications. It uses already familiar tools and implements best practices around them to provide you a solid development experience. * [DotVVM](https://github.com/riganti/dotvvm) - MVVM framework for people who don't like to write JavaScript, with OWIN and ASP.NET Core support and a free extension for Visual Studio 2015 and 2017. * [Nancy](https://github.com/NancyFx/Nancy) - A lightweight, low-ceremony, framework for building HTTP based services on .NET and Mono. * [NemerleWeb](https://github.com/NemerleWeb/NemerleWeb) - Web MVVM library for .Net. It uses reactive data model which allows creating rich internet applications. @@ -107,6 +108,8 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [Automatonymous](https://github.com/MassTransit/Automatonymous) - An asynchronous state machine engine with messaging support. * [Bing.RestClient](https://github.com/AdvancedREI/Bing.RestClient) - Access the Bing REST APIs from a unified client. * [BoxKite.Twitter](https://github.com/NickHodge/BoxKite.Twitter/) - Twitter .NET Client Library for the 1.1 Twitter API, incorporating REST API, User streaming and Search Streaming. Uses Reactive Extensions (Rx). + * [Castle.LoggingFacility.MsLogging](https://github.com/volosoft/castle-logging-ms-adapter) - An adapter library for Castle logging facility to support Microsoft.Extensions.Logging integration. + * [Castle Windsor ASP.NET Core / Microsoft.Extensions.DependencyInjection Adapter](https://github.com/volosoft/castle-windsor-ms-adapter) - This library is a Castle Windsor adapter for the Microsoft.Extensions.DependencyInjection NuGet package. * [Cecil](https://github.com/jbevain/cecil) - A popular library to read, modify and write .NET binaries. * [Cimbalino Toolkit](https://github.com/Cimbalino/Cimbalino-Toolkit) - A set of useful and powerful tools that will help you build your Windows Platform applications. * [CodeJam](https://github.com/rsdn/CodeJam) - Set of handy reusable .NET components that can simplify your daily work and save your time when you copy and paste your favorite helper methods and classes from one project to another. @@ -380,6 +383,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [Myrtille](https://github.com/cedrozor/myrtille) - A native HTML4/5 Remote Desktop Protocol client, HTTP gateway written in C# for .NET ## Project Templates + * [ASP.NET Core & Mvc/Angular5 Startup Template](https://github.com/aspnetboilerplate/module-zero-core-template) - This is a template to create ASP.NET Core MVC / Angular based startup projects for [ASP.NET Boilerplate](https://github.com/aspnetboilerplate/aspnetboilerplate). This project also supports multi-tenancy. * [ASP.NET MVC Boilerplate](https://github.com/ASP-NET-MVC-Boilerplate/Templates) - Professional ASP.NET MVC templates for building secure, fast, robust and adaptable web applications or sites. It provides the minimum amount of code required on top of the default MVC template provided by Microsoft. This list is just a starting point - also take a look at all the projects on [CodePlex](http://www.codeplex.com/) and on [GitHub Trending C#](https://github.com/trending?l=csharp). From 09c56c2907c0baa16a023286c0c5a0ecb582bd42 Mon Sep 17 00:00:00 2001 From: Grant Timmerman Date: Wed, 7 Mar 2018 14:41:02 -0800 Subject: [PATCH 571/872] Remove Google Apps for Work (#648) Google Apps for Work was rebranded G Suite. However, you can just say Gmail instead of G Suite Gmail. --- dotnet-consumer-projects.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dotnet-consumer-projects.md b/dotnet-consumer-projects.md index ec370e229..436ec6e03 100644 --- a/dotnet-consumer-projects.md +++ b/dotnet-consumer-projects.md @@ -18,7 +18,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [Smuxi IM](https://github.com/meebey/smuxi) - free, distributed and user-friendly IRC / Twitter / XMPP / Campfire / JabbR client for Linux, Windows and Mac OS X ## Utilities - * [Gmail Notifier Plus](https://github.com/shellscape/Gmail-Notifier-Plus) - An app to monitor multiple Gmail and Google Apps for Work Gmail accounts from a single, compact point, sitting in Windows 7/8/8.1 taskbar. + * [Gmail Notifier Plus](https://github.com/shellscape/Gmail-Notifier-Plus) - An app to monitor multiple Gmail accounts from a single, compact point, sitting in Windows 7/8/8.1 taskbar. * [YouCast](https://github.com/I3arnon/YouCast) - YouCast allows you to subscribe to video feeds on YouTube as podcasts in any standard podcatcher like iTunes, BeyondPod on Adroid or even Zune PC and so forth. * [Ember](https://github.com/Embershot/Ember) - Simple & Beautiful Screenshot App * [Waf Stopwatch](http://wafstopwatch.codeplex.com) - is an advanced stopwatch with a lap recording feature. Additionally, it provides a Countdown with alert sound. From ad0e510141d7728b04cce733aabd5074d8f77572 Mon Sep 17 00:00:00 2001 From: Ron Petrusha Date: Thu, 8 Mar 2018 11:14:50 -0800 Subject: [PATCH 572/872] Added categories list (#650) --- Documentation/compatibility/! Template.md | 2 +- Documentation/compatibility/!categories.md | 27 ++++++++++++++++++++++ 2 files changed, 28 insertions(+), 1 deletion(-) create mode 100644 Documentation/compatibility/!categories.md diff --git a/Documentation/compatibility/! Template.md b/Documentation/compatibility/! Template.md index 7afbd4656..20bb677f5 100644 --- a/Documentation/compatibility/! Template.md +++ b/Documentation/compatibility/! Template.md @@ -51,7 +51,7 @@ // * Not detectable via API analysis ### Category -[|Pick a category from BreakingChangesCategories.json|] +[|Pick a category from [the list of supported categories](!categories.md)|] // If no link is available, please remove this line [More information]([|LinkForMoreInformation|]) diff --git a/Documentation/compatibility/!categories.md b/Documentation/compatibility/!categories.md new file mode 100644 index 000000000..c52e096c0 --- /dev/null +++ b/Documentation/compatibility/!categories.md @@ -0,0 +1,27 @@ +| Category| +|---------| +|ADO.NET| +|ASP.NET| +|C#| +|ClickOnce| +|Core| +|Data| +|Debugger| +|Entity Framework| +|Globalization| +|JIT| +|LINQ| +|Managed Extensibility Framework (MEF)| +|MSBuild| +|Networking| +|Printing| +|Security| +|Serialization| +|Setup and Deployment| +|Visual Basic .NET| +|Web Applications| +|Windows Communication Foundation (WCF)| +|Windows Forms| +|Windows Presentation Foundation (WPF)| +|Windows Workflow Foundation (WF)| +|XML, XSLT| From 93c0390ff5ca758b0c4e14d0f65b428e960987e5 Mon Sep 17 00:00:00 2001 From: Ron Petrusha Date: Thu, 8 Mar 2018 11:15:07 -0800 Subject: [PATCH 573/872] Added categories list (#651) --- Documentation/compatibility/! Template.md | 2 +- Documentation/compatibility/!categories.md | 27 ++++++++++++++++++++++ 2 files changed, 28 insertions(+), 1 deletion(-) create mode 100644 Documentation/compatibility/!categories.md diff --git a/Documentation/compatibility/! Template.md b/Documentation/compatibility/! Template.md index 7afbd4656..20bb677f5 100644 --- a/Documentation/compatibility/! Template.md +++ b/Documentation/compatibility/! Template.md @@ -51,7 +51,7 @@ // * Not detectable via API analysis ### Category -[|Pick a category from BreakingChangesCategories.json|] +[|Pick a category from [the list of supported categories](!categories.md)|] // If no link is available, please remove this line [More information]([|LinkForMoreInformation|]) diff --git a/Documentation/compatibility/!categories.md b/Documentation/compatibility/!categories.md new file mode 100644 index 000000000..c52e096c0 --- /dev/null +++ b/Documentation/compatibility/!categories.md @@ -0,0 +1,27 @@ +| Category| +|---------| +|ADO.NET| +|ASP.NET| +|C#| +|ClickOnce| +|Core| +|Data| +|Debugger| +|Entity Framework| +|Globalization| +|JIT| +|LINQ| +|Managed Extensibility Framework (MEF)| +|MSBuild| +|Networking| +|Printing| +|Security| +|Serialization| +|Setup and Deployment| +|Visual Basic .NET| +|Web Applications| +|Windows Communication Foundation (WCF)| +|Windows Forms| +|Windows Presentation Foundation (WPF)| +|Windows Workflow Foundation (WF)| +|XML, XSLT| From 3e275a58fedcdb63126d7c9f3f3a53b8a6f5127d Mon Sep 17 00:00:00 2001 From: Vivek Mishra Date: Thu, 8 Mar 2018 13:38:24 -0800 Subject: [PATCH 574/872] Update 510901-BCL Apps targeting .NET-4.6.1 that use .NET Standard libraries might be broken when running on .NET 4.7.1.md Added link for Windows 10 Fall Creators Update fix --- ...rd libraries might be broken when running on .NET 4.7.1.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/releases/net471/KnownIssues/510901-BCL Apps targeting .NET-4.6.1 that use .NET Standard libraries might be broken when running on .NET 4.7.1.md b/releases/net471/KnownIssues/510901-BCL Apps targeting .NET-4.6.1 that use .NET Standard libraries might be broken when running on .NET 4.7.1.md index 6933f7625..60b04d66b 100644 --- a/releases/net471/KnownIssues/510901-BCL Apps targeting .NET-4.6.1 that use .NET Standard libraries might be broken when running on .NET 4.7.1.md +++ b/releases/net471/KnownIssues/510901-BCL Apps targeting .NET-4.6.1 that use .NET Standard libraries might be broken when running on .NET 4.7.1.md @@ -58,4 +58,6 @@ There are two ways to work around this issue: ## Resolution -[09-Jan-2018] The fix for this issue is included in the [Update for .NET Framework 4.7.1 - KB4054856](http://go.microsoft.com/fwlink/?LinkId=866028) for all platforms except Windows 10 Fall Creators Update. \ No newline at end of file +[09-Jan-2018] The fix for this issue is included in the [Update for .NET Framework 4.7.1 - KB4054856](http://go.microsoft.com/fwlink/?LinkId=866028) for all platforms except Windows 10 Fall Creators Update. + +For Windows 10 Fall Creators Update the fix is included in [KB4058258](https://support.microsoft.com/help/4058258/windows-10-update-kb4058258). From b247a61e65be563c275480339a8bafc640f99b72 Mon Sep 17 00:00:00 2001 From: Jim Carley Date: Thu, 8 Mar 2018 14:03:50 -0800 Subject: [PATCH 575/872] Compat Documentation for DevDiv 258978 (#649) * Create WF-258978.md * Update WF-258978.md * Update WF-258978.md * Update WF-258978.md * Update WF-258978.md * Update WF-258978.md * Update WF-258978.md * Update WF-258978.md * Created links to APIs * Update WF-258978.md * Unfenced some text --- Documentation/compatibility/WF-258978.md | 46 ++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 Documentation/compatibility/WF-258978.md diff --git a/Documentation/compatibility/WF-258978.md b/Documentation/compatibility/WF-258978.md new file mode 100644 index 000000000..b09703e29 --- /dev/null +++ b/Documentation/compatibility/WF-258978.md @@ -0,0 +1,46 @@ +## Avoiding endless recursion for IWorkflowInstanceManagement.TransactedCancel and IWorkflowInstanceManagement.TransactedTerminate + +### Scope +Edge + +### Version Introduced +4.7.2 + +### Source Analyzer Status +NotPlanned + +### Change Description +Under some circumstances when using or APIs to cancel or terminate a worklow service instance, the workflow instance may encounter a stack overflow due to endless recursion when the `Workflow` runtime attempts to persist the service instance as part of processing the request. The problem occurs if the workflow instance is in a state where it is waiting for some other outstanding WCF request to another service to complete. + +The `TransactedCancel` and `TransactedTerminate` operations create work items that are queued for the workflow service instance. These work items are not executed as part of the processing of the `TransactedCancel/TransactedTerminate` request. Because the workflow service instance is busy waiting for the other outstanding WCF request to complete, the work item created remains queued. The `TransactedCancel/TransactedTerminate` operation completes and control is returned back to the client. When the transaction associated with the `TransactedCancel/TransactedTerminate` operation attempts to commit, it needs to persist the workflow serivce instance state. But because there is an outstanding `WCF` request for the instance, the Workflow runtime cannot persist the workflow service instance, and an endless recursion loop leads to the stack overflow. + +Because `TransactedCancel` and `TransactedTerminate` only create a work item in memory, the fact that a transaction exists doesn't have any effect. A rollback of the transaction does not discard the work item. + +To address this issue, starting in .NET Framework 4.7.2, we have introduced an `AppSetting` that can be added to the `web.config/app.config` of the workflow service that tells it to ignore transactions for `TransactedCancel` and `TransactedTerminate`. This allows the transaction to commit without waiting for the workflow instance to persist. + +The AppSetting for this feature is named `microsoft:WorkflowServices:IgnoreTransactionsForTransactedCancelAndTransactedTerminate`. A value of `true` indicates that the transaction should be ignored, thus avoiding the stack overflow. The default value of this AppSetting is `false`, so existing workflow service instances are not affected. + + +- [x] Quirked +- [ ] Build-time break + +### Recommended Action +If you are using AppFabric or another client and are encountering a stack overflow in the workflow serivce instance when trying to cancel or terminate a workflow instance, you can add the following to the `` section of the web.config/app.config file for the workflow service: + +```xml + +``` + +If you are not encountering the problem, you do not need to do this. + + +### Affected APIs + * Not detectable via API analysis + +### Category +Windows Workflow Foundation (WF) + + + From 78ef2c3724af782574a5f2961dc25da56e375d3a Mon Sep 17 00:00:00 2001 From: Ron Petrusha Date: Thu, 8 Mar 2018 15:09:54 -0800 Subject: [PATCH 576/872] Deleting to move file to net472 branch (#653) --- Documentation/compatibility/WF-258978.md | 46 ------------------------ 1 file changed, 46 deletions(-) delete mode 100644 Documentation/compatibility/WF-258978.md diff --git a/Documentation/compatibility/WF-258978.md b/Documentation/compatibility/WF-258978.md deleted file mode 100644 index b09703e29..000000000 --- a/Documentation/compatibility/WF-258978.md +++ /dev/null @@ -1,46 +0,0 @@ -## Avoiding endless recursion for IWorkflowInstanceManagement.TransactedCancel and IWorkflowInstanceManagement.TransactedTerminate - -### Scope -Edge - -### Version Introduced -4.7.2 - -### Source Analyzer Status -NotPlanned - -### Change Description -Under some circumstances when using or APIs to cancel or terminate a worklow service instance, the workflow instance may encounter a stack overflow due to endless recursion when the `Workflow` runtime attempts to persist the service instance as part of processing the request. The problem occurs if the workflow instance is in a state where it is waiting for some other outstanding WCF request to another service to complete. - -The `TransactedCancel` and `TransactedTerminate` operations create work items that are queued for the workflow service instance. These work items are not executed as part of the processing of the `TransactedCancel/TransactedTerminate` request. Because the workflow service instance is busy waiting for the other outstanding WCF request to complete, the work item created remains queued. The `TransactedCancel/TransactedTerminate` operation completes and control is returned back to the client. When the transaction associated with the `TransactedCancel/TransactedTerminate` operation attempts to commit, it needs to persist the workflow serivce instance state. But because there is an outstanding `WCF` request for the instance, the Workflow runtime cannot persist the workflow service instance, and an endless recursion loop leads to the stack overflow. - -Because `TransactedCancel` and `TransactedTerminate` only create a work item in memory, the fact that a transaction exists doesn't have any effect. A rollback of the transaction does not discard the work item. - -To address this issue, starting in .NET Framework 4.7.2, we have introduced an `AppSetting` that can be added to the `web.config/app.config` of the workflow service that tells it to ignore transactions for `TransactedCancel` and `TransactedTerminate`. This allows the transaction to commit without waiting for the workflow instance to persist. - -The AppSetting for this feature is named `microsoft:WorkflowServices:IgnoreTransactionsForTransactedCancelAndTransactedTerminate`. A value of `true` indicates that the transaction should be ignored, thus avoiding the stack overflow. The default value of this AppSetting is `false`, so existing workflow service instances are not affected. - - -- [x] Quirked -- [ ] Build-time break - -### Recommended Action -If you are using AppFabric or another client and are encountering a stack overflow in the workflow serivce instance when trying to cancel or terminate a workflow instance, you can add the following to the `` section of the web.config/app.config file for the workflow service: - -```xml - -``` - -If you are not encountering the problem, you do not need to do this. - - -### Affected APIs - * Not detectable via API analysis - -### Category -Windows Workflow Foundation (WF) - - - From 9a1668578b5d5c882134af16298449178b901162 Mon Sep 17 00:00:00 2001 From: Ron Petrusha Date: Thu, 8 Mar 2018 15:11:28 -0800 Subject: [PATCH 577/872] Moved and renamed file from master branch (#654) --- ...in-two-iworkflowinstancemanagement-apis.md | 46 +++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 Documentation/compatibility/wcf-avoid-endless-recursion-in-two-iworkflowinstancemanagement-apis.md diff --git a/Documentation/compatibility/wcf-avoid-endless-recursion-in-two-iworkflowinstancemanagement-apis.md b/Documentation/compatibility/wcf-avoid-endless-recursion-in-two-iworkflowinstancemanagement-apis.md new file mode 100644 index 000000000..b09703e29 --- /dev/null +++ b/Documentation/compatibility/wcf-avoid-endless-recursion-in-two-iworkflowinstancemanagement-apis.md @@ -0,0 +1,46 @@ +## Avoiding endless recursion for IWorkflowInstanceManagement.TransactedCancel and IWorkflowInstanceManagement.TransactedTerminate + +### Scope +Edge + +### Version Introduced +4.7.2 + +### Source Analyzer Status +NotPlanned + +### Change Description +Under some circumstances when using or APIs to cancel or terminate a worklow service instance, the workflow instance may encounter a stack overflow due to endless recursion when the `Workflow` runtime attempts to persist the service instance as part of processing the request. The problem occurs if the workflow instance is in a state where it is waiting for some other outstanding WCF request to another service to complete. + +The `TransactedCancel` and `TransactedTerminate` operations create work items that are queued for the workflow service instance. These work items are not executed as part of the processing of the `TransactedCancel/TransactedTerminate` request. Because the workflow service instance is busy waiting for the other outstanding WCF request to complete, the work item created remains queued. The `TransactedCancel/TransactedTerminate` operation completes and control is returned back to the client. When the transaction associated with the `TransactedCancel/TransactedTerminate` operation attempts to commit, it needs to persist the workflow serivce instance state. But because there is an outstanding `WCF` request for the instance, the Workflow runtime cannot persist the workflow service instance, and an endless recursion loop leads to the stack overflow. + +Because `TransactedCancel` and `TransactedTerminate` only create a work item in memory, the fact that a transaction exists doesn't have any effect. A rollback of the transaction does not discard the work item. + +To address this issue, starting in .NET Framework 4.7.2, we have introduced an `AppSetting` that can be added to the `web.config/app.config` of the workflow service that tells it to ignore transactions for `TransactedCancel` and `TransactedTerminate`. This allows the transaction to commit without waiting for the workflow instance to persist. + +The AppSetting for this feature is named `microsoft:WorkflowServices:IgnoreTransactionsForTransactedCancelAndTransactedTerminate`. A value of `true` indicates that the transaction should be ignored, thus avoiding the stack overflow. The default value of this AppSetting is `false`, so existing workflow service instances are not affected. + + +- [x] Quirked +- [ ] Build-time break + +### Recommended Action +If you are using AppFabric or another client and are encountering a stack overflow in the workflow serivce instance when trying to cancel or terminate a workflow instance, you can add the following to the `` section of the web.config/app.config file for the workflow service: + +```xml + +``` + +If you are not encountering the problem, you do not need to do this. + + +### Affected APIs + * Not detectable via API analysis + +### Category +Windows Workflow Foundation (WF) + + + From 777174eca09838dd5adee27ac5eca4c28bbdc91a Mon Sep 17 00:00:00 2001 From: Max Kerr Date: Thu, 8 Mar 2018 15:21:29 -0800 Subject: [PATCH 578/872] Add compatibility document for special relative URI notation NRE. (#652) * Add documentaion. * Change NRE to NullReferenceException. * Add links. * Change unusual to certain. * Address review feedback. * Update uri-unicode-scheme-only-relative.md * Update uri-unicode-scheme-only-relative.md * Update uri-unicode-scheme-only-relative.md --- .../uri-unicode-scheme-only-relative.md | 40 +++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 Documentation/compatibility/uri-unicode-scheme-only-relative.md diff --git a/Documentation/compatibility/uri-unicode-scheme-only-relative.md b/Documentation/compatibility/uri-unicode-scheme-only-relative.md new file mode 100644 index 000000000..75b730f87 --- /dev/null +++ b/Documentation/compatibility/uri-unicode-scheme-only-relative.md @@ -0,0 +1,40 @@ +## Support special relative URI notation when Unicode is present + +### Scope +Edge + +### Version Introduced +4.7.2 + +### Source Analyzer Status +NotPlanned + +### Change Description + + will no longer throw a when calling on certain relative URIs containing Unicode. + +The simplest reproduction of the is below, with the two statements being equivalent: + ```csharp +bool success = Uri.TryCreate("http:%C3%A8", UriKind.RelativeOrAbsolute, out Uri href); +bool success = Uri.TryCreate("http:è", UriKind.RelativeOrAbsolute, out Uri href); + ``` +To reproduce the , the following items must be true: +- The URI must be specified as relative by prepending it with ‘http:’ and not following it with ‘//’. +- The URI must contain percent-encoded Unicode or unreserved symbols. + +- [ ] Quirked +- [ ] Build-time break + +### Recommended Action +Users depending on this behavior to disallow relative URIs should instead specify when creating a URI. + +### Affected APIs +* `Overload:System.Uri.TryCreate` + +### Category +Core + + From 4a11f4005fd6f2797f376cb30790de1330bb7c01 Mon Sep 17 00:00:00 2001 From: Max Kerr Date: Thu, 8 Mar 2018 16:03:36 -0800 Subject: [PATCH 579/872] Add compatibility document for System.Uri consistent reserved character set (#655) * Draft in progress. * Change scope. * Update uri-reserved-characters-consistent.md * Address comments. --- .../uri-reserved-characters-consistent.md | 45 +++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 Documentation/compatibility/uri-reserved-characters-consistent.md diff --git a/Documentation/compatibility/uri-reserved-characters-consistent.md b/Documentation/compatibility/uri-reserved-characters-consistent.md new file mode 100644 index 000000000..92b45fcc6 --- /dev/null +++ b/Documentation/compatibility/uri-reserved-characters-consistent.md @@ -0,0 +1,45 @@ +## Ensure System.Uri uses a consistent reserved character set + +### Scope +Minor + +### Version Introduced +4.7.2 + +### Source Analyzer Status +NotPlanned + +### Change Description +In , certain percent-encoded characters that were sometimes decoded are now consistently left encoded. This occurs across the properties and methods that access the path, query, fragment, or userinfo components of the URI. +The behavior will change only when both of the following are true: + - The URI contains the encoded form of any of the following reserved characters: `:`, `'`, `(`, `)`, `!` or `*`. + - The URI contains a Unicode or encoded non-reserved character. +If both of the above are true, the encoded reserved characters are left encoded. In previous versions of the .NET Framework, they are decoded. + +- [x] Quirked +- [ ] Build-time break + +### Recommended Action +For applications that target versions of .NET Framework starting with 4.7.2, the new decoding behavior is enabled by default. If this change is undesirable, you can disable it by adding the following [AppContextSwitchOverrides](~/docs/framework/configure-apps/file-schema/runtime/appcontextswitchoverrides-element.md) switch to the `` section of the application configuration file: +```xml + + + +``` +For applications that target earlier versions of the .NET Framework but are running under versions starting with .NET Framework 4.7.2, the new decoding behavior is disabled by default. You can enable it by adding the following [AppContextSwitchOverrides](~/docs/framework/configure-apps/file-schema/runtime/appcontextswitchoverrides-element.md) switch to the `` section of the application configuration file:: +```xml + + + +``` + +### Affected APIs +* `T:System.Uri` + +### Category +Core + + From 0c8591cc88aab4aa1d2acbba0f5cfd3edb3430d5 Mon Sep 17 00:00:00 2001 From: Eaton Date: Mon, 12 Mar 2018 12:30:19 -0400 Subject: [PATCH 580/872] Update Early Access Info (#642) * Update Early Access Info Updated early access version and removed old release notes link. * Updated per requested changes --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index beb3aa3ff..063d72f2e 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ This repository is a starting point to learn about and engage in .NET and .NET o This repo is not an official .NET Framework support location, however, we will respond to issues filed here as best we can. Please file .NET Core product issues at [dotnet/core](https://github.com/dotnet/core/issues) and ASP.NET Core product issues at [aspnet/home](https://github.com/aspnet/home/issues). -You can try out the [.NET Framework 4.7.1](https://github.com/Microsoft/dotnet/blob/master/releases/net471/README.md) at the [.NET Framework Early Access](https://github.com/microsoft/dotnet-framework-early-access) site. +You can try out an early access release of the .NET Framework at the [.NET Framework Early Access](https://github.com/microsoft/dotnet-framework-early-access) site. ## In this repository From 24dd15cf5eca2d85324d68f063bc76911ae68583 Mon Sep 17 00:00:00 2001 From: Arpit Dev Mathur Date: Mon, 12 Mar 2018 09:43:18 -0700 Subject: [PATCH 581/872] Create Keytips behavior improved in WPF.md (#656) * Create Keytips behavior improved in WPF.md * Update Keytips behavior improved in WPF.md Made suggested changes and added xref links to SystemKey, Alt and F11. * Update Keytips behavior improved in WPF.md --- .../Keytips behavior improved in WPF.md | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 Documentation/compatibility/Keytips behavior improved in WPF.md diff --git a/Documentation/compatibility/Keytips behavior improved in WPF.md b/Documentation/compatibility/Keytips behavior improved in WPF.md new file mode 100644 index 000000000..3f0c6f871 --- /dev/null +++ b/Documentation/compatibility/Keytips behavior improved in WPF.md @@ -0,0 +1,30 @@ +## Keytips behavior improved in WPF + +### Scope +Edge + +### Version Introduced +4.7.2 + +### Source Analyzer Status +NotPlanned + +### Change Description +Keytips behavior has been modified to bring parity with behavior on Microsoft Word and Windows Explorer. By checking whether keytip state is enabled or not in the case of a [SystemKey](xref:System.Windows.Input.KeyEventArgs.SystemKey) (in particular, [Alt](xref:System.Windows.Input.Key) or [F11](xref:System.Windows.Input.Key.F11)) being pressed, WPF handles keytip keys appropriately. Keytips now dismiss a menu even when it is opened by mouse. + +- [ ] Quirked +- [ ] Build-time break + +### Recommended Action +N/A + +### Affected APIs +* Not detectable via API analysis + +### Category +Windows Presentation Foundation (WPF) + + From 79f71e4ecc6d182c698feec81a30cb681170126f Mon Sep 17 00:00:00 2001 From: Max Kerr Date: Mon, 12 Mar 2018 10:04:27 -0700 Subject: [PATCH 582/872] Compatibility doc: Allow Unicode in URIs that resemble UNC shares (#662) * Initial draft. * Minor change to repro conditions. * Add colon to scheme. * Address feedback. --- .../uri-unc-shares-normalized.md | 33 +++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 Documentation/compatibility/uri-unc-shares-normalized.md diff --git a/Documentation/compatibility/uri-unc-shares-normalized.md b/Documentation/compatibility/uri-unc-shares-normalized.md new file mode 100644 index 000000000..16d9d2b7e --- /dev/null +++ b/Documentation/compatibility/uri-unc-shares-normalized.md @@ -0,0 +1,33 @@ +## Allow Unicode in URIs that resemble UNC shares + +### Scope +Edge + +### Version Introduced +4.7.2 + +### Source Analyzer Status +NotPlanned + +### Change Description +In , constructing a file URI containing both a UNC share name and Unicode characters will no longer result in a URI with invalid internal state. The behavior will change only when all of the following are true: + - The URI has the scheme `file:` and is followed by four or more slashes. + - The host name begins with an underscore or other non-reserved symbol. + - The URI contains Unicode characters. + +- [ ] Quirked +- [ ] Build-time break + +### Recommended Action +Applications working with URIs consistently containing Unicode could have conceivably used this behavior to disallow references to UNC shares. Those applications should use instead. + +### Affected APIs +* `T:System.Uri` + +### Category +Core + + \ No newline at end of file From d5bd1fcaff73cea612983200393a79e1ae8c0f92 Mon Sep 17 00:00:00 2001 From: Rob LaDuca Date: Tue, 13 Mar 2018 13:34:28 -0700 Subject: [PATCH 583/872] WPF Compat Doc Changes (#657) * WPF MarkupCompiler SHA256 Compat Doc DDVSO:424086 Addition of MarkupCompiler compat documentation for SHA256 change. * Compat Doc Additions Adding compat documents for the following: DDVSO:447590 DDVSO:405199 * Compat Doc Changes Fixing up wording and content. * Compat Doc Changes Addressing comments * Update wpf-MarkupCompiler-default-hash-algorithm-is-now-SHA256.md --- ...er-default-hash-algorithm-is-now-SHA256.md | 50 +++++++++++++++++ ...selection-does-not-follow-system-colors.md | 41 ++++++++++++++ ...lays-correctly-when-there-is-no-content.md | 56 +++++++++++++++++++ 3 files changed, 147 insertions(+) create mode 100644 Documentation/compatibility/wpf-MarkupCompiler-default-hash-algorithm-is-now-SHA256.md create mode 100644 Documentation/compatibility/wpf-TextBox-PasswordBox-text-selection-does-not-follow-system-colors.md create mode 100644 Documentation/compatibility/wpf-focus-visual-for-radiobutton-and-checkbox-displays-correctly-when-there-is-no-content.md diff --git a/Documentation/compatibility/wpf-MarkupCompiler-default-hash-algorithm-is-now-SHA256.md b/Documentation/compatibility/wpf-MarkupCompiler-default-hash-algorithm-is-now-SHA256.md new file mode 100644 index 000000000..a312028ad --- /dev/null +++ b/Documentation/compatibility/wpf-MarkupCompiler-default-hash-algorithm-is-now-SHA256.md @@ -0,0 +1,50 @@ +## The default hash algorithm for WPF's Markup Compiler is now SHA256 + +### Scope +Transparent + +### Version Introduced +4.7.2 + +### Source Analyzer Status +NotPlanned + +### Change Description +The WPF MarkupCompiler provides compilation services for XAML markup files. In the .NET Framework 4.7.1 and earlier versions, the default hash algorithm used for checksums was SHA1. +Due to recent security concerns with SHA1, this default has been changed to SHA256 starting with the .NET Framework 4.7.2. This change affects all checksum generation for markup files during compilation. + +- [X] Quirked +- [ ] Build-time break + +### Recommended Action +A developer who targets .NET Framework 4.7.2 or greater and wants to revert to SHA1 hashing behavior must set the following AppContext flag. + +```xml + + + + + +``` + +A developer who wants to utilize SHA256 hashing while targeting a framework version below .NET 4.7.2 must set the below AppContext flag. Note that the installed version of the .NET Framework must be 4.7.2 or greater. + +```xml + + + + + +``` + +### Affected APIs +Not detectable via API analysis + +### Category +Windows Presentation Foundation (WPF) + + \ No newline at end of file diff --git a/Documentation/compatibility/wpf-focus-visual-for-radiobutton-and-checkbox-displays-correctly-when-there-is-no-content.md b/Documentation/compatibility/wpf-focus-visual-for-radiobutton-and-checkbox-displays-correctly-when-there-is-no-content.md new file mode 100644 index 000000000..992d4c2ad --- /dev/null +++ b/Documentation/compatibility/wpf-focus-visual-for-radiobutton-and-checkbox-displays-correctly-when-there-is-no-content.md @@ -0,0 +1,56 @@ +## WPF FocusVisual for RadioButton and CheckBox Now Displays Correctly When The Controls Have No Content + +### Scope +Edge + +### Version Introduced +4.7.2 + +### Source Analyzer Status +NotPlanned + +### Change Description +In the .NET Framework 4.7.1 and earlier versions, WPF and have inconsistent and, in Classic and High Contrast themes, +incorrect focus visuals. These issues occur in cases where the controls do not have any content set. This can make the transition between themes confusing and the focus visual hard to see. +In the .NET Framework 4.7.2, these visuals are now more consistent across themes and more easily visible in Classic and High Contrast themes. + +- [X] Quirked +- [ ] Build-time break + +### Recommended Action +A developer targeting .NET Framework 4.7.2 that wants to revert to the behavior in .NET 4.7.1 will need to set the following AppContext flag. + +```xml + + + + + +``` + +A developer who wants to utilize this change while targeting a framework version below .NET 4.7.2 must set the following AppContext flags. + +Note that all the flags must be set appropriately and the installed version of the .NET Framework must be 4.7.2 or greater. + +WPF applications are required to opt in to all earlier accessibility improvements to get the latest improvements. +To do this, ensure that both the AppContext switches 'Switch.UseLegacyAccessibilityFeatures' and 'Switch.UseLegacyAccessibilityFeatures.2' are set to false. + +```xml + + + + + +``` + +### Affected APIs +Not detectable via API analysis + +### Category +Windows Presentation Foundation (WPF) + + + + From 5ea44eae980a289c5b38275caac9a3ec0a0a3ff0 Mon Sep 17 00:00:00 2001 From: miguep <32345992+miguep@users.noreply.github.com> Date: Tue, 13 Mar 2018 15:18:25 -0700 Subject: [PATCH 584/872] Breaking change doc for 445603 (#659) * Breaking change doc for 445603 Breaking change doc for 445603: Cannot tab out of ElementHost if it's contained inside a WindowsFormsHost * Breaking change doc for 445603 addressing feedback * Breaking change doc for 445603 forgot to save my last few changes before committing * Update wpf-KB-focus-now-moves-correctly-across-hosting-scenarios.md --- ...oves-correctly-across-hosting-scenarios.md | 53 +++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 Documentation/compatibility/wpf-KB-focus-now-moves-correctly-across-hosting-scenarios.md diff --git a/Documentation/compatibility/wpf-KB-focus-now-moves-correctly-across-hosting-scenarios.md b/Documentation/compatibility/wpf-KB-focus-now-moves-correctly-across-hosting-scenarios.md new file mode 100644 index 000000000..df12e2aea --- /dev/null +++ b/Documentation/compatibility/wpf-KB-focus-now-moves-correctly-across-hosting-scenarios.md @@ -0,0 +1,53 @@ +## Keyboard focus now moves correctly across multiple layers of WinForms/WPF hosting + +### Scope +Edge + +### Version Introduced +4.7.2 + +### Source Analyzer Status +NotPlanned + +### Change Description +Consider a WPF application hosting a WinForms control which in turn hosts WPF controls. Users may not be able to tab out of the WinForms layer if the first or last control in that layer is the WPF `System.Windows.Forms.Integration.ElementHost`. This change fixes this issue, and users are now able to tab out of the WinForms layer. + +Automated applications that rely on focus never escaping the WinForms layer may no longer work as expected. + +- [x] Quirked +- [ ] Build-time break + +### Recommended Action +A developer who wants to utilize this change while targeting a framework version below .NET 4.7.2 can set the following set of AppContext flags to false for the change to be enabled. + +```xml + + + + + +``` + +WPF applications must opt in to all early accessibility improvements to get the later improvements. In other words, both the `Switch.UseLegacyAccessibilityFeatures` and the `Switch.UseLegacyAccessibilityFeatures.2` switches must be set + +A developer who requires the previous functionality while targeting .NET 4.7.2 or greater can set the following AppContext flag to true for the change to be disabled. + +```xml + + + + + +``` + +### Affected APIs +* Not detectable via API analysis + +### Category +Windows Presentation Foundation (WPF) + + + + From 474e01eb8989e8872d8ab30ce76584135560215a Mon Sep 17 00:00:00 2001 From: Vivek Mishra Date: Tue, 13 Mar 2018 18:27:43 -0700 Subject: [PATCH 585/872] Update 523633 - Setup - OS upgrade to Windows 10 gets the product in bad state.md --- ... - OS upgrade to Windows 10 gets the product in bad state.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/releases/net471/KnownIssues/523633 - Setup - OS upgrade to Windows 10 gets the product in bad state.md b/releases/net471/KnownIssues/523633 - Setup - OS upgrade to Windows 10 gets the product in bad state.md index 499b8cd55..920a78b73 100644 --- a/releases/net471/KnownIssues/523633 - Setup - OS upgrade to Windows 10 gets the product in bad state.md +++ b/releases/net471/KnownIssues/523633 - Setup - OS upgrade to Windows 10 gets the product in bad state.md @@ -20,4 +20,4 @@ Applications may experience unexpected crashes in certain scenarios. Note: This issue does not occur when you do an upgrade from Windows 10 Anniversary Update (version 1607) to Windows 10 Fall Creators Update (version 1709). ## Resolution -To get the .NET Framework 4.7.1 product into a working state, you need to reinstall .NET 4.7.1. +To get the .NET Framework 4.7.1 product into a working state, you need to reinstall [.NET Framework 4.7.1](http://go.microsoft.com/fwlink/?LinkId=852107). From 39028184d51326db92602574afaf87aa9e6f7580 Mon Sep 17 00:00:00 2001 From: Alicia Li Date: Wed, 14 Mar 2018 12:48:09 -0700 Subject: [PATCH 586/872] Alicial/net472 wcfcompatdoc (#658) * Add WCF compat doc for bug#516393 * Minor updates to address review feedbacks * Minor update to address review feedback * updates to address Ron's review feedbacks * Minor updates per Ron's review feedbacks --- ...-for-Net.Tcp-certificate-authentication.md | 33 +++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 Documentation/compatibility/WCF-Improved-WCF-chain-trust-certificate-validation-for-Net.Tcp-certificate-authentication.md diff --git a/Documentation/compatibility/WCF-Improved-WCF-chain-trust-certificate-validation-for-Net.Tcp-certificate-authentication.md b/Documentation/compatibility/WCF-Improved-WCF-chain-trust-certificate-validation-for-Net.Tcp-certificate-authentication.md new file mode 100644 index 000000000..5c36dbd82 --- /dev/null +++ b/Documentation/compatibility/WCF-Improved-WCF-chain-trust-certificate-validation-for-Net.Tcp-certificate-authentication.md @@ -0,0 +1,33 @@ +## Improved WCF chain trust certificate validation for Net.Tcp certificate authentication + +### Scope +Minor + +### Version Introduced +4.7.2 + +### Source Analyzer Status +NotPlanned + +### Change Description +.NET Framework 4.7.2 improves chain trust certificate validation when using certificate authentication with transport security with WCF. With this improvement, client certificates that are used to authenticate to a server must be configured for client authentication. Similarly server certificates that are for the authenticating a server must be configured for server authentication. With this change, if the root certificate is disabled, the certificate chain validation fails. The same change was also made to .NET Framework 3.5 and later versions via Windows security roll-up. You can find more information [here](https://support.microsoft.com/en-us/help/4055269/security-only-update-for-net-framework-3-5-1-4-5-2-4-6-4-6-1-4-6-2-4-7). + +This change is on by default and can be turned off by a configuration setting. + +### Recommended Action + - Validate if your server and client certification has the required EKU OID. If not, update your certification. + - Validate if your root certificate is invalid. If so, update the root certificate. + - How to opt out of the change: + If you can't update the certificate, you can work around the breaking change temporarily with the following configration setting, However, opting out of the change will leave your system vulnerable to the security issue. + +```xml + + + + ``` + +### Affected APIs +* Not detectable via API analysis + +### Category +Runtime \ No newline at end of file From 7798cd62f93e8c69bbd0f0420add2ed0a4cb66e8 Mon Sep 17 00:00:00 2001 From: Tanya Solyanik Date: Thu, 15 Mar 2018 08:46:40 -0700 Subject: [PATCH 587/872] compat docs for bug 126279 and 460662 (#666) * Work In Progress * ready for the review * removed links to VSO * incorporated Ron's feedback * Update winforms-ContextMenuStrip-SourceControl-property-change.md --- ...MenuStrip-SourceControl-property-change.md | 43 ++++++++++++++++++ ...vateFontCollection-Font-handle-leak-fix.md | 45 +++++++++++++++++++ 2 files changed, 88 insertions(+) create mode 100644 Documentation/compatibility/winforms-ContextMenuStrip-SourceControl-property-change.md create mode 100644 Documentation/compatibility/winforms-PrivateFontCollection-Font-handle-leak-fix.md diff --git a/Documentation/compatibility/winforms-ContextMenuStrip-SourceControl-property-change.md b/Documentation/compatibility/winforms-ContextMenuStrip-SourceControl-property-change.md new file mode 100644 index 000000000..f86afe2fc --- /dev/null +++ b/Documentation/compatibility/winforms-ContextMenuStrip-SourceControl-property-change.md @@ -0,0 +1,43 @@ +## ContextMenuStrip.SourceControl property contains a valid control in the case of nested ToolStripMenuItems + +### Scope +Edge + +### Version Introduced +4.7.2 + +### Source Analyzer Status +NotPlanned + +### Change Description +In the .NET Framework 4.7.1 and previous versions, the property incorrectly returns null when the user opens the menu from nested controls. +In the .NET Framework 4.7.2 and later, property is always set to the actual source control. + +- [X] Quirked +- [ ] Build-time break + +### Recommended Action +__How to opt in or out of these changes__ + +In order for an application to benefit from these changes, it must run on the .NET Framework 4.7.2 or later. The application can benefit from these changes in either of the following ways: +- It is recompiled to target the .NET Framework 4.7.2. This change is enabled by default on Windows Forms applications that target the .NET Framework 4.7.2 or later. +- It targets the .NET Framework 4.7.1 or an earlier version and opts out of the legacy accessibility behaviors by adding the following [AppContext Switch](https://docs.microsoft.com/dotnet/framework/configure-apps/file-schema/runtime/appcontextswitchoverrides-element) to the `` section of the app.config file and setting it to `false`, as the following example shows. +``` + + + +``` +Applications that target the .NET Framework 4.7.2 or later, and want to preserve the legacy behavior can opt in to the use of the legacy source control value by explicitly setting this AppContext switch to `true`. + + +### Affected APIs + * `P:System.Windows.Forms.ContextMenuStrip.SourceControl` + +### Category +Windows Forms + + + + diff --git a/Documentation/compatibility/winforms-PrivateFontCollection-Font-handle-leak-fix.md b/Documentation/compatibility/winforms-PrivateFontCollection-Font-handle-leak-fix.md new file mode 100644 index 000000000..c0ad6789a --- /dev/null +++ b/Documentation/compatibility/winforms-PrivateFontCollection-Font-handle-leak-fix.md @@ -0,0 +1,45 @@ +## PrivateFontCollection.AddFontFile method releases Font resources + +### Scope +Edge + +### Version Introduced +4.7.2 + +### Source Analyzer Status +NotPlanned + +### Change Description +In the .NET Framework 4.7.1 and previous versions, the class does not release the GDI+ font resources after the is disposed for objects that are added to this collection using the method. +In the .NET Framework 4.7.2 and later releases the GDI+ fonts that were added to the collection as files. + +- [X] Quirked +- [ ] Build-time break + +### Recommended Action +__How to opt in or out of these changes__ + +In order for an application to benefit from these changes, it must run on the .NET Framework 4.7.2 or later. The application can benefit from these changes in either of the following ways: +- It is recompiled to target the .NET Framework 4.7.2. This change is enabled by default on Windows Forms applications that target the .NET Framework 4.7.2 or later. +- It targets the .NET Framework 4.7.1 or an earlier version and opts out of the legacy accessibility behaviors by adding the following [AppContext Switch](https://docs.microsoft.com/dotnet/framework/configure-apps/file-schema/runtime/appcontextswitchoverrides-element) to the `` section of the app.config file and setting it to `false`, as the following example shows. +``` + + + +``` +Applications that target the .NET Framework 4.7.2 or later, and want to preserve the legacy behavior can opt in to not release font resources by explicitly setting this AppContext switch to `true`. + + +### Affected APIs +* `M:System.Drawing.Text.PrivateFontCollection.AddFontFile(System.String)` +* `M:System.Drawing.Text.PrivateFontCollection.Dispose()` + +### Category +Windows Forms + + + + + From 6cc10c2fa6b4f4c4cfd2a5812f5244742eb92c7a Mon Sep 17 00:00:00 2001 From: merriemcgaw Date: Sat, 17 Mar 2018 09:36:04 -0700 Subject: [PATCH 588/872] added 472 Winforms compat (#661) * added 472 Winforms compat * Round 2- Compat Updated per Ron's comments. * Devendar's Doc * Revert "Devendar's Doc" This reverts commit d487928c2d2a171acbf644dd5356396dbeb7fcee. * DomainUpDown Devendar's change * Revert "Round 2- Compat" This reverts commit 2f88285aef7fb53bb2c3c1f23778c7980ac3a912. * Updates to DomainUpDown Adding affected APIs and a couple of typos. * Update winforms-accessibility-changes-472.md * Incorporating Feedback Incorporating feedback * Made consistent Removed Not Quirked and replaced with missing build time break indicator. * Latest changes Hopefully we've got most of the issues sorted out now. * Last changes --- ...nUpDownControl-button's-actions-in-sync.md | 41 +++++++ .../winforms-accessibility-changes-472.md | 109 ++++++++++++++++++ 2 files changed, 150 insertions(+) create mode 100644 Documentation/compatibility/winform's-DomainUpDownControl-button's-actions-in-sync.md create mode 100644 Documentation/compatibility/winforms-accessibility-changes-472.md diff --git a/Documentation/compatibility/winform's-DomainUpDownControl-button's-actions-in-sync.md b/Documentation/compatibility/winform's-DomainUpDownControl-button's-actions-in-sync.md new file mode 100644 index 000000000..029a55236 --- /dev/null +++ b/Documentation/compatibility/winform's-DomainUpDownControl-button's-actions-in-sync.md @@ -0,0 +1,41 @@ +## WinForm's Domain upbutton and downbutton actions are in sync now + +### Scope +Edge + +### Version Introduced +4.7.2 + +### Source Analyzer Status +Not planned + +### Change Description +In the .NET Framework 4.7.1 and previous versions the +control's +action is ignored when control text is present, and the developer is required to use action on the control before using action. +Starting with the .NET Framework 4.7.2 both the and actions work independently in this scenario and remain in sync. + +- [X] Quirked +- [ ] Build-time break + +### Recommended Action + +In order for an application to benefit from these changes, it must run on the .NET Framework 4.7.2 or later. The application can benefit from these changes in either of the following ways: +- It is recompiled to target the .NET Framework 4.7.2. This change is enabled by default on Windows Forms applications that target the .NET Framework 4.7.2 or later. +- It opts out of the legacy scrolling behavior by adding the following +- [AppContext Switch](https://docs.microsoft.com/dotnet/framework/configure-apps/file-schema/runtime/appcontextswitchoverrides-element) to the `` section of the app config file and setting it to `false`, as the following example shows. +- ``` + + + +``` + +### Affected APIs +`M:System.Windows.Forms.DomainUpDown.UpButton` +`M:System.Windows.Forms.DomainUpDown.DownButton` + + +### Category +Windows Forms + + diff --git a/Documentation/compatibility/winforms-accessibility-changes-472.md b/Documentation/compatibility/winforms-accessibility-changes-472.md new file mode 100644 index 000000000..b9479ef0a --- /dev/null +++ b/Documentation/compatibility/winforms-accessibility-changes-472.md @@ -0,0 +1,109 @@ +## Accessibility improvements in Windows Forms controls for .NET 4.7.2 + +### Scope +Major + +### Version Introduced +4.7.2 + +### Source Analyzer Status +NotPlanned + +### Change Description +Windows Forms Framework is improving how it works with accessibility technologies to better support Windows Forms customers. These include the following changes: +- Changes to improve display during High Contrast mode. +- Changes to improve the keyboard navigation in the DataGridView and MenuStrip controls. +- Changes to interaction with Narrator. + +- [x] Quirked +- [ ] Build-time break + +### Recommended Action +__How to opt in or out of these changes__ + +In order for the application to benefit from these changes, it must run on the .NET Framework 4.7.2 or later. The application can benefit from these changes in either of the following ways: +- It is recompiled to target the .NET Framework 4.7.2. These accessibility changes are enabled by default on Windows Forms applications that target the .NET Framework 4.7.2 or later. +- It targets the .NET Framework 4.7.1 or earlier version and opts out of the legacy accessibility behaviors by adding the following [AppContext Switch](https://docs.microsoft.com/dotnet/framework/configure-apps/file-schema/runtime/appcontextswitchoverrides-element) to the `` section of the app config file and setting it to `false`, as the following example shows. + +```xml + + + + + + + + + + +``` +Note that to opt in to the accessibility features added in .NET Framework 4.7.2, you must also opt in to accessibility features of .NET Framework 4.7.1 as well. +Applications that target the .NET Framework 4.7.2 or later and want to preserve the legacy accessibility behavior can opt in to the use of legacy accessibility features by explicitly setting this AppContext switch to `true`. + +__Use of OS-defined colors in High Contrast themes__ +- The drop down arrow arrow of the now uses OS-defined colors in High Contrast theme. +- , and controls with set to or now use OS-defined colors in High Contrast theme when selected. Previously, text and background colors were not contrasting and were hard to read. +- Controls contained within a that has its property set to `false` will now use OS-defined colors in High Contrast theme. +- The, , and controls have an increased luminosity contrast ratio in High Contrast Mode. +- will by default use OS-defined colors in High Contrast mode for the property. + +NOTE: Windows 10 has changed values for some high contrast system colors. Windows Forms Framework is based on the Win32 framework. For the best experience, run on the latest version of Windows and opt in to the latest OS changes by adding an app.manifest file in a test application and uncommenting the following code: +``` +     +     +``` + +__Improved Narrator support__ +- Narrator now announces the value of the property when announcing the text of a . +- Narrator now indicates when a has its property set to `false`. +- Narrator now gives feedback on the state of a check box when the property is set to `true`. +- Narrator Scan Mode focus order is now consistent with the visual order of the controls on the ClickOnce download dialog window. + +__Improved DataGridView Accessibility support__ +- Rows in a can now be sorted using the keyboard. Now a user can use the F3 key in order to sort by the current column. +- When the is set to , the column header will change color to indicate the current column as the user tabs through the cells in the current row. +- The property now returns the correct parent control. + +__Improved Visual cues__ +- The and controls with an empty property will now display a focus indicator when they recieve focus. + +__Improved Property Grid Support__ +- The control child elements now return a `true` for the property only when a PropertyGrid element is enabled. +- The control child elements now return a `false` for the property only when a PropertyGrid element can be changed by the user. + +For an overview of UI automation, see the [UI Automation Overview](https://docs.microsoft.com/dotnet/framework/ui-automation/ui-automation-overview). + + +__Improved keyboard navigation__ +- now allows focus when contained within a that has the property set to `true` + + + +### Affected APIs + + + +### Category +Windows Forms + + + + + From d6e57c9669835bcdc50e93ceb67ee1e7b49a161a Mon Sep 17 00:00:00 2001 From: John Erickson Date: Tue, 20 Mar 2018 10:35:23 -0700 Subject: [PATCH 589/872] =?UTF-8?q?Update=20534719-Networking=20ServicePoi?= =?UTF-8?q?nt.ConnectionLimit=20default=20behavio=E2=80=A6=20(#664)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Update 534719-Networking ServicePoint.ConnectionLimit default behavior with loopback changed unexpectedly.md * Update known issue 534719 to describe broader impact --- ...vior with loopback changed unexpectedly.md | 73 ------------------- ...onnectionLimit default behavior changed.md | 64 ++++++++++++++++ releases/net471/dotnet471-known-issues.md | 2 +- 3 files changed, 65 insertions(+), 74 deletions(-) delete mode 100644 releases/net471/KnownIssues/534719-Networking ServicePoint.ConnectionLimit default behavior with loopback changed unexpectedly.md create mode 100644 releases/net471/KnownIssues/534719-Networking.ServicePoint.ConnectionLimit default behavior changed.md diff --git a/releases/net471/KnownIssues/534719-Networking ServicePoint.ConnectionLimit default behavior with loopback changed unexpectedly.md b/releases/net471/KnownIssues/534719-Networking ServicePoint.ConnectionLimit default behavior with loopback changed unexpectedly.md deleted file mode 100644 index c6ca2d76f..000000000 --- a/releases/net471/KnownIssues/534719-Networking ServicePoint.ConnectionLimit default behavior with loopback changed unexpectedly.md +++ /dev/null @@ -1,73 +0,0 @@ -# ServicePoint.ConnectionLimit default behavior with loopback changed unexpectedly - -## Symptoms -The limit for HTTP connections per endpoint is controlled by the `ServicePointManager.DefaultConnectionLimit` property. -This value defaults to 2. In the .NET Framework 4.7 and earlier versions, the limit applied only to non-loopback -addresses such as http://www.microsoft.com. For loopback addresses such as http://localhost, the limit for connections -was always int.MaxValue (2,147,483,647) unless changed by calling the `ServicePoint.ConnectionLimit` API. - -In the .NET Framework 4.7.1 when using HttpClient APIs, the connection limit for loopback addresses now matches the limit -for non-loopback addresses. Thus, the default limit is 2. This can cause applications to run slower or hang when -doing multiple, parallel, requests to the http://localhost addresses. - -Here is code that shows the problem: - -```c# -using System; -using System.Net; -using System.Net.Http; - -namespace ConsoleApp -{ - class Program - { - static void Main(string[] args) - { - Console.WriteLine($"ServicePointManager.DefaultConnectionLimit: {ServicePointManager.DefaultConnectionLimit}"); - - var uriLoopback = new Uri("http://localhost/"); - var uriExternal = new Uri("http://www.microsoft.com/"); - - Console.WriteLine("Before using HttpClient APIs"); - ServicePoint spLoopback = ServicePointManager.FindServicePoint(uriLoopback); - Console.WriteLine($"{uriLoopback.AbsoluteUri}, ConnectionLimit (should be {int.MaxValue}): {spLoopback.ConnectionLimit}"); - - ServicePoint spExternal = ServicePointManager.FindServicePoint(uriExternal); - Console.WriteLine($"{uriExternal.AbsoluteUri}, ConnectionLimit (should be {ServicePointManager.DefaultConnectionLimit}): {spExternal.ConnectionLimit}"); - - Console.WriteLine("Use HttpClient APIs"); - var client = new HttpClient(); - try - { - HttpResponseMessage response = client.GetAsync(uriLoopback).Result; - } - catch (Exception) - { - // Ignore any network error since there is probably not a loopback server present. - } - - Console.WriteLine("After using HttpClient APIs"); - - // BUG - due to the bug in .NET Framework 4.7.1, the ConnectionLimit for this loopback ServicePoint is changed - // unexpectedly. - Console.WriteLine($"{uriLoopback.AbsoluteUri}, ConnectionLimit (should be {int.MaxValue}): {spLoopback.ConnectionLimit}"); - } - } -} -``` - -## Cause -Changes in .NET Framework 4.7.1 to the `System.Net.Http.HttpClientHandler` class caused this problem. - -## Resolution -To work around the problem using HttpClient APIs, you can use the following code to increase the connection limit. -This code should be added before calling any HttpClient APIs. - -```c# -ServicePointManager.DefaultConnectionLimit = 20; // Actual value should be based on your requirements. -``` - -Note: This will also change the limits for non-loopback addresses. - -## More information -We will fix this problem in a future .NET Framework Quality Rollup release. diff --git a/releases/net471/KnownIssues/534719-Networking.ServicePoint.ConnectionLimit default behavior changed.md b/releases/net471/KnownIssues/534719-Networking.ServicePoint.ConnectionLimit default behavior changed.md new file mode 100644 index 000000000..49f8defd5 --- /dev/null +++ b/releases/net471/KnownIssues/534719-Networking.ServicePoint.ConnectionLimit default behavior changed.md @@ -0,0 +1,64 @@ +# Changes to ServicePoint.ConnectionLimit are overriden by usage of HttpClient + +## Symptoms +The limit for HTTP connections per endpoint is controlled by the `ServicePointManager.DefaultConnectionLimit` property. +This value defaults to 2. This can be overriden programatically or in configuration for either specific hosts or for all hosts. In the .NET Framework 4.7.1, any usage of HttpClient APIs reverts any host-specific overrides to the default value of 2. This can cause applications to run slower or hang when doing multiple parallel requests. + +Note: This bug also changes the http://localhost host default from Int32.MaxValue to 2. + +Here is code that shows the problem: + +```c# +using System; +using System.Net; +using System.Net.Http; + +namespace ConsoleApp +{ + class Program + { + static void Main(string[] args) + { + Console.WriteLine($"ServicePointManager.DefaultConnectionLimit: {ServicePointManager.DefaultConnectionLimit}"); + + var uri = new Uri("http://www.microsoft.com/"); ; + + Console.WriteLine("Before using HttpClient APIs, before changing ConnectionLimit"); + ServicePoint sp = ServicePointManager.FindServicePoint(uri); + Console.WriteLine($"{uri.AbsoluteUri}, ConnectionLimit (should be {ServicePointManager.DefaultConnectionLimit}): {sp.ConnectionLimit}"); + sp.ConnectionLimit = 10; + Console.WriteLine("Before using HttpClient APIs, after changing ConnectionLimit"); + Console.WriteLine($"{uri.AbsoluteUri}, ConnectionLimit (should be 10): {sp.ConnectionLimit}"); + + Console.WriteLine("Use HttpClient APIs"); + var client = new HttpClient(); + try + { + HttpResponseMessage response = client.GetAsync(uri).Result; + } + catch (Exception) + { + // Ignore any network error + } + + Console.WriteLine("After using HttpClient APIs"); + + // BUG - due to the bug in .NET Framework 4.7.1, the ConnectionLimit for this ServicePoint is changed + Console.WriteLine($"{uri.AbsoluteUri}, ConnectionLimit (should be 10): {sp.ConnectionLimit}"); + } +} +``` + +## Cause +Changes in .NET Framework 4.7.1 to the `System.Net.Http.HttpClientHandler` class caused this problem. + +## Resolution +To work around the problem using HttpClient APIs, you can use the following code to increase the default connection limit for all endpoints. This will affect all connections in the process. +This code should be added before calling any HttpClient APIs. + +```c# +ServicePointManager.DefaultConnectionLimit = 20; // Actual value should be based on your requirements. +``` + +## More information +We will fix this problem in a future .NET Framework Quality Rollup release. diff --git a/releases/net471/dotnet471-known-issues.md b/releases/net471/dotnet471-known-issues.md index 551943b3c..4fe94bf3d 100644 --- a/releases/net471/dotnet471-known-issues.md +++ b/releases/net471/dotnet471-known-issues.md @@ -14,4 +14,4 @@ This document lists the known issues that you may experience after you install t - [517815 - BCL - Applications making heavy use of System.Diagnostics.StackTrace or Exception.StackTrace might run more slowly on the .NET Framework 4.7.1](https://github.com/Microsoft/dotnet/blob/master/releases/net471/KnownIssues/517815-BCL%20Applications%20making%20heavy%20use%20of%20System.Diagnostics.StackTrace%20might%20run%20more%20slowly%20on%20.NET%204.7.1.md) - [517815 - BCL - Stack traces are missing source information for frames with debug information in the Portable PDB format when running on .NET Framework 4.7.1](https://github.com/Microsoft/dotnet/blob/master/releases/net471/KnownIssues/517815-BCL%20Stack%20traces%20are%20missing%20source%20information%20for%20frames%20with%20debug%20information%20in%20the%20Portable%20PDB%20format.md) - [523633 - Setup - Application crashes occur when running on the .NET Framework 4.7.1 after upgrading from Windows 10 Anniversary Update to Windows 10 Creators Update](https://github.com/Microsoft/dotnet/blob/master/releases/net471/KnownIssues/523633%20-%20Setup%20-%20OS%20upgrade%20to%20Windows%2010%20gets%20the%20product%20in%20bad%20state.md) -- [534719 - Networking - ServicePoint.ConnectionLimit default behavior with loopback changed unexpectedly](https://github.com/Microsoft/dotnet/blob/master/releases/net471/KnownIssues/534719-Networking%20ServicePoint.ConnectionLimit%20default%20behavior%20with%20loopback%20changed%20unexpectedly.md) +- [534719 - Networking - ServicePoint.ConnectionLimit default behavior with loopback changed unexpectedly](https://github.com/Microsoft/dotnet/blob/master/releases/net471/KnownIssues/534719-Networking.ServicePoint.ConnectionLimit%20default%20behavior%20changed.md) From 6b5f9fd9146e1e17d7c5360131be6e1386a074a0 Mon Sep 17 00:00:00 2001 From: Ron Petrusha Date: Tue, 20 Mar 2018 10:50:42 -0700 Subject: [PATCH 590/872] Simplified syntax (#672) --- Documentation/compatibility/ASPNET-accessibility-improvement.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Documentation/compatibility/ASPNET-accessibility-improvement.md b/Documentation/compatibility/ASPNET-accessibility-improvement.md index 9ee08322f..64d6c025e 100644 --- a/Documentation/compatibility/ASPNET-accessibility-improvement.md +++ b/Documentation/compatibility/ASPNET-accessibility-improvement.md @@ -41,7 +41,7 @@ In order for the Visual Studio Designer to benefit from these changes, it must r ... - + ...
From acdfb1096f905ee6aaed4dba241b0578c3fabe47 Mon Sep 17 00:00:00 2001 From: Alex Ghiondea Date: Tue, 20 Mar 2018 13:25:37 -0700 Subject: [PATCH 591/872] =?UTF-8?q?Create=20553390=20-=20BCL=20-=20SGEN=20?= =?UTF-8?q?crashes=20because=20it=20references=20System.IO.Co=E2=80=A6=20(?= =?UTF-8?q?#670)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Create 553390 - BCL - SGEN crashes because it references System.IO.Compression.ZipFile.dll.md * Update 553390 - BCL - SGEN crashes because it references System.IO.Compression.ZipFile.dll.md * Update 553390 - BCL - SGEN crashes because it references System.IO.Compression.ZipFile.dll.md --- ...ences System.IO.Compression.ZipFile.dll.md | 48 +++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 releases/net471/KnownIssues/553390 - BCL - SGEN crashes because it references System.IO.Compression.ZipFile.dll.md diff --git a/releases/net471/KnownIssues/553390 - BCL - SGEN crashes because it references System.IO.Compression.ZipFile.dll.md b/releases/net471/KnownIssues/553390 - BCL - SGEN crashes because it references System.IO.Compression.ZipFile.dll.md new file mode 100644 index 000000000..ff72e19c1 --- /dev/null +++ b/releases/net471/KnownIssues/553390 - BCL - SGEN crashes because it references System.IO.Compression.ZipFile.dll.md @@ -0,0 +1,48 @@ +# SGEN crashes trying to load the System.IO.Compression.FileSystem reference assembly + +## Symptoms + +When building an application that uses the [XML Serializer Generator Tool (SGen.exe)](https://docs.microsoft.com/en-us/dotnet/standard/serialization/xml-serializer-generator-tool-sgen-exe), you get an error similar to this one: + +``` +An attempt was made to load an assembly with an incorrect format: C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.7.1\Facades\System.IO.Compression.ZipFile.dll. +``` + +## Cause + +.NET Framework 4.7.1 includes a few new assemblies in order to support .NET Standard 2.0. +For those assemblies, we added entries in a .NET Framework unification table to ensure that assemblies with different versions will correctly unify to a single one. +For the `System.IO.Compression.FileSystem` the information captured in the unification table is incorrect. + +This causes the assembly to not be correctly unified by the .NET Framework and in turn causes SGEN to give out that error. + +## Impact + +This problem occurs when building the applications that use the SGEN tool. + +## Workaround + +Add the following targets to the project that is experiencing this issue. +The targets remove the reference assemblies from the ReferencePath set that SGEN uses before the serialization assemblies are produced and adds them back after they are produced. + +```xml + + + + <_FilterOutFromReferencePath Include="@(_DesignTimeFacadeAssemblies_Names->'%(OriginalIdentity)')" + Condition="'@(DesignFacadesToFilter)' == '@(_DesignTimeFacadeAssemblies_Names)' and '%(Identity)' != ''" /> + + + + + + + + + + +``` + +## Resolution + +This problem is fixed in [.NET Framework 4.7.2](http://go.microsoft.com/fwlink/?LinkId=863281). From 864b3cfd4815bc4033768ba5e6022adf4b926ca8 Mon Sep 17 00:00:00 2001 From: Alex Ghiondea Date: Tue, 20 Mar 2018 16:21:16 -0700 Subject: [PATCH 592/872] Update dotnet471-known-issues.md --- releases/net471/dotnet471-known-issues.md | 1 + 1 file changed, 1 insertion(+) diff --git a/releases/net471/dotnet471-known-issues.md b/releases/net471/dotnet471-known-issues.md index 4fe94bf3d..5082a2dab 100644 --- a/releases/net471/dotnet471-known-issues.md +++ b/releases/net471/dotnet471-known-issues.md @@ -13,5 +13,6 @@ This document lists the known issues that you may experience after you install t - [521954 - BCL - CultureAwareComparer with ignore casing serialized on previous versions of .NET Framework does not correctly deserialize on .NET Framework 4.7.1](https://github.com/Microsoft/dotnet/blob/master/releases/net471/KnownIssues/521954%20-%20BCL%20CultureAwareComparer%20with%20ignore%20casing%20on%20serialized%20on%20previous%20versions%20of%20.NET%20do%20not%20correctly%20deserialize%20on%20.NET%204.7.1.md) - [517815 - BCL - Applications making heavy use of System.Diagnostics.StackTrace or Exception.StackTrace might run more slowly on the .NET Framework 4.7.1](https://github.com/Microsoft/dotnet/blob/master/releases/net471/KnownIssues/517815-BCL%20Applications%20making%20heavy%20use%20of%20System.Diagnostics.StackTrace%20might%20run%20more%20slowly%20on%20.NET%204.7.1.md) - [517815 - BCL - Stack traces are missing source information for frames with debug information in the Portable PDB format when running on .NET Framework 4.7.1](https://github.com/Microsoft/dotnet/blob/master/releases/net471/KnownIssues/517815-BCL%20Stack%20traces%20are%20missing%20source%20information%20for%20frames%20with%20debug%20information%20in%20the%20Portable%20PDB%20format.md) +- [553390 - BCL - SGEN crashes trying to load the System.IO.Compression.FileSystem reference assembly]( https://github.com/Microsoft/dotnet/blob/master/releases/net471/KnownIssues/553390%20-%20BCL%20-%20SGEN%20crashes%20because%20it%20references%20System.IO.Compression.ZipFile.dll.md) - [523633 - Setup - Application crashes occur when running on the .NET Framework 4.7.1 after upgrading from Windows 10 Anniversary Update to Windows 10 Creators Update](https://github.com/Microsoft/dotnet/blob/master/releases/net471/KnownIssues/523633%20-%20Setup%20-%20OS%20upgrade%20to%20Windows%2010%20gets%20the%20product%20in%20bad%20state.md) - [534719 - Networking - ServicePoint.ConnectionLimit default behavior with loopback changed unexpectedly](https://github.com/Microsoft/dotnet/blob/master/releases/net471/KnownIssues/534719-Networking.ServicePoint.ConnectionLimit%20default%20behavior%20changed.md) From 637eb3a7310cf10b6e36d4d82c2a9ab7677e6956 Mon Sep 17 00:00:00 2001 From: Hong Li Date: Wed, 21 Mar 2018 12:28:50 -0700 Subject: [PATCH 593/872] re-add ASPNET472CompatDoc (#668) * re-add ASPNET472CompatDoc * Minor edits, added links. * Minor changes, added links. * Changed targeted version, removed reverted section --- .../compatibility/aspnet-472-compat-doc.md | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 Documentation/compatibility/aspnet-472-compat-doc.md diff --git a/Documentation/compatibility/aspnet-472-compat-doc.md b/Documentation/compatibility/aspnet-472-compat-doc.md new file mode 100644 index 000000000..9271bd78f --- /dev/null +++ b/Documentation/compatibility/aspnet-472-compat-doc.md @@ -0,0 +1,29 @@ +## "dataAnnotations:dataTypeAttribute:disableRegEx" app setting is on by default in .NET Framework 4.7.2 + +### Scope +Minor + +### Version Introduced +4.6.2 + +### Change Description +In .NET Framework 4.6.1, an app setting (`"dataAnnotations:dataTypeAttribute:disableRegEx"`) was introduced that allows users to disable the use of regular expressions in data type attributes (such as , , and ). This helps to reduce security vulnerability such as avoiding the possibility of a Denial of Service attack using specific regular expressions.
+ +In .NET Framework 4.6.1, this app setting to disable RegEx usage was set to `false` by default. Staring with .NET Framework 4.7.2, this config switch is set to `true` by default to further reduce secure vulnerability for web applications that target .NET Framework 4.7.2 and above. + + +### Recommended Action +If you find that regular expressions in your web application do not work after upgrading to .NET Framework 4.7.2, you can update the value of the `"dataAnnotations:dataTypeAttribute:disableRegEx"` setting to `false` to revert to the previous behavior. + +```xml + + + ... + + ... + + +``` + +### Category +Web Application From f7b41db3fc2da703a79c2f1938c9ef899cb17aee Mon Sep 17 00:00:00 2001 From: Ron Petrusha Date: Wed, 21 Mar 2018 13:11:05 -0700 Subject: [PATCH 594/872] Deletion to move file to 472 branch (#675) --- .../compatibility/aspnet-472-compat-doc.md | 29 ------------------- 1 file changed, 29 deletions(-) delete mode 100644 Documentation/compatibility/aspnet-472-compat-doc.md diff --git a/Documentation/compatibility/aspnet-472-compat-doc.md b/Documentation/compatibility/aspnet-472-compat-doc.md deleted file mode 100644 index 9271bd78f..000000000 --- a/Documentation/compatibility/aspnet-472-compat-doc.md +++ /dev/null @@ -1,29 +0,0 @@ -## "dataAnnotations:dataTypeAttribute:disableRegEx" app setting is on by default in .NET Framework 4.7.2 - -### Scope -Minor - -### Version Introduced -4.6.2 - -### Change Description -In .NET Framework 4.6.1, an app setting (`"dataAnnotations:dataTypeAttribute:disableRegEx"`) was introduced that allows users to disable the use of regular expressions in data type attributes (such as , , and ). This helps to reduce security vulnerability such as avoiding the possibility of a Denial of Service attack using specific regular expressions.
- -In .NET Framework 4.6.1, this app setting to disable RegEx usage was set to `false` by default. Staring with .NET Framework 4.7.2, this config switch is set to `true` by default to further reduce secure vulnerability for web applications that target .NET Framework 4.7.2 and above. - - -### Recommended Action -If you find that regular expressions in your web application do not work after upgrading to .NET Framework 4.7.2, you can update the value of the `"dataAnnotations:dataTypeAttribute:disableRegEx"` setting to `false` to revert to the previous behavior. - -```xml - - - ... - - ... - - -``` - -### Category -Web Application From ba8292bd15f481b8b2baeb28d58bbc22271878aa Mon Sep 17 00:00:00 2001 From: Preeti Krishna Date: Wed, 21 Mar 2018 13:52:59 -0700 Subject: [PATCH 595/872] net472 changes --- releases/net472/KnownIssues/README.md | 1 + releases/net472/README.md | 1 + 2 files changed, 2 insertions(+) create mode 100644 releases/net472/KnownIssues/README.md create mode 100644 releases/net472/README.md diff --git a/releases/net472/KnownIssues/README.md b/releases/net472/KnownIssues/README.md new file mode 100644 index 000000000..3b94f9157 --- /dev/null +++ b/releases/net472/KnownIssues/README.md @@ -0,0 +1 @@ +Placeholder diff --git a/releases/net472/README.md b/releases/net472/README.md new file mode 100644 index 000000000..3b94f9157 --- /dev/null +++ b/releases/net472/README.md @@ -0,0 +1 @@ +Placeholder From 6b1524c58908cbd66e185390650eece305680971 Mon Sep 17 00:00:00 2001 From: Ron Petrusha Date: Wed, 21 Mar 2018 14:27:12 -0700 Subject: [PATCH 596/872] Moved asn.net compat doc to 472 branch (#676) --- .../compatibility/aspnet-472-compat-doc.md | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 Documentation/compatibility/aspnet-472-compat-doc.md diff --git a/Documentation/compatibility/aspnet-472-compat-doc.md b/Documentation/compatibility/aspnet-472-compat-doc.md new file mode 100644 index 000000000..9271bd78f --- /dev/null +++ b/Documentation/compatibility/aspnet-472-compat-doc.md @@ -0,0 +1,29 @@ +## "dataAnnotations:dataTypeAttribute:disableRegEx" app setting is on by default in .NET Framework 4.7.2 + +### Scope +Minor + +### Version Introduced +4.6.2 + +### Change Description +In .NET Framework 4.6.1, an app setting (`"dataAnnotations:dataTypeAttribute:disableRegEx"`) was introduced that allows users to disable the use of regular expressions in data type attributes (such as , , and ). This helps to reduce security vulnerability such as avoiding the possibility of a Denial of Service attack using specific regular expressions.
+ +In .NET Framework 4.6.1, this app setting to disable RegEx usage was set to `false` by default. Staring with .NET Framework 4.7.2, this config switch is set to `true` by default to further reduce secure vulnerability for web applications that target .NET Framework 4.7.2 and above. + + +### Recommended Action +If you find that regular expressions in your web application do not work after upgrading to .NET Framework 4.7.2, you can update the value of the `"dataAnnotations:dataTypeAttribute:disableRegEx"` setting to `false` to revert to the previous behavior. + +```xml + + + ... + + ... + + +``` + +### Category +Web Application From f882a2f1cf46e152c9b60159fce35f3939fee72a Mon Sep 17 00:00:00 2001 From: Ron Petrusha Date: Wed, 21 Mar 2018 15:00:07 -0700 Subject: [PATCH 597/872] Update aspnet-472-compat-doc.md --- Documentation/compatibility/aspnet-472-compat-doc.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Documentation/compatibility/aspnet-472-compat-doc.md b/Documentation/compatibility/aspnet-472-compat-doc.md index 9271bd78f..18bc55d26 100644 --- a/Documentation/compatibility/aspnet-472-compat-doc.md +++ b/Documentation/compatibility/aspnet-472-compat-doc.md @@ -4,7 +4,7 @@ Minor ### Version Introduced -4.6.2 +4.7.2 ### Change Description In .NET Framework 4.6.1, an app setting (`"dataAnnotations:dataTypeAttribute:disableRegEx"`) was introduced that allows users to disable the use of regular expressions in data type attributes (such as , , and ). This helps to reduce security vulnerability such as avoiding the possibility of a Denial of Service attack using specific regular expressions.
From 7f1dd6e64f58c30d07b8541ca218f2347e791769 Mon Sep 17 00:00:00 2001 From: Jose Perez Rodriguez Date: Mon, 26 Mar 2018 17:00:02 -0700 Subject: [PATCH 598/872] Adding known issue about 12 shims when targeting 4.7.1 (#677) * Adding known issue about 12 shims when targeting 4.7.1 * PR Feedback * PR Feedback * PR Feedback * Feedback --- ...opies extra files to your bin directory.md | 24 +++++++++++++++++++ releases/net471/dotnet471-known-issues.md | 1 + 2 files changed, 25 insertions(+) create mode 100644 releases/net471/KnownIssues/514195-Targeting .NET Framework 4.7.1 copies extra files to your bin directory.md diff --git a/releases/net471/KnownIssues/514195-Targeting .NET Framework 4.7.1 copies extra files to your bin directory.md b/releases/net471/KnownIssues/514195-Targeting .NET Framework 4.7.1 copies extra files to your bin directory.md new file mode 100644 index 000000000..0f7da2b81 --- /dev/null +++ b/releases/net471/KnownIssues/514195-Targeting .NET Framework 4.7.1 copies extra files to your bin directory.md @@ -0,0 +1,24 @@ +# Targeting .NET Framework 4.7.1 copies extra files to your bin directory + +## Symptoms + +When building an application that targets .NET Framework 4.7.1, Visual Studio 15.6.3 tools copy 12 assemblies into your bin directory if it consumes one or more .NET Standard-based components. +This results in the bin output of your application being larger and including more files. + +## Cause + +.NET types live in different assemblies depending on the .NET implementation you are running in. A simple example is the String class, which lives in mscorlib.dll on .NET Framework, in netstandard.dll when you target .NET Standard 2.0, and in System.Runtime.dll when you target .NET Standard 1.x. For a library targeting one .NET implementation to load successfully when running on a compatible one, runtime facades (with type-forwards) are ordinarily used to reroute the references to the all of the types that live in different places. + +.NET Framework 4.7.1 intended to have full support for running .NET Standard 2.0 assets, but we found some bugs on 12 assemblies that would cause some types to not get forwarded correctly. Patching those 12 assemblies is not viable since then the applications would require the patch to be installed on end-user machines in order to function correctly. + +## Impact + +This problem occurs when building an application that targets .NET Framework 4.7.1 and consumes .NET Standard-based assets. + +## Workaround + +There is no way to remove the extra assemblies in your bin directory when targeting .NET Framework 4.7.1. The only workaround is to recompile your app to target the .NET Framework 4.7.2 or later, where this issue has been addressed. + +## Resolution + +This problem is fixed in [.NET Framework 4.7.2](http://go.microsoft.com/fwlink/?LinkId=863281). diff --git a/releases/net471/dotnet471-known-issues.md b/releases/net471/dotnet471-known-issues.md index 5082a2dab..d5ec5c264 100644 --- a/releases/net471/dotnet471-known-issues.md +++ b/releases/net471/dotnet471-known-issues.md @@ -14,5 +14,6 @@ This document lists the known issues that you may experience after you install t - [517815 - BCL - Applications making heavy use of System.Diagnostics.StackTrace or Exception.StackTrace might run more slowly on the .NET Framework 4.7.1](https://github.com/Microsoft/dotnet/blob/master/releases/net471/KnownIssues/517815-BCL%20Applications%20making%20heavy%20use%20of%20System.Diagnostics.StackTrace%20might%20run%20more%20slowly%20on%20.NET%204.7.1.md) - [517815 - BCL - Stack traces are missing source information for frames with debug information in the Portable PDB format when running on .NET Framework 4.7.1](https://github.com/Microsoft/dotnet/blob/master/releases/net471/KnownIssues/517815-BCL%20Stack%20traces%20are%20missing%20source%20information%20for%20frames%20with%20debug%20information%20in%20the%20Portable%20PDB%20format.md) - [553390 - BCL - SGEN crashes trying to load the System.IO.Compression.FileSystem reference assembly]( https://github.com/Microsoft/dotnet/blob/master/releases/net471/KnownIssues/553390%20-%20BCL%20-%20SGEN%20crashes%20because%20it%20references%20System.IO.Compression.ZipFile.dll.md) +- [534719 - BCL - Targeting .NET Framework 4.7.1 copies extra files to your bin directory](https://github.com/Microsoft/dotnet/blob/master/releases/net471/KnownIssues/514195-Targeting%20.NET%20Framework%204.7.1%20copies%20extra%20files%20to%20your%20bin%20directory.md) - [523633 - Setup - Application crashes occur when running on the .NET Framework 4.7.1 after upgrading from Windows 10 Anniversary Update to Windows 10 Creators Update](https://github.com/Microsoft/dotnet/blob/master/releases/net471/KnownIssues/523633%20-%20Setup%20-%20OS%20upgrade%20to%20Windows%2010%20gets%20the%20product%20in%20bad%20state.md) - [534719 - Networking - ServicePoint.ConnectionLimit default behavior with loopback changed unexpectedly](https://github.com/Microsoft/dotnet/blob/master/releases/net471/KnownIssues/534719-Networking.ServicePoint.ConnectionLimit%20default%20behavior%20changed.md) From 171b287a62e5ebf364759a3faf27d4d321ecd3f4 Mon Sep 17 00:00:00 2001 From: Vivek Mishra Date: Tue, 27 Mar 2018 12:51:49 -0700 Subject: [PATCH 599/872] Added Visual Studio reference (#681) * Added Visual Studio reference * Update 523633 - Setup - OS upgrade to Windows 10 gets the product in bad state.md --- ... OS upgrade to Windows 10 gets the product in bad state.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/releases/net471/KnownIssues/523633 - Setup - OS upgrade to Windows 10 gets the product in bad state.md b/releases/net471/KnownIssues/523633 - Setup - OS upgrade to Windows 10 gets the product in bad state.md index 920a78b73..0d4c0081d 100644 --- a/releases/net471/KnownIssues/523633 - Setup - OS upgrade to Windows 10 gets the product in bad state.md +++ b/releases/net471/KnownIssues/523633 - Setup - OS upgrade to Windows 10 gets the product in bad state.md @@ -12,10 +12,10 @@ Consider the following scenario: Note: Windows 10 Anniversary Update (version 1607) comes pre-installed with .NET Framework 4.6.2, and you can install .NET 4.7.1 on it using an offline (or web) installer. Similarly, Windows 10 Creators Update (version 1703) comes pre-installed with .NET Framework 4.7. ## Cause -This issue occurs because the .NET Framework 4.7.1 product installation gets into a corrupted state after the OS upgrade. The OS upgrade preserves all the .NET 4.7.1 assemblies in the GAC as is, but the in-box assemblies are reverted to the in-box version (4.7). Due to this mixed state, the .NET applications exhibit unexpected behaviors. +This issue occurs because the .NET Framework 4.7.1 product installation gets into a corrupted state after the OS upgrade. The OS upgrade preserves all the .NET Framework 4.7.1 assemblies in the GAC as is, but the in-box assemblies are reverted to the in-box version (4.7). Due to this mixed state, the .NET applications exhibit unexpected behaviors. ## Impact -Applications may experience unexpected crashes in certain scenarios. +Applications may experience unexpected crashes in certain scenarios. For example, Visual Studio will experience a crash soon after opening a C# or VB project when .NET Framework is in this corrupted state. Note: This issue does not occur when you do an upgrade from Windows 10 Anniversary Update (version 1607) to Windows 10 Fall Creators Update (version 1709). From 46d1a6da5f915b233494624e00aff6318d9df52b Mon Sep 17 00:00:00 2001 From: Ron Petrusha Date: Wed, 28 Mar 2018 12:56:53 -0700 Subject: [PATCH 600/872] Fixed broken links (#683) --- .../winforms-accessibility-changes-471.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/Documentation/compatibility/winforms-accessibility-changes-471.md b/Documentation/compatibility/winforms-accessibility-changes-471.md index cb3d838b8..00f568b1a 100644 --- a/Documentation/compatibility/winforms-accessibility-changes-471.md +++ b/Documentation/compatibility/winforms-accessibility-changes-471.md @@ -60,7 +60,7 @@ The .NET Framework 4.7.1 adds support for the following UI automation patterns a - The control supports the [Name](xref:System.Windows.Automation.AutomationElement.NameProperty) property and the[Expand/Collapse pattern](~/docs/framework/ui-automation/implementing-the-ui-automation-expandcollapse-control-pattern.md). - The control supports [AccessibleEvents](xref:System.Windows.Forms.AccessibleEvents) indicating StateChange and NameChange when drop down is expanded or collapsed. - The control has a [ControlType](~/docs/framework/ui-automation/ui-automation-support-for-the-menubar-control-type.md) property value of . -- The control supports the [Toggle Pattern](~/docs/api/system.windows.automation.togglepattern.md). +- The control supports the [Toggle Pattern](xref:System.Windows.Automation.TogglePattern). - The and controls support the [Name](xref:System.Windows.Automation.AutomationElement.NameProperty) property and have a [ControlType](~/docs/framework/ui-automation/ui-automation-support-for-the-spinner-control-type.md) of .

**Improvements to the PropertyGrid control**
@@ -81,11 +81,11 @@ The .NET Framework 4.7.1 adds the following improvements to the PropertyBrowser **Use of OS-defined colors in High Contrast themes**
-- The and controls with their property set to , which is the default style, now use OS-defined colors in High Contrast theme when selected. Previously, text and background colors were not contrasting and were hard to read. +- The and controls with their property set to , which is the default style, now use OS-defined colors in High Contrast theme when selected. Previously, text and background colors were not contrasting and were hard to read. - The , , , , and controls with their property set to **false** used a shaded color to render text in High Contrast themes, resulting in low contrast against the background. Now these controls use the "Disabled Text" color defined by the OS. This fix applies to controls with the property set to a value other than . The latter controls are rendered by the OS. - now renders a visible rectangle around the content of the cell which has the current focus. Previously, this was not visible in certain High Contrast themes. -- controls with a property set to **false** now use the "Disabled Text" color defined by the OS. -- controls with a property set to **true** now render the associated check mark in a contrasting system color. Previously the check mark color was not contrasting enough and not visible in High Contrast themes. +- controls with their property set to **false** now use the "Disabled Text" color defined by the OS. +- controls with their property set to **true** now render the associated check mark in a contrasting system color. Previously the check mark color was not contrasting enough and not visible in High Contrast themes. NOTE: Windows 10 has changed values for some high contrast system colors. Windows Forms Framework is based on the Win32 framework. For the best experience, run on the latest version of Windows and opt in to the latest OS changes by adding an app.manifest file in a test application and uncommenting the following code: @@ -97,11 +97,11 @@ NOTE: Windows 10 has changed values for some high contrast system colors. Window
**Improved keyboard navigation** -- When a control has its property set to and is the first control in the tab order on the form, it now displays a focus rectangle when the parent form is opened using the keyboard. Before this change, keyboard focus was on this control, but a focus indicator was not rendered. +- When a control has its property set to and is the first control in the tab order on the form, it now displays a focus rectangle when the parent form is opened using the keyboard. Before this change, keyboard focus was on this control, but a focus indicator was not rendered. **Improved Narrator support** - The control has added support for assistive technologies to access the control, including the ability for Narrator to read the value of the control when previously it could not. -- The control now notifies Narrator when a property has been changed. Previously, Narrator did not receive notification and as a result users would not be informed that the property had been updated. +- The control now notifies Narrator when a property has been changed. Previously, Narrator did not receive notification and as a result users would not be informed that the property had been updated. - The control has changed the way it notifies Narrator of the text of in the control. Previously, Narrator announced this text twice and read "&" symbols as real text even though they are not visible to a user. The duplicated text was removed from the Narrator announcements, as well as unnecessary "&" symbols. - The control types now correctly report the read-only status to Narrator and other assistive technologies. - Narrator is now able to read the System Menu of child windows in [Multiple-Document Interface]~/docs/framework/winforms/advanced/multiple-document-interface-mdi-applications.md) applications. From 31035292ff3f040af1bd1033be77f98dbe679cae Mon Sep 17 00:00:00 2001 From: Ron Petrusha Date: Wed, 28 Mar 2018 15:05:20 -0700 Subject: [PATCH 601/872] Added line breaks, fixed other formatting issues (#684) --- ...SerialPort-background-thread-exceptions.md | 4 ++-- ...ase-doesnt-propagate-OnStart-exceptions.md | 4 ++-- ...ions-of-imessagefilter_prefiltermessage.md | 2 +- ...n-path-separator-character-in-zip-files.md | 4 ++-- ...ect_getdata-now-retrieves-data-as-utf-8.md | 2 +- ...plementation-of-memberdescriptor_equals.md | 24 +++++++++---------- .../compatibility/new-64-bit-jit-compiler.md | 4 ++-- ...-loads-rsa-keys-of-non-standard-keysize.md | 3 +-- .../sslstream-support-for-tls-alerts.md | 16 ++++++------- ...ord-flag-to-the-underlying-schannel-api.md | 1 + ...portwithmessagecredential-security-mode.md | 6 ++--- ...essfully-converts-icons-with-png-frames.md | 4 ++-- .../winforms-accessibility-changes-471.md | 10 ++++---- ...rid-allocation-of-space-to-star-columns.md | 18 +++++++------- ...e-from-imagesourceconverter_convertfrom.md | 10 ++++---- ...ctor-selectionchanged-and-selectedvalue.md | 2 +- 16 files changed, 55 insertions(+), 59 deletions(-) diff --git a/Documentation/compatibility/SerialPort-background-thread-exceptions.md b/Documentation/compatibility/SerialPort-background-thread-exceptions.md index 920548067..03238af43 100644 --- a/Documentation/compatibility/SerialPort-background-thread-exceptions.md +++ b/Documentation/compatibility/SerialPort-background-thread-exceptions.md @@ -10,9 +10,9 @@ Minor NotPlanned ### Change Description -Background threads created with streams no longer terminate the process when OS exceptions are thrown. +Background threads created with streams no longer terminate the process when OS exceptions are thrown.
-In applications that target the .NET Framework 4.7 and earlier versions, a process is terminated when an operating system exception is thrown on a background thread created with a stream. +In applications that target the .NET Framework 4.7 and earlier versions, a process is terminated when an operating system exception is thrown on a background thread created with a stream.
In applications that target the .NET Framework 4.7.1 or a later version, background threads wait for OS events related to the active serial port and could crash in some cases, such as sudden removal of the serial port. diff --git a/Documentation/compatibility/ServiceBase-doesnt-propagate-OnStart-exceptions.md b/Documentation/compatibility/ServiceBase-doesnt-propagate-OnStart-exceptions.md index 27210e6ba..6f4ec3310 100644 --- a/Documentation/compatibility/ServiceBase-doesnt-propagate-OnStart-exceptions.md +++ b/Documentation/compatibility/ServiceBase-doesnt-propagate-OnStart-exceptions.md @@ -13,7 +13,7 @@ NotPlanned ### Change Description -In the .NET Framework 4.7 and earlier versions, exceptions thrown on service startup are not propagated to the caller of . +In the .NET Framework 4.7 and earlier versions, exceptions thrown on service startup are not propagated to the caller of .
Starting with applications that target the .NET Framework 4.7.1, the runtime propagates exceptions to for services that fail to start. @@ -21,7 +21,7 @@ Starting with applications that target the .NET Framework 4.7.1, the runtime pro - [ ] Build-time break ### Recommended Action -On service start, if there is an exception, that exception will be propagated. This should help diagnose cases where services fail to start. +On service start, if there is an exception, that exception will be propagated. This should help diagnose cases where services fail to start.
If this behavior is undesirable, you can opt out of it by adding the following element to the section of your application configuration file: diff --git a/Documentation/compatibility/application_filtermessage-no-longer-throws-for-re-entrant-implementations-of-imessagefilter_prefiltermessage.md b/Documentation/compatibility/application_filtermessage-no-longer-throws-for-re-entrant-implementations-of-imessagefilter_prefiltermessage.md index b9f98d690..1c674a420 100644 --- a/Documentation/compatibility/application_filtermessage-no-longer-throws-for-re-entrant-implementations-of-imessagefilter_prefiltermessage.md +++ b/Documentation/compatibility/application_filtermessage-no-longer-throws-for-re-entrant-implementations-of-imessagefilter_prefiltermessage.md @@ -20,7 +20,7 @@ which called or (while also calling ) -would cause an . +would cause an .

Beginning with applications targeting the .NET Framework 4.6.1, this exception is no longer thrown, and re-entrant filters as described above may be used. diff --git a/Documentation/compatibility/change-in-path-separator-character-in-zip-files.md b/Documentation/compatibility/change-in-path-separator-character-in-zip-files.md index be0609ad6..b6b02312a 100644 --- a/Documentation/compatibility/change-in-path-separator-character-in-zip-files.md +++ b/Documentation/compatibility/change-in-path-separator-character-in-zip-files.md @@ -10,7 +10,7 @@ Edge Planned ### Change Description -For apps that target the .NET Framework 4.6.1 and later versions, the path separator character has changed from a backslash ("\") to a forward slash ("/") in the property of objects created by overloads of the method. The change brings the .NET implementation into conformity with section 4.4.17.1 of the [.ZIP File Format Specification](https://pkware.cachefly.net/webdocs/casestudies/APPNOTE.TXT) and allows .ZIP archives to be decompressed on non-Windows systems. +For apps that target the .NET Framework 4.6.1 and later versions, the path separator character has changed from a backslash ("\") to a forward slash ("/") in the property of objects created by overloads of the method. The change brings the .NET implementation into conformity with section 4.4.17.1 of the [.ZIP File Format Specification](https://pkware.cachefly.net/webdocs/casestudies/APPNOTE.TXT) and allows .ZIP archives to be decompressed on non-Windows systems.
Decompressing a zip file created by an app that targets a previous version of the .NET Framework on non-Windows operating systems such as the Macintosh fails to preserve the directory structure. For example, on the Macintosh, it creates a set of files whose filename concatenates the directory path, along with any backslash ("\") characters, and the filename. As a result, the directory structure of decompressed files is not preserved. @@ -20,7 +20,7 @@ Decompressing a zip file created by an app that targets a previous version of th ### Recommended Action -The impact of this change on .ZIP files that are decompressed on the Windows operating system by APIs in the .NET Framework namespace should be minimal, since these APIs can seamlessly handle either a slash ("`/`") or a backslash ("`\`") as the path separator character. +The impact of this change on .ZIP files that are decompressed on the Windows operating system by APIs in the .NET Framework namespace should be minimal, since these APIs can seamlessly handle either a slash ("`/`") or a backslash ("`\`") as the path separator character.
If this change is undesirable, you can opt out of it by adding a configuration setting to the [``](~/docs/framework/configure-apps/file-schema/runtime/runtime-element.md) section of your application configuration file. The following example shows both the `` section and the `Switch.System.IO.Compression.ZipFile.UseBackslash` opt-out switch: diff --git a/Documentation/compatibility/dataobject_getdata-now-retrieves-data-as-utf-8.md b/Documentation/compatibility/dataobject_getdata-now-retrieves-data-as-utf-8.md index ba128fc38..a5a9be2a0 100644 --- a/Documentation/compatibility/dataobject_getdata-now-retrieves-data-as-utf-8.md +++ b/Documentation/compatibility/dataobject_getdata-now-retrieves-data-as-utf-8.md @@ -14,7 +14,7 @@ Available For apps that target the .NET Framework 4 or that run on the .NET Framework 4.5.1 or earlier versions, `DataObject.GetData` retrieves HTML-formatted data as an ASCII string. As a result, non-ASCII characters (characters whose ASCII codes -are greater than 0x7F) are represented by two random characters. +are greater than 0x7F) are represented by two random characters.

For apps that target the .NET Framework 4.5 or later and run on the .NET Framework 4.5.2, `DataObject.GetData` retrieves HTML-formatted data as UTF-8, diff --git a/Documentation/compatibility/incorrect-implementation-of-memberdescriptor_equals.md b/Documentation/compatibility/incorrect-implementation-of-memberdescriptor_equals.md index e45e991da..73a646f09 100644 --- a/Documentation/compatibility/incorrect-implementation-of-memberdescriptor_equals.md +++ b/Documentation/compatibility/incorrect-implementation-of-memberdescriptor_equals.md @@ -10,23 +10,21 @@ Edge Planned ### Change Description -Original implementation of "Equals" method was comparing two different string properties from -the objects under comparison: category name to description string. The fix is to compare -"category" of first object to "category" of the second one and "description" to "description". -MemberDescriptorEqualsReturnsFalseIfEquivalent configuration value can be set to true to opt out of -the new behavior if targeting 4.6.2 or to false to enable this fix when targeting framework -version is below 4.6.2. +The original implementation of the method compares two different string properties from +the objects being compared: the category name and the description string. The fix is to compare +the of the first object to the of the second one, and the of the first to the of the second. - [x] Quirked - [ ] Build-time break ### Recommended Action -If your application depends on MemberDescriptor.Equals sometimes returning false when descriptors -are equivalent, and you are targeting 4.6.2 version of the .NET Framework, you have several options: +If your application depends on sometimes returning `false` when descriptors +are equivalent, and you are targeting the .NET Framework 4.6.2 or later, you have several options: -1. Make code changes to compare "category" and "description" fields manually in addition to -running Equals method. -2. Opt out from this change by adding the following value to the app.config file: +1. Make code changes to compare the and fields manually in addition to +calling the method. + +2. Opt out of this change by adding the following value to the app.config file: ```xml @@ -34,8 +32,8 @@ running Equals method. ``` -If your application targets 4.6.1 or lower version of the .NET Framework, and you want this change -enabled, you can set the compatibility switch to false by adding the following value to the +If your application targets .NET Framework 4.6.1 or earlier and is running on the .NET Framework 4.6.2 or later and you want this change +enabled, you can set the compatibility switch to `false` by adding the following value to the app.config file: ```xml diff --git a/Documentation/compatibility/new-64-bit-jit-compiler.md b/Documentation/compatibility/new-64-bit-jit-compiler.md index c2487c66c..47de343d6 100644 --- a/Documentation/compatibility/new-64-bit-jit-compiler.md +++ b/Documentation/compatibility/new-64-bit-jit-compiler.md @@ -27,14 +27,14 @@ The known differences include the following: - [ ] Build-time break ### Recommended Action -**Mitigation of known issues** +**Mitigation of known issues**
If you encounter the issues listed above, you can address them by doing any of the following: - Upgrade to the .NET Framework 4.6.2. The new 64-bit compiler included with the .NET Framework 4.6.2 addresses each of these known issues. - Ensure that your version of Windows is up to date by running Windows Update. Service updates to the .NET Framework 4.6 and 4.6.1 address each of these issues except the in an unboxing operation. - Compile with the older 64-bit JIT compiler. See the **Mitigation of other issues** section for more information on how to do this. -**Mitigation of other issues** +**Mitigation of other issues**
If you encounter any other difference in behavior between code compiled with the older 64-bit compiler and the new 64-bit JIT compiler, or between the debug and release versions of your app that are both compiled with the new 64-bit JIT compiler, you can do the following to compile your app with the older 64-bit JIT compiler: - On a per-application basis, you can add the [\](~/docs/framework/configure-apps/file-schema/runtime/uselegacyjit-element.md) element to your application's configuration file. The following disables compilation with the new 64-bit JIT compiler and instead uses the legacy 64-bit JIT compiler. diff --git a/Documentation/compatibility/rsacng-now-correctly-loads-rsa-keys-of-non-standard-keysize.md b/Documentation/compatibility/rsacng-now-correctly-loads-rsa-keys-of-non-standard-keysize.md index cd75d7b77..ba58e8d7f 100644 --- a/Documentation/compatibility/rsacng-now-correctly-loads-rsa-keys-of-non-standard-keysize.md +++ b/Documentation/compatibility/rsacng-now-correctly-loads-rsa-keys-of-non-standard-keysize.md @@ -23,8 +23,7 @@ Framework 4.6.2 this issue has been fixed. Similarly, and -now work with non-standard key sizes without throwing -s. +now work with non-standard key sizes without throwing a . - [X] Quirked - [ ] Build-time break diff --git a/Documentation/compatibility/sslstream-support-for-tls-alerts.md b/Documentation/compatibility/sslstream-support-for-tls-alerts.md index 682c3f7cc..bf9f21bac 100644 --- a/Documentation/compatibility/sslstream-support-for-tls-alerts.md +++ b/Documentation/compatibility/sslstream-support-for-tls-alerts.md @@ -18,10 +18,10 @@ be thrown by the first I/O Read/Write operation. The code for the can be mapped to the TLS Alert from the remote party using this -[Schannel documentation](https://msdn.microsoft.com/library/windows/desktop/dd721886%28v=vs.85%29.aspx). +[Schannel documentation](https://msdn.microsoft.com/library/windows/desktop/dd721886%28v=vs.85%29.aspx). For more information, see -[RFC 2246: Section 7.2.2 Error alerts](https://tools.ietf.org/html/rfc2246#section-7.2.2) +[RFC 2246: Section 7.2.2 Error alerts](https://tools.ietf.org/html/rfc2246#section-7.2.2).
The behavior in .NET Framework 4.6.2 and earlier is that the transport channel (usually TCP connection) will timeout during either Write or Read if the other party failed @@ -34,16 +34,16 @@ the handshake and immediately afterwards rejected the connection. Applications calling network I/O APIs such as / should handle or -. +.
The TLS Alerts feature is enabled by default starting with .NET Framework 4.7. Applications targeting versions of the .NET Framework from 4.0 through 4.6.2 running on a .NET Framework 4.7 or higher -system will have the feature disabled to preserve compatibility. +system will have the feature disabled to preserve compatibility.
The following configuration API is available to enable or disable the feature for .NET Framework 4.6 and later applications running on .NET Framework 4.7 or later. -* Programmatically: +- Programmatically: Must be the very first thing the application does since ServicePointManager will initialize only once:   @@ -52,7 +52,7 @@ for .NET Framework 4.6 and later applications running on .NET Framework 4.7 or l AppContext.SetSwitch("Switch.System.Net.DontEnableTlsAlerts", true); // Set to 'false' to enable the feature in .NET Framework 4.6 - 4.6.2. ``` -* AppConfig: +- AppConfig: ```xml @@ -61,9 +61,9 @@ for .NET Framework 4.6 and later applications running on .NET Framework 4.7 or l ``` -* Registry key (machine global): +- Registry key (machine global): - Set the Value to 'false' to enable the feature in .NET Framework 4.6 - 4.6.2. + Set the Value to `false` to enable the feature in .NET Framework 4.6 - 4.6.2. ``` Key = HKLM\SOFTWARE\[Wow6432Node\]Microsoft\.NETFramework\AppContext\Switch.System.Net.DontEnableTlsAlerts diff --git a/Documentation/compatibility/tls-1-x-by-default-passes-sch-send-aux-record-flag-to-the-underlying-schannel-api.md b/Documentation/compatibility/tls-1-x-by-default-passes-sch-send-aux-record-flag-to-the-underlying-schannel-api.md index ef34b769d..1e1dd4794 100644 --- a/Documentation/compatibility/tls-1-x-by-default-passes-sch-send-aux-record-flag-to-the-underlying-schannel-api.md +++ b/Documentation/compatibility/tls-1-x-by-default-passes-sch-send-aux-record-flag-to-the-underlying-schannel-api.md @@ -28,6 +28,7 @@ If this change breaks communication with an existing server, you can disable sen value="Switch.System.Net.DontEnableSchSendAuxRecord=true" /> ``` + > [!IMPORTANT] > This setting is provided for backward compatibility only. Its use is otherwise not recommended. diff --git a/Documentation/compatibility/wcf-binding-with-the-transportwithmessagecredential-security-mode.md b/Documentation/compatibility/wcf-binding-with-the-transportwithmessagecredential-security-mode.md index 838895c83..be8095391 100644 --- a/Documentation/compatibility/wcf-binding-with-the-transportwithmessagecredential-security-mode.md +++ b/Documentation/compatibility/wcf-binding-with-the-transportwithmessagecredential-security-mode.md @@ -14,13 +14,13 @@ Beginning in the .NET Framework 4.6.1, WCF binding that uses the TransportWithMe By default, unsigned "to" headers will continue to be rejected in .NET Framework 4.6.1. They will only be accepted if an application opts into this new mode of operation using the Switch.System.ServiceModel.AllowUnsignedToHeader configuration switch. -Because this is an opt-in feature, it should not affect the behavior of existing apps. - - [X] Quirked - [ ] Build-time break ### Recommended Action -Because this is an opt-in feature, it should not affect the behavior of existing apps. To control whether the new behavior is used or not, use the following configuration setting: +Because this is an opt-in feature, it should not affect the behavior of existing apps.
+ +To control whether the new behavior is used or not, use the following configuration setting: ```xml diff --git a/Documentation/compatibility/windows-forms-icon-tobitmap-method-successfully-converts-icons-with-png-frames.md b/Documentation/compatibility/windows-forms-icon-tobitmap-method-successfully-converts-icons-with-png-frames.md index 9aacf9663..5aca42a8c 100644 --- a/Documentation/compatibility/windows-forms-icon-tobitmap-method-successfully-converts-icons-with-png-frames.md +++ b/Documentation/compatibility/windows-forms-icon-tobitmap-method-successfully-converts-icons-with-png-frames.md @@ -11,9 +11,9 @@ Investigating ### Change Description -Starting with the apps that target the .NET Framework 4.6, the method successfully converts icons with PNG frames into Bitmap objects. +Starting with the apps that target the .NET Framework 4.6, the method successfully converts icons with PNG frames into Bitmap objects.

-In apps that target the .NET Framework 4.5.2 and earlier versions, the method throws an exception if the Icon object has PNG frames. +In apps that target the .NET Framework 4.5.2 and earlier versions, the method throws an exception if the Icon object has PNG frames.

This change affects apps that are recompiled to target the .NET Framework 4.6 and that implement special handling for the that is thrown when an Icon object has PNG frames. When running under the .NET Framework 4.6, the conversion is successful, an is no longer thrown, and therefore the exception handler is no longer invoked. diff --git a/Documentation/compatibility/winforms-accessibility-changes-471.md b/Documentation/compatibility/winforms-accessibility-changes-471.md index 00f568b1a..96fff65b1 100644 --- a/Documentation/compatibility/winforms-accessibility-changes-471.md +++ b/Documentation/compatibility/winforms-accessibility-changes-471.md @@ -10,7 +10,7 @@ Major NotPlanned ### Change Description -Windows Forms is improving how it works with accessibility technologies to better support Windows Forms customers. These include the following changes: +Windows Forms is improving how it works with accessibility technologies to better support Windows Forms customers. These include the following changes starting with the .NET Framework 4.7.1: - Changes to improve display during High Contrast mode. - Changes to improve the property browser experience. Property browser improvements include: - Better keyboard navigation through the various drop-down selection windows. @@ -45,13 +45,13 @@ In order for the application to benefit from these changes, it must run on the . ``` -
Applications that target the .NET Framework 4.7.1 or later and want to preserve the legacy accessibility behavior can opt in to the use of legacy accessibility features by explicitly setting this AppContext switch to `true`.

+
Applications that target the .NET Framework 4.7.1 or later and want to preserve the legacy accessibility behavior can opt in to the use of legacy accessibility features by explicitly setting this AppContext switch to `true`.

-For an overview of UI automation, see the [UI Automation Overview](~/docs/framework/ui-automation/ui-automation-overview.md).

+For an overview of UI automation, see the [UI Automation Overview](~/docs/framework/ui-automation/ui-automation-overview.md).

-**Added support for UI Automation patterns and properties**
+**Added support for UI Automation patterns and properties**
-Accessibility clients can take advantage of new WinForms accessibility functionality by using common, publicly described invocation patterns. These patterns are not WinForms-specific. For instance, accessibility clients can call the QueryInterface method on the IAccessible interface (MAAS) to obtain an IServiceProvider interface. If this interface is available, clients can use its QueryService method to request an IAccessibleEx interface. For more information, see [Using IAccessibleEx from a Client](https://msdn.microsoft.com/library/windows/desktop/dd561924.aspx). Starting with the .NET Framework 4.7.1, IServiceProvider and [IAccessibleEx]( https://msdn.microsoft.com/library/windows/desktop/dd561898.aspx) (where applicable) are available for WinForms accessibility objects.
+Accessibility clients can take advantage of new WinForms accessibility functionality by using common, publicly described invocation patterns. These patterns are not WinForms-specific. For instance, accessibility clients can call the QueryInterface method on the IAccessible interface (MAAS) to obtain an IServiceProvider interface. If this interface is available, clients can use its QueryService method to request an IAccessibleEx interface. For more information, see [Using IAccessibleEx from a Client](https://msdn.microsoft.com/library/windows/desktop/dd561924.aspx). Starting with the .NET Framework 4.7.1, IServiceProvider and [IAccessibleEx]( https://msdn.microsoft.com/library/windows/desktop/dd561898.aspx) (where applicable) are available for WinForms accessibility objects.

The .NET Framework 4.7.1 adds support for the following UI automation patterns and properties: diff --git a/Documentation/compatibility/wpf-grid-allocation-of-space-to-star-columns.md b/Documentation/compatibility/wpf-grid-allocation-of-space-to-star-columns.md index 078d3b9b2..e73d315b9 100644 --- a/Documentation/compatibility/wpf-grid-allocation-of-space-to-star-columns.md +++ b/Documentation/compatibility/wpf-grid-allocation-of-space-to-star-columns.md @@ -24,7 +24,7 @@ a number of cases: - When layout rounding is enabled, and the effective display DPI is sufficiently high. -In the first two cases, the widths produced by the new algorithm can be significantly different from those produced by the old algorithm; in the last case, the difference will be at most one or two pixels. +In the first two cases, the widths produced by the new algorithm can be significantly different from those produced by the old algorithm; in the last case, the difference will be at most one or two pixels.

The new algorithm fixes several bugs present in the old algorithm: @@ -42,17 +42,17 @@ The new algorithm fixes several bugs present in the old algorithm: 7. Adjustments for layout rounding are incorrect at sufficiently high DPI. -The new algorithm produces results that meet the following criteria: +The new algorithm produces results that meet the following criteria:

-A. The actual width assigned to a *-column is never less than its minimum width nor greater than its maximum width. +A. The actual width assigned to a *-column is never less than its minimum width nor greater than its maximum width.
-B. Each *-column that is not assigned its minimum or maximum width is assigned a width proportional to its *-weight. To be precise, if two columns are declared with width x* and y* respectively, and if neither column receives its minimum or maximum width, the actual widths v and w assigned to the columns are in the same proportion: v / w == x / y. +B. Each *-column that is not assigned its minimum or maximum width is assigned a width proportional to its *-weight. To be precise, if two columns are declared with width x* and y* respectively, and if neither column receives its minimum or maximum width, the actual widths v and w assigned to the columns are in the same proportion: v / w == x / y.
-C. The total width allocated to "proportional" *-columns is equal to the space available after allocating to the constrained columns (fixed, auto, and *-columns that are allocated their min or max width). This might be zero, for instance if the sum of the minimum widths exceeds the Grid's availbable width. +C. The total width allocated to "proportional" *-columns is equal to the space available after allocating to the constrained columns (fixed, auto, and *-columns that are allocated their min or max width). This might be zero, for instance if the sum of the minimum widths exceeds the Grid's availbable width.
-D. All these statements are to be interpreted with respect to the "ideal" layout. When layout rounding is in effect, the actual widths can differ from the ideal widths by as much as one pixel. +D. All these statements are to be interpreted with respect to the "ideal" layout. When layout rounding is in effect, the actual widths can differ from the ideal widths by as much as one pixel.
-The old algorithm honored (A) but failed to honor the other criteria in the cases outlined above. +The old algorithm honored (A) but failed to honor the other criteria in the cases outlined above.

Everything said about columns and widths in this article applies as well to rows and heights. @@ -61,7 +61,7 @@ Everything said about columns and widths in this article applies as well to rows ### Recommended Action -By default, apps that target versions of the .NET Framework starting with the .NET Framework 4.7 will see the new algorithm, while apps that target the .NET Framework 4.6.2 or earlier versions will see the old algorithm. +By default, apps that target versions of the .NET Framework starting with the .NET Framework 4.7 will see the new algorithm, while apps that target the .NET Framework 4.6.2 or earlier versions will see the old algorithm.

To override the default, use the following configuration setting: @@ -71,7 +71,7 @@ To override the default, use the following configuration setting: ``` -The value 'true' selects the old algorithm, 'false' selects the new algorithm. +The value `true` selects the old algorithm, `false` selects the new algorithm. ### Affected APIs * Not detectable via API analysis diff --git a/Documentation/compatibility/wpf-nullreferenceexception-in-exception-handling-code-from-imagesourceconverter_convertfrom.md b/Documentation/compatibility/wpf-nullreferenceexception-in-exception-handling-code-from-imagesourceconverter_convertfrom.md index 07c106eaa..b6e4d2d6e 100644 --- a/Documentation/compatibility/wpf-nullreferenceexception-in-exception-handling-code-from-imagesourceconverter_convertfrom.md +++ b/Documentation/compatibility/wpf-nullreferenceexception-in-exception-handling-code-from-imagesourceconverter_convertfrom.md @@ -16,15 +16,13 @@ An error in the exception handling code for caused an incorrect to be thrown instead of the intended exception (e.g. , -), this change -corrects that error so that the method now throws the right exception. +). This change +corrects that error so that the method now throws the right exception.

-By default all applications targeting .NET Framework 4.6.2 and below will -continue to throw for -compatibility, developers targeting .NET Framework 4.7 and above should see the +By default all applications targeting .NET Framework 4.6.2 and earlier continue to throw for +compatibility. Developers targeting .NET Framework 4.7 and above should see the right exceptions. -// Replace the space with an 'x' if applicable - [x] Quirked - [ ] Build-time break diff --git a/Documentation/compatibility/wpf-selector-selectionchanged-and-selectedvalue.md b/Documentation/compatibility/wpf-selector-selectionchanged-and-selectedvalue.md index 335e90d24..c1e2d8b1f 100644 --- a/Documentation/compatibility/wpf-selector-selectionchanged-and-selectedvalue.md +++ b/Documentation/compatibility/wpf-selector-selectionchanged-and-selectedvalue.md @@ -15,7 +15,7 @@ Starting with the .NET Framework 4.7.1, a event, when its selection changes. This makes the SelectedValue property consistent with the other selection properties ( and -), which are updated before raising the event. +), which are updated before raising the event.

In the .NET Framework 4.7 and earlier versions, the update to SelectedValue happened before the event in most cases, but it happened after the event if the selection change was caused by changing the From 3fb03451e4c745d9ad28c27a8bfef1babd70a52f Mon Sep 17 00:00:00 2001 From: Ron Petrusha Date: Thu, 29 Mar 2018 08:42:59 -0700 Subject: [PATCH 602/872] Added line breaks, other formatting changes (#685) * Added line breaks, other formatting changes * additional formatting change --- ...ocking-period-for-azure-sql-databases-is-removed.md | 6 +++--- .../horizontal-scrolling-and-virtualization.md | 10 +++++----- ...ed-repeatedly-if-its-handler-shows-a-message-box.md | 7 ++++--- ...nicode-data-now-support-standard-v8_0-categories.md | 6 +++--- ...hrow-now-when-_net-cannot-handle-the-certificate.md | 6 +++--- 5 files changed, 18 insertions(+), 17 deletions(-) diff --git a/Documentation/compatibility/connection-pool-blocking-period-for-azure-sql-databases-is-removed.md b/Documentation/compatibility/connection-pool-blocking-period-for-azure-sql-databases-is-removed.md index 2a624cc2a..01a79f12b 100644 --- a/Documentation/compatibility/connection-pool-blocking-period-for-azure-sql-databases-is-removed.md +++ b/Documentation/compatibility/connection-pool-blocking-period-for-azure-sql-databases-is-removed.md @@ -11,14 +11,14 @@ Investigating ### Change Description Starting with the .NET Framework 4.6.2, for connection open requests to known -Azure SQL databases (*.database.windows.net, *.database.chinacloudapi.cn, -*.database.usgovcloudapi.net, *.database.cloudapi.de), the connection pool +Azure SQL databases (\*.database.windows.net, \*.database.chinacloudapi.cn, +\*.database.usgovcloudapi.net, \*.database.cloudapi.de), the connection pool blocking period is removed, and connection open errors are not cached. Attempts to retry connection open requests will occur almost immediately after transient connection errors. This change allows the connection open attempt to be retried immediately for Azure SQL databases, thereby improving the performance of cloud- enabled apps. For all other connection attempts, the connection pool blocking -period continues to be enforced. +period continues to be enforced.

In the .NET Framework 4.6.1 and earlier versions, when an app encounters a transient connection failure when connecting to a database, the connection diff --git a/Documentation/compatibility/horizontal-scrolling-and-virtualization.md b/Documentation/compatibility/horizontal-scrolling-and-virtualization.md index 4c075b21d..b83429d43 100644 --- a/Documentation/compatibility/horizontal-scrolling-and-virtualization.md +++ b/Documentation/compatibility/horizontal-scrolling-and-virtualization.md @@ -18,16 +18,16 @@ own virtualization in the direction orthogonal to the main scrolling direction with EnableColumnVirtualization="True"). The outcome of certain horizontal scrolling operations has been changed to produce results that are more intuitive and more -analogous to the results of comparable vertical operations. +analogous to the results of comparable vertical operations.

The operations include "Scroll Here" and "Right Edge", to use the names from the menu obtained by right-clicking a horizontal scrollbar. Both of these compute a candidate offset and call -. +.

After scrolling to the new offset, the notion of "here" or "right edge" may have changed because newly de-virtualized content has changed the value of -. +.

Prior to .NET Framework 4.6.2, the scroll operation simply uses the candidate offset, even though it may not be "here" or at the "right edge" any more. This results in @@ -39,10 +39,10 @@ virtualized; let's suppose they are very wide, so that the changes to 2000. The scroll ends with HorizontalOffset=800, and the thumb "bounces" back to near the middle of the scrollbar - precisely at 800/2000 = -40%. +40%.

The change is to recompute a new candidate offset when this situation occurs, -and try again. (This is how vertical scrolling works already.) +and try again. (This is how vertical scrolling works already.)

The change produces a more predictable and intuitive experience for the end user, but it could also affect any app that depends on the exact value of diff --git a/Documentation/compatibility/previewlostkeyboardfocus-is-called-repeatedly-if-its-handler-shows-a-message-box.md b/Documentation/compatibility/previewlostkeyboardfocus-is-called-repeatedly-if-its-handler-shows-a-message-box.md index 79794fa6c..fb34c2543 100644 --- a/Documentation/compatibility/previewlostkeyboardfocus-is-called-repeatedly-if-its-handler-shows-a-message-box.md +++ b/Documentation/compatibility/previewlostkeyboardfocus-is-called-repeatedly-if-its-handler-shows-a-message-box.md @@ -12,7 +12,7 @@ Available ### Change Description Beginning in the .NET Framework 4.5, calling -`System.Windows.Forms.MessageBox.Show` from a + from a handler will cause the handler to re-fire when the message box is closed, potentially resulting in an infinite loop of message boxes. @@ -21,10 +21,11 @@ potentially resulting in an infinite loop of message boxes. - [ ] Build-time break ### Recommended Action -There are two options to work around this issue - +There are two options to work around this issue: 1. It may be avoided by calling `System.Windows.MessageBox.Show` instead of `System.Windows.Forms.MessageBox.Show`. -2. It may be avoided by showing the message box from a event handler (as opposed to a event handler). +2. +3. It may be avoided by showing the message box from a event handler (as opposed to a event handler). ### Affected APIs * `M:System.Windows.ContentElement.add_PreviewLostKeyboardFocus(System.Windows.Input.KeyboardFocusChangedEventHandler)` diff --git a/Documentation/compatibility/unicode-data-now-support-standard-v8_0-categories.md b/Documentation/compatibility/unicode-data-now-support-standard-v8_0-categories.md index dded95d96..b9eb03113 100644 --- a/Documentation/compatibility/unicode-data-now-support-standard-v8_0-categories.md +++ b/Documentation/compatibility/unicode-data-now-support-standard-v8_0-categories.md @@ -10,9 +10,9 @@ Minor Planned ### Change Description -In .NET Framework 4.6.2, Unicode data in the framework has been -upgraded from Unicode standard version 6.3 to version 8.0. When -requesting Unicode character category in .NET Framework 4.6.2, some +In .NET Framework 4.6.2, Unicode data has been +upgraded from Unicode Standard version 6.3 to version 8.0. When +requesting Unicode character categories in .NET Framework 4.6.2, some results might not match the results in previous .NET Framework versions. This change mostly affects Cherokee syllables and New Tai Lue vowels signs and tone marks. diff --git a/Documentation/compatibility/x509certificate2_tostring(bool)-does-not-throw-now-when-_net-cannot-handle-the-certificate.md b/Documentation/compatibility/x509certificate2_tostring(bool)-does-not-throw-now-when-_net-cannot-handle-the-certificate.md index 53645f1c7..eda3e6894 100644 --- a/Documentation/compatibility/x509certificate2_tostring(bool)-does-not-throw-now-when-_net-cannot-handle-the-certificate.md +++ b/Documentation/compatibility/x509certificate2_tostring(bool)-does-not-throw-now-when-_net-cannot-handle-the-certificate.md @@ -1,4 +1,4 @@ -## X509Certificate2.ToString(bool) does not throw now when .NET cannot handle the certificate +## X509Certificate2.ToString(Boolean) does not throw now when .NET cannot handle the certificate ### Scope Edge @@ -11,7 +11,7 @@ Available ### Change Description -Previously, this method would throw if `true` was passed for the verbose +In .NET Framework 4.5.2 and earlier versions, this method would throw if `true` was passed for the verbose parameter and there were certificates installed that weren't supported by the .NET Framework. Now, the method will succeed and return a valid string that omits the inaccessible portions of the certificate. @@ -22,7 +22,7 @@ omits the inaccessible portions of the certificate. ### Recommended Action Any code depending on - + should be updated to expect that the returned string may exclude some certificate data (such as public key, private key, and extensions) in some cases in which the API would have previously thrown. From f163be1200dd0c843fd7bc4de79f85e18c551925 Mon Sep 17 00:00:00 2001 From: Rob LaDuca Date: Thu, 29 Mar 2018 17:37:23 -0700 Subject: [PATCH 603/872] Adding WPF Known Issues (#687) * Adding WPF Known Issues WPF known issues for: 504055 and 405199 * Fixing control name * Addressing comments * Addressing comments Fixing missed comments --- ... Non-Adorner TextSelection Occludes Text.md | 18 ++++++++++++++++++ ...w Touch Keyboard In All Scenarios on RS4.md | 18 ++++++++++++++++++ 2 files changed, 36 insertions(+) create mode 100644 Documentation/KnownIssues/Template/405199 - WPF Non-Adorner TextSelection Occludes Text.md create mode 100644 Documentation/KnownIssues/Template/504055 - WPF May Not Show Touch Keyboard In All Scenarios on RS4.md diff --git a/Documentation/KnownIssues/Template/405199 - WPF Non-Adorner TextSelection Occludes Text.md b/Documentation/KnownIssues/Template/405199 - WPF Non-Adorner TextSelection Occludes Text.md new file mode 100644 index 000000000..f34044a09 --- /dev/null +++ b/Documentation/KnownIssues/Template/405199 - WPF Non-Adorner TextSelection Occludes Text.md @@ -0,0 +1,18 @@ +# WPF Non-Adorner Text Selection Occludes Text in FlowDocumentScrollViewer, FlowDocumentReader, and FlowDocumentPageViewer. + +## Symptoms +When the WPF Non-Adorner text selection feature is enabled on .NET Framework 4.7.2, selected text in `System.Windows.Controls.FlowDocumentScrollViewer`, `System.Windows.Controls.FlowDocumentReader`, +and `System.Windows.Controls.FlowDocumentPageViewer` occludes the selected text. + +## Cause +The root cause of this issue is an incorrect default selection opacity value being applied for `System.Windows.Controls.FlowDocumentScrollViewer`, `System.Windows.Controls.FlowDocumentReader`, +and `System.Windows.Controls.FlowDocumentPageViewer`. + +## Resolution +This issue will be fixed in the next version of the .NET Framework. + +To work around this problem, developers can explicitly set the selection opacity to the correct value of .4. Once this is done, the selected text is again visible underneath the text selection. + +```xml + +``` \ No newline at end of file diff --git a/Documentation/KnownIssues/Template/504055 - WPF May Not Show Touch Keyboard In All Scenarios on RS4.md b/Documentation/KnownIssues/Template/504055 - WPF May Not Show Touch Keyboard In All Scenarios on RS4.md new file mode 100644 index 000000000..1d8eb7c54 --- /dev/null +++ b/Documentation/KnownIssues/Template/504055 - WPF May Not Show Touch Keyboard In All Scenarios on RS4.md @@ -0,0 +1,18 @@ +# WPF May Not Show Touch Keyboard In All Scenarios on Windows 10 RS4 + +## Symptoms +In the .NET Framework 4.7.2 runnin on Windows 10 RS4, WPF applications may not immediately show the touch keyboard in some specific scenarios. Generally, these involve variations of the following. + +1. Tap a text box and note the touch keyboard shows. +2. Tap another text box. +3. Tap the 'X' on the touch keyboard to close it. +4. Tap the text box from step 1 and note the touch keyboard does not show. + +## Cause +A WPF change in .NET Framework 4.7.2 is preventing WPF from requesting the touch keyboard show. Due to this, the touch keyboard tracking algorithm in Windows 10 RS4 does not show the +keyboard in all scenarios. + +## Resolution +This will be fixed in the first servicing release for Windows 10 RS4. + +In the meantime, users can tap another text box within the application or they can explicitly tap the touch keyboard button on the start bar to ensure the keyboard shows. From e57080fd39809981bb1307063f4bb5a7de8555b1 Mon Sep 17 00:00:00 2001 From: Vatsan Madhavan Date: Mon, 2 Apr 2018 10:23:12 -0700 Subject: [PATCH 604/872] Known issues documentation for DevDiv VSO 560016 (#686) * Known issues documentation for DevDiv VSO 560016: Bug 560016: [Net472Rel1Last_C Port]: DTS: RS1 LTSB + .NET 4.7: XBAP applications targeting .NET 2.0/3.5 select wrong runtime version * Addressing feedback from rpetrusha - Grammar and consistency cleanup - Markdown cleanup - Improving clarity of presentaiton for registry key information. Using an HTML table instead of an adhoc bulleted list. * Update 560016-XBAP Applications targeting .NET 2.0,3.5 select wrong runtime version.md --- ...ET 2.0,3.5 select wrong runtime version.md | 55 +++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 releases/net472/KnownIssues/560016-XBAP Applications targeting .NET 2.0,3.5 select wrong runtime version.md diff --git a/releases/net472/KnownIssues/560016-XBAP Applications targeting .NET 2.0,3.5 select wrong runtime version.md b/releases/net472/KnownIssues/560016-XBAP Applications targeting .NET 2.0,3.5 select wrong runtime version.md new file mode 100644 index 000000000..0b713a100 --- /dev/null +++ b/releases/net472/KnownIssues/560016-XBAP Applications targeting .NET 2.0,3.5 select wrong runtime version.md @@ -0,0 +1,55 @@ +# XBAP applications that target .NET Framework 3.5 select the wrong runtime (v4 CLR) instead of v2.0 CLR + +## Symptoms + +When a XAML Browser Application (XBAP) that targets .NET Framework 3.5 is launched, it is loaded in CLR v4 incorrectly instead of being launched under CLR v2.0 as is expected. Along with the incorrect CLR, the .NET Framework libraries are also loaded from the latest version of .NET (.NET 4.x), and not .NET 3.5. Many XBAP applications launch and work normally under CLR v4, but some XBAP's fail. The failure-mode is specific to the individual application and cannot be easily generalized. + +## Resolution + +A fix will be released shortly for .NET Framework 4.7.2 on Windows 10 Version 1804. .NET Framework 4.7.2 on all other OS platforms already has this fix. + +The fix for this issue must be enabled by customers who have problems running XBAP applications that target .NET Framework 3.5 under CLR v4. The fix can be enabled by setting the following registry keys: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Platform ArchitectureRegistry KeyValue NameValue KindValueDescription
32-bitHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\Windows Presentation Foundation\HostingDoNotLaunchVersion3HostedApplicationInVersion4RuntimeREG_DWORD0, or value does not existXBAP applications that target .NET Framework 3.5 or.NET Framework 4.x will be both launched under CLR v4
1, or any non-zero valueXBAP applications that target .NET Framework 3.5 will be launched under CLR v2, and XBAP applications that target .NET Framework 4.x will be launched under CLR v4
64-bit + Both of these keys should be set:

+

    +
  • HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\.NETFramework\Windows Presentation Foundation\Hosting
  • +
  • HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\Windows Presentation Foundation\Hosting
  • +
+
DoNotLaunchVersion3HostedApplicationInVersion4RuntimeREG_DWORD0, or value does not existXBAP applications that target .NET Framework 3.5 or.NET Framework 4.x will be both launched under CLR v4
1, or any non-zero valueXBAP applications that target .NET Framework 3.5 will be launched under CLR v2, and XBAP applications that target .NET Framework 4.x will be launched under CLR v4
+ +## More information +.NET Framework 4.6.2, .NET Framework 4.7, and .NET Framework 4.7.1 are also affected by this issue. A fix for these versions of .NET Frameworks will be released shortly. From b03b41056be138c0d6726d1a542d694d042689f9 Mon Sep 17 00:00:00 2001 From: mzorec Date: Tue, 3 Apr 2018 19:41:23 +0200 Subject: [PATCH 605/872] Add Flubu to .NET Open Source Developer Projects (#690) * Update dotnet-developer-projects.md * Update dotnet-developer-projects.md --- dotnet-developer-projects.md | 1 + 1 file changed, 1 insertion(+) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 95569da9e..61e529621 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -235,6 +235,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [CppSharp](https://github.com/mono/CppSharp) - C/C++ bindings generation for .NET. * [CInject](https://github.com/punitganshani/CodeInject) - A tool to inject your C#/VB.NET code into existing .NET assemblies and executables * [FAKE](http://fsharp.github.io/FAKE/) - Build automation system with capabilities which are similar to make and rake. + * [FlubuCore](https://github.com/flubu-core/flubu.core) - Fluent builder is A C# library for building projects and executing deployment scripts using C# code. * [Fody](https://github.com/Fody/Fody) - Extensible tool for weaving .NET assemblies. * [Crawler-Lib Build Tools](http://download.crawler-lib.net/BuildTools/) - [A PowerShell based toolbox](http://www.crawler-lib.net/build-tools) for automating the software build process, autmated testing and integration. * [FsEye](https://code.google.com/p/fseye/) - A visual object tree inspector for the F# Interactive. From 2448cc50d6a47cd5ebea5a61265c195763b39444 Mon Sep 17 00:00:00 2001 From: Ron Petrusha Date: Tue, 3 Apr 2018 14:14:23 -0700 Subject: [PATCH 606/872] Fixed qualified xref (#694) * Fixed qualified xref * Update winforms-accessibility-changes-472.md * Corrected tool name --- .../compatibility/WCFSDKToolsAccessibilityChangesIn4.7.1.md | 2 +- .../compatibility/winforms-accessibility-changes-472.md | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Documentation/compatibility/WCFSDKToolsAccessibilityChangesIn4.7.1.md b/Documentation/compatibility/WCFSDKToolsAccessibilityChangesIn4.7.1.md index e0679667b..479458288 100644 --- a/Documentation/compatibility/WCFSDKToolsAccessibilityChangesIn4.7.1.md +++ b/Documentation/compatibility/WCFSDKToolsAccessibilityChangesIn4.7.1.md @@ -11,7 +11,7 @@ NotPlanned ### Change Description -In the .NET Framework SDK 4.7.1, the svcconfigedit.exe and svctraceviewer.exe tools have been improved by fixing varied accessibility issues. Most of these were small issues like a name not being defined or certain UI automation patterns not being implemented correctly. While many users wouldn’t be aware of these incorrect values, customers who use assistive technologies like screen readers will find these SDK tools more accessible. Certainly, these fixes change some previous behaviors, like keyboard focus order. +In the .NET Framework SDK 4.7.1, the SvcConfigEditor.exe and SvcTraceViewer.exe tools have been improved by fixing varied accessibility issues. Most of these were small issues like a name not being defined or certain UI automation patterns not being implemented correctly. While many users wouldn’t be aware of these incorrect values, customers who use assistive technologies like screen readers will find these SDK tools more accessible. Certainly, these fixes change some previous behaviors, like keyboard focus order. In order to get all the accessibility fixes in these tools, you can the following to your app.config file: ```xml diff --git a/Documentation/compatibility/winforms-accessibility-changes-472.md b/Documentation/compatibility/winforms-accessibility-changes-472.md index b9479ef0a..630ba42d2 100644 --- a/Documentation/compatibility/winforms-accessibility-changes-472.md +++ b/Documentation/compatibility/winforms-accessibility-changes-472.md @@ -45,7 +45,7 @@ __Use of OS-defined colors in High Contrast themes__ - , and controls with set to or now use OS-defined colors in High Contrast theme when selected. Previously, text and background colors were not contrasting and were hard to read. - Controls contained within a that has its property set to `false` will now use OS-defined colors in High Contrast theme. - The, , and controls have an increased luminosity contrast ratio in High Contrast Mode. -- will by default use OS-defined colors in High Contrast mode for the property. +- will by default use OS-defined colors in High Contrast mode for the property. NOTE: Windows 10 has changed values for some high contrast system colors. Windows Forms Framework is based on the Win32 framework. For the best experience, run on the latest version of Windows and opt in to the latest OS changes by adding an app.manifest file in a test application and uncommenting the following code: ``` @@ -56,7 +56,7 @@ NOTE: Windows 10 has changed values for some high contrast system colors. Window __Improved Narrator support__ - Narrator now announces the value of the property when announcing the text of a . - Narrator now indicates when a has its property set to `false`. -- Narrator now gives feedback on the state of a check box when the property is set to `true`. +- Narrator now gives feedback on the state of a check box when the property is set to `true`. - Narrator Scan Mode focus order is now consistent with the visual order of the controls on the ClickOnce download dialog window. __Improved DataGridView Accessibility support__ @@ -65,7 +65,7 @@ __Improved DataGridView Accessibility support__ - The property now returns the correct parent control. __Improved Visual cues__ -- The and controls with an empty property will now display a focus indicator when they recieve focus. +- The and controls with an empty property will now display a focus indicator when they receive focus. __Improved Property Grid Support__ - The control child elements now return a `true` for the property only when a PropertyGrid element is enabled. From 965c4d33b88ff556c6334155ae67b95d6a8b2079 Mon Sep 17 00:00:00 2001 From: Dave Mackey Date: Wed, 4 Apr 2018 13:21:17 -0400 Subject: [PATCH 607/872] Update dotnet-developer-projects.md (#697) Added description for IdentityManager and note that it is no longer maintained. --- dotnet-developer-projects.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 61e529621..4fca3762b 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -45,7 +45,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C ## Security / Identity Management * [NWebsec](https://github.com/NWebsec/NWebsec) - Security headers for ASP.NET applications. - * [IdentityManager](https://github.com/IdentityManager/IdentityManager) + * [IdentityManager](https://github.com/IdentityManager/IdentityManager) - (No Longer Maintained) IdentityManager is a tool for developers and/or administrators to manage the identity information for users of their applications. * [IdentityServer](https://github.com/IdentityServer/IdentityServer3) * [SKGL - Serial Key Generating Library](https://skgl.codeplex.com/) From e8d0ad4e22779445ae8ddfeae9c9d7f18ae6c356 Mon Sep 17 00:00:00 2001 From: Ron Petrusha Date: Wed, 4 Apr 2018 11:07:35 -0700 Subject: [PATCH 608/872] Removed unwanted files (#700) --- ...Non-Adorner TextSelection Occludes Text.md | 18 --- ... Touch Keyboard In All Scenarios on RS4.md | 18 --- .../Keytips behavior improved in WPF.md | 30 ----- ...-for-Net.Tcp-certificate-authentication.md | 33 ------ .../compatibility/aspnet-472-compat-doc.md | 29 ----- ...ream-uses-native-apis-for-decompression.md | 51 -------- .../uri-reserved-characters-consistent.md | 45 -------- .../uri-unc-shares-normalized.md | 33 ------ .../uri-unicode-bidirectional-characters.md | 45 -------- .../uri-unicode-scheme-only-relative.md | 40 ------- ...in-two-iworkflowinstancemanagement-apis.md | 46 -------- ...nUpDownControl-button's-actions-in-sync.md | 41 ------- ...MenuStrip-SourceControl-property-change.md | 43 ------- ...vateFontCollection-Font-handle-leak-fix.md | 45 -------- .../winforms-accessibility-changes-472.md | 109 ------------------ ...oves-correctly-across-hosting-scenarios.md | 53 --------- ...er-default-hash-algorithm-is-now-SHA256.md | 50 -------- ...selection-does-not-follow-system-colors.md | 41 ------- .../wpf-accessibility-improvements.MD | 7 -- ...lays-correctly-when-there-is-no-content.md | 56 --------- ...ET 2.0,3.5 select wrong runtime version.md | 55 --------- releases/net472/KnownIssues/README.md | 1 - releases/net472/README.md | 1 - 23 files changed, 890 deletions(-) delete mode 100644 Documentation/KnownIssues/Template/405199 - WPF Non-Adorner TextSelection Occludes Text.md delete mode 100644 Documentation/KnownIssues/Template/504055 - WPF May Not Show Touch Keyboard In All Scenarios on RS4.md delete mode 100644 Documentation/compatibility/Keytips behavior improved in WPF.md delete mode 100644 Documentation/compatibility/WCF-Improved-WCF-chain-trust-certificate-validation-for-Net.Tcp-certificate-authentication.md delete mode 100644 Documentation/compatibility/aspnet-472-compat-doc.md delete mode 100644 Documentation/compatibility/deflatestream-uses-native-apis-for-decompression.md delete mode 100644 Documentation/compatibility/uri-reserved-characters-consistent.md delete mode 100644 Documentation/compatibility/uri-unc-shares-normalized.md delete mode 100644 Documentation/compatibility/uri-unicode-bidirectional-characters.md delete mode 100644 Documentation/compatibility/uri-unicode-scheme-only-relative.md delete mode 100644 Documentation/compatibility/wcf-avoid-endless-recursion-in-two-iworkflowinstancemanagement-apis.md delete mode 100644 Documentation/compatibility/winform's-DomainUpDownControl-button's-actions-in-sync.md delete mode 100644 Documentation/compatibility/winforms-ContextMenuStrip-SourceControl-property-change.md delete mode 100644 Documentation/compatibility/winforms-PrivateFontCollection-Font-handle-leak-fix.md delete mode 100644 Documentation/compatibility/winforms-accessibility-changes-472.md delete mode 100644 Documentation/compatibility/wpf-KB-focus-now-moves-correctly-across-hosting-scenarios.md delete mode 100644 Documentation/compatibility/wpf-MarkupCompiler-default-hash-algorithm-is-now-SHA256.md delete mode 100644 Documentation/compatibility/wpf-TextBox-PasswordBox-text-selection-does-not-follow-system-colors.md delete mode 100644 Documentation/compatibility/wpf-focus-visual-for-radiobutton-and-checkbox-displays-correctly-when-there-is-no-content.md delete mode 100644 releases/net472/KnownIssues/560016-XBAP Applications targeting .NET 2.0,3.5 select wrong runtime version.md delete mode 100644 releases/net472/KnownIssues/README.md delete mode 100644 releases/net472/README.md diff --git a/Documentation/KnownIssues/Template/405199 - WPF Non-Adorner TextSelection Occludes Text.md b/Documentation/KnownIssues/Template/405199 - WPF Non-Adorner TextSelection Occludes Text.md deleted file mode 100644 index f34044a09..000000000 --- a/Documentation/KnownIssues/Template/405199 - WPF Non-Adorner TextSelection Occludes Text.md +++ /dev/null @@ -1,18 +0,0 @@ -# WPF Non-Adorner Text Selection Occludes Text in FlowDocumentScrollViewer, FlowDocumentReader, and FlowDocumentPageViewer. - -## Symptoms -When the WPF Non-Adorner text selection feature is enabled on .NET Framework 4.7.2, selected text in `System.Windows.Controls.FlowDocumentScrollViewer`, `System.Windows.Controls.FlowDocumentReader`, -and `System.Windows.Controls.FlowDocumentPageViewer` occludes the selected text. - -## Cause -The root cause of this issue is an incorrect default selection opacity value being applied for `System.Windows.Controls.FlowDocumentScrollViewer`, `System.Windows.Controls.FlowDocumentReader`, -and `System.Windows.Controls.FlowDocumentPageViewer`. - -## Resolution -This issue will be fixed in the next version of the .NET Framework. - -To work around this problem, developers can explicitly set the selection opacity to the correct value of .4. Once this is done, the selected text is again visible underneath the text selection. - -```xml - -``` \ No newline at end of file diff --git a/Documentation/KnownIssues/Template/504055 - WPF May Not Show Touch Keyboard In All Scenarios on RS4.md b/Documentation/KnownIssues/Template/504055 - WPF May Not Show Touch Keyboard In All Scenarios on RS4.md deleted file mode 100644 index 1d8eb7c54..000000000 --- a/Documentation/KnownIssues/Template/504055 - WPF May Not Show Touch Keyboard In All Scenarios on RS4.md +++ /dev/null @@ -1,18 +0,0 @@ -# WPF May Not Show Touch Keyboard In All Scenarios on Windows 10 RS4 - -## Symptoms -In the .NET Framework 4.7.2 runnin on Windows 10 RS4, WPF applications may not immediately show the touch keyboard in some specific scenarios. Generally, these involve variations of the following. - -1. Tap a text box and note the touch keyboard shows. -2. Tap another text box. -3. Tap the 'X' on the touch keyboard to close it. -4. Tap the text box from step 1 and note the touch keyboard does not show. - -## Cause -A WPF change in .NET Framework 4.7.2 is preventing WPF from requesting the touch keyboard show. Due to this, the touch keyboard tracking algorithm in Windows 10 RS4 does not show the -keyboard in all scenarios. - -## Resolution -This will be fixed in the first servicing release for Windows 10 RS4. - -In the meantime, users can tap another text box within the application or they can explicitly tap the touch keyboard button on the start bar to ensure the keyboard shows. diff --git a/Documentation/compatibility/Keytips behavior improved in WPF.md b/Documentation/compatibility/Keytips behavior improved in WPF.md deleted file mode 100644 index 3f0c6f871..000000000 --- a/Documentation/compatibility/Keytips behavior improved in WPF.md +++ /dev/null @@ -1,30 +0,0 @@ -## Keytips behavior improved in WPF - -### Scope -Edge - -### Version Introduced -4.7.2 - -### Source Analyzer Status -NotPlanned - -### Change Description -Keytips behavior has been modified to bring parity with behavior on Microsoft Word and Windows Explorer. By checking whether keytip state is enabled or not in the case of a [SystemKey](xref:System.Windows.Input.KeyEventArgs.SystemKey) (in particular, [Alt](xref:System.Windows.Input.Key) or [F11](xref:System.Windows.Input.Key.F11)) being pressed, WPF handles keytip keys appropriately. Keytips now dismiss a menu even when it is opened by mouse. - -- [ ] Quirked -- [ ] Build-time break - -### Recommended Action -N/A - -### Affected APIs -* Not detectable via API analysis - -### Category -Windows Presentation Foundation (WPF) - - diff --git a/Documentation/compatibility/WCF-Improved-WCF-chain-trust-certificate-validation-for-Net.Tcp-certificate-authentication.md b/Documentation/compatibility/WCF-Improved-WCF-chain-trust-certificate-validation-for-Net.Tcp-certificate-authentication.md deleted file mode 100644 index 5c36dbd82..000000000 --- a/Documentation/compatibility/WCF-Improved-WCF-chain-trust-certificate-validation-for-Net.Tcp-certificate-authentication.md +++ /dev/null @@ -1,33 +0,0 @@ -## Improved WCF chain trust certificate validation for Net.Tcp certificate authentication - -### Scope -Minor - -### Version Introduced -4.7.2 - -### Source Analyzer Status -NotPlanned - -### Change Description -.NET Framework 4.7.2 improves chain trust certificate validation when using certificate authentication with transport security with WCF. With this improvement, client certificates that are used to authenticate to a server must be configured for client authentication. Similarly server certificates that are for the authenticating a server must be configured for server authentication. With this change, if the root certificate is disabled, the certificate chain validation fails. The same change was also made to .NET Framework 3.5 and later versions via Windows security roll-up. You can find more information [here](https://support.microsoft.com/en-us/help/4055269/security-only-update-for-net-framework-3-5-1-4-5-2-4-6-4-6-1-4-6-2-4-7). - -This change is on by default and can be turned off by a configuration setting. - -### Recommended Action - - Validate if your server and client certification has the required EKU OID. If not, update your certification. - - Validate if your root certificate is invalid. If so, update the root certificate. - - How to opt out of the change: - If you can't update the certificate, you can work around the breaking change temporarily with the following configration setting, However, opting out of the change will leave your system vulnerable to the security issue. - -```xml - - - - ``` - -### Affected APIs -* Not detectable via API analysis - -### Category -Runtime \ No newline at end of file diff --git a/Documentation/compatibility/aspnet-472-compat-doc.md b/Documentation/compatibility/aspnet-472-compat-doc.md deleted file mode 100644 index 18bc55d26..000000000 --- a/Documentation/compatibility/aspnet-472-compat-doc.md +++ /dev/null @@ -1,29 +0,0 @@ -## "dataAnnotations:dataTypeAttribute:disableRegEx" app setting is on by default in .NET Framework 4.7.2 - -### Scope -Minor - -### Version Introduced -4.7.2 - -### Change Description -In .NET Framework 4.6.1, an app setting (`"dataAnnotations:dataTypeAttribute:disableRegEx"`) was introduced that allows users to disable the use of regular expressions in data type attributes (such as , , and ). This helps to reduce security vulnerability such as avoiding the possibility of a Denial of Service attack using specific regular expressions.
- -In .NET Framework 4.6.1, this app setting to disable RegEx usage was set to `false` by default. Staring with .NET Framework 4.7.2, this config switch is set to `true` by default to further reduce secure vulnerability for web applications that target .NET Framework 4.7.2 and above. - - -### Recommended Action -If you find that regular expressions in your web application do not work after upgrading to .NET Framework 4.7.2, you can update the value of the `"dataAnnotations:dataTypeAttribute:disableRegEx"` setting to `false` to revert to the previous behavior. - -```xml - - - ... - - ... - - -``` - -### Category -Web Application diff --git a/Documentation/compatibility/deflatestream-uses-native-apis-for-decompression.md b/Documentation/compatibility/deflatestream-uses-native-apis-for-decompression.md deleted file mode 100644 index 66d69a168..000000000 --- a/Documentation/compatibility/deflatestream-uses-native-apis-for-decompression.md +++ /dev/null @@ -1,51 +0,0 @@ -## DeflateStream uses native APIs for decompression - -### Scope -Minor - -### Version Introduced -4.7.2 - -### Source Analyzer Status -NotPlanned - -### Change Description - -Starting with the .NET Framework 4.7.2, the implementation of decompression in the `T:System.IO.Compression.DeflateStream` class has changed to use native Windows APIs by default. Typically, this results in a substantial performance improvement. All .NET applications targeting the .NET Framework version 4.7.2 or higher use the native implementation. - -This change might result in some differences in behavior, which include: - -- Exception messages may be different. However, the type of exception thrown remains the same. -- Some special situations, such as not having enough memory to complete an operation, may be handled differently. -- There are known differences for parsing gzip header (note: only `GZipStream` set for decompression is affected): - - Exceptions when parsing invalid headers may be thrown at different times. - - The native implementation enforces that values for some reserved flags inside the gzip header (i.e. [FLG](http://www.zlib.org/rfc-gzip.html#header-trailer)) are set according to the specification, which may cause it to throw an exception where previously invalid values were ignored. - -- [X] Quirked -- [ ] Build-time break - -### Recommended Action - -If decompression with native APIs has adversely affected the behavior of your app, you can opt out of this feature by adding the `Switch.System.IO.Compression.DoNotUseNativeZipLibraryForDecompression` switch to the `runtime` section of your app.config file and setting it to `true`: - -```xml - - - - - - -``` -### Affected APIs -`T:System.IO.Compression.DeflateStream` -`T:System.IO.Compression.GZipStream` - -### Category -Core - - - - diff --git a/Documentation/compatibility/uri-reserved-characters-consistent.md b/Documentation/compatibility/uri-reserved-characters-consistent.md deleted file mode 100644 index 92b45fcc6..000000000 --- a/Documentation/compatibility/uri-reserved-characters-consistent.md +++ /dev/null @@ -1,45 +0,0 @@ -## Ensure System.Uri uses a consistent reserved character set - -### Scope -Minor - -### Version Introduced -4.7.2 - -### Source Analyzer Status -NotPlanned - -### Change Description -In , certain percent-encoded characters that were sometimes decoded are now consistently left encoded. This occurs across the properties and methods that access the path, query, fragment, or userinfo components of the URI. -The behavior will change only when both of the following are true: - - The URI contains the encoded form of any of the following reserved characters: `:`, `'`, `(`, `)`, `!` or `*`. - - The URI contains a Unicode or encoded non-reserved character. -If both of the above are true, the encoded reserved characters are left encoded. In previous versions of the .NET Framework, they are decoded. - -- [x] Quirked -- [ ] Build-time break - -### Recommended Action -For applications that target versions of .NET Framework starting with 4.7.2, the new decoding behavior is enabled by default. If this change is undesirable, you can disable it by adding the following [AppContextSwitchOverrides](~/docs/framework/configure-apps/file-schema/runtime/appcontextswitchoverrides-element.md) switch to the `` section of the application configuration file: -```xml - - - -``` -For applications that target earlier versions of the .NET Framework but are running under versions starting with .NET Framework 4.7.2, the new decoding behavior is disabled by default. You can enable it by adding the following [AppContextSwitchOverrides](~/docs/framework/configure-apps/file-schema/runtime/appcontextswitchoverrides-element.md) switch to the `` section of the application configuration file:: -```xml - - - -``` - -### Affected APIs -* `T:System.Uri` - -### Category -Core - - diff --git a/Documentation/compatibility/uri-unc-shares-normalized.md b/Documentation/compatibility/uri-unc-shares-normalized.md deleted file mode 100644 index 16d9d2b7e..000000000 --- a/Documentation/compatibility/uri-unc-shares-normalized.md +++ /dev/null @@ -1,33 +0,0 @@ -## Allow Unicode in URIs that resemble UNC shares - -### Scope -Edge - -### Version Introduced -4.7.2 - -### Source Analyzer Status -NotPlanned - -### Change Description -In , constructing a file URI containing both a UNC share name and Unicode characters will no longer result in a URI with invalid internal state. The behavior will change only when all of the following are true: - - The URI has the scheme `file:` and is followed by four or more slashes. - - The host name begins with an underscore or other non-reserved symbol. - - The URI contains Unicode characters. - -- [ ] Quirked -- [ ] Build-time break - -### Recommended Action -Applications working with URIs consistently containing Unicode could have conceivably used this behavior to disallow references to UNC shares. Those applications should use instead. - -### Affected APIs -* `T:System.Uri` - -### Category -Core - - \ No newline at end of file diff --git a/Documentation/compatibility/uri-unicode-bidirectional-characters.md b/Documentation/compatibility/uri-unicode-bidirectional-characters.md deleted file mode 100644 index b52fda469..000000000 --- a/Documentation/compatibility/uri-unicode-bidirectional-characters.md +++ /dev/null @@ -1,45 +0,0 @@ -## Allow Unicode Bidirectional Control Characters in URIs - -### Scope -Minor - -### Version Introduced -4.7.2 - -### Source Analyzer Status -NotPlanned - -### Change Description -Unicode specifies several special control characters used to specify the orientation of text. -In previous versions of the .NET Framework, these characters were incorrectly stripped -from all URIs even if they were present in their percent-encoded form. In order to better -follow [RFC 3987](http://tools.ietf.org/html/rfc3987), we now allow these characters in URIs. When found unencoded -in a URI, they are percent-encoded. When found percent-encoded they are left as-is. - -- [x] Quirked -- [ ] Build-time break - -### Recommended Action -For applications that target versions of .NET Framework starting with 4.7.2, support for Unicode bidirectional characters is enabled by default. If this change is undesirable, you can disable it by adding the following [AppContextSwitchOverrides](~/docs/framework/configure-apps/file-schema/runtime/appcontextswitchoverrides-element.md) switch to the `` section of the application configuration file: -```xml - - - -``` -For applications that target earlier versions of the .NET Framework but are running under versions starting with .NET Framework 4.7.2, support for Unicode bidirectional characters is disabled by default. You can enable it by adding the following [AppContextSwitchOverrides](~/docs/framework/configure-apps/file-schema/runtime/appcontextswitchoverrides-element.md) switch to the `` section of the application configuration file:: -```xml - - - -``` - -### Affected APIs -* `T:System.Uri` - -### Category -Core - - \ No newline at end of file diff --git a/Documentation/compatibility/uri-unicode-scheme-only-relative.md b/Documentation/compatibility/uri-unicode-scheme-only-relative.md deleted file mode 100644 index 75b730f87..000000000 --- a/Documentation/compatibility/uri-unicode-scheme-only-relative.md +++ /dev/null @@ -1,40 +0,0 @@ -## Support special relative URI notation when Unicode is present - -### Scope -Edge - -### Version Introduced -4.7.2 - -### Source Analyzer Status -NotPlanned - -### Change Description - - will no longer throw a when calling on certain relative URIs containing Unicode. - -The simplest reproduction of the is below, with the two statements being equivalent: - ```csharp -bool success = Uri.TryCreate("http:%C3%A8", UriKind.RelativeOrAbsolute, out Uri href); -bool success = Uri.TryCreate("http:è", UriKind.RelativeOrAbsolute, out Uri href); - ``` -To reproduce the , the following items must be true: -- The URI must be specified as relative by prepending it with ‘http:’ and not following it with ‘//’. -- The URI must contain percent-encoded Unicode or unreserved symbols. - -- [ ] Quirked -- [ ] Build-time break - -### Recommended Action -Users depending on this behavior to disallow relative URIs should instead specify when creating a URI. - -### Affected APIs -* `Overload:System.Uri.TryCreate` - -### Category -Core - - diff --git a/Documentation/compatibility/wcf-avoid-endless-recursion-in-two-iworkflowinstancemanagement-apis.md b/Documentation/compatibility/wcf-avoid-endless-recursion-in-two-iworkflowinstancemanagement-apis.md deleted file mode 100644 index b09703e29..000000000 --- a/Documentation/compatibility/wcf-avoid-endless-recursion-in-two-iworkflowinstancemanagement-apis.md +++ /dev/null @@ -1,46 +0,0 @@ -## Avoiding endless recursion for IWorkflowInstanceManagement.TransactedCancel and IWorkflowInstanceManagement.TransactedTerminate - -### Scope -Edge - -### Version Introduced -4.7.2 - -### Source Analyzer Status -NotPlanned - -### Change Description -Under some circumstances when using or APIs to cancel or terminate a worklow service instance, the workflow instance may encounter a stack overflow due to endless recursion when the `Workflow` runtime attempts to persist the service instance as part of processing the request. The problem occurs if the workflow instance is in a state where it is waiting for some other outstanding WCF request to another service to complete. - -The `TransactedCancel` and `TransactedTerminate` operations create work items that are queued for the workflow service instance. These work items are not executed as part of the processing of the `TransactedCancel/TransactedTerminate` request. Because the workflow service instance is busy waiting for the other outstanding WCF request to complete, the work item created remains queued. The `TransactedCancel/TransactedTerminate` operation completes and control is returned back to the client. When the transaction associated with the `TransactedCancel/TransactedTerminate` operation attempts to commit, it needs to persist the workflow serivce instance state. But because there is an outstanding `WCF` request for the instance, the Workflow runtime cannot persist the workflow service instance, and an endless recursion loop leads to the stack overflow. - -Because `TransactedCancel` and `TransactedTerminate` only create a work item in memory, the fact that a transaction exists doesn't have any effect. A rollback of the transaction does not discard the work item. - -To address this issue, starting in .NET Framework 4.7.2, we have introduced an `AppSetting` that can be added to the `web.config/app.config` of the workflow service that tells it to ignore transactions for `TransactedCancel` and `TransactedTerminate`. This allows the transaction to commit without waiting for the workflow instance to persist. - -The AppSetting for this feature is named `microsoft:WorkflowServices:IgnoreTransactionsForTransactedCancelAndTransactedTerminate`. A value of `true` indicates that the transaction should be ignored, thus avoiding the stack overflow. The default value of this AppSetting is `false`, so existing workflow service instances are not affected. - - -- [x] Quirked -- [ ] Build-time break - -### Recommended Action -If you are using AppFabric or another client and are encountering a stack overflow in the workflow serivce instance when trying to cancel or terminate a workflow instance, you can add the following to the `` section of the web.config/app.config file for the workflow service: - -```xml - -``` - -If you are not encountering the problem, you do not need to do this. - - -### Affected APIs - * Not detectable via API analysis - -### Category -Windows Workflow Foundation (WF) - - - diff --git a/Documentation/compatibility/winform's-DomainUpDownControl-button's-actions-in-sync.md b/Documentation/compatibility/winform's-DomainUpDownControl-button's-actions-in-sync.md deleted file mode 100644 index 029a55236..000000000 --- a/Documentation/compatibility/winform's-DomainUpDownControl-button's-actions-in-sync.md +++ /dev/null @@ -1,41 +0,0 @@ -## WinForm's Domain upbutton and downbutton actions are in sync now - -### Scope -Edge - -### Version Introduced -4.7.2 - -### Source Analyzer Status -Not planned - -### Change Description -In the .NET Framework 4.7.1 and previous versions the -control's -action is ignored when control text is present, and the developer is required to use action on the control before using action. -Starting with the .NET Framework 4.7.2 both the and actions work independently in this scenario and remain in sync. - -- [X] Quirked -- [ ] Build-time break - -### Recommended Action - -In order for an application to benefit from these changes, it must run on the .NET Framework 4.7.2 or later. The application can benefit from these changes in either of the following ways: -- It is recompiled to target the .NET Framework 4.7.2. This change is enabled by default on Windows Forms applications that target the .NET Framework 4.7.2 or later. -- It opts out of the legacy scrolling behavior by adding the following -- [AppContext Switch](https://docs.microsoft.com/dotnet/framework/configure-apps/file-schema/runtime/appcontextswitchoverrides-element) to the `` section of the app config file and setting it to `false`, as the following example shows. -- ``` - - - -``` - -### Affected APIs -`M:System.Windows.Forms.DomainUpDown.UpButton` -`M:System.Windows.Forms.DomainUpDown.DownButton` - - -### Category -Windows Forms - - diff --git a/Documentation/compatibility/winforms-ContextMenuStrip-SourceControl-property-change.md b/Documentation/compatibility/winforms-ContextMenuStrip-SourceControl-property-change.md deleted file mode 100644 index f86afe2fc..000000000 --- a/Documentation/compatibility/winforms-ContextMenuStrip-SourceControl-property-change.md +++ /dev/null @@ -1,43 +0,0 @@ -## ContextMenuStrip.SourceControl property contains a valid control in the case of nested ToolStripMenuItems - -### Scope -Edge - -### Version Introduced -4.7.2 - -### Source Analyzer Status -NotPlanned - -### Change Description -In the .NET Framework 4.7.1 and previous versions, the property incorrectly returns null when the user opens the menu from nested controls. -In the .NET Framework 4.7.2 and later, property is always set to the actual source control. - -- [X] Quirked -- [ ] Build-time break - -### Recommended Action -__How to opt in or out of these changes__ - -In order for an application to benefit from these changes, it must run on the .NET Framework 4.7.2 or later. The application can benefit from these changes in either of the following ways: -- It is recompiled to target the .NET Framework 4.7.2. This change is enabled by default on Windows Forms applications that target the .NET Framework 4.7.2 or later. -- It targets the .NET Framework 4.7.1 or an earlier version and opts out of the legacy accessibility behaviors by adding the following [AppContext Switch](https://docs.microsoft.com/dotnet/framework/configure-apps/file-schema/runtime/appcontextswitchoverrides-element) to the `` section of the app.config file and setting it to `false`, as the following example shows. -``` - - - -``` -Applications that target the .NET Framework 4.7.2 or later, and want to preserve the legacy behavior can opt in to the use of the legacy source control value by explicitly setting this AppContext switch to `true`. - - -### Affected APIs - * `P:System.Windows.Forms.ContextMenuStrip.SourceControl` - -### Category -Windows Forms - - - - diff --git a/Documentation/compatibility/winforms-PrivateFontCollection-Font-handle-leak-fix.md b/Documentation/compatibility/winforms-PrivateFontCollection-Font-handle-leak-fix.md deleted file mode 100644 index c0ad6789a..000000000 --- a/Documentation/compatibility/winforms-PrivateFontCollection-Font-handle-leak-fix.md +++ /dev/null @@ -1,45 +0,0 @@ -## PrivateFontCollection.AddFontFile method releases Font resources - -### Scope -Edge - -### Version Introduced -4.7.2 - -### Source Analyzer Status -NotPlanned - -### Change Description -In the .NET Framework 4.7.1 and previous versions, the class does not release the GDI+ font resources after the is disposed for objects that are added to this collection using the method. -In the .NET Framework 4.7.2 and later releases the GDI+ fonts that were added to the collection as files. - -- [X] Quirked -- [ ] Build-time break - -### Recommended Action -__How to opt in or out of these changes__ - -In order for an application to benefit from these changes, it must run on the .NET Framework 4.7.2 or later. The application can benefit from these changes in either of the following ways: -- It is recompiled to target the .NET Framework 4.7.2. This change is enabled by default on Windows Forms applications that target the .NET Framework 4.7.2 or later. -- It targets the .NET Framework 4.7.1 or an earlier version and opts out of the legacy accessibility behaviors by adding the following [AppContext Switch](https://docs.microsoft.com/dotnet/framework/configure-apps/file-schema/runtime/appcontextswitchoverrides-element) to the `` section of the app.config file and setting it to `false`, as the following example shows. -``` - - - -``` -Applications that target the .NET Framework 4.7.2 or later, and want to preserve the legacy behavior can opt in to not release font resources by explicitly setting this AppContext switch to `true`. - - -### Affected APIs -* `M:System.Drawing.Text.PrivateFontCollection.AddFontFile(System.String)` -* `M:System.Drawing.Text.PrivateFontCollection.Dispose()` - -### Category -Windows Forms - - - - - diff --git a/Documentation/compatibility/winforms-accessibility-changes-472.md b/Documentation/compatibility/winforms-accessibility-changes-472.md deleted file mode 100644 index 630ba42d2..000000000 --- a/Documentation/compatibility/winforms-accessibility-changes-472.md +++ /dev/null @@ -1,109 +0,0 @@ -## Accessibility improvements in Windows Forms controls for .NET 4.7.2 - -### Scope -Major - -### Version Introduced -4.7.2 - -### Source Analyzer Status -NotPlanned - -### Change Description -Windows Forms Framework is improving how it works with accessibility technologies to better support Windows Forms customers. These include the following changes: -- Changes to improve display during High Contrast mode. -- Changes to improve the keyboard navigation in the DataGridView and MenuStrip controls. -- Changes to interaction with Narrator. - -- [x] Quirked -- [ ] Build-time break - -### Recommended Action -__How to opt in or out of these changes__ - -In order for the application to benefit from these changes, it must run on the .NET Framework 4.7.2 or later. The application can benefit from these changes in either of the following ways: -- It is recompiled to target the .NET Framework 4.7.2. These accessibility changes are enabled by default on Windows Forms applications that target the .NET Framework 4.7.2 or later. -- It targets the .NET Framework 4.7.1 or earlier version and opts out of the legacy accessibility behaviors by adding the following [AppContext Switch](https://docs.microsoft.com/dotnet/framework/configure-apps/file-schema/runtime/appcontextswitchoverrides-element) to the `` section of the app config file and setting it to `false`, as the following example shows. - -```xml - - - - - - - - - - -``` -Note that to opt in to the accessibility features added in .NET Framework 4.7.2, you must also opt in to accessibility features of .NET Framework 4.7.1 as well. -Applications that target the .NET Framework 4.7.2 or later and want to preserve the legacy accessibility behavior can opt in to the use of legacy accessibility features by explicitly setting this AppContext switch to `true`. - -__Use of OS-defined colors in High Contrast themes__ -- The drop down arrow arrow of the now uses OS-defined colors in High Contrast theme. -- , and controls with set to or now use OS-defined colors in High Contrast theme when selected. Previously, text and background colors were not contrasting and were hard to read. -- Controls contained within a that has its property set to `false` will now use OS-defined colors in High Contrast theme. -- The, , and controls have an increased luminosity contrast ratio in High Contrast Mode. -- will by default use OS-defined colors in High Contrast mode for the property. - -NOTE: Windows 10 has changed values for some high contrast system colors. Windows Forms Framework is based on the Win32 framework. For the best experience, run on the latest version of Windows and opt in to the latest OS changes by adding an app.manifest file in a test application and uncommenting the following code: -``` -     -     -``` - -__Improved Narrator support__ -- Narrator now announces the value of the property when announcing the text of a . -- Narrator now indicates when a has its property set to `false`. -- Narrator now gives feedback on the state of a check box when the property is set to `true`. -- Narrator Scan Mode focus order is now consistent with the visual order of the controls on the ClickOnce download dialog window. - -__Improved DataGridView Accessibility support__ -- Rows in a can now be sorted using the keyboard. Now a user can use the F3 key in order to sort by the current column. -- When the is set to , the column header will change color to indicate the current column as the user tabs through the cells in the current row. -- The property now returns the correct parent control. - -__Improved Visual cues__ -- The and controls with an empty property will now display a focus indicator when they receive focus. - -__Improved Property Grid Support__ -- The control child elements now return a `true` for the property only when a PropertyGrid element is enabled. -- The control child elements now return a `false` for the property only when a PropertyGrid element can be changed by the user. - -For an overview of UI automation, see the [UI Automation Overview](https://docs.microsoft.com/dotnet/framework/ui-automation/ui-automation-overview). - - -__Improved keyboard navigation__ -- now allows focus when contained within a that has the property set to `true` - - - -### Affected APIs - - - -### Category -Windows Forms - - - - - diff --git a/Documentation/compatibility/wpf-KB-focus-now-moves-correctly-across-hosting-scenarios.md b/Documentation/compatibility/wpf-KB-focus-now-moves-correctly-across-hosting-scenarios.md deleted file mode 100644 index df12e2aea..000000000 --- a/Documentation/compatibility/wpf-KB-focus-now-moves-correctly-across-hosting-scenarios.md +++ /dev/null @@ -1,53 +0,0 @@ -## Keyboard focus now moves correctly across multiple layers of WinForms/WPF hosting - -### Scope -Edge - -### Version Introduced -4.7.2 - -### Source Analyzer Status -NotPlanned - -### Change Description -Consider a WPF application hosting a WinForms control which in turn hosts WPF controls. Users may not be able to tab out of the WinForms layer if the first or last control in that layer is the WPF `System.Windows.Forms.Integration.ElementHost`. This change fixes this issue, and users are now able to tab out of the WinForms layer. - -Automated applications that rely on focus never escaping the WinForms layer may no longer work as expected. - -- [x] Quirked -- [ ] Build-time break - -### Recommended Action -A developer who wants to utilize this change while targeting a framework version below .NET 4.7.2 can set the following set of AppContext flags to false for the change to be enabled. - -```xml - - - - - -``` - -WPF applications must opt in to all early accessibility improvements to get the later improvements. In other words, both the `Switch.UseLegacyAccessibilityFeatures` and the `Switch.UseLegacyAccessibilityFeatures.2` switches must be set - -A developer who requires the previous functionality while targeting .NET 4.7.2 or greater can set the following AppContext flag to true for the change to be disabled. - -```xml - - - - - -``` - -### Affected APIs -* Not detectable via API analysis - -### Category -Windows Presentation Foundation (WPF) - - - - diff --git a/Documentation/compatibility/wpf-MarkupCompiler-default-hash-algorithm-is-now-SHA256.md b/Documentation/compatibility/wpf-MarkupCompiler-default-hash-algorithm-is-now-SHA256.md deleted file mode 100644 index a312028ad..000000000 --- a/Documentation/compatibility/wpf-MarkupCompiler-default-hash-algorithm-is-now-SHA256.md +++ /dev/null @@ -1,50 +0,0 @@ -## The default hash algorithm for WPF's Markup Compiler is now SHA256 - -### Scope -Transparent - -### Version Introduced -4.7.2 - -### Source Analyzer Status -NotPlanned - -### Change Description -The WPF MarkupCompiler provides compilation services for XAML markup files. In the .NET Framework 4.7.1 and earlier versions, the default hash algorithm used for checksums was SHA1. -Due to recent security concerns with SHA1, this default has been changed to SHA256 starting with the .NET Framework 4.7.2. This change affects all checksum generation for markup files during compilation. - -- [X] Quirked -- [ ] Build-time break - -### Recommended Action -A developer who targets .NET Framework 4.7.2 or greater and wants to revert to SHA1 hashing behavior must set the following AppContext flag. - -```xml - - - - - -``` - -A developer who wants to utilize SHA256 hashing while targeting a framework version below .NET 4.7.2 must set the below AppContext flag. Note that the installed version of the .NET Framework must be 4.7.2 or greater. - -```xml - - - - - -``` - -### Affected APIs -Not detectable via API analysis - -### Category -Windows Presentation Foundation (WPF) - - \ No newline at end of file diff --git a/Documentation/compatibility/wpf-accessibility-improvements.MD b/Documentation/compatibility/wpf-accessibility-improvements.MD index ffae77831..413624958 100644 --- a/Documentation/compatibility/wpf-accessibility-improvements.MD +++ b/Documentation/compatibility/wpf-accessibility-improvements.MD @@ -35,14 +35,7 @@ __LiveRegion support__
Screen readers such as Narrator help people know the UI contents of an application, usually by describing something about the UI that's currently focused, because that is probably the element of most interest to the user. However, if a UI element changes somewhere in the screen and it does not have the focus, the user may not be informed and miss important information. LiveRegions are meant to solve this problem. A developer can use them to inform the screen reader or any other [UI Automation](~/docs/framework/ui-automation/ui-automation-overview.md) client that an important change has been made to a UI element. The screen reader can then decide how and when to inform the user of this change. -======= -- controls are no longer announced as "no item in view" by screen readers. - -__LiveRegion support__ - -Screen readers such as Narrator help people know the UI contents of an application, usually by describing something about the UI that's currently focused, because that is probably the element of most interest to the user. However, if a UI element changes somewhere in the screen and it does not have the focus, the user may not be informed and miss important information. -LiveRegions are meant to solve this problem. A developer can use them to inform the screen reader or any other [UI Automation][UI Automation Overview](https://docs.microsoft.com/dotnet/framework/ui-automation/ui-automation-overview) client that an important change has been made to a UI element. The screen reader can then decide how and when to inform the user of this change. The LiveSetting property also lets the screen reader know how important it is to inform the user of the change made to the UI. diff --git a/Documentation/compatibility/wpf-focus-visual-for-radiobutton-and-checkbox-displays-correctly-when-there-is-no-content.md b/Documentation/compatibility/wpf-focus-visual-for-radiobutton-and-checkbox-displays-correctly-when-there-is-no-content.md deleted file mode 100644 index 992d4c2ad..000000000 --- a/Documentation/compatibility/wpf-focus-visual-for-radiobutton-and-checkbox-displays-correctly-when-there-is-no-content.md +++ /dev/null @@ -1,56 +0,0 @@ -## WPF FocusVisual for RadioButton and CheckBox Now Displays Correctly When The Controls Have No Content - -### Scope -Edge - -### Version Introduced -4.7.2 - -### Source Analyzer Status -NotPlanned - -### Change Description -In the .NET Framework 4.7.1 and earlier versions, WPF and have inconsistent and, in Classic and High Contrast themes, -incorrect focus visuals. These issues occur in cases where the controls do not have any content set. This can make the transition between themes confusing and the focus visual hard to see. -In the .NET Framework 4.7.2, these visuals are now more consistent across themes and more easily visible in Classic and High Contrast themes. - -- [X] Quirked -- [ ] Build-time break - -### Recommended Action -A developer targeting .NET Framework 4.7.2 that wants to revert to the behavior in .NET 4.7.1 will need to set the following AppContext flag. - -```xml - - - - - -``` - -A developer who wants to utilize this change while targeting a framework version below .NET 4.7.2 must set the following AppContext flags. - -Note that all the flags must be set appropriately and the installed version of the .NET Framework must be 4.7.2 or greater. - -WPF applications are required to opt in to all earlier accessibility improvements to get the latest improvements. -To do this, ensure that both the AppContext switches 'Switch.UseLegacyAccessibilityFeatures' and 'Switch.UseLegacyAccessibilityFeatures.2' are set to false. - -```xml - - - - - -``` - -### Affected APIs -Not detectable via API analysis - -### Category -Windows Presentation Foundation (WPF) - - - - diff --git a/releases/net472/KnownIssues/560016-XBAP Applications targeting .NET 2.0,3.5 select wrong runtime version.md b/releases/net472/KnownIssues/560016-XBAP Applications targeting .NET 2.0,3.5 select wrong runtime version.md deleted file mode 100644 index 0b713a100..000000000 --- a/releases/net472/KnownIssues/560016-XBAP Applications targeting .NET 2.0,3.5 select wrong runtime version.md +++ /dev/null @@ -1,55 +0,0 @@ -# XBAP applications that target .NET Framework 3.5 select the wrong runtime (v4 CLR) instead of v2.0 CLR - -## Symptoms - -When a XAML Browser Application (XBAP) that targets .NET Framework 3.5 is launched, it is loaded in CLR v4 incorrectly instead of being launched under CLR v2.0 as is expected. Along with the incorrect CLR, the .NET Framework libraries are also loaded from the latest version of .NET (.NET 4.x), and not .NET 3.5. Many XBAP applications launch and work normally under CLR v4, but some XBAP's fail. The failure-mode is specific to the individual application and cannot be easily generalized. - -## Resolution - -A fix will be released shortly for .NET Framework 4.7.2 on Windows 10 Version 1804. .NET Framework 4.7.2 on all other OS platforms already has this fix. - -The fix for this issue must be enabled by customers who have problems running XBAP applications that target .NET Framework 3.5 under CLR v4. The fix can be enabled by setting the following registry keys: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Platform ArchitectureRegistry KeyValue NameValue KindValueDescription
32-bitHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\Windows Presentation Foundation\HostingDoNotLaunchVersion3HostedApplicationInVersion4RuntimeREG_DWORD0, or value does not existXBAP applications that target .NET Framework 3.5 or.NET Framework 4.x will be both launched under CLR v4
1, or any non-zero valueXBAP applications that target .NET Framework 3.5 will be launched under CLR v2, and XBAP applications that target .NET Framework 4.x will be launched under CLR v4
64-bit - Both of these keys should be set:

-

    -
  • HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\.NETFramework\Windows Presentation Foundation\Hosting
  • -
  • HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\Windows Presentation Foundation\Hosting
  • -
-
DoNotLaunchVersion3HostedApplicationInVersion4RuntimeREG_DWORD0, or value does not existXBAP applications that target .NET Framework 3.5 or.NET Framework 4.x will be both launched under CLR v4
1, or any non-zero valueXBAP applications that target .NET Framework 3.5 will be launched under CLR v2, and XBAP applications that target .NET Framework 4.x will be launched under CLR v4
- -## More information -.NET Framework 4.6.2, .NET Framework 4.7, and .NET Framework 4.7.1 are also affected by this issue. A fix for these versions of .NET Frameworks will be released shortly. diff --git a/releases/net472/KnownIssues/README.md b/releases/net472/KnownIssues/README.md deleted file mode 100644 index 3b94f9157..000000000 --- a/releases/net472/KnownIssues/README.md +++ /dev/null @@ -1 +0,0 @@ -Placeholder diff --git a/releases/net472/README.md b/releases/net472/README.md deleted file mode 100644 index 3b94f9157..000000000 --- a/releases/net472/README.md +++ /dev/null @@ -1 +0,0 @@ -Placeholder From b2841889930742b078313a758033449bb1a20799 Mon Sep 17 00:00:00 2001 From: Chris Sienkiewicz Date: Tue, 10 Apr 2018 15:54:58 -0700 Subject: [PATCH 609/872] Add Stack Trace portable PDB re-targeting guidance (#706) * Add Stack Trace portable PDB re-targeting guidance * Address PR comments --- ...-file-and-line-information-if-requested.md | 51 +++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 Documentation/compatibility/Stack-traces-obtained-when-using-portable-PDBs-now-include-source-file-and-line-information-if-requested.md diff --git a/Documentation/compatibility/Stack-traces-obtained-when-using-portable-PDBs-now-include-source-file-and-line-information-if-requested.md b/Documentation/compatibility/Stack-traces-obtained-when-using-portable-PDBs-now-include-source-file-and-line-information-if-requested.md new file mode 100644 index 000000000..8959a5006 --- /dev/null +++ b/Documentation/compatibility/Stack-traces-obtained-when-using-portable-PDBs-now-include-source-file-and-line-information-if-requested.md @@ -0,0 +1,51 @@ +## Stack traces obtained when using portable PDBs now include source file and line information if requested + +### Scope +Edge + +### Version Introduced +4.7.2 + +### Source Analyzer Status +NotPlanned + +### Change Description +Starting with .NET Framework 4.7.2, stack traces obtained when using portable PDBs include source file and line information when requested. In versions prior to .NET Framework 4.7.2, source file and line information would be unavailable when using portable PDBs even if explicitly requested. + +- [x] Quirked +- [ ] Build-time break + +### Recommended Action +For applications that target the .NET Framework 4.7.2, you can opt out of the source file and line information when using portable PDBs if it is not desirable by adding the following to the `` section of your `app.config` file: + +```xml + + + +``` + +For applications that target earlier versions of the .NET Framework but run on the .NET Framework 4.7.2 or later, you can opt in to the source file and line information when using portable PDBs by adding the following to the `` section of your `app.config` file: + +```xml + + + +``` + + +### Affected APIs +* `M:System.Diagnostics.StrackTrace.#ctor(System.Boolean)` +* `M:System.Diagnostics.StrackTrace.#ctor(System.Exception,System.Boolean)` +* `M:System.Diagnostics.StrackTrace.#ctor(System.Exception,System.Int32,System.Boolean)` + + +### Category +Core + +[More information]([https://github.com/dotnet/core/blob/master/Documentation/diagnostics/portable_pdb.md]) + + + + From 149fac1c96b66d24f0bd75777ebc3a89d942e61e Mon Sep 17 00:00:00 2001 From: Ron Petrusha Date: Tue, 10 Apr 2018 16:05:33 -0700 Subject: [PATCH 610/872] Deletion as part of move to net472 branch (#707) --- ...-file-and-line-information-if-requested.md | 51 ------------------- 1 file changed, 51 deletions(-) delete mode 100644 Documentation/compatibility/Stack-traces-obtained-when-using-portable-PDBs-now-include-source-file-and-line-information-if-requested.md diff --git a/Documentation/compatibility/Stack-traces-obtained-when-using-portable-PDBs-now-include-source-file-and-line-information-if-requested.md b/Documentation/compatibility/Stack-traces-obtained-when-using-portable-PDBs-now-include-source-file-and-line-information-if-requested.md deleted file mode 100644 index 8959a5006..000000000 --- a/Documentation/compatibility/Stack-traces-obtained-when-using-portable-PDBs-now-include-source-file-and-line-information-if-requested.md +++ /dev/null @@ -1,51 +0,0 @@ -## Stack traces obtained when using portable PDBs now include source file and line information if requested - -### Scope -Edge - -### Version Introduced -4.7.2 - -### Source Analyzer Status -NotPlanned - -### Change Description -Starting with .NET Framework 4.7.2, stack traces obtained when using portable PDBs include source file and line information when requested. In versions prior to .NET Framework 4.7.2, source file and line information would be unavailable when using portable PDBs even if explicitly requested. - -- [x] Quirked -- [ ] Build-time break - -### Recommended Action -For applications that target the .NET Framework 4.7.2, you can opt out of the source file and line information when using portable PDBs if it is not desirable by adding the following to the `` section of your `app.config` file: - -```xml - - - -``` - -For applications that target earlier versions of the .NET Framework but run on the .NET Framework 4.7.2 or later, you can opt in to the source file and line information when using portable PDBs by adding the following to the `` section of your `app.config` file: - -```xml - - - -``` - - -### Affected APIs -* `M:System.Diagnostics.StrackTrace.#ctor(System.Boolean)` -* `M:System.Diagnostics.StrackTrace.#ctor(System.Exception,System.Boolean)` -* `M:System.Diagnostics.StrackTrace.#ctor(System.Exception,System.Int32,System.Boolean)` - - -### Category -Core - -[More information]([https://github.com/dotnet/core/blob/master/Documentation/diagnostics/portable_pdb.md]) - - - - From 7a457ee640bc1c4ce5714986ab01a607b00dfa06 Mon Sep 17 00:00:00 2001 From: Dave Mackey Date: Mon, 16 Apr 2018 12:02:04 -0400 Subject: [PATCH 611/872] Numerous Updates to Correct URLs (#702) * Update dotnet-developer-projects.md Added description for IdentityManager and note that it is no longer maintained. * Updated URLs for many projects, especially those that were CodePlex. * Update dotnet-developer-projects.md Fixed issues highlighted by @rpetrusha; began standardizing descriptions to end with period. --- dotnet-developer-projects.md | 114 +++++++++++++++++------------------ 1 file changed, 57 insertions(+), 57 deletions(-) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 4fca3762b..01659b8e7 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -6,7 +6,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C ## .NET Implementations * [.NET Core](https://github.com/dotnet/core) - Core .NET Framework - * [C# Native](https://csnative.codeplex.com) - Compiles C# to native. + * [C# Native](https://csnative.codeplex.com) - Compiles C# to native (No Recent Updates - Still on CodePlex - 4/2018). * [Cosmos](https://github.com/CosmosOS/Cosmos) - C# Open Source Managed Operating System, an operating system "construction kit". * [Fling OS](https://github.com/FlingOS/FlingOS) - [C# Operating System](http://www.flingos.co.uk/) designed for people to learn low-level development from. * [Mono](https://github.com/mono/mono) - Cross-platform implementation of .NET Framework. @@ -27,18 +27,18 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [Cobra](http://cobra-language.com/source/) - Clean, high-level syntax (Boo/Python-like). Static and dynamic binding. First class support for unit tests and contracts. Compiled performance with scripting conveniences. Lambdas and closures. Extensions and mixins * [Dynamic Language Runtime](http://www.github.com/IronLanguages/main) - A toolkit for building dynamic languages for .NET. * [Eagle](https://eagle.to) - A .NET implementation of the [Tcl](https://www.tcl.tk) programming language, built on the CLR. - * [Essence#](https://essencesharp.codeplex.com/) - Essence# is a fully dynamic and highly polymorphic programming language which features pervasive message passing, pervasive dynamic and strong typing, pervasive and deep reflection and pervasive object orientation. + * [Essence#](https://github.com/EssenceSharp/cSharp) - Essence# is a fully dynamic and highly polymorphic programming language which features pervasive message passing, pervasive dynamic and strong typing, pervasive and deep reflection and pervasive object orientation. * [F#](https://github.com/fsharp/fsharp) - A mature, open source, cross-platform, functional-first programming language. * [F*](https://github.com/FStarLang/FStar) - An ML-like language with a type system for program verification. * [IronPython](https://github.com/IronLanguages/main/tree/master/Languages/IronPython) - A .NET implementation of the [Python](https://www.python.org) programming language, built on the DLR. [IronPython Site](http://ironpython.net). * [IronRuby](https://github.com/IronLanguages/main/tree/master/Languages/Ruby) - A .NET implementation of the [Ruby](https://www.ruby-lang.org) programming language, built on the DLR. [IronRuby Site](http://ironruby.net). - * [IronScheme](http://ironscheme.codeplex.com) - A R6RS conforming Scheme-like implementation based on the Microsoft DLR. - * [Irony](https://irony.codeplex.com/) - a development kit for implementing languages on .NET platform + * [IronScheme](https://github.com/leppie/IronScheme) - A R6RS conforming Scheme-like implementation based on the Microsoft DLR. + * [Irony](https://github.com/IronyProject/) - a development kit for implementing languages on .NET platform * [MoonSharp](https://github.com/xanathar/moonsharp/) - A Lua interpreter and remote debugger, written entirely in C#, easily embeddable in any application running on .NET 3.5+ and Mono. * [Nemerle](https://github.com/rsdn/nemerle) - A high-level statically-typed programming language which offers functional, object-oriented and imperative features and has a simple C# like syntax and a powerful meta-programming system. * [NiL.JS](https://github.com/nilproject/NiL.JS) - A .NET implementation of the ECMAScript language and runtime. * [Phalanger](https://github.com/DEVSENSE/Phalanger) - full-featured PHP runtime & compiler for .NET/Mono frameworks. Phalanger is modern open-source implementation of PHP, compatible with the vast array of existing PHP code. - * [Roslyn (.NET Compiler Platform)](https://roslyn.codeplex.com/) - Open-source C# and Visual Basic compilers with rich code analysis APIs. + * [Roslyn (.NET Compiler Platform)](https://github.com/dotnet/roslyn) - Open-source C# and Visual Basic compilers with rich code analysis APIs. ## Quality Assurance * [C# Coding Guidelines](https://github.com/dennisdoomen/CSharpGuidelines) - A set of coding guidelines for C# 3.0, 4.0 and 5.0 that extend StyleCop and can be forked and adapted for internal use. @@ -47,11 +47,11 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [NWebsec](https://github.com/NWebsec/NWebsec) - Security headers for ASP.NET applications. * [IdentityManager](https://github.com/IdentityManager/IdentityManager) - (No Longer Maintained) IdentityManager is a tool for developers and/or administrators to manage the identity information for users of their applications. * [IdentityServer](https://github.com/IdentityServer/IdentityServer3) - * [SKGL - Serial Key Generating Library](https://skgl.codeplex.com/) + * [SKGL - Serial Key Generating Library](https://github.com/SerialKeyManager/SKGL) ## Web CMS * [Composite C1](https://github.com/Orckestra/C1-CMS) - Web content management platform (CMS). - * [DNN (formerly DotNetNuke)](https://dotnetnuke.codeplex.com/) - Web content management platform (CMS). + * [DNN (formerly DotNetNuke)](https://github.com/dnnsoftware/Dnn.Platform) - Web content management platform (CMS). * [Kaliko CMS](https://github.com/KalikoCMS/KalikoCMS.Core) - Flexible and extensible CMS framework supporting both ASP.NET MVC and WebForms. * [N2CMS](https://github.com/n2cms/n2cms) - Open source, lightweight, code-first CMS able to seamlessly integrate into any MVC project. * [Orchard](https://github.com/OrchardCMS/Orchard) - A community-focused Content Management System built on the ASP.NET MVC platform. @@ -87,13 +87,13 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [Azure Event Hubs](https://github.com/azure/azure-event-hubs-dotnet) - .NET Standard client library for [Azure Event Hubs](https://docs.microsoft.com/en-us/azure/event-hubs/). * [Azure Relay](https://github.com/azure/azure-relay-dotnet) - .NET Standard client library for [Azure Relay](https://docs.microsoft.com/en-us/azure/service-bus-relay/relay-what-is-it). * [AzureNetQ](https://github.com/Roysvork/AzureNetQ) - An easy to use .NET API for Azure Service Bus. - * [Brighter](https://github.com/iancooper/Paramore) - A Command Dispatcher and Command Processor library with support for Work or Task Queues over different MoM implementations such as RabbitMQ + * [Brighter](https://github.com/iancooper/Paramore) - A Command Dispatcher and Command Processor library with support for Work or Task Queues over different MoM implementations such as RabbitMQ. * [CAP](https://github.com/dotnetcore/CAP) - An EventBus with local persistent message functionality for RabbitMQ or Kafka. * [EasyNetQ](https://github.com/mikehadlow/EasyNetQ) - An easy to use .NET API for RabbitMQ. * [Lime](https://github.com/takenet/lime-csharp) - A lightweight messaging library. * [MassTransit](https://github.com/MassTransit/MassTransit) - A distributed application framework for RabbitMQ and Azure Service Bus. - * [NServiceBus](https://github.com/Particular/NServiceBus) - The most popular service bus for .NET - * [RestBus](https://github.com/tenor/RestBus) - Easy Asynchronous Messaging and Queueing for .NET + * [NServiceBus](https://github.com/Particular/NServiceBus) - The most popular service bus for .NET. + * [RestBus](https://github.com/tenor/RestBus) - Easy Asynchronous Messaging and Queueing for .NET. ## Libraries * [Albedo](https://github.com/ploeh/Albedo) - A .NET library targeted at making Reflection programming more consistent, using a common set of abstractions and utilities. @@ -118,19 +118,19 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [ColorSharp](https://github.com/Litipk/ColorSharp) - Library to handle color spaces and light spectrums. * [ComparerExtensions](https://github.com/jehugaleahsa/comparerextensions) - Build IComparer and IEqualityComparer objects using natural language syntax. * [Comparers](https://github.com/StephenCleary/Comparers) - Fluent syntax for building comparers (and equality comparers) and implementing object comparison. - * [Cricket](https://github.com/fsprojects/Cricket) - Actor library + * [Cricket](https://github.com/fsprojects/Cricket) - Actor library. * [DateTimeExtensions](https://github.com/kappy/DateTimeExtensions) - Common Date Time operations on the form of extensions to System.DateTime, including holidays and working days calculations on several culture locales. - * [DeveelDB](https://github.com/deveel/deveeldb) - SQL-99 embeddable database engine for .NET - * [Deveel Math](https://github.com/deveel/deveel-math) - A port of Google's Harmony library of the Math components to .NET for the computation of astonomic decimals (numbers with more than 1 million decimal digits) - * [DiffSharp](https://github.com/gbaydin/DiffSharp) - Automatic Differentiation Library + * [DeveelDB](https://github.com/deveel/deveeldb) - SQL-99 embeddable database engine for .NET. + * [Deveel Math](https://github.com/deveel/deveel-math) - A port of Google's Harmony library of the Math components to .NET for the computation of astonomic decimals (numbers with more than 1 million decimal digits). + * [DiffSharp](https://github.com/gbaydin/DiffSharp) - Automatic Differentiation Library. * [DnsClient](https://github.com/MichaCo/DnsClient.NET) - A high performant DNS query/lookup library - [Home](http://dnsclient.michaco.net) * [DotNetOpenAuth](https://github.com/DotNetOpenAuth) - Library that adds support for your site visitors to login with their OpenIDs by just dropping an ASP.NET control onto your page. - * [DropboxRestAPI](https://github.com/saguiitay/DropboxRestAPI) - DropBox .Net Client Library - * [DynamicData](https://github.com/RolandPheasant/DynamicData) - Brings the power of Rx to collections + * [DropboxRestAPI](https://github.com/saguiitay/DropboxRestAPI) - DropBox .Net Client Library. + * [DynamicData](https://github.com/RolandPheasant/DynamicData) - Brings the power of Rx to collections. * [Excel-DNA](https://github.com/Excel-DNA/ExcelDna) - Create high-performance, easy to deploy Excel add-ins with .NET - [Home](http://excel-dna.net) * [ExtraLINQ](https://github.com/mariusschulz/ExtraLINQ) - Various extension methods for working with .NET collections. * [FeatureToggle](https://github.com/jason-roberts/FeatureToggle) - Simple, reliable feature toggles in .NET. - * [FlatMapper](https://github.com/kappy/FlatMapper) - A library to import and export data from and to plain text files in a Linq compatible way + * [FlatMapper](https://github.com/kappy/FlatMapper) - A library to import and export data from and to plain text files in a Linq compatible way. * [FluentBootstrap](https://github.com/somedave/FluentBootstrap) * [FluentConsole](https://github.com/ashmind/FluentConsole) - Alternative approach to colored console (`FluentConsole.Red.Text().Green.Text()`). * [FluentValidation](https://github.com/JeremySkinner/FluentValidation) - A small validation library for .NET that uses a fluent interface and lambda expressions for building validation rules. @@ -149,52 +149,52 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [Lucene.Net](https://github.com/apache/lucene.net) * [MahApps.Metro.IconPacks](https://github.com/MahApps/MahApps.Metro.IconPacks) - Some awesome icons for `WPF` and `UWP` all together. The library contains controls to use icons from [Material Design](https://materialdesignicons.com/), [Material Design Icons Light](https://github.com/Templarian/MaterialDesignLight), [Font Awesome](http://fontawesome.io/icons/), [GitHub Octicons](https://octicons.github.com/), [Modern](http://modernuiicons.com/), [Entypo+](http://www.entypo.com/) and [Simple Icons](https://simpleicons.org/). * [Math.NET Numerics](https://github.com/mathnet/mathnet-numerics) - Provides methods and algorithms for numerical computations in science, engineering and every day use. - * [Mathos Core Libary](http://mathos.codeplex.com/) - A library with algorithms for numerical calcultations in finance, statistics, pattern recognition, and more. + * [Mathos Core Libary](https://github.com/MathosProject/Mathos-Project) - A library with algorithms for numerical calcultations in finance, statistics, pattern recognition, and more. * [Mathos Parser](https://github.com/MathosProject/Mathos-Project) - A simple parser for mathematical expressions before and at runtime. * [Mjolnir](https://github.com/hudl/Mjolnir) - [Hystrix](https://github.com/Netflix/Hystrix)-inspired fault tolerance with circuit breakers and thread pools. - * [MoreLINQ](https://code.google.com/p/morelinq/) - LINQ to Objects is missing a few desirable features. This project will enhance LINQ to Objects with extra methods, in a manner which keeps to the spirit of LINQ. + * [MoreLINQ](https://morelinq.github.io/) - LINQ to Objects is missing a few desirable features. This project will enhance LINQ to Objects with extra methods, in a manner which keeps to the spirit of LINQ. * [NAudio](https://github.com/naudio/NAudio) - An open source .NET audio and MIDI library. * [NetTopologySuite](https://github.com/NetTopologySuite) - A .NET port of the JTS Topology Suite. * [NEST](https://github.com/elastic/elasticsearch-net) - The official .NET client library for Elasticsearch. - * [NHunspell](http://sourceforge.net/projects/nhunspell/) - Spell Checker, Hyphenation an Theasaurus - * [NModbus4](https://github.com/NModbus4/NModbus4) - Implementation of the Modbus protocol - * [NodaTime](https://code.google.com/p/noda-time/) - A better date and time API for .NET - * [NPOI](https://npoi.codeplex.com) - An Office file formats (xls, xlsx, docx) read/write library for .NET - * [OneDriveRestAPI](https://github.com/saguiitay/OneDriveRestAPI) - OneDrive .Net Client Library using the REST API. + * [NHunspell](http://sourceforge.net/projects/nhunspell/) - Spell Checker, Hyphenation an Theasaurus. + * [NModbus4](https://github.com/NModbus4/NModbus4) - Implementation of the Modbus protocol. + * [NodaTime](https://nodatime.org/) - A better date and time API for .NET. + * [NPOI](https://github.com/tonyqus/npoi) - An Office file formats (xls, xlsx, docx) read/write library for .NET. + * [OneDriveRestAPI](https://github.com/saguiitay/OneDriveRestAPI) - (No Updates in 3 Years) OneDrive .Net Client Library using the REST API. * [OsmSharp](https://github.com/OsmSharp) - Mapping & Routing library. - * [PocketSharp](https://github.com/ceee/PocketSharp) + * [PocketSharp](https://github.com/ceee/PocketSharp) - Library for the Pocket API. * [PortableRest](https://github.com/AdvancedREI/PortableRest) - Portable library for building cross-platform REST API Clients for .NET and Xamarin. * [RestSharp](https://github.com/restsharp/RestSharp) - Simple REST and HTTP API Client for .NET * [SharpCompress](https://github.com/adamhathcock/sharpcompress) - SharpCompress is a fully managed cross-platform C# library to deal with many compression types and formats: Zip, GZip, RAR, TAR, 7Zip, etc. - * [SharpMap](https://sharpmap.codeplex.com/) - An easy-to-use mapping library for use in web and desktop applications - * [SharpSnmpLib](https://sharpsnmplib.codeplex.com) - An easy-to-use SNMP library for use on all platforms (.NET/Mono/Xamarin) + * [SharpMap](https://github.com/SharpMap) - An easy-to-use mapping library for use in web and desktop applications + * [SharpSnmpLib](https://docs.sharpsnmp.com/en/latest/) - An easy-to-use SNMP library for use on all platforms (.NET/Mono/Xamarin) * [Shielded](https://github.com/jbakic/Shielded) - Software Transactional Memory for .NET * [SmartIrc4net](https://github.com/meebey/SmartIrc4net) - IRC C# Library * [Spartacus](https://github.com/wind39/spartacus) - Multi-purpose C# library, containing: 1) classes to access many types of databases in a fast, generic way; 2) classes to work with XLSX, CSV and DBF files; 3) PDF report engine. * [Splat](https://github.com/paulcbetts/splat) - A library to make things cross-platform that should be. * [SSH.NET](https://github.com/sshnet/SSH.NET) - A client-side library for SSH, SCP and SFTP. - * [Strongly Typed Client API Generators for ASP.NET Web API](https://webapiclientgen.codeplex.com/) - Strongly Typed Client API Generators generate strongly typed client API in TypeScript and C# codes supporting desktop, Universal Windows, Android and iOS. + * [Strongly Typed Client API Generators for ASP.NET Web API](https://github.com/zijianhuang/webapiclientgen) - Strongly Typed Client API Generators generate strongly typed client API in TypeScript and C# codes supporting desktop, Universal Windows, Android and iOS. * [Stuntman](https://github.com/ritterim/stuntman) - OWIN middleware for quickly mocking authentication/authorization use case scenarios locally. Supports Cookie Authentication and Bearer Token Authentication. - * [SuperSocket](https://github.com/kerryjiang/SuperSocket) - An extensible socket server engine which supports .NET and Mono - * [surging](https://github.com/dotnetcore/surging) - The distributed micro service framework based on .NET Core provides high-performance RPC Communications + * [SuperSocket](https://github.com/kerryjiang/SuperSocket) - An extensible socket server engine which supports .NET and Mono. + * [surging](https://github.com/dotnetcore/surging) - The distributed micro service framework based on .NET Core provides high-performance RPC Communications. * [Sweet.Jayson](https://github.com/ocdogan/Sweet.Jayson) - Fast, reliable, easy to use, fully json.org compliant, thread safe C# JSON library for server side and desktop operations. - * [VkSharp](https://github.com/kasthack/vksharp) - VK client library - * [TomP2P.NET](https://github.com/tomp2p/TomP2P.NET) - A P2P-based high performance key-value pair storage library for .NET + * [VkSharp](https://github.com/kasthack/vksharp) - VK client library. + * [TomP2P.NET](https://github.com/tomp2p/TomP2P.NET) - A P2P-based high performance key-value pair storage library for .NET. (Not Updated in 3 Years - 4/2018) * [WampSharp](https://github.com/Code-Sharp/WampSharp) - A C# implementation of [The Web Application Messaging Protocol](http://wamp.ws) - a protocol that provides messaging patterns of Remote Procedure Calls and Publish/Subscribe over WebSockets. * [WebApiProxy](https://github.com/faniereynders/WebApiProxy) - An automatic proxy provider for RESTful services built on ASP.NET Web API. Includes JavaScript & C# client generation. - * [WebSocket4Net](https://websocket4net.codeplex.com/) - A C# websocket client for .NET, Mono and Xamarin - * [WinFsp](https://github.com/billziss-gh/winfsp) - FUSE for Windows - Develop file systems in .NET - * [WpfToolkit](https://github.com/dotnetprojects/wpftoolkit) - Fork of the MS WPF Toolkit - * [XamlEssentials](https://github.com/AdvancedREI/XamlEssentials) - Collection of helpers for Microsoft's XAML platforms. - * [Zlib.Portable](https://github.com/AdvancedREI/Zlib.Portable) - A Portable Class Library port of the Zlib library from http://dotnetzip.codeplex.com. + * [WebSocket4Net](https://github.com/kerryjiang/WebSocket4Net) - A C# websocket client for .NET, Mono and Xamarin. + * [WinFsp](https://github.com/billziss-gh/winfsp) - FUSE for Windows - Develop file systems in .NET. + * [WpfToolkit](https://github.com/dotnetprojects/wpftoolkit) - Fork of the MS WPF Toolkit. + * [XamlEssentials](https://github.com/AdvancedREI/XamlEssentials) - Collection of helpers for Microsoft's XAML platforms. (Not Updated in 4 Years - 4/2018) + * [Zlib.Portable](https://github.com/AdvancedREI/Zlib.Portable) - A Portable Class Library port of the Zlib library from http://dotnetzip.codeplex.com. (Not Updated in 3 Years - 4/2018) * [ExtCore](https://github.com/ExtCore/ExtCore) - Free, open source and cross-platform framework for creating modular and extendable web applications based on ASP.NET Core 1.1. ## Data Mine/Data Extraction/Machine Learning/AI - * [AForge.NET](http://www.aforgenet.com/) - a C# framework designed for developers and researchers in the fields of Computer Vision and Artificial Intelligence - image processing, neural networks, genetic algorithms, machine learning, robotics + * [AForge.NET](http://www.aforgenet.com/) - a C# framework designed for developers and researchers in the fields of Computer Vision and Artificial Intelligence - image processing, neural networks, genetic algorithms, machine learning, robotics. * [Accord.NET Framework](https://github.com/accord-net/framework) - The Accord.NET Framework is a .NET machine learning framework combined with audio and image processing libraries completely written in C#. - * [Nepy](http://nepy.codeplex.com) - A collection of NLP parsers for .NET - * [SharpNLP](http://sharpnlp.codeplex.com) - SharpNLP is a collection of natural language processing tools written in C# - * [Toxy](http://toxy.codeplex.com) - An data/text extraction framework for .NET, similar to Tika in Java. + * [Nepy](https://github.com/tonyqus/nepy) - A collection of NLP parsers for .NET. (Not Updated in 3 Years - 4/2018) + * [SharpNLP](http://sharpnlp.codeplex.com) - SharpNLP is a collection of natural language processing tools written in C#. (No Recent Updates - Still On Codeplex - 4/2018) + * [Toxy](https://github.com/tonyqus/toxy) - An data/text extraction framework for .NET, similar to Tika in Java. (Not Updated in 2 Years - 4/2018) ## Graphics & Server-side Image Processing * [DynamicImage](https://github.com/tgjones/dynamic-image) - WPF-based server-side image rendering system - lots of visual effects implemented as high-performance shaders. Has URL api, several plugins available. @@ -202,9 +202,9 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [ImageProcessor](https://github.com/jimbobsquarepants/imageprocessor/) - A fluent wrapper around System.Drawing for the processing of image files (NET 4.5+ GDI+ based). * [ImageResizer](https://github.com/imazen/resizer) - Add commands to image URLs to get altered versions in milliseconds. Edit, filter, touch-up images in real-time. (multiple backends - FreeImage, C++/CLI, GDI+, WIC). 45+ plugins available. * [King.Azure.Imaging](https://github.com/jefking/King.Azure.Imaging) - Scalable image uploading and processing for Azure. - * [Magick.NET](https://magick.codeplex.com) - The .NET (Core/Framework) wrapper for the [ImageMagick](https://www.imagemagick.org) library that supports over [100 major file formats](https://www.imagemagick.org/script/formats.php). + * [Magick.NET](https://github.com/dlemstra/Magick.NET) - The .NET (Core/Framework) wrapper for the [ImageMagick](https://www.imagemagick.org) library that supports over [100 major file formats](https://www.imagemagick.org/script/formats.php). * [MonoGame](http://www.monogame.net/) - MonoGame is a cross-platform, open-source implementation of the XNA Game Framework. - * [.NET Image Processor](http://dotnetimageprocessor.codeplex.com/) - Extensible, chainable image processing library (GDI+ based). + * [.NET Image Processor](https://github.com/elkdanger/image-processor) - Extensible, chainable image processing library (GDI+ based). * [OpenTK](https://github.com/opentk/opentk) - OpenTK is a low-level, cross-platform binding to OpenGL, OpenGL ES, OpenCL and OpenAL, available for Windows, Linux, Mac OS X, BSD, Android and iOS. * [SharpDX](https://github.com/sharpdx/SharpDX) - SharpDX is a project delivering the full DirectX API for .NET on all Windows platforms. * [numl](http://numl.net) - numl is a general purpose machine learning framework meant to simplify the data analysis process @@ -226,7 +226,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [Prism](https://github.com/PrismLibrary/Prism) - A cross-platform desktop and mobile MVVM development framework. * [Radical](https://github.com/RadicalFx/radical) - An infrastructure framework whose primary role is to help in the development of composite WPF/Silverlight/WP/WinRT applications based on the Model View ViewModel pattern. * [ReactiveUI](https://github.com/reactiveui/ReactiveUI) - An MVVM framework that integrates with the Reactive Extensions for .NET to create elegant, testable User Interfaces that run on any mobile or desktop platform. - * [Simple Mvvm Toolkit](http://simplemvvmtoolkit.codeplex.com/) - Provides a simple framework and set of tools for getting up to speed quickly with applications based on the MVVM design pattern. + * [Simple Mvvm Toolkit](https://github.com/SimpleMvvm) - Provides a simple framework and set of tools for getting up to speed quickly with applications based on the MVVM design pattern. * [Win Application Framework (WAF)](https://github.com/jbe2277/waf) - A lightweight Framework that helps you to create well structured XAML Applications. It supports you in applying a Layered Architecture and the Model-View-ViewModel pattern. ## Tools @@ -238,7 +238,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [FlubuCore](https://github.com/flubu-core/flubu.core) - Fluent builder is A C# library for building projects and executing deployment scripts using C# code. * [Fody](https://github.com/Fody/Fody) - Extensible tool for weaving .NET assemblies. * [Crawler-Lib Build Tools](http://download.crawler-lib.net/BuildTools/) - [A PowerShell based toolbox](http://www.crawler-lib.net/build-tools) for automating the software build process, autmated testing and integration. - * [FsEye](https://code.google.com/p/fseye/) - A visual object tree inspector for the F# Interactive. + * [FsEye](https://github.com/swensensoftware/fseye) - A visual object tree inspector for the F# Interactive. * [FsharpLint](https://github.com/fsprojects/FSharpLint) - Lint tool for F#. * [FsPickler](https://github.com/nessos/FsPickler) - Serialization library that facilitates the distribution of .NET objects. * [GitLink](https://github.com/GitTools/GitLink) - Command-line tool to make .NET open source accessible without the need for a symbols server @@ -248,12 +248,12 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [Mini Profiler](https://github.com/MiniProfiler/dotnet) - A simple but effective mini-profiler for .NET. * [Node.js Tools For Visual Studio](https://github.com/Microsoft/nodejstools) - Plugin that turns Visual Studio into a Node.js IDE * [NsDepCop](https://github.com/realvizu/NsDepCop) - Static code analysis tool to enforce namespace dependency rules in C# projects. - * [Obfuscar](https://obfuscar.codeplex.com) - MSIL obfuscation utility for .NET assemblies. + * [Obfuscar](https://www.obfuscar.com/) - MSIL obfuscation utility for .NET assemblies. * [OmniDB](https://github.com/OmniDB/OmniDB) - Web tool for database management and conversion. [Site](http://omnidb.com.br) * [Outcomes.Net](https://github.com/kinetiq/Ether.Outcomes/) - Fluent wrapper that eliminates plumbing code around failure-prone functions. * [Paket](https://github.com/fsprojects/Paket) - Dependency manager for .NET and Mono projects, which is designed to work well with NuGet packages and also enables referencing files directly from GitHub repositories. * [Polly](https://github.com/App-vNext/Polly) - A resilience and transient-fault-handling library that allows developers to express policies such as Retry, Circuit Breaker, Timeout, Bulkhead Isolation, and Fallback in a fluent and thread-safe manner. - * [Protobuf-net](https://code.google.com/p/protobuf-net/) - A .NET implementation of protobuf, allowing you to serialize your .NET objects efficiently and easily. + * [Protobuf-net](https://github.com/mgravell/protobuf-net) - A .NET implementation of protobuf, allowing you to serialize your .NET objects efficiently and easily. * [Quick Diagram Tool for C#](https://github.com/realvizu/QuickDiagram) - Code visualization tool for C#. * [scriptcs](https://github.com/scriptcs/scriptcs) - scriptcs makes it easy to write and execute C# with a simple text editor. * [Snoop WPF](https://github.com/cplotts/snoopwpf) - Snoop - The WPF Spy Utility @@ -280,7 +280,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [NUnit](https://github.com/nunit/nunit) - NUnit is a unit-testing framework for all .NET languages. * [Shouldly](https://github.com/shouldly/shouldly) - Should style test assertion library with great error messages. * [SpecFlow](https://github.com/techtalk/specflow) - Cucumber clone for .NET for writing acceptance tests in natural language. [Site](http://www.specflow.org/) - * [tickspec](http://tickspec.codeplex.com/) - A lightweight Behaviour Driven Development (BDD) framework. + * [tickspec](https://github.com/fsprojects/TickSpec) - A lightweight Behaviour Driven Development (BDD) framework. * [TestStack.BDDfy](https://github.com/TestStack/TestStack.BDDfy) - BDDfy is the simplest BDD framework to use, customize and extend! * [TestStack.FluentMvcTesting](https://github.com/TestStack/TestStack.FluentMVCTesting) - Simple, terse, fluent unit testing for ASP.NET MVC Controllers. * [TestStack.Seleno](https://github.com/TestStack/TestStack.Seleno) - Seleno helps you write automated UI tests in the right way by implementing Page Objects and Page Components and by reading from and writing to web pages using strongly typed view models. @@ -294,8 +294,8 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [DI Feature Tests](https://github.com/ashmind/net-feature-tests) - Tests that track commmon DI features among multiple containers * [dI.Hook](https://github.com/punitganshani/dI.Hook) - DI container that allows invocation using AOP * [DryIoc](https://bitbucket.org/dadhi/dryioc) - DryIoc is small, fast, capable IoC Container for .NET - * [fFastInjector](https://ffastinjector.codeplex.com/) - fFastInjector is a high-performing dependency injector, service locator, and/or IOC (inversion of control) container. - * [Funq](https://funq.codeplex.com/) - A fast DI container you can understand. + * [fFastInjector](https://github.com/Grax32/fFastInjector/) - fFastInjector is a high-performing dependency injector, service locator, and/or IOC (inversion of control) container. + * [Funq](https://funq.codeplex.com/) - A fast DI container you can understand. (No Recent Updates - Still on CodePlex - 4/2018) * [Grace](https://github.com/ipjohnson/Grace) - Grace is a feature rich Dependency Injection container in a portable class library * [Griffin](https://github.com/jgauffin/griffin.container) - Inversion of control container with (almost) zero configuration * [HaveBox](https://bitbucket.org/Have/havebox/wiki/Home) - HaveBox is a very fast and lightweight IoC containter. The goal is to keep it fast and light, and at the same time easy to use. @@ -303,17 +303,17 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [IfInjector](https://github.com/iamahern/IfInjector) - High performance mobile micro-IoC container. * [LightCore](https://peterbucher.kilnhg.com/Code/LightCore/Group/Default?nr=) - [A lightweight dependency injection container](http://lightcore.ch/en/default.aspx) that can be used as a service locator and despite its simplicity and ease boasts numerous features. * [LightInject](https://github.com/seesharper/LightInject) - A ultra lightweight IoC container - * [MicroSliver](https://microsliver.codeplex.com/) - MicroSliver is a micro, non-bloat, non-intimidating and speedy .NET (ASP.NET, Silverlight, RIA Services, WPF, Forms and Metro!) - * [Mugen Injection](http://mugeninjection.codeplex.com/) - The MugeniInjection is a lightweight and fast managed IoC (Inversion of Control) and DI (Dependency Injection) with support for constructor, property and method call injection - * [Ninject for Desktop](https://github.com/ninject/ninject) - Dependency injector for .NET + * [MicroSliver](https://microsliver.codeplex.com/) - MicroSliver is a micro, non-bloat, non-intimidating and speedy .NET (ASP.NET, Silverlight, RIA Services, WPF, Forms and Metro!). (No Recent Updates - Still on CodePlex - 4/2018) + * [Mugen Injection](http://mugeninjection.codeplex.com/) - The MugeniInjection is a lightweight and fast managed IoC (Inversion of Control) and DI (Dependency Injection) with support for constructor, property and method call injection. (No Recent Updates - Still on CodePlex - 4/2018) + * [Ninject for Desktop](https://github.com/ninject/ninject) - Dependency injector for .NET. * [Ninject for Portable Class Libraries, Universal apps and Xamarin](https://github.com/onovotny/ninject) * [QuickInject](https://github.com/isabgol/QuickInject) - QuickInject is a Unity 3.5 based IoC container that aims to give the Unity container a performance advantage in basic scenarios. * [Simple Injector](https://github.com/simpleinjector/SimpleInjector/) - Simple Injector is an easy-to-use Dependency Injection library for .NET 4+ that supports Silverlight 4+, Windows Phone 8, Windows 8 including Universal apps and Mono. * [Spring.NET](https://github.com/spring-projects/spring-net) - Spring.NET is an open source application framework that makes building enterprise .NET applications easier. * [StructureMap](https://github.com/structuremap/structuremap) - StructureMap is a Dependency Injection / Inversion of Control tool for .Net that can be used to improve the architectural qualities of an object oriented system by reducing the mechanical costs of good design techniques. - * [StyleMVVM](https://stylemvvm.codeplex.com/) - Style MVVM is a toolkit designed for the Windows Store platform around the idea of being light weight and fast. + * [StyleMVVM](https://stylemvvm.codeplex.com/) - Style MVVM is a toolkit designed for the Windows Store platform around the idea of being light weight and fast. (No Recent Updates - Still on CodePlex - 4/2018) * [TinyIoC](https://github.com/grumpydev/TinyIoC) - An easy to use, hassle free, Inversion of Control Container for small projects, libraries and beginners alike. - * [Unity Container](http://unity.codeplex.com/) - The Unity Container (Unity) is a lightweight, extensible dependency injection container with optional support for instance and type interception. + * [Unity Container](https://github.com/unitycontainer) - The Unity Container (Unity) is a lightweight, extensible dependency injection container with optional support for instance and type interception. ## Data Access * [Dapper](https://github.com/StackExchange/dapper-dot-net) - Dapper is a single file you can drop in to your project that will extend your IDbConnection interface. @@ -340,7 +340,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [WaveEngine](https://github.com/waveengine) - A powerful component based game engine for desktop and mobile platforms using C#. ## UI and Control libraries - * [Callisto](https://github.com/timheuer/callisto) - UI Control Toolkit for WinRT apps + * [Callisto](https://github.com/timheuer/callisto) - UI Control Toolkit for WinRT apps. * [Dragablz](http://github.com/ButchersBoy/Dragablz) - A tearable TabControl for WPF which also provides easy-to-use and implement docking features. * [Eto](https://github.com/picoe/Eto) - Cross platform GUI Toolkit for desktop and mobile apps * [MahApps.Metro](https://github.com/MahApps/MahApps.Metro) - A toolkit for creating Metro / Modern UI styled WPF apps. [mahapps.com](http://mahapps.com) @@ -387,7 +387,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [ASP.NET Core & Mvc/Angular5 Startup Template](https://github.com/aspnetboilerplate/module-zero-core-template) - This is a template to create ASP.NET Core MVC / Angular based startup projects for [ASP.NET Boilerplate](https://github.com/aspnetboilerplate/aspnetboilerplate). This project also supports multi-tenancy. * [ASP.NET MVC Boilerplate](https://github.com/ASP-NET-MVC-Boilerplate/Templates) - Professional ASP.NET MVC templates for building secure, fast, robust and adaptable web applications or sites. It provides the minimum amount of code required on top of the default MVC template provided by Microsoft. -This list is just a starting point - also take a look at all the projects on [CodePlex](http://www.codeplex.com/) and on [GitHub Trending C#](https://github.com/trending?l=csharp). +This list is just a starting point - also take a look at all the projects on [GitHub Trending C#](https://github.com/trending?l=csharp). [@quozd](http://twitter.com/quozd "@quozd on Twitter") hosts an [Awesome .NET!](https://github.com/quozd/awesome-dotnet) list. Also worth checking out. From 461ae760ca7ba2e426375d01fe24700ff26553ad Mon Sep 17 00:00:00 2001 From: Ron Petrusha Date: Mon, 16 Apr 2018 17:17:54 -0700 Subject: [PATCH 612/872] Added link fixes from net472 branch (#712) --- ...called-repeatedly-if-its-handler-shows-a-message-box.md | 7 +++---- .../compatibility/winforms-accessibility-changes-471.md | 2 +- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/Documentation/compatibility/previewlostkeyboardfocus-is-called-repeatedly-if-its-handler-shows-a-message-box.md b/Documentation/compatibility/previewlostkeyboardfocus-is-called-repeatedly-if-its-handler-shows-a-message-box.md index fb34c2543..451fabfa6 100644 --- a/Documentation/compatibility/previewlostkeyboardfocus-is-called-repeatedly-if-its-handler-shows-a-message-box.md +++ b/Documentation/compatibility/previewlostkeyboardfocus-is-called-repeatedly-if-its-handler-shows-a-message-box.md @@ -12,7 +12,7 @@ Available ### Change Description Beginning in the .NET Framework 4.5, calling - from a + from a handler will cause the handler to re-fire when the message box is closed, potentially resulting in an infinite loop of message boxes. @@ -23,9 +23,8 @@ potentially resulting in an infinite loop of message boxes. ### Recommended Action There are two options to work around this issue: -1. It may be avoided by calling `System.Windows.MessageBox.Show` instead of `System.Windows.Forms.MessageBox.Show`. -2. -3. It may be avoided by showing the message box from a event handler (as opposed to a event handler). +1. It may be avoided by calling instead of . +2. It may be avoided by showing the message box from a event handler (as opposed to a event handler). ### Affected APIs * `M:System.Windows.ContentElement.add_PreviewLostKeyboardFocus(System.Windows.Input.KeyboardFocusChangedEventHandler)` diff --git a/Documentation/compatibility/winforms-accessibility-changes-471.md b/Documentation/compatibility/winforms-accessibility-changes-471.md index 51c31f770..fb88e39d2 100644 --- a/Documentation/compatibility/winforms-accessibility-changes-471.md +++ b/Documentation/compatibility/winforms-accessibility-changes-471.md @@ -82,7 +82,7 @@ The .NET Framework 4.7.1 adds the following improvements to the PropertyBrowser **Use of OS-defined colors in High Contrast themes**
- The and controls with their property set to , which is the default style, now use OS-defined colors in High Contrast theme when selected. Previously, text and background colors were not contrasting and were hard to read. -- The , , , , and controls with their property set to **false** used a shaded color to render text in High Contrast themes, resulting in low contrast against the background. Now these controls use the "Disabled Text" color defined by the OS. This fix applies to controls with the property set to a value other than . The latter controls are rendered by the OS. +- The , , , , , and controls with their property set to **false** used a shaded color to render text in High Contrast themes, resulting in low contrast against the background. Now these controls use the "Disabled Text" color defined by the OS. This fix applies to controls with the `FlatStyle` property set to a value other than . The latter controls are rendered by the OS. - now renders a visible rectangle around the content of the cell which has the current focus. Previously, this was not visible in certain High Contrast themes. - controls with their property set to **false** now use the "Disabled Text" color defined by the OS. - controls with their property set to **true** now render the associated check mark in a contrasting system color. Previously the check mark color was not contrasting enough and not visible in High Contrast themes. From a870f917652098a17ad9659082a55355111c1b8c Mon Sep 17 00:00:00 2001 From: Vivek Mishra Date: Wed, 18 Apr 2018 14:15:19 -0700 Subject: [PATCH 613/872] Updated the link for 4.5.2 know issue KB Updated the link for 4.5.2 know issue KB --- Documentation/KnownIssues/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Documentation/KnownIssues/README.md b/Documentation/KnownIssues/README.md index 5b5ae1940..29cee31ef 100644 --- a/Documentation/KnownIssues/README.md +++ b/Documentation/KnownIssues/README.md @@ -5,5 +5,5 @@ The following links provide the known issues about the various .NET Framework ve - [.NET Framework 4.7](http://go.microsoft.com/fwlink/?LinkId=825308) - [.NET Framework 4.6.2](http://go.microsoft.com/fwlink/?LinkId=780606) - [.NET Framework 4.6.1](http://go.microsoft.com/fwlink/?LinkId=671749) -- [.NET Framework 4.6](https://support.microsoft.com/en-us/help/3047761/known-issues-for-the--net-framework-4-6) -- [.NET Framework 4.5.2](https://support.microsoft.com/en-us/help/3047761/known-issues-for-the--net-framework-4-6) +- [.NET Framework 4.6](https://support.microsoft.com/help/3047761/known-issues-for-the--net-framework-4-6) +- [.NET Framework 4.5.2](https://support.microsoft.com/help/2962547/known-issues-for-the-net-framework-4-5-2) From c9386cb1ab64b442699de89fc1e30bc7b12388a5 Mon Sep 17 00:00:00 2001 From: Ron Petrusha Date: Tue, 24 Apr 2018 15:36:04 -0700 Subject: [PATCH 614/872] Parallel changes to those made in dotnet/docs repo (#719) --- ...n-handling-code-from-imagesourceconverter_convertfrom.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Documentation/compatibility/wpf-nullreferenceexception-in-exception-handling-code-from-imagesourceconverter_convertfrom.md b/Documentation/compatibility/wpf-nullreferenceexception-in-exception-handling-code-from-imagesourceconverter_convertfrom.md index b6e4d2d6e..30bafaeca 100644 --- a/Documentation/compatibility/wpf-nullreferenceexception-in-exception-handling-code-from-imagesourceconverter_convertfrom.md +++ b/Documentation/compatibility/wpf-nullreferenceexception-in-exception-handling-code-from-imagesourceconverter_convertfrom.md @@ -14,8 +14,8 @@ NotPlanned An error in the exception handling code for caused an incorrect to -be thrown instead of the intended exception (e.g. -, +be thrown instead of the intended exception ( + or ). This change corrects that error so that the method now throws the right exception.

@@ -30,7 +30,7 @@ right exceptions. Developers who wish to revert to getting when targeting .NET -Framework 4.7 can add/merge the following to their application's App.config +Framework 4.7 or later can add/merge the following to their application's App.config file: ```xml From 9f8f0a0a8f98ace7d9b4a48d06dd748c65e39310 Mon Sep 17 00:00:00 2001 From: Holly Muenchow Date: Fri, 27 Apr 2018 14:33:08 -0700 Subject: [PATCH 615/872] Added note about 6.1.2 release --- releases/UWP/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/releases/UWP/README.md b/releases/UWP/README.md index e21b6ef65..43d39172a 100644 --- a/releases/UWP/README.md +++ b/releases/UWP/README.md @@ -6,6 +6,7 @@ You can learn about Microsoft.NETCore.UniversalWindowsPlatform [releases](#relea You can see what was included in each .NET Native (Microsoft.NETCore.UniversalWindowsPlatform) release. +- .NET Native 2.1 (UWP 6.1.x) is coming in early May 2018! Preview bits are available on [Nuget](https://www.nuget.org/packages/Microsoft.NETCore.UniversalWindowsPlatform) or [Visual Studio Update 15.7 Preview 5](https://docs.microsoft.com/en-us/visualstudio/releasenotes/vs2017-preview-relnotes#15.7_Preview5) - [.NET Native 2.0 (UWP 6.0.x)](net-native2.0/README.md) - [.NET Native 1.7 (UWP 5.4.x)](net-native1.7/README.md) - [.NET Native 1.6 (UWP 5.3.x)](net-native1.6/README.md) From 6fd925d0d27257ae54701d0655163e2d79f13562 Mon Sep 17 00:00:00 2001 From: Ron Petrusha Date: Mon, 30 Apr 2018 09:53:00 -0700 Subject: [PATCH 616/872] Migration from net472 branch (#723) --- .../Keytips behavior improved in WPF.md | 30 +++++ ...-file-and-line-information-if-requested.md | 51 ++++++++ ...-for-Net.Tcp-certificate-authentication.md | 33 ++++++ .../compatibility/aspnet-472-compat-doc.md | 29 +++++ ...ream-uses-native-apis-for-decompression.md | 51 ++++++++ .../uri-reserved-characters-consistent.md | 45 ++++++++ .../uri-unc-shares-normalized.md | 33 ++++++ .../uri-unicode-bidirectional-characters.md | 45 ++++++++ .../uri-unicode-scheme-only-relative.md | 42 +++++++ ...in-two-iworkflowinstancemanagement-apis.md | 46 ++++++++ ...nUpDownControl-button's-actions-in-sync.md | 41 +++++++ ...MenuStrip-SourceControl-property-change.md | 46 ++++++++ ...vateFontCollection-Font-handle-leak-fix.md | 49 ++++++++ .../winforms-accessibility-changes-472.md | 109 ++++++++++++++++++ ...oves-correctly-across-hosting-scenarios.md | 53 +++++++++ ...er-default-hash-algorithm-is-now-SHA256.md | 50 ++++++++ .../wpf-MasterDetail-ADOdata-PrimaryKey.md | 64 ++++++++++ ...selection-does-not-follow-system-colors.md | 41 +++++++ ...lays-correctly-when-there-is-no-content.md | 56 +++++++++ ...Non-Adorner TextSelection Occludes Text.md | 18 +++ ... Touch Keyboard In All Scenarios on RS4.md | 18 +++ ...ET 2.0,3.5 select wrong runtime version.md | 55 +++++++++ releases/net472/README.md | 1 + releases/net472/dotnet472-known-issues.md | 9 ++ 24 files changed, 1015 insertions(+) create mode 100644 Documentation/compatibility/Keytips behavior improved in WPF.md create mode 100644 Documentation/compatibility/Stack-traces-obtained-when-using-portable-PDBs-now-include-source-file-and-line-information-if-requested.md create mode 100644 Documentation/compatibility/WCF-Improved-WCF-chain-trust-certificate-validation-for-Net.Tcp-certificate-authentication.md create mode 100644 Documentation/compatibility/aspnet-472-compat-doc.md create mode 100644 Documentation/compatibility/deflatestream-uses-native-apis-for-decompression.md create mode 100644 Documentation/compatibility/uri-reserved-characters-consistent.md create mode 100644 Documentation/compatibility/uri-unc-shares-normalized.md create mode 100644 Documentation/compatibility/uri-unicode-bidirectional-characters.md create mode 100644 Documentation/compatibility/uri-unicode-scheme-only-relative.md create mode 100644 Documentation/compatibility/wcf-avoid-endless-recursion-in-two-iworkflowinstancemanagement-apis.md create mode 100644 Documentation/compatibility/winform's-DomainUpDownControl-button's-actions-in-sync.md create mode 100644 Documentation/compatibility/winforms-ContextMenuStrip-SourceControl-property-change.md create mode 100644 Documentation/compatibility/winforms-PrivateFontCollection-Font-handle-leak-fix.md create mode 100644 Documentation/compatibility/winforms-accessibility-changes-472.md create mode 100644 Documentation/compatibility/wpf-KB-focus-now-moves-correctly-across-hosting-scenarios.md create mode 100644 Documentation/compatibility/wpf-MarkupCompiler-default-hash-algorithm-is-now-SHA256.md create mode 100644 Documentation/compatibility/wpf-MasterDetail-ADOdata-PrimaryKey.md create mode 100644 Documentation/compatibility/wpf-TextBox-PasswordBox-text-selection-does-not-follow-system-colors.md create mode 100644 Documentation/compatibility/wpf-focus-visual-for-radiobutton-and-checkbox-displays-correctly-when-there-is-no-content.md create mode 100644 releases/net472/KnownIssues/405199 - WPF Non-Adorner TextSelection Occludes Text.md create mode 100644 releases/net472/KnownIssues/504055 - WPF May Not Show Touch Keyboard In All Scenarios on RS4.md create mode 100644 releases/net472/KnownIssues/560016-XBAP Applications targeting .NET 2.0,3.5 select wrong runtime version.md create mode 100644 releases/net472/README.md create mode 100644 releases/net472/dotnet472-known-issues.md diff --git a/Documentation/compatibility/Keytips behavior improved in WPF.md b/Documentation/compatibility/Keytips behavior improved in WPF.md new file mode 100644 index 000000000..3f0c6f871 --- /dev/null +++ b/Documentation/compatibility/Keytips behavior improved in WPF.md @@ -0,0 +1,30 @@ +## Keytips behavior improved in WPF + +### Scope +Edge + +### Version Introduced +4.7.2 + +### Source Analyzer Status +NotPlanned + +### Change Description +Keytips behavior has been modified to bring parity with behavior on Microsoft Word and Windows Explorer. By checking whether keytip state is enabled or not in the case of a [SystemKey](xref:System.Windows.Input.KeyEventArgs.SystemKey) (in particular, [Alt](xref:System.Windows.Input.Key) or [F11](xref:System.Windows.Input.Key.F11)) being pressed, WPF handles keytip keys appropriately. Keytips now dismiss a menu even when it is opened by mouse. + +- [ ] Quirked +- [ ] Build-time break + +### Recommended Action +N/A + +### Affected APIs +* Not detectable via API analysis + +### Category +Windows Presentation Foundation (WPF) + + diff --git a/Documentation/compatibility/Stack-traces-obtained-when-using-portable-PDBs-now-include-source-file-and-line-information-if-requested.md b/Documentation/compatibility/Stack-traces-obtained-when-using-portable-PDBs-now-include-source-file-and-line-information-if-requested.md new file mode 100644 index 000000000..8c25d25d8 --- /dev/null +++ b/Documentation/compatibility/Stack-traces-obtained-when-using-portable-PDBs-now-include-source-file-and-line-information-if-requested.md @@ -0,0 +1,51 @@ +## Stack traces obtained when using portable PDBs now include source file and line information if requested + +### Scope +Edge + +### Version Introduced +4.7.2 + +### Source Analyzer Status +NotPlanned + +### Change Description +Starting with .NET Framework 4.7.2, stack traces obtained when using portable PDBs include source file and line information when requested. In versions prior to .NET Framework 4.7.2, source file and line information would be unavailable when using portable PDBs even if explicitly requested. + +- [x] Quirked +- [ ] Build-time break + +### Recommended Action +For applications that target the .NET Framework 4.7.2, you can opt out of the source file and line information when using portable PDBs if it is not desirable by adding the following to the `` section of your `app.config` file: + +```xml + + + +``` + +For applications that target earlier versions of the .NET Framework but run on the .NET Framework 4.7.2 or later, you can opt in to the source file and line information when using portable PDBs by adding the following to the `` section of your `app.config` file: + +```xml + + + +``` + + +### Affected APIs +* `M:System.Diagnostics.StackTrace.#ctor(System.Boolean)` +* `M:System.Diagnostics.StackTrace.#ctor(System.Exception,System.Boolean)` +* `M:System.Diagnostics.StackTrace.#ctor(System.Exception,System.Int32,System.Boolean)` + + +### Category +Core + +[More information]([https://github.com/dotnet/core/blob/master/Documentation/diagnostics/portable_pdb.md]) + + + + diff --git a/Documentation/compatibility/WCF-Improved-WCF-chain-trust-certificate-validation-for-Net.Tcp-certificate-authentication.md b/Documentation/compatibility/WCF-Improved-WCF-chain-trust-certificate-validation-for-Net.Tcp-certificate-authentication.md new file mode 100644 index 000000000..5c36dbd82 --- /dev/null +++ b/Documentation/compatibility/WCF-Improved-WCF-chain-trust-certificate-validation-for-Net.Tcp-certificate-authentication.md @@ -0,0 +1,33 @@ +## Improved WCF chain trust certificate validation for Net.Tcp certificate authentication + +### Scope +Minor + +### Version Introduced +4.7.2 + +### Source Analyzer Status +NotPlanned + +### Change Description +.NET Framework 4.7.2 improves chain trust certificate validation when using certificate authentication with transport security with WCF. With this improvement, client certificates that are used to authenticate to a server must be configured for client authentication. Similarly server certificates that are for the authenticating a server must be configured for server authentication. With this change, if the root certificate is disabled, the certificate chain validation fails. The same change was also made to .NET Framework 3.5 and later versions via Windows security roll-up. You can find more information [here](https://support.microsoft.com/en-us/help/4055269/security-only-update-for-net-framework-3-5-1-4-5-2-4-6-4-6-1-4-6-2-4-7). + +This change is on by default and can be turned off by a configuration setting. + +### Recommended Action + - Validate if your server and client certification has the required EKU OID. If not, update your certification. + - Validate if your root certificate is invalid. If so, update the root certificate. + - How to opt out of the change: + If you can't update the certificate, you can work around the breaking change temporarily with the following configration setting, However, opting out of the change will leave your system vulnerable to the security issue. + +```xml + + + + ``` + +### Affected APIs +* Not detectable via API analysis + +### Category +Runtime \ No newline at end of file diff --git a/Documentation/compatibility/aspnet-472-compat-doc.md b/Documentation/compatibility/aspnet-472-compat-doc.md new file mode 100644 index 000000000..18bc55d26 --- /dev/null +++ b/Documentation/compatibility/aspnet-472-compat-doc.md @@ -0,0 +1,29 @@ +## "dataAnnotations:dataTypeAttribute:disableRegEx" app setting is on by default in .NET Framework 4.7.2 + +### Scope +Minor + +### Version Introduced +4.7.2 + +### Change Description +In .NET Framework 4.6.1, an app setting (`"dataAnnotations:dataTypeAttribute:disableRegEx"`) was introduced that allows users to disable the use of regular expressions in data type attributes (such as , , and ). This helps to reduce security vulnerability such as avoiding the possibility of a Denial of Service attack using specific regular expressions.
+ +In .NET Framework 4.6.1, this app setting to disable RegEx usage was set to `false` by default. Staring with .NET Framework 4.7.2, this config switch is set to `true` by default to further reduce secure vulnerability for web applications that target .NET Framework 4.7.2 and above. + + +### Recommended Action +If you find that regular expressions in your web application do not work after upgrading to .NET Framework 4.7.2, you can update the value of the `"dataAnnotations:dataTypeAttribute:disableRegEx"` setting to `false` to revert to the previous behavior. + +```xml + + + ... + + ... + + +``` + +### Category +Web Application diff --git a/Documentation/compatibility/deflatestream-uses-native-apis-for-decompression.md b/Documentation/compatibility/deflatestream-uses-native-apis-for-decompression.md new file mode 100644 index 000000000..66d69a168 --- /dev/null +++ b/Documentation/compatibility/deflatestream-uses-native-apis-for-decompression.md @@ -0,0 +1,51 @@ +## DeflateStream uses native APIs for decompression + +### Scope +Minor + +### Version Introduced +4.7.2 + +### Source Analyzer Status +NotPlanned + +### Change Description + +Starting with the .NET Framework 4.7.2, the implementation of decompression in the `T:System.IO.Compression.DeflateStream` class has changed to use native Windows APIs by default. Typically, this results in a substantial performance improvement. All .NET applications targeting the .NET Framework version 4.7.2 or higher use the native implementation. + +This change might result in some differences in behavior, which include: + +- Exception messages may be different. However, the type of exception thrown remains the same. +- Some special situations, such as not having enough memory to complete an operation, may be handled differently. +- There are known differences for parsing gzip header (note: only `GZipStream` set for decompression is affected): + - Exceptions when parsing invalid headers may be thrown at different times. + - The native implementation enforces that values for some reserved flags inside the gzip header (i.e. [FLG](http://www.zlib.org/rfc-gzip.html#header-trailer)) are set according to the specification, which may cause it to throw an exception where previously invalid values were ignored. + +- [X] Quirked +- [ ] Build-time break + +### Recommended Action + +If decompression with native APIs has adversely affected the behavior of your app, you can opt out of this feature by adding the `Switch.System.IO.Compression.DoNotUseNativeZipLibraryForDecompression` switch to the `runtime` section of your app.config file and setting it to `true`: + +```xml + + + + + + +``` +### Affected APIs +`T:System.IO.Compression.DeflateStream` +`T:System.IO.Compression.GZipStream` + +### Category +Core + + + + diff --git a/Documentation/compatibility/uri-reserved-characters-consistent.md b/Documentation/compatibility/uri-reserved-characters-consistent.md new file mode 100644 index 000000000..92b45fcc6 --- /dev/null +++ b/Documentation/compatibility/uri-reserved-characters-consistent.md @@ -0,0 +1,45 @@ +## Ensure System.Uri uses a consistent reserved character set + +### Scope +Minor + +### Version Introduced +4.7.2 + +### Source Analyzer Status +NotPlanned + +### Change Description +In , certain percent-encoded characters that were sometimes decoded are now consistently left encoded. This occurs across the properties and methods that access the path, query, fragment, or userinfo components of the URI. +The behavior will change only when both of the following are true: + - The URI contains the encoded form of any of the following reserved characters: `:`, `'`, `(`, `)`, `!` or `*`. + - The URI contains a Unicode or encoded non-reserved character. +If both of the above are true, the encoded reserved characters are left encoded. In previous versions of the .NET Framework, they are decoded. + +- [x] Quirked +- [ ] Build-time break + +### Recommended Action +For applications that target versions of .NET Framework starting with 4.7.2, the new decoding behavior is enabled by default. If this change is undesirable, you can disable it by adding the following [AppContextSwitchOverrides](~/docs/framework/configure-apps/file-schema/runtime/appcontextswitchoverrides-element.md) switch to the `` section of the application configuration file: +```xml + + + +``` +For applications that target earlier versions of the .NET Framework but are running under versions starting with .NET Framework 4.7.2, the new decoding behavior is disabled by default. You can enable it by adding the following [AppContextSwitchOverrides](~/docs/framework/configure-apps/file-schema/runtime/appcontextswitchoverrides-element.md) switch to the `` section of the application configuration file:: +```xml + + + +``` + +### Affected APIs +* `T:System.Uri` + +### Category +Core + + diff --git a/Documentation/compatibility/uri-unc-shares-normalized.md b/Documentation/compatibility/uri-unc-shares-normalized.md new file mode 100644 index 000000000..16d9d2b7e --- /dev/null +++ b/Documentation/compatibility/uri-unc-shares-normalized.md @@ -0,0 +1,33 @@ +## Allow Unicode in URIs that resemble UNC shares + +### Scope +Edge + +### Version Introduced +4.7.2 + +### Source Analyzer Status +NotPlanned + +### Change Description +In , constructing a file URI containing both a UNC share name and Unicode characters will no longer result in a URI with invalid internal state. The behavior will change only when all of the following are true: + - The URI has the scheme `file:` and is followed by four or more slashes. + - The host name begins with an underscore or other non-reserved symbol. + - The URI contains Unicode characters. + +- [ ] Quirked +- [ ] Build-time break + +### Recommended Action +Applications working with URIs consistently containing Unicode could have conceivably used this behavior to disallow references to UNC shares. Those applications should use instead. + +### Affected APIs +* `T:System.Uri` + +### Category +Core + + \ No newline at end of file diff --git a/Documentation/compatibility/uri-unicode-bidirectional-characters.md b/Documentation/compatibility/uri-unicode-bidirectional-characters.md new file mode 100644 index 000000000..b52fda469 --- /dev/null +++ b/Documentation/compatibility/uri-unicode-bidirectional-characters.md @@ -0,0 +1,45 @@ +## Allow Unicode Bidirectional Control Characters in URIs + +### Scope +Minor + +### Version Introduced +4.7.2 + +### Source Analyzer Status +NotPlanned + +### Change Description +Unicode specifies several special control characters used to specify the orientation of text. +In previous versions of the .NET Framework, these characters were incorrectly stripped +from all URIs even if they were present in their percent-encoded form. In order to better +follow [RFC 3987](http://tools.ietf.org/html/rfc3987), we now allow these characters in URIs. When found unencoded +in a URI, they are percent-encoded. When found percent-encoded they are left as-is. + +- [x] Quirked +- [ ] Build-time break + +### Recommended Action +For applications that target versions of .NET Framework starting with 4.7.2, support for Unicode bidirectional characters is enabled by default. If this change is undesirable, you can disable it by adding the following [AppContextSwitchOverrides](~/docs/framework/configure-apps/file-schema/runtime/appcontextswitchoverrides-element.md) switch to the `` section of the application configuration file: +```xml + + + +``` +For applications that target earlier versions of the .NET Framework but are running under versions starting with .NET Framework 4.7.2, support for Unicode bidirectional characters is disabled by default. You can enable it by adding the following [AppContextSwitchOverrides](~/docs/framework/configure-apps/file-schema/runtime/appcontextswitchoverrides-element.md) switch to the `` section of the application configuration file:: +```xml + + + +``` + +### Affected APIs +* `T:System.Uri` + +### Category +Core + + \ No newline at end of file diff --git a/Documentation/compatibility/uri-unicode-scheme-only-relative.md b/Documentation/compatibility/uri-unicode-scheme-only-relative.md new file mode 100644 index 000000000..97a04b3e1 --- /dev/null +++ b/Documentation/compatibility/uri-unicode-scheme-only-relative.md @@ -0,0 +1,42 @@ +## Support special relative URI notation when Unicode is present + +### Scope +Edge + +### Version Introduced +4.7.2 + +### Source Analyzer Status +NotPlanned + +### Change Description + + will no longer throw a when calling on certain relative URIs containing Unicode. + +The simplest reproduction of the is below, with the two statements being equivalent: + ```csharp +bool success = Uri.TryCreate("http:%C3%A8", UriKind.RelativeOrAbsolute, out Uri href); +bool success = Uri.TryCreate("http:è", UriKind.RelativeOrAbsolute, out Uri href); + ``` +To reproduce the , the following items must be true: +- The URI must be specified as relative by prepending it with ‘http:’ and not following it with ‘//’. +- The URI must contain percent-encoded Unicode or unreserved symbols. + +- [ ] Quirked +- [ ] Build-time break + +### Recommended Action +Users depending on this behavior to disallow relative URIs should instead specify when creating a URI. + +### Affected APIs +* `M:System.Uri.TryCreate(System.Uri,System.Uri,System.Uri@)` +* `M:System.Uri.TryCreate(System.String,System.UriKind,System.Uri@)` +* `M:System.Uri.TryCreate(System.Uri,System.String,System.Uri@)` + +### Category +Core + + diff --git a/Documentation/compatibility/wcf-avoid-endless-recursion-in-two-iworkflowinstancemanagement-apis.md b/Documentation/compatibility/wcf-avoid-endless-recursion-in-two-iworkflowinstancemanagement-apis.md new file mode 100644 index 000000000..b09703e29 --- /dev/null +++ b/Documentation/compatibility/wcf-avoid-endless-recursion-in-two-iworkflowinstancemanagement-apis.md @@ -0,0 +1,46 @@ +## Avoiding endless recursion for IWorkflowInstanceManagement.TransactedCancel and IWorkflowInstanceManagement.TransactedTerminate + +### Scope +Edge + +### Version Introduced +4.7.2 + +### Source Analyzer Status +NotPlanned + +### Change Description +Under some circumstances when using or APIs to cancel or terminate a worklow service instance, the workflow instance may encounter a stack overflow due to endless recursion when the `Workflow` runtime attempts to persist the service instance as part of processing the request. The problem occurs if the workflow instance is in a state where it is waiting for some other outstanding WCF request to another service to complete. + +The `TransactedCancel` and `TransactedTerminate` operations create work items that are queued for the workflow service instance. These work items are not executed as part of the processing of the `TransactedCancel/TransactedTerminate` request. Because the workflow service instance is busy waiting for the other outstanding WCF request to complete, the work item created remains queued. The `TransactedCancel/TransactedTerminate` operation completes and control is returned back to the client. When the transaction associated with the `TransactedCancel/TransactedTerminate` operation attempts to commit, it needs to persist the workflow serivce instance state. But because there is an outstanding `WCF` request for the instance, the Workflow runtime cannot persist the workflow service instance, and an endless recursion loop leads to the stack overflow. + +Because `TransactedCancel` and `TransactedTerminate` only create a work item in memory, the fact that a transaction exists doesn't have any effect. A rollback of the transaction does not discard the work item. + +To address this issue, starting in .NET Framework 4.7.2, we have introduced an `AppSetting` that can be added to the `web.config/app.config` of the workflow service that tells it to ignore transactions for `TransactedCancel` and `TransactedTerminate`. This allows the transaction to commit without waiting for the workflow instance to persist. + +The AppSetting for this feature is named `microsoft:WorkflowServices:IgnoreTransactionsForTransactedCancelAndTransactedTerminate`. A value of `true` indicates that the transaction should be ignored, thus avoiding the stack overflow. The default value of this AppSetting is `false`, so existing workflow service instances are not affected. + + +- [x] Quirked +- [ ] Build-time break + +### Recommended Action +If you are using AppFabric or another client and are encountering a stack overflow in the workflow serivce instance when trying to cancel or terminate a workflow instance, you can add the following to the `` section of the web.config/app.config file for the workflow service: + +```xml + +``` + +If you are not encountering the problem, you do not need to do this. + + +### Affected APIs + * Not detectable via API analysis + +### Category +Windows Workflow Foundation (WF) + + + diff --git a/Documentation/compatibility/winform's-DomainUpDownControl-button's-actions-in-sync.md b/Documentation/compatibility/winform's-DomainUpDownControl-button's-actions-in-sync.md new file mode 100644 index 000000000..5b9a4b4b9 --- /dev/null +++ b/Documentation/compatibility/winform's-DomainUpDownControl-button's-actions-in-sync.md @@ -0,0 +1,41 @@ +## WinForm's Domain upbutton and downbutton actions are in sync now + +### Scope +Edge + +### Version Introduced +4.7.2 + +### Source Analyzer Status +Not planned + +### Change Description +In the .NET Framework 4.7.1 and previous versions the +control's +action is ignored when control text is present, and the developer is required to use action on the control before using action. +Starting with the .NET Framework 4.7.2 both the and actions work independently in this scenario and remain in sync. + +- [X] Quirked +- [ ] Build-time break + +### Recommended Action + +In order for an application to benefit from these changes, it must run on the .NET Framework 4.7.2 or later. The application can benefit from these changes in either of the following ways: +- It is recompiled to target the .NET Framework 4.7.2. This change is enabled by default on Windows Forms applications that target the .NET Framework 4.7.2 or later. +- It opts out of the legacy scrolling behavior by adding the following [AppContext Switch](https://docs.microsoft.com/dotnet/framework/configure-apps/file-schema/runtime/appcontextswitchoverrides-element) to the `` section of the app config file and setting it to `false`, as the following example shows. + +```xml + + + +``` + +### Affected APIs +`M:System.Windows.Forms.DomainUpDown.UpButton` +`M:System.Windows.Forms.DomainUpDown.DownButton` + + +### Category +Windows Forms + + diff --git a/Documentation/compatibility/winforms-ContextMenuStrip-SourceControl-property-change.md b/Documentation/compatibility/winforms-ContextMenuStrip-SourceControl-property-change.md new file mode 100644 index 000000000..9db7a80c8 --- /dev/null +++ b/Documentation/compatibility/winforms-ContextMenuStrip-SourceControl-property-change.md @@ -0,0 +1,46 @@ +## ContextMenuStrip.SourceControl property contains a valid control in the case of nested ToolStripMenuItems + +### Scope +Edge + +### Version Introduced +4.7.2 + +### Source Analyzer Status +NotPlanned + +### Change Description +In the .NET Framework 4.7.1 and previous versions, the property incorrectly returns null when the user opens the menu from nested controls. +In the .NET Framework 4.7.2 and later, property is always set to the actual source control. + +- [X] Quirked +- [ ] Build-time break + +### Recommended Action +__How to opt in or out of these changes__ + +In order for an application to benefit from these changes, it must run on the .NET Framework 4.7.2 or later. The application can benefit from these changes in either of the following ways: + +- It targets the .NET Framework 4.7.2. This change is enabled by default on Windows Forms applications that target the .NET Framework 4.7.2 or later. +- It targets the .NET Framework 4.7.1 or an earlier version and opts out of the legacy accessibility behaviors by adding the following [AppContext Switch](https://docs.microsoft.com/dotnet/framework/configure-apps/file-schema/runtime/appcontextswitchoverrides-element) to the `` section of the app.config file and setting it to `false`, as the following example shows. + +```xml + + + +``` + +Applications that target the .NET Framework 4.7.2 or later, and want to preserve the legacy behavior can opt in to the use of the legacy source control value by explicitly setting this AppContext switch to `true`. + + +### Affected APIs + * `P:System.Windows.Forms.ContextMenuStrip.SourceControl` + +### Category +Windows Forms + + + + diff --git a/Documentation/compatibility/winforms-PrivateFontCollection-Font-handle-leak-fix.md b/Documentation/compatibility/winforms-PrivateFontCollection-Font-handle-leak-fix.md new file mode 100644 index 000000000..ce853f196 --- /dev/null +++ b/Documentation/compatibility/winforms-PrivateFontCollection-Font-handle-leak-fix.md @@ -0,0 +1,49 @@ +## PrivateFontCollection.AddFontFile method releases Font resources + +### Scope +Edge + +### Version Introduced +4.7.2 + +### Source Analyzer Status +NotPlanned + +### Change Description +In the .NET Framework 4.7.1 and previous versions, the class does not release the GDI+ font resources after the is disposed for objects that are added to this collection using the method. +In the .NET Framework 4.7.2 and later [PrivateFontCollection.Dispose](xref:System.Drawing.Text.FontCollection.Dispose%2A) releases the GDI+ fonts that were added to the collection as files. + +- [X] Quirked +- [ ] Build-time break + +### Recommended Action +__How to opt in or out of these changes__ + +In order for an application to benefit from these changes, it must run on the .NET Framework 4.7.2 or later. The application can benefit from these changes in either of the following ways: + +- It is recompiled to target the .NET Framework 4.7.2. This change is enabled by default on Windows Forms applications that target the .NET Framework 4.7.2 or later. +- It targets the .NET Framework 4.7.1 or an earlier version and opts out of the legacy accessibility behaviors by adding the following [AppContext Switch](https://docs.microsoft.com/dotnet/framework/configure-apps/file-schema/runtime/appcontextswitchoverrides-element) to the `` section of the app.config file and setting it to `false`, as the following example shows. + + +```xml + + + +``` + +Applications that target the .NET Framework 4.7.2 or later, and want to preserve the legacy behavior can opt in to not release font resources by explicitly setting this AppContext switch to `true`. + + +### Affected APIs +* `M:System.Drawing.Text.PrivateFontCollection.AddFontFile(System.String)` +* `M:System.Drawing.Text.FontCollection.Dispose` + +### Category +Windows Forms + + + + + diff --git a/Documentation/compatibility/winforms-accessibility-changes-472.md b/Documentation/compatibility/winforms-accessibility-changes-472.md new file mode 100644 index 000000000..2cff7ef83 --- /dev/null +++ b/Documentation/compatibility/winforms-accessibility-changes-472.md @@ -0,0 +1,109 @@ +## Accessibility improvements in Windows Forms controls for .NET 4.7.2 + +### Scope +Major + +### Version Introduced +4.7.2 + +### Source Analyzer Status +NotPlanned + +### Change Description +Windows Forms Framework is improving how it works with accessibility technologies to better support Windows Forms customers. These include the following changes: +- Changes to improve display during High Contrast mode. +- Changes to improve the keyboard navigation in the DataGridView and MenuStrip controls. +- Changes to interaction with Narrator. + +- [x] Quirked +- [ ] Build-time break + +### Recommended Action +__How to opt in or out of these changes__ + +In order for the application to benefit from these changes, it must run on the .NET Framework 4.7.2 or later. The application can benefit from these changes in either of the following ways: +- It is recompiled to target the .NET Framework 4.7.2. These accessibility changes are enabled by default on Windows Forms applications that target the .NET Framework 4.7.2 or later. +- It targets the .NET Framework 4.7.1 or earlier version and opts out of the legacy accessibility behaviors by adding the following [AppContext Switch](https://docs.microsoft.com/dotnet/framework/configure-apps/file-schema/runtime/appcontextswitchoverrides-element) to the `` section of the app config file and setting it to `false`, as the following example shows. + +```xml + + + + + + + + + + +``` +Note that to opt in to the accessibility features added in .NET Framework 4.7.2, you must also opt in to accessibility features of .NET Framework 4.7.1 as well. +Applications that target the .NET Framework 4.7.2 or later and want to preserve the legacy accessibility behavior can opt in to the use of legacy accessibility features by explicitly setting this AppContext switch to `true`. + +__Use of OS-defined colors in High Contrast themes__ +- The drop down arrow arrow of the now uses OS-defined colors in High Contrast theme. +- , and controls with set to or now use OS-defined colors in High Contrast theme when selected. Previously, text and background colors were not contrasting and were hard to read. +- Controls contained within a that has its property set to `false` will now use OS-defined colors in High Contrast theme. +- The , , and controls have an increased luminosity contrast ratio in High Contrast Mode. +- will by default use OS-defined colors in High Contrast mode for the property. + +NOTE: Windows 10 has changed values for some high contrast system colors. Windows Forms Framework is based on the Win32 framework. For the best experience, run on the latest version of Windows and opt in to the latest OS changes by adding an app.manifest file in a test application and uncommenting the following code: +``` +     +     +``` + +__Improved Narrator support__ +- Narrator now announces the value of the property when announcing the text of a . +- Narrator now indicates when a has its property set to `false`. +- Narrator now gives feedback on the state of a check box when the property is set to `true`. +- Narrator Scan Mode focus order is now consistent with the visual order of the controls on the ClickOnce download dialog window. + +__Improved DataGridView Accessibility support__ +- Rows in a can now be sorted using the keyboard. Now a user can use the F3 key in order to sort by the current column. +- When the is set to , the column header will change color to indicate the current column as the user tabs through the cells in the current row. +- The property now returns the correct parent control. + +__Improved Visual cues__ +- The and controls with an empty property will now display a focus indicator when they receive focus. + +__Improved Property Grid Support__ +- The control child elements now return a `true` for the property only when a PropertyGrid element is enabled. +- The control child elements now return a `false` for the property only when a PropertyGrid element can be changed by the user. + +For an overview of UI automation, see the [UI Automation Overview](https://docs.microsoft.com/dotnet/framework/ui-automation/ui-automation-overview). + + +__Improved keyboard navigation__ +- now allows focus when contained within a that has the property set to `true` + + + +### Affected APIs + + + +### Category +Windows Forms + + + + + diff --git a/Documentation/compatibility/wpf-KB-focus-now-moves-correctly-across-hosting-scenarios.md b/Documentation/compatibility/wpf-KB-focus-now-moves-correctly-across-hosting-scenarios.md new file mode 100644 index 000000000..df12e2aea --- /dev/null +++ b/Documentation/compatibility/wpf-KB-focus-now-moves-correctly-across-hosting-scenarios.md @@ -0,0 +1,53 @@ +## Keyboard focus now moves correctly across multiple layers of WinForms/WPF hosting + +### Scope +Edge + +### Version Introduced +4.7.2 + +### Source Analyzer Status +NotPlanned + +### Change Description +Consider a WPF application hosting a WinForms control which in turn hosts WPF controls. Users may not be able to tab out of the WinForms layer if the first or last control in that layer is the WPF `System.Windows.Forms.Integration.ElementHost`. This change fixes this issue, and users are now able to tab out of the WinForms layer. + +Automated applications that rely on focus never escaping the WinForms layer may no longer work as expected. + +- [x] Quirked +- [ ] Build-time break + +### Recommended Action +A developer who wants to utilize this change while targeting a framework version below .NET 4.7.2 can set the following set of AppContext flags to false for the change to be enabled. + +```xml + + + + + +``` + +WPF applications must opt in to all early accessibility improvements to get the later improvements. In other words, both the `Switch.UseLegacyAccessibilityFeatures` and the `Switch.UseLegacyAccessibilityFeatures.2` switches must be set + +A developer who requires the previous functionality while targeting .NET 4.7.2 or greater can set the following AppContext flag to true for the change to be disabled. + +```xml + + + + + +``` + +### Affected APIs +* Not detectable via API analysis + +### Category +Windows Presentation Foundation (WPF) + + + + diff --git a/Documentation/compatibility/wpf-MarkupCompiler-default-hash-algorithm-is-now-SHA256.md b/Documentation/compatibility/wpf-MarkupCompiler-default-hash-algorithm-is-now-SHA256.md new file mode 100644 index 000000000..a312028ad --- /dev/null +++ b/Documentation/compatibility/wpf-MarkupCompiler-default-hash-algorithm-is-now-SHA256.md @@ -0,0 +1,50 @@ +## The default hash algorithm for WPF's Markup Compiler is now SHA256 + +### Scope +Transparent + +### Version Introduced +4.7.2 + +### Source Analyzer Status +NotPlanned + +### Change Description +The WPF MarkupCompiler provides compilation services for XAML markup files. In the .NET Framework 4.7.1 and earlier versions, the default hash algorithm used for checksums was SHA1. +Due to recent security concerns with SHA1, this default has been changed to SHA256 starting with the .NET Framework 4.7.2. This change affects all checksum generation for markup files during compilation. + +- [X] Quirked +- [ ] Build-time break + +### Recommended Action +A developer who targets .NET Framework 4.7.2 or greater and wants to revert to SHA1 hashing behavior must set the following AppContext flag. + +```xml + + + + + +``` + +A developer who wants to utilize SHA256 hashing while targeting a framework version below .NET 4.7.2 must set the below AppContext flag. Note that the installed version of the .NET Framework must be 4.7.2 or greater. + +```xml + + + +``` + +where the DataContext is an `Order`. +WPF gets the value of the `OrderDetails` property - a collection D of all the `Detail` items whose `OrderID` +matches the `OrderID` of the master item. + +The behavior change arises when you change the primary key `OrderID` of the master item. +ADO automatically changes the `OrderID` of each of the affected records in the Details collection +(namely the ones copied into collection D). But what happens to D? + +- Old behavior: Collection D is cleared. The master item does _not_ raise a change notification for property `OrderDetails`. The ListBox continues to use collection D, which is now empty. + +- New behavior: Collection D is unchanged. Each of its items raises a change notification for the `OrderID` property. The ListBox continues to use collection D, and displays the details with the new `OrderID`. + +WPF implements the new behavior by creating collection D in a different way: by calling the ADO method + +with the `followParent` argument set to `true`. + +- [X] Quirked +- [ ] Build-time break + +### Recommended Action +An app gets the new behavior by using the following AppContext switch. + +```xml + + + + + + +``` + +The switch defaults to `true` (old behavior) for apps that target .NET 4.7.1 or below, +and to `false` (new behavior) for apps that target .NET 4.7.2 or above. + +### Affected APIs +Not detectable via API analysis + +### Category +Windows Presentation Foundation (WPF) + + + diff --git a/Documentation/compatibility/wpf-TextBox-PasswordBox-text-selection-does-not-follow-system-colors.md b/Documentation/compatibility/wpf-TextBox-PasswordBox-text-selection-does-not-follow-system-colors.md new file mode 100644 index 000000000..895abe79d --- /dev/null +++ b/Documentation/compatibility/wpf-TextBox-PasswordBox-text-selection-does-not-follow-system-colors.md @@ -0,0 +1,41 @@ +## WPF TextBox/PasswordBox Text Selection Does Not Follow System Colors + +### Scope +Edge + +### Version Introduced +4.7.2 + +### Source Analyzer Status +NotPlanned + +### Change Description +In .NET Framework 4.7.1 and earlier versions, WPF `System.Windows.Controls.TextBox` and `System.Windows.Controls.PasswordBox` could only render a text selection in the Adorner layer. +In some system themes this would occlude text, making it hard to read. In .NET Framework 4.7.2 and later, developers have an option of enabling a non-Adorner-based selection rendering +scheme that alleviates this issue. + +- [X] Quirked +- [ ] Build-time break + +### Recommended Action +A developer who wants to utilize this change must set the following AppContext flag appropriately. To utilize this feature, the installed .NET Framework version must be 4.7.2 or greater. + +To enabled the non-adorner-based selection, use the following AppContext flag. + +```xml + + + + + +``` + +### Affected APIs +Not detectable via API analysis + +### Category +Windows Presentation Foundation (WPF) + + \ No newline at end of file diff --git a/Documentation/compatibility/wpf-focus-visual-for-radiobutton-and-checkbox-displays-correctly-when-there-is-no-content.md b/Documentation/compatibility/wpf-focus-visual-for-radiobutton-and-checkbox-displays-correctly-when-there-is-no-content.md new file mode 100644 index 000000000..992d4c2ad --- /dev/null +++ b/Documentation/compatibility/wpf-focus-visual-for-radiobutton-and-checkbox-displays-correctly-when-there-is-no-content.md @@ -0,0 +1,56 @@ +## WPF FocusVisual for RadioButton and CheckBox Now Displays Correctly When The Controls Have No Content + +### Scope +Edge + +### Version Introduced +4.7.2 + +### Source Analyzer Status +NotPlanned + +### Change Description +In the .NET Framework 4.7.1 and earlier versions, WPF and have inconsistent and, in Classic and High Contrast themes, +incorrect focus visuals. These issues occur in cases where the controls do not have any content set. This can make the transition between themes confusing and the focus visual hard to see. +In the .NET Framework 4.7.2, these visuals are now more consistent across themes and more easily visible in Classic and High Contrast themes. + +- [X] Quirked +- [ ] Build-time break + +### Recommended Action +A developer targeting .NET Framework 4.7.2 that wants to revert to the behavior in .NET 4.7.1 will need to set the following AppContext flag. + +```xml + + + + + +``` + +A developer who wants to utilize this change while targeting a framework version below .NET 4.7.2 must set the following AppContext flags. + +Note that all the flags must be set appropriately and the installed version of the .NET Framework must be 4.7.2 or greater. + +WPF applications are required to opt in to all earlier accessibility improvements to get the latest improvements. +To do this, ensure that both the AppContext switches 'Switch.UseLegacyAccessibilityFeatures' and 'Switch.UseLegacyAccessibilityFeatures.2' are set to false. + +```xml + + + + + +``` + +### Affected APIs +Not detectable via API analysis + +### Category +Windows Presentation Foundation (WPF) + + + + diff --git a/releases/net472/KnownIssues/405199 - WPF Non-Adorner TextSelection Occludes Text.md b/releases/net472/KnownIssues/405199 - WPF Non-Adorner TextSelection Occludes Text.md new file mode 100644 index 000000000..f34044a09 --- /dev/null +++ b/releases/net472/KnownIssues/405199 - WPF Non-Adorner TextSelection Occludes Text.md @@ -0,0 +1,18 @@ +# WPF Non-Adorner Text Selection Occludes Text in FlowDocumentScrollViewer, FlowDocumentReader, and FlowDocumentPageViewer. + +## Symptoms +When the WPF Non-Adorner text selection feature is enabled on .NET Framework 4.7.2, selected text in `System.Windows.Controls.FlowDocumentScrollViewer`, `System.Windows.Controls.FlowDocumentReader`, +and `System.Windows.Controls.FlowDocumentPageViewer` occludes the selected text. + +## Cause +The root cause of this issue is an incorrect default selection opacity value being applied for `System.Windows.Controls.FlowDocumentScrollViewer`, `System.Windows.Controls.FlowDocumentReader`, +and `System.Windows.Controls.FlowDocumentPageViewer`. + +## Resolution +This issue will be fixed in the next version of the .NET Framework. + +To work around this problem, developers can explicitly set the selection opacity to the correct value of .4. Once this is done, the selected text is again visible underneath the text selection. + +```xml + +``` \ No newline at end of file diff --git a/releases/net472/KnownIssues/504055 - WPF May Not Show Touch Keyboard In All Scenarios on RS4.md b/releases/net472/KnownIssues/504055 - WPF May Not Show Touch Keyboard In All Scenarios on RS4.md new file mode 100644 index 000000000..1d8eb7c54 --- /dev/null +++ b/releases/net472/KnownIssues/504055 - WPF May Not Show Touch Keyboard In All Scenarios on RS4.md @@ -0,0 +1,18 @@ +# WPF May Not Show Touch Keyboard In All Scenarios on Windows 10 RS4 + +## Symptoms +In the .NET Framework 4.7.2 runnin on Windows 10 RS4, WPF applications may not immediately show the touch keyboard in some specific scenarios. Generally, these involve variations of the following. + +1. Tap a text box and note the touch keyboard shows. +2. Tap another text box. +3. Tap the 'X' on the touch keyboard to close it. +4. Tap the text box from step 1 and note the touch keyboard does not show. + +## Cause +A WPF change in .NET Framework 4.7.2 is preventing WPF from requesting the touch keyboard show. Due to this, the touch keyboard tracking algorithm in Windows 10 RS4 does not show the +keyboard in all scenarios. + +## Resolution +This will be fixed in the first servicing release for Windows 10 RS4. + +In the meantime, users can tap another text box within the application or they can explicitly tap the touch keyboard button on the start bar to ensure the keyboard shows. diff --git a/releases/net472/KnownIssues/560016-XBAP Applications targeting .NET 2.0,3.5 select wrong runtime version.md b/releases/net472/KnownIssues/560016-XBAP Applications targeting .NET 2.0,3.5 select wrong runtime version.md new file mode 100644 index 000000000..3f9c5bcd5 --- /dev/null +++ b/releases/net472/KnownIssues/560016-XBAP Applications targeting .NET 2.0,3.5 select wrong runtime version.md @@ -0,0 +1,55 @@ +# XBAP applications that target .NET Framework 3.5 select the wrong runtime (v4 CLR) instead of v2.0 CLR + +## Symptoms + +When a XAML Browser Application (XBAP) that targets .NET Framework 3.5 is launched, it is loaded in CLR v4 incorrectly instead of CLR v2.0, as expected. Along with the incorrect CLR, the .NET Framework libraries are also loaded from the latest version of .NET (.NET 4.x), and not .NET 3.5. Many XBAP applications launch and work normally under CLR v4, but some fail. The failure-mode is specific to the individual application and cannot be easily generalized. + +## Resolution + +A fix will be released shortly for .NET Framework 4.7.2 on Windows 10 Version 1804. .NET Framework 4.7.2 on all other OS platforms already has this fix. + +The fix for this issue must be enabled by customers who have problems running XBAP applications that target .NET Framework 3.5 under CLR v4. The fix can be enabled by setting the following registry keys: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Platform ArchitectureRegistry KeyValue NameValue KindValueDescription
32-bitHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\Windows Presentation Foundation\HostingDoNotLaunchVersion3HostedApplicationInVersion4RuntimeREG_DWORD0, or value does not existXBAP applications that target .NET Framework 3.5 or.NET Framework 4.x will be both launched under CLR v4
1, or any non-zero valueXBAP applications that target .NET Framework 3.5 will be launched under CLR v2, and XBAP applications that target .NET Framework 4.x will be launched under CLR v4
64-bit + Both of these keys should be set:

+

    +
  • HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\.NETFramework\Windows Presentation Foundation\Hosting
  • +
  • HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\Windows Presentation Foundation\Hosting
  • +
+
DoNotLaunchVersion3HostedApplicationInVersion4RuntimeREG_DWORD0, or value does not existXBAP applications that target .NET Framework 3.5 or.NET Framework 4.x will be both launched under CLR v4
1, or any non-zero valueXBAP applications that target .NET Framework 3.5 will be launched under CLR v2, and XBAP applications that target .NET Framework 4.x will be launched under CLR v4
+ +## More information +.NET Framework 4.6.2, .NET Framework 4.7, and .NET Framework 4.7.1 are also affected by this issue. A fix for these versions of .NET Frameworks will be released shortly. diff --git a/releases/net472/README.md b/releases/net472/README.md new file mode 100644 index 000000000..3b94f9157 --- /dev/null +++ b/releases/net472/README.md @@ -0,0 +1 @@ +Placeholder diff --git a/releases/net472/dotnet472-known-issues.md b/releases/net472/dotnet472-known-issues.md new file mode 100644 index 000000000..7b0df530b --- /dev/null +++ b/releases/net472/dotnet472-known-issues.md @@ -0,0 +1,9 @@ +.NET Framework 4.7.2 Known Issues +================================= + +This document lists the known issues that you may experience after you install the Microsoft .NET Framework 4.7.2. + +## Product issues for the .NET Framework 4.7.1 +- [405199 - WPF - 405199 - Non-Adorner TextSelection Occludes Text](https://github.com/Microsoft/dotnet/blob/master/releases/net471/KnownIssues/405199%20-%20WPF%20-%20Non-Adorner%20TextSelection%20Occludes%20Text.md) +- [504055 - WPF - WPF May Not Show Touch Keyboard In All Scenarios on RS4](https://github.com/Microsoft/dotnet/blob/master/releases/net471/KnownIssues/504055%20-%20WPF%20-%20WPF%20May%20Not%20Show%20Touch%20Keyboard%20In%20All%20Scenarios%20on%20RS4.md) +- [560016 -XBAP - Applications targeting .NET 2.0,3.5 select wrong runtime version](https://github.com/Microsoft/dotnet/blob/master/releases/net471/KnownIssues/560016%20-XBAP%20-%20Applications%20targeting%20.NET%202.0,3.5%20select%20wrong%20runtime%20version.md) From 6b56f2c388ee9772e33edb50c1b4a87ddb47fbad Mon Sep 17 00:00:00 2001 From: Ron Petrusha Date: Mon, 30 Apr 2018 10:20:31 -0700 Subject: [PATCH 617/872] Generated readme file (#724) --- Documentation/compatibility/README.md | 33 +++++++++++++++++++++++---- 1 file changed, 28 insertions(+), 5 deletions(-) diff --git a/Documentation/compatibility/README.md b/Documentation/compatibility/README.md index 49c80d84c..4a1a75429 100644 --- a/Documentation/compatibility/README.md +++ b/Documentation/compatibility/README.md @@ -4,6 +4,7 @@ The following documents provide information on .NET Framework application compat Please help us improve the [.NET Framework Application Compatibility documents](https://github.com/Microsoft/dotnet/tree/master/Documentation/compatibility). In particular, better titles will improve the index below, both in content and the sort. +- [.NET Framework 4.7.2](#net-framework-472) - [.NET Framework 4.7.1](#net-framework-471) - [.NET Framework 4.7](#net-framework-47) - [.NET Framework 4.6.2](#net-framework-462) @@ -13,12 +14,34 @@ Please help us improve the [.NET Framework Application Compatibility documents]( - [.NET Framework 4.5.1](#net-framework-451) - [.NET Framework 4.5](#net-framework-45) +## .NET Framework 4.7.2 + +- ["dataAnnotations:dataTypeAttribute:disableRegEx" app setting is on by default in .NET Framework 4.7.2](aspnet-472-compat-doc.md) +- [Accessibility improvements in Windows Forms controls for .NET 4.7.2](winforms-accessibility-changes-472.md) +- [Allow Unicode Bidirectional Control Characters in URIs](uri-unicode-bidirectional-characters.md) +- [Allow Unicode in URIs that resemble UNC shares](uri-unc-shares-normalized.md) +- [Avoiding endless recursion for IWorkflowInstanceManagement.TransactedCancel and IWorkflowInstanceManagement.TransactedTerminate](wcf-avoid-endless-recursion-in-two-iworkflowinstancemanagement-apis.md) +- [ContextMenuStrip.SourceControl property contains a valid control in the case of nested ToolStripMenuItems](winforms-ContextMenuStrip-SourceControl-property-change.md) +- [DeflateStream uses native APIs for decompression](deflatestream-uses-native-apis-for-decompression.md) +- [Ensure System.Uri uses a consistent reserved character set](uri-reserved-characters-consistent.md) +- [Improved WCF chain trust certificate validation for Net.Tcp certificate authentication](WCF-Improved-WCF-chain-trust-certificate-validation-for-Net.Tcp-certificate-authentication.md) +- [Keyboard focus now moves correctly across multiple layers of WinForms/WPF hosting ](wpf-KB-focus-now-moves-correctly-across-hosting-scenarios.md) +- [Keytips behavior improved in WPF](Keytips behavior improved in WPF.md) +- [PrivateFontCollection.AddFontFile method releases Font resources](winforms-PrivateFontCollection-Font-handle-leak-fix.md) +- [Stack traces obtained when using portable PDBs now include source file and line information if requested](Stack-traces-obtained-when-using-portable-PDBs-now-include-source-file-and-line-information-if-requested.md) +- [Support special relative URI notation when Unicode is present](uri-unicode-scheme-only-relative.md) +- [The default hash algorithm for WPF's Markup Compiler is now SHA256](wpf-MarkupCompiler-default-hash-algorithm-is-now-SHA256.md) +- [WinForm's Domain upbutton and downbutton actions are in sync now](winform's-DomainUpDownControl-button's-actions-in-sync.md) +- [WPF Changing a primary key when displaying ADO data in a Master/Detail scenario](wpf-MasterDetail-ADOdata-PrimaryKey.md) +- [WPF FocusVisual for RadioButton and CheckBox Now Displays Correctly When The Controls Have No Content](wpf-focus-visual-for-radiobutton-and-checkbox-displays-correctly-when-there-is-no-content.md) +- [WPF TextBox/PasswordBox Text Selection Does Not Follow System Colors](wpf-TextBox-PasswordBox-text-selection-does-not-follow-system-colors.md) + ## .NET Framework 4.7.1 - [Accessibility improvements in Windows Forms controls](winforms-accessibility-changes-471.md) - [Accessibility improvements in Windows Workflow Foundation (WF) workflow designer](workflow-designer-accessibility.md) - [Accessibility improvements in WPF](wpf-accessibility-improvements.MD) -- [ASP.NET Accessibility Improvements in .NET 4.7.1](ASPNET-accessibility-improvement.md) +- [ASP.NET Accessibility Improvements in .NET Framework 4.7.1](ASPNET-accessibility-improvement.md) - [Chained Popups with StaysOpen=False ](wpf-chained-popups-with-StaysOpen-false.md) - [Default SignedXML and SignedXMS algorithms changed to SHA256](Change-SignedXML-and-SignedCMS-default-algorithms-to-SHA256.md) - [Improved accessibility for some .NET SDK tools](WCFSDKToolsAccessibilityChangesIn4.7.1.md) @@ -116,7 +139,7 @@ Please help us improve the [.NET Framework Application Compatibility documents]( - [WPF layout rounding of margins has changed](wpf-layout-rounding-of-margins-has-changed.md) - [WPF spell checking in text-enabled controls will not work in Windows 10 for languages not in the OS's input language list](wpf-spell-checking-in-text-enabled-controls-will-not-work-in-windows-10-for-languages-not-in-the-input-language-list.md) - [WPF windows are rendered without clipping when extending outside a single monitor](wpf-windows-are-rendered-without-clipping-when-extending-outside-a-single-monitor.md) -- [X509Certificate2.ToString(bool) does not throw now when .NET cannot handle the certificate](x509certificate2_tostring(bool)-does-not-throw-now-when-_net-cannot-handle-the-certificate.md) +- [X509Certificate2.ToString(Boolean) does not throw now when .NET cannot handle the certificate](x509certificate2_tostring(bool)-does-not-throw-now-when-_net-cannot-handle-the-certificate.md) - [XmlWriter throws on invalid surrogate pairs](xmlwriter-throws-on-invalid-surrogate-pairs.md) - [XSD Schema validation now correctly detects violations of unique constraints if compound keys are used and one key is empty](xsd-schema-validation-now-correctly-detects-violations-of-unique-constraints-if-compound-keys-are-used-and-one-key-is-empty.md) @@ -132,7 +155,7 @@ Please help us improve the [.NET Framework Application Compatibility documents]( ## .NET Framework 4.5.1 -- [A ConcurrentDictionary serialized in .NET 4.5 with NetDataContractSerializer cannot be deserialized by .NET 4.5.1 or 4.5.2](a-concurrentdictionary-serialized-in-_net-4_5-with-netdatacontractserializer-cannot-be-deserialized-by-_net-4_5_1-or-4_5_2.md) +- [A ConcurrentDictionary serialized in .NET Framework 4.5 with NetDataContractSerializer cannot be deserialized by .NET Framework 4.5.1 or 4.5.2](a-concurrentdictionary-serialized-in-_net-4_5-with-netdatacontractserializer-cannot-be-deserialized-by-_net-4_5_1-or-4_5_2.md) - [ADO.NET now attempts to automatically reconnect broken SQL connections](ado_net-now-attempts-to-automatically-reconnect-broken-sql-connections.md) - [Building an Entity Framework edmx with Visual Studio 2013 can fail with error MSB4062 if using the EntityDeploySplit or EntityClean tasks](building-an-entity-framework-edmx-with-visual-studio-2013-can-fail-with-error-msb4062-if-using-the-entitydeploysplit-or-entityclean-tasks.md) - [COR_PRF_GC_ROOT_HANDLEs are not being enumerated by profilers](cor_prf_gc_root_handles-are-not-being-enumerated-by-profilers.md) @@ -174,12 +197,12 @@ Please help us improve the [.NET Framework Application Compatibility documents]( - [Exceptions during unobserved processing in System.Threading.Tasks.Task no longer propagate on finalizer thread](exceptions-during-unobserved-processing-in-system_threading_tasks_task-no-longer-propagate-on-finalizer-thread.md) - [FlowDocument may show an extra line of text](flowdocument-may-show-an-extra-line-of-text.md) - [Foreach iterator variable is now scoped within the iteration, so closure capturing semantics are different (in C#5)](foreach-iterator-variable-is-now-scoped-within-the-iteration.md) -- [GlyphRun.ComputeInkBoundingBox() and FormattedText.Extent return different values beginning in .NET 4.5](glyphrun_computeinkboundingbox()-and-formattedtext_extent-return-different-values-beginning-in-_net-4_5.md) +- [GlyphRun.ComputeInkBoundingBox() and FormattedText.Extent return different values beginning in .NET Framework 4.5](glyphrun_computeinkboundingbox()-and-formattedtext_extent-return-different-values-beginning-in-_net-4_5.md) - [GridViews with AllowCustomPaging set to true may fire the PageIndexChanging event when leaving the final page of the view](gridviews-with-allowcustompaging-set-to-true-may-fire-the-pageindexchanging-event-when-leaving-the-final-page-of-the-view.md) - [HttpRequest.ContentEncoding property prohibits UTF7](httprequest_contentencoding-property-prohibits-utf7.md) - [HttpUtility.JavaScriptStringEncode escapes ampersand](httputility_javascriptstringencode-escapes-ampersand.md) - [IAsyncResult.CompletedSynchronously property must be correct for the resulting task to complete](iasyncresult_completedsynchronously-property-must-be-correct-for-the-resulting-task-to-complete.md) -- [ICommand.CanExecuteChanged event behaviour changed in .NET 4.5](icommand_canexecutechanged-event-behaviour-changed-in-_net-4_5.md) +- [ICommand.CanExecuteChanged event behaviour changed in .NET Framework 4.5](icommand_canexecutechanged-event-behaviour-changed-in-_net-4_5.md) - [Intermittently unable to scroll to bottom item in ItemsControls (like ListBox and DataGrid) when using custom DataTemplates](intermittently-unable-to-scroll-to-bottom-item-in-itemscontrols-when-using-customer-datatemplates.md) - [IPad should not be used in custom capabilities file because it is now a browser capability](ipad-should-not-be-used-in-custom-capabilities-file-because-it-is-now-a-browser-capability.md) - [Items.Clear does not remove duplicates from SelectedItems](items_clear-does-not-remove-duplicates-from-selecteditems.md) From e2e66f8757e72181b5e8662cccffedf73f85c6fd Mon Sep 17 00:00:00 2001 From: Preeti Krishna Date: Mon, 30 Apr 2018 12:55:44 -0700 Subject: [PATCH 618/872] .NET Framework 4.7.2 release notes and related changes (#726) * Updates for .net framework 4.7.1 early access build 2539 * .NET Framework 4.7.2 release notes and related changes --- data/platforms.json | 31 ++ releases/README.md | 1 + ...s on Windows 10 Spring Creators Update.md} | 8 +- ...ET 2.0,3.5 select wrong runtime version.md | 2 +- releases/net472/README.md | 24 +- releases/net472/dotnet472-api-changes.md | 280 ++++++++++++++++++ releases/net472/dotnet472-changes.md | 221 ++++++++++++++ releases/net472/dotnet472-known-issues.md | 8 +- 8 files changed, 565 insertions(+), 10 deletions(-) rename releases/net472/KnownIssues/{504055 - WPF May Not Show Touch Keyboard In All Scenarios on RS4.md => 504055 - WPF May Not Show Touch Keyboard In All Scenarios on Windows 10 Spring Creators Update.md} (61%) create mode 100644 releases/net472/dotnet472-api-changes.md create mode 100644 releases/net472/dotnet472-changes.md diff --git a/data/platforms.json b/data/platforms.json index 264c560c3..492124783 100644 --- a/data/platforms.json +++ b/data/platforms.json @@ -81,6 +81,37 @@ "link": "https://github.com/dotnet/core/releases/tag/1.1.5" } ] + }, + { + "platform": ".NET Framework 4.7.2", + "alias": "net472", + "category": "netfx", + "supportInfo": { + "support": "Supported", + "link": "" + }, + "popular": true, + "info": "http://go.microsoft.com/fwlink/?LinkId=863281", + "includedIn": [ + "VS2017" + ], + "supportedBy": [ + "VS2015" + ], + "runtime": [ + { + "name": ".NET Framework 4.7.2", + "link": "http://go.microsoft.com/fwlink/?LinkId=863262", + "directLink": "http://go.microsoft.com/fwlink/?LinkId=863262&source=getdotnet&desc=dotnet472" + } + ], + "tools": [ + { + "name": ".NET Framework 4.7.2 Developer Pack", + "link": "http://go.microsoft.com/fwlink/?LinkId=863261", + "description": "The .NET 4.7.2 Developer pack includes 4.7.2 reference assemblies needed by Visual Studio and msbuild." + } + ] }, { "platform": ".NET Framework 4.7.1", diff --git a/releases/README.md b/releases/README.md index 8ef3e6aa7..e514ef286 100644 --- a/releases/README.md +++ b/releases/README.md @@ -8,6 +8,7 @@ To get up-to-date with the latest versions of .NET Framework and Visual Studio, You can see what was included in each .NET Framework release. Some releases are now unsupported, as called out. +- [.NET Framework 4.7.2](net472/README.md) - [.NET Framework 4.7.1](net471/README.md) - [.NET Framework 4.7](net47/README.md) - [.NET Framework 4.6.2](net462/README.md) diff --git a/releases/net472/KnownIssues/504055 - WPF May Not Show Touch Keyboard In All Scenarios on RS4.md b/releases/net472/KnownIssues/504055 - WPF May Not Show Touch Keyboard In All Scenarios on Windows 10 Spring Creators Update.md similarity index 61% rename from releases/net472/KnownIssues/504055 - WPF May Not Show Touch Keyboard In All Scenarios on RS4.md rename to releases/net472/KnownIssues/504055 - WPF May Not Show Touch Keyboard In All Scenarios on Windows 10 Spring Creators Update.md index 1d8eb7c54..e92bf5fe5 100644 --- a/releases/net472/KnownIssues/504055 - WPF May Not Show Touch Keyboard In All Scenarios on RS4.md +++ b/releases/net472/KnownIssues/504055 - WPF May Not Show Touch Keyboard In All Scenarios on Windows 10 Spring Creators Update.md @@ -1,7 +1,7 @@ -# WPF May Not Show Touch Keyboard In All Scenarios on Windows 10 RS4 +# WPF May Not Show Touch Keyboard In All Scenarios on Windows 10 Spring Creators Update ## Symptoms -In the .NET Framework 4.7.2 runnin on Windows 10 RS4, WPF applications may not immediately show the touch keyboard in some specific scenarios. Generally, these involve variations of the following. +In the .NET Framework 4.7.2 running on Windows 10 Spring Creators Update, WPF applications may not immediately show the touch keyboard in some specific scenarios. Generally, these involve variations of the following. 1. Tap a text box and note the touch keyboard shows. 2. Tap another text box. @@ -9,10 +9,10 @@ In the .NET Framework 4.7.2 runnin on Windows 10 RS4, WPF applications may not i 4. Tap the text box from step 1 and note the touch keyboard does not show. ## Cause -A WPF change in .NET Framework 4.7.2 is preventing WPF from requesting the touch keyboard show. Due to this, the touch keyboard tracking algorithm in Windows 10 RS4 does not show the +A WPF change in .NET Framework 4.7.2 is preventing WPF from requesting the touch keyboard show. Due to this, the touch keyboard tracking algorithm in Windows 10 Spring Creators Update does not show the keyboard in all scenarios. ## Resolution -This will be fixed in the first servicing release for Windows 10 RS4. +This will be fixed in an upcoming update for Windows 10 Spring Creators Update. In the meantime, users can tap another text box within the application or they can explicitly tap the touch keyboard button on the start bar to ensure the keyboard shows. diff --git a/releases/net472/KnownIssues/560016-XBAP Applications targeting .NET 2.0,3.5 select wrong runtime version.md b/releases/net472/KnownIssues/560016-XBAP Applications targeting .NET 2.0,3.5 select wrong runtime version.md index 3f9c5bcd5..00f3dacc9 100644 --- a/releases/net472/KnownIssues/560016-XBAP Applications targeting .NET 2.0,3.5 select wrong runtime version.md +++ b/releases/net472/KnownIssues/560016-XBAP Applications targeting .NET 2.0,3.5 select wrong runtime version.md @@ -6,7 +6,7 @@ When a XAML Browser Application (XBAP) that targets .NET Framework 3.5 is launch ## Resolution -A fix will be released shortly for .NET Framework 4.7.2 on Windows 10 Version 1804. .NET Framework 4.7.2 on all other OS platforms already has this fix. +A fix will be released shortly for .NET Framework 4.7.2 on Windows 10 Spring Creators Update. .NET Framework 4.7.2 on all other OS platforms already has this fix. The fix for this issue must be enabled by customers who have problems running XBAP applications that target .NET Framework 3.5 under CLR v4. The fix can be enabled by setting the following registry keys: diff --git a/releases/net472/README.md b/releases/net472/README.md index 3b94f9157..aefb8754e 100644 --- a/releases/net472/README.md +++ b/releases/net472/README.md @@ -1 +1,23 @@ -Placeholder +# .NET Framework 4.7.2 Release Notes + +You can learn about the changes made in the .NET Framework 4.7.2. + +- [Download](http://go.microsoft.com/fwlink/?LinkId=863262) +- [.NET Framework 4.7.2 Announcement blog post](https://go.microsoft.com/fwlink/?linkid=863281) +- [Release notes](dotnet472-changes.md) +- [Application compatibility](https://go.microsoft.com/fwlink/?linkid=863254) +- [API changes](dotnet472-api-changes.md) +- [Known issues](dotnet472-known-issues.md) + +## Release Notes by Product Area + +- [ASP.NET](dotnet472-changes.md#aspnet) +- [BCL](dotnet472-changes.md#bcl) +- [CLR](dotnet472-changes.md#clr) +- [ClickOnce](dotnet472-changes.md#ClickOnce) +- [Networking](dotnet472-changes.md#networking) +- [SQL](dotnet472-changes.md#sql) +- [WCF](dotnet472-changes.md#wcf) +- [Windows Forms](dotnet472-changes.md#windows-forms) +- [Workflow](dotnet472-changes.md#workflow) +- [WPF](dotnet472-changes.md#wpf) diff --git a/releases/net472/dotnet472-api-changes.md b/releases/net472/dotnet472-api-changes.md new file mode 100644 index 000000000..58127aaa1 --- /dev/null +++ b/releases/net472/dotnet472-api-changes.md @@ -0,0 +1,280 @@ +```diff + namespace System.Activities.Presentation { + public static class WorkflowDesignerColors { ++ public const string ActivityDesignerSelectedTitleForegroundColorKey = "ActivityDesignerSelectedTitleForegroundColorKey"; ++ public const string FlowchartConnectorColorKey = "FlowchartConnectorColorKey"; ++ public const string PropertyToolBarHightlightedButtonForegroundColorKey = "PropertyToolBarHightlightedButtonForegroundColor"; ++ public const string WorkflowViewElementSelectedCaptionColorKey = "WorkflowViewElementSelectedCaptionBrushColorKey"; ++ public static Color ActivityDesignerSelectedTitleForegroundColor { get; } ++ public static Color ContextMenuItemTextHoverQuirkedColor { get; } ++ public static Color FlowchartConnectorColor { get; } ++ public static Color PropertyToolBarHightlightedButtonForegroundColor { get; } ++ public static Color WorkflowViewElementSelectedCaptionColor { get; } + } + } + namespace System.Collections.Concurrent { + public class ConcurrentDictionary : ICollection, ICollection>, IDictionary, IDictionary, IEnumerable, IEnumerable>, IReadOnlyCollection>, IReadOnlyDictionary { ++ public TValue AddOrUpdate(TKey key, Func addValueFactory, Func updateValueFactory, TArg factoryArgument); ++ public TValue GetOrAdd(TKey key, Func valueFactory, TArg factoryArgument); + } + } + namespace System.Collections.Generic { + public class HashSet : ICollection, IDeserializationCallback, IEnumerable, IEnumerable, IReadOnlyCollection, ISerializable, ISet { ++ public HashSet(int capacity); ++ public HashSet(int capacity, IEqualityComparer comparer); ++ public bool TryGetValue(T equalValue, out T actualValue); + } + public class SortedSet : ICollection, ICollection, IDeserializationCallback, IEnumerable, IEnumerable, IReadOnlyCollection, ISerializable, ISet { ++ public bool TryGetValue(T equalValue, out T actualValue); + } + } + namespace System.Data.SqlClient { ++ public abstract class SqlAuthenticationInitializer { ++ protected SqlAuthenticationInitializer(); ++ public abstract void Initialize(); ++ } + public enum SqlAuthenticationMethod { ++ ActiveDirectoryInteractive = 4, + } ++ public class SqlAuthenticationParameters { ++ protected SqlAuthenticationParameters(SqlAuthenticationMethod authenticationMethod, string serverName, string databaseName, string resource, string authority, string userId, string password, Guid connectionId); ++ public SqlAuthenticationMethod AuthenticationMethod { get; } ++ public string Authority { get; } ++ public Guid ConnectionId { get; } ++ public string DatabaseName { get; } ++ public string Password { get; } ++ public string Resource { get; } ++ public string ServerName { get; } ++ public string UserId { get; } ++ } ++ public abstract class SqlAuthenticationProvider { ++ protected SqlAuthenticationProvider(); ++ public abstract Task AcquireTokenAsync(SqlAuthenticationParameters parameters); ++ public virtual void BeforeLoad(SqlAuthenticationMethod authenticationMethod); ++ public virtual void BeforeUnload(SqlAuthenticationMethod authenticationMethod); ++ public static SqlAuthenticationProvider GetProvider(SqlAuthenticationMethod authenticationMethod); ++ public abstract bool IsSupported(SqlAuthenticationMethod authenticationMethod); ++ public static bool SetProvider(SqlAuthenticationMethod authenticationMethod, SqlAuthenticationProvider provider); ++ } ++ public class SqlAuthenticationToken { ++ public SqlAuthenticationToken(string accessToken, DateTimeOffset expiresOn); ++ public string AccessToken { get; } ++ public DateTimeOffset ExpiresOn { get; } ++ } ++ public class SqlClientLogger { ++ public SqlClientLogger(); ++ public bool IsLoggingEnabled { get; } ++ public bool LogAssert(bool value, string type, string method, string message); ++ public void LogError(string type, string method, string message); ++ public void LogInfo(string type, string method, string message); ++ } + public class SqlColumnEncryptionCertificateStoreProvider : SqlColumnEncryptionKeyStoreProvider { ++ public override byte[] SignColumnMasterKeyMetadata(string masterKeyPath, bool allowEnclaveComputations); ++ public override bool VerifyColumnMasterKeyMetadata(string masterKeyPath, bool allowEnclaveComputations, byte[] signature); + } + public class SqlColumnEncryptionCngProvider : SqlColumnEncryptionKeyStoreProvider { ++ public override byte[] SignColumnMasterKeyMetadata(string masterKeyPath, bool allowEnclaveComputations); ++ public override bool VerifyColumnMasterKeyMetadata(string masterKeyPath, bool allowEnclaveComputations, byte[] signature); + } + public class SqlColumnEncryptionCspProvider : SqlColumnEncryptionKeyStoreProvider { ++ public override byte[] SignColumnMasterKeyMetadata(string masterKeyPath, bool allowEnclaveComputations); ++ public override bool VerifyColumnMasterKeyMetadata(string masterKeyPath, bool allowEnclaveComputations, byte[] signature); + } ++ public abstract class SqlColumnEncryptionEnclaveProvider { ++ protected SqlColumnEncryptionEnclaveProvider(); ++ public abstract void CreateEnclaveSession(byte[] enclaveAttestationInfo, ECDiffieHellmanCng clientDiffieHellmanKey, string attestationUrl, string servername, out SqlEnclaveSession sqlEnclaveSession, out long counter); ++ public abstract SqlEnclaveAttestationParameters GetAttestationParameters(); ++ public abstract void GetEnclaveSession(string serverName, string attestationUrl, out SqlEnclaveSession sqlEnclaveSession, out long counter); ++ public abstract void InvalidateEnclaveSession(string serverName, string enclaveAttestationUrl, SqlEnclaveSession enclaveSession); ++ } + public abstract class SqlColumnEncryptionKeyStoreProvider { ++ public virtual byte[] SignColumnMasterKeyMetadata(string masterKeyPath, bool allowEnclaveComputations); ++ public virtual bool VerifyColumnMasterKeyMetadata(string masterKeyPath, bool allowEnclaveComputations, byte[] signature); + } + public sealed class SqlConnectionStringBuilder : DbConnectionStringBuilder { ++ public string EnclaveAttestationUrl { get; set; } + } ++ public class SqlEnclaveAttestationParameters { ++ public SqlEnclaveAttestationParameters(int protocol, byte[] input, ECDiffieHellmanCng clientDiffieHellmanKey); ++ public ECDiffieHellmanCng ClientDiffieHellmanKey { get; } ++ public int Protocol { get; } ++ public byte[] GetInput(); ++ } ++ public class SqlEnclaveSession { ++ public SqlEnclaveSession(byte[] sessionKey, long sessionId); ++ public long SessionId { get; } ++ public byte[] GetSessionKey(); ++ } + } + namespace System.IO.Compression { + public class ZipArchiveEntry { ++ public int ExternalAttributes { get; set; } + } + } + namespace System.Linq { + public static class Enumerable { ++ public static HashSet ToHashSet(this IEnumerable source); ++ public static HashSet ToHashSet(this IEnumerable source, IEqualityComparer comparer); + } + } + namespace System.Net.Http { + public class HttpClientHandler : HttpMessageHandler { ++ public static Func DangerousAcceptAnyServerCertificateValidator { get; } + } + } + namespace System.Security.Cryptography { + public class CryptoStream : Stream, IDisposable { ++ public CryptoStream(Stream stream, ICryptoTransform transform, CryptoStreamMode mode, bool leaveOpen); + } + public abstract class DSA : AsymmetricAlgorithm { ++ public static DSA Create(DSAParameters parameters); ++ public static DSA Create(int keySizeInBits); + } + public class Rfc2898DeriveBytes : DeriveBytes { ++ public Rfc2898DeriveBytes(byte[] password, byte[] salt, int iterations, HashAlgorithmName hashAlgorithm); ++ public Rfc2898DeriveBytes(string password, byte[] salt, int iterations, HashAlgorithmName hashAlgorithm); ++ public Rfc2898DeriveBytes(string password, int saltSize, int iterations, HashAlgorithmName hashAlgorithm); + } + public abstract class RSA : AsymmetricAlgorithm { ++ public static RSA Create(int keySizeInBits); ++ public static RSA Create(RSAParameters parameters); + } + } + namespace System.Security.Cryptography.Pkcs { + public sealed class SignerInfo { ++ public Oid SignatureAlgorithm { get; } ++ public byte[] GetSignature(); + } + } + namespace System.Security.Cryptography.X509Certificates { ++ public sealed class CertificateRequest { ++ public CertificateRequest(string subjectName, ECDsa key, HashAlgorithmName hashAlgorithm); ++ public CertificateRequest(string subjectName, RSA key, HashAlgorithmName hashAlgorithm, RSASignaturePadding padding); ++ public CertificateRequest(X500DistinguishedName subjectName, ECDsa key, HashAlgorithmName hashAlgorithm); ++ public CertificateRequest(X500DistinguishedName subjectName, PublicKey publicKey, HashAlgorithmName hashAlgorithm); ++ public CertificateRequest(X500DistinguishedName subjectName, RSA key, HashAlgorithmName hashAlgorithm, RSASignaturePadding padding); ++ public Collection CertificateExtensions { get; } ++ public HashAlgorithmName HashAlgorithm { get; } ++ public PublicKey PublicKey { get; } ++ public X500DistinguishedName SubjectName { get; } ++ public X509Certificate2 Create(X500DistinguishedName issuerName, X509SignatureGenerator generator, DateTimeOffset notBefore, DateTimeOffset notAfter, byte[] serialNumber); ++ public X509Certificate2 Create(X509Certificate2 issuerCertificate, DateTimeOffset notBefore, DateTimeOffset notAfter, byte[] serialNumber); ++ public X509Certificate2 CreateSelfSigned(DateTimeOffset notBefore, DateTimeOffset notAfter); ++ public byte[] CreateSigningRequest(); ++ public byte[] CreateSigningRequest(X509SignatureGenerator signatureGenerator); ++ } + public static class DSACertificateExtensions { ++ public static X509Certificate2 CopyWithPrivateKey(this X509Certificate2 certificate, DSA privateKey); + } + public static class ECDsaCertificateExtensions { ++ public static X509Certificate2 CopyWithPrivateKey(this X509Certificate2 certificate, ECDsa privateKey); + } + public static class RSACertificateExtensions { ++ public static X509Certificate2 CopyWithPrivateKey(this X509Certificate2 certificate, RSA privateKey); + } ++ public sealed class SubjectAlternativeNameBuilder { ++ public SubjectAlternativeNameBuilder(); ++ public void AddDnsName(string dnsName); ++ public void AddEmailAddress(string emailAddress); ++ public void AddIpAddress(IPAddress ipAddress); ++ public void AddUri(Uri uri); ++ public void AddUserPrincipalName(string upn); ++ public X509Extension Build(bool critical=false); ++ } + public enum X509KeyStorageFlags { ++ EphemeralKeySet = 32, + } ++ public abstract class X509SignatureGenerator { ++ protected X509SignatureGenerator(); ++ public PublicKey PublicKey { get; } ++ protected abstract PublicKey BuildPublicKey(); ++ public static X509SignatureGenerator CreateForECDsa(ECDsa key); ++ public static X509SignatureGenerator CreateForRSA(RSA key, RSASignaturePadding signaturePadding); ++ public abstract byte[] GetSignatureAlgorithmIdentifier(HashAlgorithmName hashAlgorithm); ++ public abstract byte[] SignData(byte[] data, HashAlgorithmName hashAlgorithm); ++ } + } + namespace System.Web { + public sealed class HttpCookie { ++ public SameSiteMode SameSite { get; set; } + } + public sealed class HttpRuntime { ++ public static IServiceProvider WebObjectActivator { get; set; } + } ++ public enum SameSiteMode { ++ Lax = 1, ++ None = 0, ++ Strict = 2, ++ } + } + namespace System.Web.Configuration { + public sealed class FormsAuthenticationConfiguration : ConfigurationElement { ++ public SameSiteMode CookieSameSite { get; set; } + } + public sealed class HttpCookiesSection : ConfigurationSection { ++ public SameSiteMode SameSite { get; set; } + } + public sealed class SessionStateSection : ConfigurationSection { ++ public SameSiteMode CookieSameSite { get; set; } + } + } + namespace System.Web.Security { + public sealed class FormsAuthentication { ++ public static SameSiteMode CookieSameSite { get; } + } + } + namespace System.Windows.Diagnostics { + public static class ResourceDictionaryDiagnostics { ++ public static IEnumerable GetApplicationOwners(ResourceDictionary dictionary); ++ public static IEnumerable GetFrameworkContentElementOwners(ResourceDictionary dictionary); ++ public static IEnumerable GetFrameworkElementOwners(ResourceDictionary dictionary); ++ public static IEnumerable GetResourceDictionariesForSource(Uri uri); ++ public static event EventHandler StaticResourceResolved; + } ++ public class StaticResourceResolvedEventArgs : EventArgs { ++ public ResourceDictionary ResourceDictionary { get; private set; } ++ public object ResourceKey { get; private set; } ++ public object TargetObject { get; private set; } ++ public object TargetProperty { get; private set; } ++ } + } + namespace System.Windows.Forms { + public class DataGridView : Control, ISupportInitialize { ++ protected bool ProcessF3Key(Keys keyData); + } + public class DataGridViewComboBoxCell : DataGridViewCell { ++ protected class DataGridViewComboBoxCellAccessibleObject : DataGridViewCell.DataGridViewCellAccessibleObject { ++ public DataGridViewComboBoxCellAccessibleObject(DataGridViewCell owner); ++ } ++ protected override AccessibleObject CreateAccessibilityInstance(); + } + public class DataGridViewComboBoxEditingControl : ComboBox, IDataGridViewEditingControl { ++ protected override AccessibleObject CreateAccessibilityInstance(); + } + public class DataGridViewTextBoxCell : DataGridViewCell { ++ protected class DataGridViewTextBoxCellAccessibleObject : DataGridViewCell.DataGridViewCellAccessibleObject { ++ public DataGridViewTextBoxCellAccessibleObject(DataGridViewCell owner); ++ } ++ protected override AccessibleObject CreateAccessibilityInstance(); + } + public class DataGridViewTextBoxEditingControl : TextBox, IDataGridViewEditingControl { ++ protected override AccessibleObject CreateAccessibilityInstance(); + } + public class SystemInformation { ++ public static int GetHorizontalScrollBarArrowWidthForDpi(int dpi); + } + } + namespace Microsoft.Build.Tasks.Windows { + public sealed class GenerateTemporaryTargetAssembly : Task { ++ public bool GenerateTemporaryTargetAssemblyDebuggingInformation { get; set; } + } + } + namespace Microsoft.Win32.SafeHandles { + public abstract class SafeNCryptHandle : SafeHandleZeroOrMinusOneIsInvalid { ++ protected SafeNCryptHandle(IntPtr handle, SafeHandle parentHandle); + } + public sealed class SafeNCryptKeyHandle : SafeNCryptHandle { ++ public SafeNCryptKeyHandle(IntPtr handle, SafeHandle parentHandle); + } + } +``` diff --git a/releases/net472/dotnet472-changes.md b/releases/net472/dotnet472-changes.md new file mode 100644 index 000000000..381239c08 --- /dev/null +++ b/releases/net472/dotnet472-changes.md @@ -0,0 +1,221 @@ +# .NET Framework 4.7.2 Release Notes + +.NET Framework release notes describe product improvements grouped by product area. Each change includes a Microsoft-internal VSTS bug ID, the primary binary that was updated and whether the change was a bug or a feature. + +## ASPNET +* Support for Dependency Injection in Page, Custom Handler and User controls. [364308, system.web.dll, Feature] +* Enable ASP.NET developers to specify MaxLength attribute for Multiline asp:TextBox. [449020, System.Web.dll, Bug] +* Avoid InvalidCastException when running an ASP.NET application that works with mixed HttpWorkerRequests types and has FREB/ETW tracing enabled. [472566, system.web.dll, Bug] +* Fixed issue https://github.com/Microsoft/dotnet-framework-early-access/issues/2 [479409, 521834, system.web.dll, Bug] +* With this improvement, users who created apps on .NET Framework 4.7.2+ or upgraded apps to .NET Framework 4.7.2+, if they don't specify the appsetting value in their configurations, they won't be using regexes in data type attributes (such as EmailAddressAttribute, UrlAttribute, and PhoneAttribute). They will instead use a simpler implementation. [480141, system.web.dll, Bug] +* Support for SameSite property in HttpCookie. [497045, system.web.dll, Feature] +* Fixed bug in ASP.NET LowPhysicalMemoryMonitor where the monitor might fail to start if memory use falls within a certain range. [531575, system.web.dll, Bug] +* Fixed bug in ASP.NET LowPhysicalMemoryMonitor where the default polling interval is sometimes mistakenly disabled. [531576, system.web.dll, Bug] +* Fixed the behavior of ASP.NET's RecycleLimitMonitor in cases where no private bytes recycling limit is explicitly set in IIS configuration. [531579, system.web.dll, Bug] + +## BCL +* Increased throughput of decompression zip archives by ~3x. [199232, mscorlib.dll, Feature] +* Reduction in HashSet memory consumption via StructLayout. [212195, mscorlib.dll, Bug] +* Added ConcurrentDictionary GetOrAdd/AddOrUpdate overloads with generic argument. [212212, 212820, 515491, mscorlib.dll, Feature] +* Improvement in performance of ConcurrentDictionary. [212582, mscorlib.dll, Bug] +* Performance improvements for HashSet construction from another HashSet. [212624, mscorlib.dll, Bug] +* Added HashSet ctors with capacity. [212788, mscorlib.dll, Feature] +* Support for additional DSA factory methods to make key creation easier. [221261, mscorlib.dll, Feature] +* Support for additional RSA factory methods to make key creation easier. [223399, mscorlib.dll, Feature] +* Improved reliability when working with large expression trees. [256966, system.core.dll, Bug] +* Support for loading certificate PFX files without writing the private key to the hard drive. [258543, mscorlib.dll, Feature] +* Added a leaveOpen constructor on CryptoStream to mitigate problems with disposing the CryptoStream that ends up disposing the underlying stream which is not desirable in certain scenarios. [272215, mscorlib.dll, Bug] +* Support for SHA-2 hash algorithms in Rfc2898DeriveBytes. [272906, mscorlib.dll, Feature] +* Implement Enumerable.ToHashSet. [291752, system.core.dll, Feature] +* Added TryGetValue method to HashSet. [381763, system.core.dll, Feature] +* Fixed a problem where using OnDeserilalizingAttribute/OnDeserializedAttribute/OnSerializingAttribute/OnSerializedAttribute in a type in an assembly targeting NetStandard 2.0 would throw a TypeLoadException when accessing the type. [407239, mscorlib.dll, Bug] +* Support for programmatically creating X.509 certificates and certificate signing requests. [428598, mscorlib.dll, Feature] +* Fixed a problem where EventSource logging to ETW can fail in 32-bit large address aware processes. [443469, system.dll, Bug] +* Fixed security vulnerability tracked by Microsoft Common Vulnerabilities and Exposures CVE-2018-0764. [455812, 507252, system.xml.dll, Bug] +* Fixed a problem in returning Byte-Order-Mark with UTF8 objects when the default codepage on Windows is set to UTF8 codepage (65001) in Encoding.Default. Applications run into problems in this scenario and the Byte-Order-Mark is no longer sent with the UTF8 objects. [460626, mscorlib.dll, Bug] +* ReaderWriterLockSlim now scales better under contention. See https://github.com/dotnet/coreclr/pull/13495 and https://github.com/dotnet/coreclr/pull/13243 for more details. [468648, mscorlib.dll, Bug] +* File and directory enumeration performance is now improved. Enumerating will be faster and allocate significantly less than before. [470762, mscorlib.dll, Bug] +* Increment the assembly version of System.Net.Http and System.IO.Compression to be compatible with netstandard 2.0 and the compatibility package. [504519, mscorlib.dll, Feature] +* Fixed problem where in certain scenarios corrupted zip is produced. [504526, mscorlib.dll, Bug] +* Avoid allocations in DateTime.Now [504528, mscorlib.dll, Bug] +* Make Lazy initialization of TextInfo.IsAsciiCasingSameAsInvariant thread safe. [504530, mscorlib.dll, Bug] +* Use beforefieldinit field for Comparer/EqualityComparer.Default. [504531, mscorlib.dll, Bug] +* Peformance of Buffer.MemoryCopy was significantly improved for smaller buffers. [504573, mscorlib.dll, Bug] +* Improve string.Equals OrdinalIgnoreCase performance for matching chars. [504580, mscorlib.dll, Bug] +* Avoid duplicated computations with DateTime.GetDatePart. [504591, 504571, mscorlib.dll, Bug] +* Make GetProcessInfo() for a single PID cheaper on Windows. [505023, mscorlib.dll, Bug] +* Support for netstandard runtime facade type forward to contracts when possible, to enable usage of OOB types that were moved inbox on a .NET Framework 4.6.1 app that tries to run on .NET Framework 4.7.1+. [510901, mscorlib.dll, Bug] +* Support for compatibility with the support package, so that running netstandard apps on .NET Framework 4.7.1 is possible. [514195, mscorlib.dll, Bug] +* Support for ephemeral asymmetric keys to be consistently exportable. [516638, mscorlib.dll, Bug] +* Exposed the signature algorithm identifier and the signature value on CMS SignerInfo. [517223, mscorlib.dll, Feature] +* Performance improvement of ManualResetEventSlim under contention. [517311, mscorlib.dll, Bug] +* Fixed managed attributes for assemblies System.Diagnostics.Tracing.dll, System.IO.Compression.dll, and System.Net.Http.dll. [522034, System.dll, Bug] +* Enable CodeDOM to generate trusted code when Device Guard by maintaining integrity of inputs and outputs. [526489, mscorlib.dll, Feature] +* Fixed problem with RuntimeInformation static class to now return the right value for architecture. [534300, mscorlib.dll, Bug] +* Fixed a problem in deserialization of Collections which uses culture aware StringComparer. [568713, mscorlib.dll, Bug] + +## CLR +* Reliably handle scenarios where framework assemblies are present in DEVPATH. [207947, clr.dll, Bug] +* The GC will now compact the heap more aggressively when running out of virtual address space in 32-bit processes, even if there is a great deal of physical memory available on the machine. [377888, clr.dll, Bug] +* Fixed hang when loading NI images whose IL assemblies are not in the GAC, where the NI images have circular dependencies and COMPlus_NgenBind_OptimizeNonGac is enabled. [452001, clr.dll, Bug] +* Fixed a silent bad codegen bug. [467692, clrjit.dll, Bug] +* Improved reliability in a scenario with certain mixtures of LOH heap expansion and background GC operation. [470006, clr.dll, Bug] +* This fixes a bad error message with truncated type names when running TlbExp.exe with /verbose, or using ITypeLibExporterNotifySink.ReportEvent API. [480497, Tlbexp.exe, Bug] +* Improved error handling capabilities so that the .NET runtime process is more likely to exit in GC heap corruption situations, instead of causing application to be in a suspended state. [487133, clr.dll, Bug] +* Fixed a problem where the GC can crash when recovering from an out-of-memory exception when performing a GC. [487315, clr.dll, Bug] +* Fixed problem where certain multithreaded programs can experience extremely intermittent crashes, normally during program startup. [490377, clr.dll, Bug] +* Fixed unpredictable crashes that can occur when trying to read custom attributes from assemblies carrying an invalid metadata pattern emitted by certain pre-v2 compilers. [497461, clr.dll, Bug] +* Fixed hang when loading NI images whose IL assemblies are not in the GAC, where the NI images have circular dependencies and COMPlus_NgenBind_OptimizeNonGac is enabled. [509957, clr.dll, Bug] +* Fixed a potential deadlock in ReadyToRun scenarios in cases where exception handling and code heap modification occur simultaneously. [510081, clrjit.dll, Bug] +* Fixed a floating-point overflow in the thread pool’s hill climbing algorithm. [511559, clr.dll, Bug] +* Hardens .NET library loading security if an administrator opts into the new Device Guard Dynamic Code Security policy. [517453, clr.dll, Bug] +* Fixed a problem where a SetConsoleCtrlHandler function is not executed during debugging when Visual Studio is set to not handle Ctrl+C events. [518982, system.dll, Bug] +* This change adds a dynamic method unload event that is fired whenever a dynamic method is destroyed. This is needed because profilers can listen to dynamic method load events (via DynamicMethodJittingStarted/Finished) but previously would never be notified of destroyed dynamic methods. This can happen for example when the dynamic method is garbage collected. [523635, CorGuids.lib, Feature] +* Improved reliability of jump stub allocation. Corresponding .NET Core change: https://github.com/dotnet/coreclr/pull/15296 [537668, clr.dll, Bug] +* Fixed problems in Server GC when the user asks to not affinitize (can be done via an application configuration switch) by not setting ideal processor in these conditions. [581080, clr.dll, Bug] +* Fixed very high CPU usage problem in the write watch implementation when it incurs a page fault. [583247, clr.dll, Bug] +* Fixed a potential crash with concurrent calls to a new dynamic method. [584962, clr.dll, Bug] +* Fixed a problem in JIT compiler where it generates incorrect code for an IL pattern used by compilers for languages such as COBOL. [574984, 581050, clrjit.dll, Bug] + + +## ClickOnce +* Fixed validation of SHA2 certificates for ClickOnce applications to allow avoiding SmartScreen for trusted publishers. This also allows customers to block installation of unsigned ClickOnce applications. [395008, system.deployment.dll, Bug] +* With this improvement, WPF developers can set a non-default DPI Awareness mode in their application manifest to take advantage of recent OS improvements in HDPI while still able to deploy via ClickOnce. [480091, Dfshim.dll, Feature] +* Support for timestamping ClickOnce manifest using RFC3161 timestamp servers. [480646, mage.exe, Feature] +* The value of the progress bar in the ClickOnce installation progress window is now read correctly by the Narrator. The decorative dividers of the ClickOnce installation progress window are no longer read by the Narrator. [526717, dfsvc.exe, Bug] +* ClickOnce app install and app launch windows are now accessible for the Narrator users [523737, dfsvc.exe, Bug] + +## Networking +* Improved reliability by correctly processing Unicode characters in file URIs that point to UNC shares. [95292, System.dll, Bug] +* Fixed a reliability problem with how IPV6 Addresses are converted to strings after their scope ID has been modified. [95508, System.dll, Bug] +* Improved reliability in the scenario where HttpClientHandler.SendAsync functions as expected even when started in a task with a custom TaskScheduler. [110673, System.dll, Bug] +* Fixed HttpClient so that OperationCanceledException/TaskCanceledException's being returned from canceled requests will now have the proper settings on the Exception.CancellationToken property. [111275, System.dll, Bug] +* Fixed argument validation of System.Net.Mime.HeaderCollection Set/Add methods, and correct parameter name in exception message. [116743, System.dll, Bug] +* Fixed Socket ReceiveAsync to use the specified output buffers when receiving data extremely quickly over TCP and using several different sized buffers. [119549, System.dll, Bug] +* Fixed a problem in System.Uri where Unicode bidirectional control characters would be stripped from a Uri during parsing. This behavior change can be disabled by setting the new App Context Switch Switch.System.Uri.DontKeepUnicodeBidiFormattingCharacters. [130850, System.dll, Bug] +* Fixed parsing of ‘Set-Cookie’ headers received with Http APIs (HttpWebRequest, WebClient, HttpClient) for CookieContainer so that all valid cookies are correctly stored in the CookieContainer. [143892, System.dll, Bug] +* Fixed a problem with System.Uri to ensure that URI reserved character decoding behavior strictly conforms to the RFC 3986 specification. This means that the percent encoded versions of " : ", " ' ", " ( ", " ) ", " ! " and " * " will no longer be incorrectly decoded when generating the absolute URI. [150266, System.dll, Bug] +* Use a global lock to protect AddressChangeListener and AvailabilityChangeListener states from race conditions. [162830, System.dll, Bug] +* Socket.BeginConnect will now consistently throw InvalidOperationException when attempting multiple operations. [188428, System.dll, Bug] +* Improved reliability by ensuring that URIs with unknown schemes and no host are normalized correctly and the URI path is processed correctly. [233623, System.dll, Bug] +* Fixed the System.Net.Http.Headers.ContentDispositionHeaderValue class so that setting the Size property no longer throws a NullReferenceException. [251481, System.dll, Bug] +* Fixed a problem by preventing System.Uri.TryCreate from throwing a NullReferenceException when creating a relative URI that contains Unicode characters. [287019, System.dll, Bug] +* Fixed a reliability issue with HttpWebRequest so that closed connections can be correctly removed from the connection pool and additional requests sent correctly. [371763, System.dll, Bug] +* Added implementation to HttpClientHandler so that the newly added properties in .NET Framework 4.7.1 will no longer throw PlatformNotSupportedException. [386926, System.dll, Feature] +* Fixed ServicePoint.CloseConnectionGroup() so that it properly closes all connections associated with the connection group name passed in the method parameter. [404684, System.dll, Bug] +* Fixed the System.Net.WebHeaderCollection.GetValues() method to properly return cookies that have an 'Expires' attribute. [467951, System.dll, Bug] +* Fixed System.Net HTTP APIs (WebClient, HttpWebRequest, HttpClient) so that connections to the proxy to set up the CONNECT tunnel (for TLS/SSL requests) will now have the 'User-Agent' header passed to the request if that header was added by the developer to the original http request. [486995, System.dll, Bug] +* Fixed a reliability issue with HttpWebRequest and HttpClient where socket connection errors would prevent Http requests from being retried automatically. [493616, System.dll, Bug] +* Fixed SmtpClient so that it can properly send mail to SMTP servers that use the Kerberos protocol via GSSAPI for authentication. [495813, System.dll, Bug] +* Eliminate a deadlock situation when closing WebSocket connections. [497690, System.dll, Bug] +* Fixed a problem with AppContext switch Switch.System.Net.DontEnableSchSendAuxRecord where it failed to properly allow for the switch to be enabled. [511005, System.dll, Bug] +* Fixed a problem with connection limit when using HttpClient to send requests to loopback addresses. More info: https://github.com/Microsoft/dotnet/blob/master/releases/net471/KnownIssues/534719-Networking%20ServicePoint.ConnectionLimit%20default%20behavior%20with%20loopback%20changed%20unexpectedly.md. [534719, System.dll, Bug] + +## SQL +* While receiving XEvents using SqlClient, the last XEvent was not retrieved unless the server pushed more data down to the client. This bug is fixed. All XEvents will not be instantly available. [104572, System.Data.dll, Bug] +* Fixed the DataSet memory leak issue in System.data.dll. Datatable constraint’s Dataset field will be equal to Datatable’s Dataset field once Datatable’s DataSet is modified. [404667, System.Data.dll, Bug] +* SQL Azure can now support failover-partner when connecting to GeoDr database using readonly application intent, failover partner is one secondary DB replica specified by SQLAzure during the login time. [479724, System.Data.dll, Feature] +* Added support for Always Encrypted leveraging enclave technologies. [481138, 524384, System.Data.dll, Feature] +* With this fix, SqlBulkCopy can be performed without the issue caused when SqlDecimal 0 is inserted to a table column which type has the same precision size as its scales size. It prevents the SqlBulkCopy error caused when a SqlDecimal value having larger precision than its minimum precision is inserted to a table column, which the SqlDecimal value can be adjusted to fit the column type. [481988, System.Data.dll, Bug] +* Added a new value for the SQL connection string keyword. [484823, System.Data.dll, Feature] +* This prevents potential Connection Pool fragmentation and increases the performance of connection opening. [489852, System.Data.dll, Bug] +* This prevents connection hang that happens when users try to connect to mirrored SQL Server with timeout set to 0. [498136, System.Data.dll, Bug] +* This change adds a try-finally wrapper around AbortTransaction() calls in SqlBulkCopy. WriteRowSourceToServerAsync(). The finally block ensures a lock is properly released in case AbortTransaction throws an exception due to a closed underlying connection. Not releasing the lock can lead to hangs later on in SqlConnection.Dispose() and Close(). [499706, System.Data.dll, Bug] +* Fixed failure to get return value from stored procedure in SQL Server when the return value type is VARCHAR(8000) and output string has length longer than 3,999. [504075, System.Data.dll, Bug] +* Fixed error connecting to read only secondary via routing table when connecting using the AOAG listener and specifying Column Encryption Setting=Enabled and ApplicaationIntent=Readonly. [510851, System.Data.dll, Bug] +* Integrating Azure AD Universal and Multi-factor authentication (MFA) support with SQL .NET driver. [521874, System.Data.dll, Feature] +* Signature verification results are now cached improving query execution times for enclave-based queries. [552762, System.Data.dll, Feature] + +## WCF +* Fixed service response problems owing to deadlock in SharedTcpTransportManager.OnClose and OnReceiveComplete. [455781, System.ServiceModel.dll, Bug] +* Improved performance in a scenario where an application is using BinaryFormater to serialize/deserialize large number of objects. This fix needs to be opted-into by configuration setting. [443438, 497686, System.Runtime.Serialization.dll, Bug] +* Improved accessibility for the WCF Service Trace Viewer by updating the focus order of UI components to be more logical [465130, SvcTraceViewer.exe, Bug] +* Improved accessibility for the WCF Service Trace Viewer and the WCF Service Configuration Editor to follow high contrast standards.[505605, SvcConfigEditor.exe, SvcTraceViewer.exe, Bug] +* A race-condition exists in the Abort code-path of SyncDuplexRequest. When the race-condition occurs, we try to set a ManualResetEvent that has already been closed, which results in an ObjectDisposedException. This happens in one of the threadPool threads and as a result an exception is thrown. When this happens, the exception crashes the service. [513726, System.Servicemodel.dll, Bug] +* Improved chain trust certificate validation when using certificate authentication with transport security with WCF. With this improvement client certificates that are used to authenticate to a server must be configured for Client Authentication. Similarly server certificates that are for the authenticating a server must be configured for Server Authentication. With this change if the root certificate is disabled, the certificate chain validation will fail. [516393, System.Servicemodel.dll, Bug] +* Fixed an issue with serializing deeply linked data when using DataContractSerializer. [527549, System.Runtime.Serialization.dll, Bug] + +## Windows Forms +* PrivateFontCollection class now releases lock on GDI Fonts that are added to the collection as files [126279, System.Drawing.dll, Bug] +* Fixed a NullReferenceException that would occur when DataGridView.Dispose is called on some systems. [295566, System.Windows.Forms.dll, Bug] +* Fixed problems with DomainUpDown "up" and "down" unsymmetrical operations. [362787, System.Windows.Forms.dll, Bug] +* The arrow of "Type name display style" dropdown button of Document outline window is now painted correctly when it is selected, and HC mode is enabled. This change is effective in applications that were recompiled to target .Net Framework 4.7.2 [386393, System.Windows.Forms.dll, Bug] +* MageUI.exe SDK tool now has localized update units combobox items. [397545, MageUI.exe, Bug] +* Validation warning dialog in MageUI.exe SDK tool is now localized. [397576, MageUI.exe, Bug] +* Made Culture combobox of Mage UI App/Deployment Manifest Name dialog wider to fit all the text it's items contain [397578, System.Windows.Forms.dll, Bug] +* Fixed a problem where the child control collection ordering of tab pages could get out of sync with the physical ordering of tabs in a tab control. [411856, System.Windows.Forms.dll, Bug] +* The following changes are effective in applications that are either recompiled to target .NET Framework 4.7.2, or the following switches are added to the app.config file: + ```xml + + ``` + * Improved accessibility for the PropertyGrid, DataGridView, CheckBox, RadioButton and ToolStrip controls. +[409783, 458754, 459106, 484522, 497774, 500509, 503194, 508364, 513314, System.Windows.Forms.dll, Bug] + * Narrator now reads out the ToolStripMenuItem accelerator key. [404279, System.Windows.Forms.dll, Bug] + * Fixed standard button focus dot line colors in High Contrast mode. [429823, System.Windows.Forms.dll, Bug] + * Improved accessibility of the DataGridView control by implementing both Grid and Table UIA patterns. [435320, System.Windows.Forms.dll, Bug] + * The DataGridView control now supports F3 command to update the sort order in the table. [435621, System.Windows.Forms.dll, Bug] + * Improved keyboard accessibility of ToolStrips hosted in ToolStripContainers. For a Windows Forms application to get all accessibility improvements that were introduced in .NET Framework 4.7.2, the application should be recompiled to target .NET framework 4.7.2 or the application should explicitly opt-in into all accessibility app compat switches in the app.config file. [441148, 518461, System.Windows.Forms.dll, Bug] + * Improved rendering of disabled, FlatStyle=Standard (the default) WinForms RadioButton, CheckBox and GroupBox controls in High Contrast themes. These changes will be effective only on the latest version of Windows 10 (Fall Creator's update), as the corresponding changes in the Windows code are required and in applications that target .Net Framework 4.7.2. [455890, System.Windows.Forms.dll, Bug] + * ContextMenuStrip.SourceControl property now correctly returns the expected control source in nested ToolStripMenuItem cases. [460662, System.Windows.Forms.dll, Bug] + * Fixed text color in pressed and selected modes for toolStripButton, toolStripSplitButton and toolStripDropDownButton in HC Modes. + * Improved high contrast experience for DataGridView link cells. This change is effective in applications that were recompiled to target .Net Framework 4.7.2 [475501, System.Windows.Forms.dll, Bug] + * ToolStrip.State will now return AccessibleStates.Unavailable | AccessibleStates.Focused for disabled menu items whereas before it would only return AccessibleStates.Focused. This change enables Narrator to correctly announce the disabled menu items as being disabled. [483700, System.Windows.Forms.dll, Bug] + * Fixed arrow color in focused mode for toolStripComboBox in HC Mode. [473866, System.Windows.Forms.dll, Bug] +* Fixed a problem introduced in .NET Framework 4.7 in a scenario when a developer uses Configure.Save() method and add an empty section that may not be read while loading project, causing failure in Project load. [461647, System.Windows.Forms.dll, Bug] +* Updated Open, Save, Undo and Redo icons for WinRes.exe in .NET Framework SDK. [464542, WinRes.exe, Bug] +* MageUI.exe SDK tool now has localized update units combobox items. [468602, MageUI.exe, Bug] +* Support for PerMovitorV2 DPI awareness in Flat and PopUp ComboBox controls. [473703, System.Windows.Forms.dll, Bug] +* MageUI manifest validation prompt header is now fully visible. [475210, MageUI.exe, Bug] +* It is possible to switch from designer to property browser of WinRes.exe with F4 key now. It is also possible to switch back using Esc key now. [477857, System.Windows.Forms.dll, Bug] +* Fixed incorrect "..." button text truncation for Mage UI Sign on Save dialog when CHS locale is enabled. [484526, System.Windows.Forms.dll, Bug] +* Resized "Select Culture" dialog of WinRes to make sure that all the text it contains fits the dialog correctly. [488099, WinRes.exe, Bug] +* Implemented Ctrl+Alt+O shortcut to access Output window of WinRes via the keyboard. [513054, System.Windows.Forms.dll, Bug] +* Fixed the narrator focus order for the ClickOnce download progress window. [530637, System.Windows.Forms.dll, Bug] + +## Workflow +* In a self-hosted environment when program initialization tasks are executed in parallel and there are common assembly loads happening in each thread, a deadlock could occur. [251926, system.activities.dll, Bug] +* Previously it was possible to encounter a stack overflow in the workflow service hosting process (W3WP.exe) when IWorkflowInstanceManagement.TransactedCancel or IWorkflowInstanceManagement.TransactedTermnate operations were performed. This can be avoided by adding an AppSetting to the Web.Config for the service: + ```xml + + + + ``` + The outcome of the transaction does not affect whether the cancel or terminate operation is performed. There is no ""undo"" of a cancel or terminate if the transaction is rolled back. [258978, System.Servicemodel.dll, Bug] +* Improved WorkflowDesignerColors class. [479504, system.activities.dll, Feature] +* Improved accessibility for buttons on workflow designer under HC theme. This change is effective in applications that were recompiled to target .Net Framework 4.7.2 [407093, system.activities.dll, Bug] +* Improved accessibility for workflow activities by removing irrelevant information associated with them. This change is effective in applications that were recompiled to target .NET Framework 4.7.2. [408329, system.activities.dll, Bug] +* Improved accessibility in Workflow designer. Specifically, there are fixes in high contrast mode, focus of different controls and dialogs and name properties. [447654, System.Activities.Presentation.dll, Bug] +* Previously, when using TransactionScopeAsyncFlowOption.Enabled and there you had a non-null Transaction.Current and you did a remote AppDomain call and the lease lifetime expired while that remote AppDomain call was outstanding, Transaction.Current could be null upon return from that call. This is now fixed so that Transaction.Current will be the same after the remote AppDomain call as before the call. [516454, system.transactions.dll, Bug] + +## WPF +* Fixed a crash arising when opening a popup within an item in an ItemsControls with VirtualizationMode=Recycling. [161345, PresentationFramework.dll, Bug] +* In Win8+ themes, a disabled Button sets foreground to gray on its ContentPresenter. This inherits to descendants of the ContentPresenter, but not to elements whose logical parent is the Button itself - like the TextBlock. So the Button and its logical child TextBlock kept the default black foreground. This fix removes the setting of foreground on ContentPresenter and sets the foreground on the button to gray, which then extends to its descendants. [204105, PresentationFramework.dll, Bug] +* When an element joins the visual tree, a property can receive an inherited value even when a higher-priority value becomes available at the same time, via a newly-resolvable DynamicResource reference. This can arise when scrolling a list where VirtualizationMode=Recycling. [208745, PresentationFramework.dll, Bug] +* Fixed a memory leak arising from certain bindings that involve DataSet or related classes (from System.Data.dll). [297912, PresentationFramework.dll, Bug] +* Fixed data corruption arising when a scrolling DataGrid with VirtualizationMode=Recycling. [405066, PresentationFramework.dll, Bug] +* In WPF applications running under certain themes, selected text in TextBox and PasswordBox may not be visible. This is due to the selection being rendered on top of the text in the Adorner layer. This feature adds an AppContext switch (Switch.System.Windows.Controls.Text.UseAdornerForTextboxSelectionRendering) that, when set to false, will cause WPF to render the selection underneath the text, allowing for good visibility in TextBox and PasswordBox. Note that this does not apply to RichTextBox. [405199, PresentationFramework.dll, Bug] +* The following changes are effective in applications that are either recompiled to target .NET Framework 4.7.2, or the following switches are added to the app.config file: + ```xml + + ``` + * Applications with multiple hosting layers between WPF and WinForms may experience incorrect focus navigation when pressing the Tab Key. This is now fixed. [445603, PresentationCore.dll, Bug] + * Fixed a problem where the keyboard focus visual of Checkbox and RadioButton may be difficult to see in WPF applications running under classic themes or in high contrast scenarios. [447590, PresentationFramework.dll, Bug] +* In a master/detail scenario using ADO data, changing the primary key of a master item cleared the display of the corresponding details, with no way to display them thereafter. This is fixed by default for apps targeting .NET Framework 4.7.2, and for all apps that set the app-context switch ```Switch.System.Windows.Data.DoNotUseFollowParentWhenBindingToADODataRelation``` to false. [457740, PresentationFramework.dll, Bug] +* Users may not be able to tab out of a WPF ElementHost contained in a Winforms app when hitting SHIFT + TAB, this issue is fixed now. [458074, WindowsFormsIntegration.dll, Bug] +* Fixed scrolling issues arising in a TreeView that uses VisualStateManager to animate visibility when expanding or collapsing nodes. [460617, PresentationFramework.dll, Bug] +* Improved Keytip behavior to bring parity with behavior on Word and Explorer. Now Keytips would not dismiss a menu launched by mouse. [476533, PresentationFramework.dll, Bug] +* Under certain conditions, a WPF application running on a touch or stylus-enabled machine could possibly see hangs or crashes associated with touch or stylus input. This would manifest as time spent searching a dictionary on one of the Stylus Input threads. This change fixes this issue. [485595, PresentationCore.dll, Bug] +* Added a new method to the System.Windows.Diagnostics.ResourceDictionaryDiagnostics class that returns the ResourceDictionaries created for a given source Uri. This method is for use by diagnostic assistants such as Visual Studio's "UI Debug Tools". [494203, PresentationFramework.dll, Feature] +* Added new methods to the System.Windows.Diagnostics.ResourceDictionaryDiagnostics class that return the owners of a given ResourceDictionary. These methods are for use by diagnostic assistants such as Visual Studio's "UI Debug Tools". [494205, PresentationFramework.dll, Feature] +* Added a new event to the System.Windows.Diagnostics.ResourceDictionaryDiagnostics class that reports when StaticResource references are resolved. This event is for use by diagnostic assistants such as Visual Studio's "UI Debug Tools". [494207, PresentationFramework.dll, Feature] +* Fixed rendering issues in Windows Presentation Foundation (WPF) applications that are run within a Windows service that may occur with the September 12, 2017, .NET Security and Quality Rollups that apply to the .NET Framework 4.6, 4.6.1, 4.6.2, and 4.7. [494626, PresentationCore.dll, Bug] +* Reliability improvements for WPF applications running on touch or stylus-enabled machines with long periods of touch inactivity. [514949, PenIMC.dll, Bug] +* In a specific case(s), the System.Windows.Controls.PrintDialog() throws an Arithmetic Overflow exception. This change fixes that issue. [514977, PresentationFramework.dll, Bug] +* A WPF TreeView with virtualization and pixel-scrolling enabled can experience a StackOverflowException due to infinite recursion when (a) all the TreeViewItems have the same height, and (b) the user scrolls to a position just before an item boundary - within a millionth of a pixel. [519728, PresentationFramework.dll, Bug] +* Some dual GPU machines may experience visual artifacts while running WPF apps in high contrast, this issue is now fixed. [525011, PresentationCore.dll, Bug] +* Fixed the issue described in https://github.com/NuGet/Home/issues/5894 [530595, PresentationBuildTasks.dll, Microsoft.WinFX.targets, Bug] +* Applications loading two versions of the same resource assembly may get XamlParseExceptions for resources not found, even when the resource exists in the assembly. This issue is fixed for applications that set the AppContext flag ```Switch.System.Windows.Baml2006.AppendLocalAssemblyVersionForSourceUri``` to false. [546550, PresentationCore.dll; PresentationFramework.dll, Bug] +* Fixed a crash that can occur during shutdown of an application that hosts WPF content in a separate AppDomain. An example of this is an Office application hosting a VSTO add-in that uses WPF. [581148, PresentationCore.dll, Bug] +* Fixed a problem where a WPF application that changes TreeView.IsEnabled and (at the same time) changes the underlying collection(s) could experience a spurious ElementNotAvailableException. [581149, PresentationCore.dll, PresentationFramework.dll, Bug] +* Fixed a problem where a WPF application can crash with NullReferenceException when changing a property used by a DataTrigger whose host element has been removed from the visual tree. This crash only occurs if the host element is garbage-collected during a small window of time during the property-change notification. [581151, PresentationCore.dll, Bug] +* Fixed a problem that causes XAML Browser Applications (XBAP’s) targeting .NET 3.5 to sometimes be loaded using .NET 4.x runtime incorrectly. This fix requires the setting of an opt-in registry key described at https://github.com/Microsoft/dotnet/blob/net472/releases/net472/KnownIssues/560016-XBAP%20Applications%20targeting%20.NET%202.0%2C3.5%20select%20wrong%20runtime%20version.md [581487, PresentationHost_v0400.dll, Bug] diff --git a/releases/net472/dotnet472-known-issues.md b/releases/net472/dotnet472-known-issues.md index 7b0df530b..8ceca7be3 100644 --- a/releases/net472/dotnet472-known-issues.md +++ b/releases/net472/dotnet472-known-issues.md @@ -3,7 +3,7 @@ This document lists the known issues that you may experience after you install the Microsoft .NET Framework 4.7.2. -## Product issues for the .NET Framework 4.7.1 -- [405199 - WPF - 405199 - Non-Adorner TextSelection Occludes Text](https://github.com/Microsoft/dotnet/blob/master/releases/net471/KnownIssues/405199%20-%20WPF%20-%20Non-Adorner%20TextSelection%20Occludes%20Text.md) -- [504055 - WPF - WPF May Not Show Touch Keyboard In All Scenarios on RS4](https://github.com/Microsoft/dotnet/blob/master/releases/net471/KnownIssues/504055%20-%20WPF%20-%20WPF%20May%20Not%20Show%20Touch%20Keyboard%20In%20All%20Scenarios%20on%20RS4.md) -- [560016 -XBAP - Applications targeting .NET 2.0,3.5 select wrong runtime version](https://github.com/Microsoft/dotnet/blob/master/releases/net471/KnownIssues/560016%20-XBAP%20-%20Applications%20targeting%20.NET%202.0,3.5%20select%20wrong%20runtime%20version.md) +## Product issues for the .NET Framework 4.7.2 +- [405199 - WPF - 405199 - Non-Adorner TextSelection Occludes Text](https://github.com/Microsoft/dotnet/blob/master/releases/net472/KnownIssues/405199%20-%20WPF%20Non-Adorner%20TextSelection%20Occludes%20Text.md) +- [504055 - WPF - WPF May Not Show Touch Keyboard In All Scenarios on RS4](https://github.com/Microsoft/dotnet/blob/master/releases/net472/KnownIssues/504055%20-%20WPF%20May%20Not%20Show%20Touch%20Keyboard%20In%20All%20Scenarios%20on%20Windows%2010%20Spring%20Creators%20Update.md) +- [560016 - XBAP - Applications targeting .NET 2.0,3.5 select wrong runtime version](https://github.com/Microsoft/dotnet/blob/master/releases/net472/KnownIssues/560016-XBAP%20Applications%20targeting%20.NET%202.0%2C3.5%20select%20wrong%20runtime%20version.md) From d55a3befeac3bbae0af3fbde22e310de16bfa970 Mon Sep 17 00:00:00 2001 From: Preeti Krishna Date: Mon, 30 Apr 2018 13:31:09 -0700 Subject: [PATCH 619/872] Update dotnet472-known-issues.md --- releases/net472/dotnet472-known-issues.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/releases/net472/dotnet472-known-issues.md b/releases/net472/dotnet472-known-issues.md index 8ceca7be3..18867772a 100644 --- a/releases/net472/dotnet472-known-issues.md +++ b/releases/net472/dotnet472-known-issues.md @@ -5,5 +5,5 @@ This document lists the known issues that you may experience after you install t ## Product issues for the .NET Framework 4.7.2 - [405199 - WPF - 405199 - Non-Adorner TextSelection Occludes Text](https://github.com/Microsoft/dotnet/blob/master/releases/net472/KnownIssues/405199%20-%20WPF%20Non-Adorner%20TextSelection%20Occludes%20Text.md) -- [504055 - WPF - WPF May Not Show Touch Keyboard In All Scenarios on RS4](https://github.com/Microsoft/dotnet/blob/master/releases/net472/KnownIssues/504055%20-%20WPF%20May%20Not%20Show%20Touch%20Keyboard%20In%20All%20Scenarios%20on%20Windows%2010%20Spring%20Creators%20Update.md) +- [504055 - WPF - WPF May Not Show Touch Keyboard In All Scenarios on Windows 10 Spring Creators Update](https://github.com/Microsoft/dotnet/blob/master/releases/net472/KnownIssues/504055%20-%20WPF%20May%20Not%20Show%20Touch%20Keyboard%20In%20All%20Scenarios%20on%20Windows%2010%20Spring%20Creators%20Update.md) - [560016 - XBAP - Applications targeting .NET 2.0,3.5 select wrong runtime version](https://github.com/Microsoft/dotnet/blob/master/releases/net472/KnownIssues/560016-XBAP%20Applications%20targeting%20.NET%202.0%2C3.5%20select%20wrong%20runtime%20version.md) From e396417d2e5c4db3cb8d22916fe5a23860881294 Mon Sep 17 00:00:00 2001 From: Preeti Krishna Date: Mon, 30 Apr 2018 13:32:22 -0700 Subject: [PATCH 620/872] Update README.md --- releases/net472/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/releases/net472/README.md b/releases/net472/README.md index aefb8754e..d8938d113 100644 --- a/releases/net472/README.md +++ b/releases/net472/README.md @@ -14,7 +14,7 @@ You can learn about the changes made in the .NET Framework 4.7.2. - [ASP.NET](dotnet472-changes.md#aspnet) - [BCL](dotnet472-changes.md#bcl) - [CLR](dotnet472-changes.md#clr) -- [ClickOnce](dotnet472-changes.md#ClickOnce) +- [ClickOnce](dotnet472-changes.md#clickonce) - [Networking](dotnet472-changes.md#networking) - [SQL](dotnet472-changes.md#sql) - [WCF](dotnet472-changes.md#wcf) From 58e7ea6f3af8b84174b5793999f81167ba30c947 Mon Sep 17 00:00:00 2001 From: Preeti Krishna Date: Mon, 30 Apr 2018 14:55:23 -0700 Subject: [PATCH 621/872] Update dotnet472-known-issues.md --- releases/net472/dotnet472-known-issues.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/releases/net472/dotnet472-known-issues.md b/releases/net472/dotnet472-known-issues.md index 18867772a..d99aba2c8 100644 --- a/releases/net472/dotnet472-known-issues.md +++ b/releases/net472/dotnet472-known-issues.md @@ -5,5 +5,5 @@ This document lists the known issues that you may experience after you install t ## Product issues for the .NET Framework 4.7.2 - [405199 - WPF - 405199 - Non-Adorner TextSelection Occludes Text](https://github.com/Microsoft/dotnet/blob/master/releases/net472/KnownIssues/405199%20-%20WPF%20Non-Adorner%20TextSelection%20Occludes%20Text.md) -- [504055 - WPF - WPF May Not Show Touch Keyboard In All Scenarios on Windows 10 Spring Creators Update](https://github.com/Microsoft/dotnet/blob/master/releases/net472/KnownIssues/504055%20-%20WPF%20May%20Not%20Show%20Touch%20Keyboard%20In%20All%20Scenarios%20on%20Windows%2010%20Spring%20Creators%20Update.md) +- [504055 - WPF - WPF May Not Show Touch Keyboard In All Scenarios on Windows 10 April 2018 Update](https://github.com/Microsoft/dotnet/blob/master/releases/net472/KnownIssues/504055%20-%20WPF%20May%20Not%20Show%20Touch%20Keyboard%20In%20All%20Scenarios%20on%20Windows%2010%20Spring%20Creators%20Update.md) - [560016 - XBAP - Applications targeting .NET 2.0,3.5 select wrong runtime version](https://github.com/Microsoft/dotnet/blob/master/releases/net472/KnownIssues/560016-XBAP%20Applications%20targeting%20.NET%202.0%2C3.5%20select%20wrong%20runtime%20version.md) From edba503a0574e6dc54f3d08246fec8509e2f0bb5 Mon Sep 17 00:00:00 2001 From: Preeti Krishna Date: Mon, 30 Apr 2018 14:57:09 -0700 Subject: [PATCH 622/872] Update and rename file --- ...d In All Scenarios on Windows 10 April 2018 Update.md} | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) rename releases/net472/KnownIssues/{504055 - WPF May Not Show Touch Keyboard In All Scenarios on Windows 10 Spring Creators Update.md => 504055 - WPF May Not Show Touch Keyboard In All Scenarios on Windows 10 April 2018 Update.md} (61%) diff --git a/releases/net472/KnownIssues/504055 - WPF May Not Show Touch Keyboard In All Scenarios on Windows 10 Spring Creators Update.md b/releases/net472/KnownIssues/504055 - WPF May Not Show Touch Keyboard In All Scenarios on Windows 10 April 2018 Update.md similarity index 61% rename from releases/net472/KnownIssues/504055 - WPF May Not Show Touch Keyboard In All Scenarios on Windows 10 Spring Creators Update.md rename to releases/net472/KnownIssues/504055 - WPF May Not Show Touch Keyboard In All Scenarios on Windows 10 April 2018 Update.md index e92bf5fe5..eb7876699 100644 --- a/releases/net472/KnownIssues/504055 - WPF May Not Show Touch Keyboard In All Scenarios on Windows 10 Spring Creators Update.md +++ b/releases/net472/KnownIssues/504055 - WPF May Not Show Touch Keyboard In All Scenarios on Windows 10 April 2018 Update.md @@ -1,7 +1,7 @@ -# WPF May Not Show Touch Keyboard In All Scenarios on Windows 10 Spring Creators Update +# WPF May Not Show Touch Keyboard In All Scenarios on Windows 10 April 2018 Update ## Symptoms -In the .NET Framework 4.7.2 running on Windows 10 Spring Creators Update, WPF applications may not immediately show the touch keyboard in some specific scenarios. Generally, these involve variations of the following. +In the .NET Framework 4.7.2 running on Windows 10 April 2018 Update, WPF applications may not immediately show the touch keyboard in some specific scenarios. Generally, these involve variations of the following. 1. Tap a text box and note the touch keyboard shows. 2. Tap another text box. @@ -9,10 +9,10 @@ In the .NET Framework 4.7.2 running on Windows 10 Spring Creators Update, WPF ap 4. Tap the text box from step 1 and note the touch keyboard does not show. ## Cause -A WPF change in .NET Framework 4.7.2 is preventing WPF from requesting the touch keyboard show. Due to this, the touch keyboard tracking algorithm in Windows 10 Spring Creators Update does not show the +A WPF change in .NET Framework 4.7.2 is preventing WPF from requesting the touch keyboard show. Due to this, the touch keyboard tracking algorithm in Windows 10 April 2018 Update does not show the keyboard in all scenarios. ## Resolution -This will be fixed in an upcoming update for Windows 10 Spring Creators Update. +This will be fixed in an upcoming update for Windows 10 April 2018 Update. In the meantime, users can tap another text box within the application or they can explicitly tap the touch keyboard button on the start bar to ensure the keyboard shows. From c135058c92a005a1cf974de6c0a218736f33413a Mon Sep 17 00:00:00 2001 From: Preeti Krishna Date: Mon, 30 Apr 2018 14:58:57 -0700 Subject: [PATCH 623/872] Update dotnet472-known-issues.md --- releases/net472/dotnet472-known-issues.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/releases/net472/dotnet472-known-issues.md b/releases/net472/dotnet472-known-issues.md index d99aba2c8..bbaa50be2 100644 --- a/releases/net472/dotnet472-known-issues.md +++ b/releases/net472/dotnet472-known-issues.md @@ -5,5 +5,5 @@ This document lists the known issues that you may experience after you install t ## Product issues for the .NET Framework 4.7.2 - [405199 - WPF - 405199 - Non-Adorner TextSelection Occludes Text](https://github.com/Microsoft/dotnet/blob/master/releases/net472/KnownIssues/405199%20-%20WPF%20Non-Adorner%20TextSelection%20Occludes%20Text.md) -- [504055 - WPF - WPF May Not Show Touch Keyboard In All Scenarios on Windows 10 April 2018 Update](https://github.com/Microsoft/dotnet/blob/master/releases/net472/KnownIssues/504055%20-%20WPF%20May%20Not%20Show%20Touch%20Keyboard%20In%20All%20Scenarios%20on%20Windows%2010%20Spring%20Creators%20Update.md) +- [504055 - WPF - WPF May Not Show Touch Keyboard In All Scenarios on Windows 10 April 2018 Update](https://github.com/Microsoft/dotnet/blob/master/releases/net472/KnownIssues/504055%20-%20WPF%20May%20Not%20Show%20Touch%20Keyboard%20In%20All%20Scenarios%20on%20Windows%2010%20April%202018%20Update.md) - [560016 - XBAP - Applications targeting .NET 2.0,3.5 select wrong runtime version](https://github.com/Microsoft/dotnet/blob/master/releases/net472/KnownIssues/560016-XBAP%20Applications%20targeting%20.NET%202.0%2C3.5%20select%20wrong%20runtime%20version.md) From 961975de7ee9cb1fe5cb0d41bfe849ad4747da14 Mon Sep 17 00:00:00 2001 From: Simon Cropp Date: Wed, 2 May 2018 02:51:19 +1000 Subject: [PATCH 624/872] Update dotnet472-changes.md (#729) --- releases/net472/dotnet472-changes.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/releases/net472/dotnet472-changes.md b/releases/net472/dotnet472-changes.md index 381239c08..6fe3b966a 100644 --- a/releases/net472/dotnet472-changes.md +++ b/releases/net472/dotnet472-changes.md @@ -122,7 +122,7 @@ * This prevents connection hang that happens when users try to connect to mirrored SQL Server with timeout set to 0. [498136, System.Data.dll, Bug] * This change adds a try-finally wrapper around AbortTransaction() calls in SqlBulkCopy. WriteRowSourceToServerAsync(). The finally block ensures a lock is properly released in case AbortTransaction throws an exception due to a closed underlying connection. Not releasing the lock can lead to hangs later on in SqlConnection.Dispose() and Close(). [499706, System.Data.dll, Bug] * Fixed failure to get return value from stored procedure in SQL Server when the return value type is VARCHAR(8000) and output string has length longer than 3,999. [504075, System.Data.dll, Bug] -* Fixed error connecting to read only secondary via routing table when connecting using the AOAG listener and specifying Column Encryption Setting=Enabled and ApplicaationIntent=Readonly. [510851, System.Data.dll, Bug] +* Fixed error connecting to read only secondary via routing table when connecting using the AOAG listener and specifying Column Encryption Setting=Enabled and ApplicationIntent=Readonly. [510851, System.Data.dll, Bug] * Integrating Azure AD Universal and Multi-factor authentication (MFA) support with SQL .NET driver. [521874, System.Data.dll, Feature] * Signature verification results are now cached improving query execution times for enclave-based queries. [552762, System.Data.dll, Feature] From c5d9bddc00830d49702b6b633fd236f7a7c6345a Mon Sep 17 00:00:00 2001 From: Ron Petrusha Date: Tue, 1 May 2018 10:16:13 -0700 Subject: [PATCH 625/872] Fixed formatting broken on docs.microsoft.com (#731) --- .../change-in-path-separator-character-in-zip-files.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Documentation/compatibility/change-in-path-separator-character-in-zip-files.md b/Documentation/compatibility/change-in-path-separator-character-in-zip-files.md index b6b02312a..94ea4d059 100644 --- a/Documentation/compatibility/change-in-path-separator-character-in-zip-files.md +++ b/Documentation/compatibility/change-in-path-separator-character-in-zip-files.md @@ -10,7 +10,7 @@ Edge Planned ### Change Description -For apps that target the .NET Framework 4.6.1 and later versions, the path separator character has changed from a backslash ("\") to a forward slash ("/") in the property of objects created by overloads of the method. The change brings the .NET implementation into conformity with section 4.4.17.1 of the [.ZIP File Format Specification](https://pkware.cachefly.net/webdocs/casestudies/APPNOTE.TXT) and allows .ZIP archives to be decompressed on non-Windows systems.
+For apps that target the .NET Framework 4.6.1 and later versions, the path separator character has changed from a backslash ("\\") to a forward slash ("/") in the property of objects created by overloads of the method. The change brings the .NET implementation into conformity with section 4.4.17.1 of the [.ZIP File Format Specification](https://pkware.cachefly.net/webdocs/casestudies/APPNOTE.TXT) and allows .ZIP archives to be decompressed on non-Windows systems.
Decompressing a zip file created by an app that targets a previous version of the .NET Framework on non-Windows operating systems such as the Macintosh fails to preserve the directory structure. For example, on the Macintosh, it creates a set of files whose filename concatenates the directory path, along with any backslash ("\") characters, and the filename. As a result, the directory structure of decompressed files is not preserved. @@ -20,7 +20,7 @@ Decompressing a zip file created by an app that targets a previous version of th ### Recommended Action -The impact of this change on .ZIP files that are decompressed on the Windows operating system by APIs in the .NET Framework namespace should be minimal, since these APIs can seamlessly handle either a slash ("`/`") or a backslash ("`\`") as the path separator character.
+The impact of this change on .ZIP files that are decompressed on the Windows operating system by APIs in the .NET Framework namespace should be minimal, since these APIs can seamlessly handle either a forward slash ("/") or a backslash ("\\") as the path separator character.
If this change is undesirable, you can opt out of it by adding a configuration setting to the [``](~/docs/framework/configure-apps/file-schema/runtime/runtime-element.md) section of your application configuration file. The following example shows both the `` section and the `Switch.System.IO.Compression.ZipFile.UseBackslash` opt-out switch: From b54e689b46068c950bec6daea18fd7fcb5d24be7 Mon Sep 17 00:00:00 2001 From: Charles Salmon Date: Thu, 3 May 2018 09:56:43 +1200 Subject: [PATCH 626/872] Rename file to ensure that generated link is not broken. (#735) * Generated compatibility readme contained broken link. * This was due to inclusion of spaces in a filename. --- Documentation/compatibility/README.md | 2 +- ...r improved in WPF.md => keytips-behavior-improved-in-wpf.md} | 0 2 files changed, 1 insertion(+), 1 deletion(-) rename Documentation/compatibility/{Keytips behavior improved in WPF.md => keytips-behavior-improved-in-wpf.md} (100%) diff --git a/Documentation/compatibility/README.md b/Documentation/compatibility/README.md index 4a1a75429..c9b08c46b 100644 --- a/Documentation/compatibility/README.md +++ b/Documentation/compatibility/README.md @@ -26,7 +26,7 @@ Please help us improve the [.NET Framework Application Compatibility documents]( - [Ensure System.Uri uses a consistent reserved character set](uri-reserved-characters-consistent.md) - [Improved WCF chain trust certificate validation for Net.Tcp certificate authentication](WCF-Improved-WCF-chain-trust-certificate-validation-for-Net.Tcp-certificate-authentication.md) - [Keyboard focus now moves correctly across multiple layers of WinForms/WPF hosting ](wpf-KB-focus-now-moves-correctly-across-hosting-scenarios.md) -- [Keytips behavior improved in WPF](Keytips behavior improved in WPF.md) +- [Keytips behavior improved in WPF](keytips-behavior-improved-in-wpf.md) - [PrivateFontCollection.AddFontFile method releases Font resources](winforms-PrivateFontCollection-Font-handle-leak-fix.md) - [Stack traces obtained when using portable PDBs now include source file and line information if requested](Stack-traces-obtained-when-using-portable-PDBs-now-include-source-file-and-line-information-if-requested.md) - [Support special relative URI notation when Unicode is present](uri-unicode-scheme-only-relative.md) diff --git a/Documentation/compatibility/Keytips behavior improved in WPF.md b/Documentation/compatibility/keytips-behavior-improved-in-wpf.md similarity index 100% rename from Documentation/compatibility/Keytips behavior improved in WPF.md rename to Documentation/compatibility/keytips-behavior-improved-in-wpf.md From 32316d84ec2075ca1a948e392febe9db786b48a0 Mon Sep 17 00:00:00 2001 From: Ron Petrusha Date: Wed, 2 May 2018 14:57:09 -0700 Subject: [PATCH 627/872] Revised code to handle categories file (#725) --- src/bc-readme-gen/Program.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/bc-readme-gen/Program.cs b/src/bc-readme-gen/Program.cs index dd80032fa..1273e48c9 100755 --- a/src/bc-readme-gen/Program.cs +++ b/src/bc-readme-gen/Program.cs @@ -27,7 +27,7 @@ static void Main(string[] args) foreach(var changeFile in bcdir.GetFiles("*.md")) { - if (changeFile.Name == "! Template.md" || changeFile.Name == "README.md") + if (changeFile.Name == "! Template.md" || changeFile.Name == "README.md" || changeFile.Name == "!categories.md") { continue; } From f1198b72dde7b549d76225c8404a33888d94ce18 Mon Sep 17 00:00:00 2001 From: Holly Muenchow Date: Tue, 8 May 2018 10:15:49 -0700 Subject: [PATCH 628/872] 2.1 and 2.2 release notes Added .NET UWP 2.1 and 2.2 release notes --- releases/UWP/net-native2.1/README.md | 16 ++++++++++++++++ releases/UWP/net-native2.2/README.md | 9 +++++++++ 2 files changed, 25 insertions(+) create mode 100644 releases/UWP/net-native2.1/README.md create mode 100644 releases/UWP/net-native2.2/README.md diff --git a/releases/UWP/net-native2.1/README.md b/releases/UWP/net-native2.1/README.md new file mode 100644 index 000000000..10bed8d14 --- /dev/null +++ b/releases/UWP/net-native2.1/README.md @@ -0,0 +1,16 @@ +# .NET native tools 2.1 (UWP 6.1.x) Release Notes + +You can see what was included in each .NET Native 2.1 ([Microsoft.NETCore.UniversalWindowsPlatform 6.1.x](https://www.nuget.org/packages/Microsoft.NETCore.UniversalWindowsPlatform)) release below. + +When using Visual Studio these packages require Visual Studio 2017 Version 15.7 or later. + +### UWP 6.1.2 (.NET native tools 2.1.3) (May 7th, 2018) +- Adds support for [Optional packages with executable code](https://docs.microsoft.com/en-us/windows/uwp/packaging/optional-packages-with-executable-code) +- Fixes multiple errors caused by low memory issues when compiling .NET native apps [521825, 574099, 574102] +- Fixes Binding issues when using ReactiveUI [406415 and 406417] +- Fixes VS new project scenarios to include the correct Runtime Directives [464683] +- Fixes an issue handling unicode characters in .NET native targets [482808] +- Adds support for the Diagnostics.DisableMetadataStackTraceResolution AppContextSwitch [519008] +- Fixes crashes during compilation [525417] +- Fixes issue found when compiling complex generic types like those found in NPGSQL NuGet package [588948] +- Fixes an issue when using System.Runtime.InteropServices.SafeHandle as an argument in native to managed scenarios [601979] \ No newline at end of file diff --git a/releases/UWP/net-native2.2/README.md b/releases/UWP/net-native2.2/README.md new file mode 100644 index 000000000..1de9b34e7 --- /dev/null +++ b/releases/UWP/net-native2.2/README.md @@ -0,0 +1,9 @@ +# .NET native tools 2.2 (UWP 6.2.x) Release Notes + +You can see what was included in each .NET Native 2.2 ([Microsoft.NETCore.UniversalWindowsPlatform 6.2.x](https://www.nuget.org/packages/Microsoft.NETCore.UniversalWindowsPlatform)) release below. + +When using Visual Studio these packages require Visual Studio 2017 Version 15.7 or later. + +### UWP 6.2 Preview (May 7th, 2018) +These are preview bits in advance of the release at the end of 2018 +- Adds support for ARM64 \ No newline at end of file From 308b7f10baef7ebca6cdcbdb412d77dcda205a47 Mon Sep 17 00:00:00 2001 From: Holly Muenchow Date: Tue, 8 May 2018 14:26:20 -0700 Subject: [PATCH 629/872] Added 2.1 and 2.2 release to UWP Readme.md --- releases/UWP/README.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/releases/UWP/README.md b/releases/UWP/README.md index 43d39172a..7198d3542 100644 --- a/releases/UWP/README.md +++ b/releases/UWP/README.md @@ -6,12 +6,16 @@ You can learn about Microsoft.NETCore.UniversalWindowsPlatform [releases](#relea You can see what was included in each .NET Native (Microsoft.NETCore.UniversalWindowsPlatform) release. -- .NET Native 2.1 (UWP 6.1.x) is coming in early May 2018! Preview bits are available on [Nuget](https://www.nuget.org/packages/Microsoft.NETCore.UniversalWindowsPlatform) or [Visual Studio Update 15.7 Preview 5](https://docs.microsoft.com/en-us/visualstudio/releasenotes/vs2017-preview-relnotes#15.7_Preview5) +- [.NET Native 2.1 (UWP 6.1.x)](net-native2.1/README.md) - [.NET Native 2.0 (UWP 6.0.x)](net-native2.0/README.md) - [.NET Native 1.7 (UWP 5.4.x)](net-native1.7/README.md) - [.NET Native 1.6 (UWP 5.3.x)](net-native1.6/README.md) - [.NET Native 1.4 (UWP 5.2.x)](net-native1.4/README.md) +## Preview Notes + +- [.NET Native 2.2 (UWP 6.2.x)](net-native2.2/README.md) + ## Resources - [Getting Started with .NET Native](https://docs.microsoft.com/en-us/dotnet/framework/net-native/getting-started-with-net-native) From c23121533d13b6187892a29d36886e6bf7a1ad33 Mon Sep 17 00:00:00 2001 From: Holly Muenchow Date: Tue, 8 May 2018 14:37:29 -0700 Subject: [PATCH 630/872] Update 2.1 readme with correct versions. --- releases/UWP/net-native2.1/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/releases/UWP/net-native2.1/README.md b/releases/UWP/net-native2.1/README.md index 10bed8d14..531c7b030 100644 --- a/releases/UWP/net-native2.1/README.md +++ b/releases/UWP/net-native2.1/README.md @@ -4,7 +4,7 @@ You can see what was included in each .NET Native 2.1 ([Microsoft.NETCore.Univer When using Visual Studio these packages require Visual Studio 2017 Version 15.7 or later. -### UWP 6.1.2 (.NET native tools 2.1.3) (May 7th, 2018) +### UWP 6.1.4 (.NET native tools 2.1.8) (May 7th, 2018) - Adds support for [Optional packages with executable code](https://docs.microsoft.com/en-us/windows/uwp/packaging/optional-packages-with-executable-code) - Fixes multiple errors caused by low memory issues when compiling .NET native apps [521825, 574099, 574102] - Fixes Binding issues when using ReactiveUI [406415 and 406417] @@ -13,4 +13,4 @@ When using Visual Studio these packages require Visual Studio 2017 Version 15.7 - Adds support for the Diagnostics.DisableMetadataStackTraceResolution AppContextSwitch [519008] - Fixes crashes during compilation [525417] - Fixes issue found when compiling complex generic types like those found in NPGSQL NuGet package [588948] -- Fixes an issue when using System.Runtime.InteropServices.SafeHandle as an argument in native to managed scenarios [601979] \ No newline at end of file +- Fixes an issue when using System.Runtime.InteropServices.SafeHandle as an argument in native to managed scenarios [601979] From cbd63dd7b09f7cd2384056fec7f0c0c6f6f21196 Mon Sep 17 00:00:00 2001 From: Holly Muenchow Date: Tue, 8 May 2018 14:38:13 -0700 Subject: [PATCH 631/872] added 6.2.0 build version for clarity --- releases/UWP/net-native2.2/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/releases/UWP/net-native2.2/README.md b/releases/UWP/net-native2.2/README.md index 1de9b34e7..bb7b59a32 100644 --- a/releases/UWP/net-native2.2/README.md +++ b/releases/UWP/net-native2.2/README.md @@ -4,6 +4,6 @@ You can see what was included in each .NET Native 2.2 ([Microsoft.NETCore.Univer When using Visual Studio these packages require Visual Studio 2017 Version 15.7 or later. -### UWP 6.2 Preview (May 7th, 2018) +### UWP 6.2.0 Preview (May 7th, 2018) These are preview bits in advance of the release at the end of 2018 -- Adds support for ARM64 \ No newline at end of file +- Adds support for ARM64 From 0e79d354bb2455b463add5598702bb4108f3e31c Mon Sep 17 00:00:00 2001 From: Saurabh Singh Date: Wed, 9 May 2018 15:41:50 -0700 Subject: [PATCH 632/872] Create 611802 - SQLConnection.ConnectionString throws NullReferenceException.md Documenting known issue for .Net Framework System.Data NRE. --- ...ionString throws NullReferenceException.md | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 releases/net472/KnownIssues/611802 - SQLConnection.ConnectionString throws NullReferenceException.md diff --git a/releases/net472/KnownIssues/611802 - SQLConnection.ConnectionString throws NullReferenceException.md b/releases/net472/KnownIssues/611802 - SQLConnection.ConnectionString throws NullReferenceException.md new file mode 100644 index 000000000..e7e868f63 --- /dev/null +++ b/releases/net472/KnownIssues/611802 - SQLConnection.ConnectionString throws NullReferenceException.md @@ -0,0 +1,22 @@ +# NullReferenceException while setting `SqlConnection.ConnectionString` to an empty string or null. +## Symptoms + +When an application tries to set the `ConnectionString` property of the `SqlConnection` object a `NullReferenceException` is thrown. + +## Cause + +.NET Framework 4.7.2 includes changes for increasing the default retry count to Azure SQL DB to 2. +The code change sets the internal value of retry count without validating if the ConnectionString is a non-null or non-empty value +which results in the NullReferenceException. + +## Impact + +The applications using SqlConnection.ConnectionString API to set an empty connection string will receive an exception. + +## Workarounds + +No Known workarounds yet with .Net 4.7.2. + +## Resolution + +Product team working on code fix. From 4cfdba2c16bb9cec32cabc69946afca7fc74bd5b Mon Sep 17 00:00:00 2001 From: Saurabh Singh Date: Wed, 9 May 2018 15:42:55 -0700 Subject: [PATCH 633/872] Delete 611802 - SQLConnection.ConnectionString throws NullReferenceException.md --- ...ionString throws NullReferenceException.md | 22 ------------------- 1 file changed, 22 deletions(-) delete mode 100644 releases/net472/KnownIssues/611802 - SQLConnection.ConnectionString throws NullReferenceException.md diff --git a/releases/net472/KnownIssues/611802 - SQLConnection.ConnectionString throws NullReferenceException.md b/releases/net472/KnownIssues/611802 - SQLConnection.ConnectionString throws NullReferenceException.md deleted file mode 100644 index e7e868f63..000000000 --- a/releases/net472/KnownIssues/611802 - SQLConnection.ConnectionString throws NullReferenceException.md +++ /dev/null @@ -1,22 +0,0 @@ -# NullReferenceException while setting `SqlConnection.ConnectionString` to an empty string or null. -## Symptoms - -When an application tries to set the `ConnectionString` property of the `SqlConnection` object a `NullReferenceException` is thrown. - -## Cause - -.NET Framework 4.7.2 includes changes for increasing the default retry count to Azure SQL DB to 2. -The code change sets the internal value of retry count without validating if the ConnectionString is a non-null or non-empty value -which results in the NullReferenceException. - -## Impact - -The applications using SqlConnection.ConnectionString API to set an empty connection string will receive an exception. - -## Workarounds - -No Known workarounds yet with .Net 4.7.2. - -## Resolution - -Product team working on code fix. From 7a84af6cc743e83d6f020f43182cd708eda136e8 Mon Sep 17 00:00:00 2001 From: Jose Perez Rodriguez Date: Thu, 10 May 2018 11:52:49 -0700 Subject: [PATCH 634/872] Adding 4.7.2 known issue about references getting removed by nuget targets in some cases (#741) * Adding 4.7.2 known issue * Feedback * PR Feedback * Update 613745 - Single-name references are removed by the SDK when targeting 4.7.2.md --- ...removed by the SDK when targeting 4.7.2.md | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 releases/net472/KnownIssues/613745 - Single-name references are removed by the SDK when targeting 4.7.2.md diff --git a/releases/net472/KnownIssues/613745 - Single-name references are removed by the SDK when targeting 4.7.2.md b/releases/net472/KnownIssues/613745 - Single-name references are removed by the SDK when targeting 4.7.2.md new file mode 100644 index 000000000..7c6dc2c09 --- /dev/null +++ b/releases/net472/KnownIssues/613745 - Single-name references are removed by the SDK when targeting 4.7.2.md @@ -0,0 +1,23 @@ +# Single-name references are removed by the SDK when targeting .NET Framework 4.7.2 and referencing a package with the same assembly. + +## Symptoms +When a project targets .NET Framework 4.7.2 and references an assembly with both a single name reference and a package reference (either an explicit or a transitive package reference), the assembly is not passed as a reference to the compiler, causing build-time errors for types that are not found. An example of a build error caused by this issue is: +``` +error CS0246: The type or namespace name 'HttpClient' could not be found (are you missing a using directive or an assembly reference?) +``` + +Candidate assemblies that might run into this issue are `System.Diagnostics.Tracing.dll`, `System.IO.Compression.dll`, and `System.Net.Http.dll`. This issue only happens when the project uses the ` + + All + + +``` From 8d1e3b9bd77793c23173ec01cb8a3db7585da7ff Mon Sep 17 00:00:00 2001 From: Saurabh Singh Date: Thu, 10 May 2018 12:02:29 -0700 Subject: [PATCH 635/872] Update dotnet472-known-issues.md --- releases/net472/dotnet472-known-issues.md | 1 + 1 file changed, 1 insertion(+) diff --git a/releases/net472/dotnet472-known-issues.md b/releases/net472/dotnet472-known-issues.md index bbaa50be2..a062bc1bf 100644 --- a/releases/net472/dotnet472-known-issues.md +++ b/releases/net472/dotnet472-known-issues.md @@ -7,3 +7,4 @@ This document lists the known issues that you may experience after you install t - [405199 - WPF - 405199 - Non-Adorner TextSelection Occludes Text](https://github.com/Microsoft/dotnet/blob/master/releases/net472/KnownIssues/405199%20-%20WPF%20Non-Adorner%20TextSelection%20Occludes%20Text.md) - [504055 - WPF - WPF May Not Show Touch Keyboard In All Scenarios on Windows 10 April 2018 Update](https://github.com/Microsoft/dotnet/blob/master/releases/net472/KnownIssues/504055%20-%20WPF%20May%20Not%20Show%20Touch%20Keyboard%20In%20All%20Scenarios%20on%20Windows%2010%20April%202018%20Update.md) - [560016 - XBAP - Applications targeting .NET 2.0,3.5 select wrong runtime version](https://github.com/Microsoft/dotnet/blob/master/releases/net472/KnownIssues/560016-XBAP%20Applications%20targeting%20.NET%202.0%2C3.5%20select%20wrong%20runtime%20version.md) +- [611802 - SQLConnection.ConnectionString throws NullReferenceException] (https://github.com/Microsoft/dotnet/blob/master/releases/net472/KnownIssues/611802%20-%20SQLConnection.ConnectionString%20throws%20NullReferenceException%20.md) From 52b1ec30cde51b32bab2d53e4843038862a238a1 Mon Sep 17 00:00:00 2001 From: Saurabh Singh Date: Thu, 10 May 2018 12:23:41 -0700 Subject: [PATCH 636/872] Update dotnet472-known-issues.md --- releases/net472/dotnet472-known-issues.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/releases/net472/dotnet472-known-issues.md b/releases/net472/dotnet472-known-issues.md index a062bc1bf..f758e1770 100644 --- a/releases/net472/dotnet472-known-issues.md +++ b/releases/net472/dotnet472-known-issues.md @@ -7,4 +7,4 @@ This document lists the known issues that you may experience after you install t - [405199 - WPF - 405199 - Non-Adorner TextSelection Occludes Text](https://github.com/Microsoft/dotnet/blob/master/releases/net472/KnownIssues/405199%20-%20WPF%20Non-Adorner%20TextSelection%20Occludes%20Text.md) - [504055 - WPF - WPF May Not Show Touch Keyboard In All Scenarios on Windows 10 April 2018 Update](https://github.com/Microsoft/dotnet/blob/master/releases/net472/KnownIssues/504055%20-%20WPF%20May%20Not%20Show%20Touch%20Keyboard%20In%20All%20Scenarios%20on%20Windows%2010%20April%202018%20Update.md) - [560016 - XBAP - Applications targeting .NET 2.0,3.5 select wrong runtime version](https://github.com/Microsoft/dotnet/blob/master/releases/net472/KnownIssues/560016-XBAP%20Applications%20targeting%20.NET%202.0%2C3.5%20select%20wrong%20runtime%20version.md) -- [611802 - SQLConnection.ConnectionString throws NullReferenceException] (https://github.com/Microsoft/dotnet/blob/master/releases/net472/KnownIssues/611802%20-%20SQLConnection.ConnectionString%20throws%20NullReferenceException%20.md) +- [611802 - SQL - SQLConnection.ConnectionString throws NullReferenceException](https://github.com/Microsoft/dotnet/blob/master/releases/net472/KnownIssues/611802%20-%20SQLConnection.ConnectionString%20throws%20NullReferenceException%20.md) From aec339faf6d7570c4325ac6eb171c202d845e970 Mon Sep 17 00:00:00 2001 From: Saurabh Singh Date: Thu, 10 May 2018 12:25:14 -0700 Subject: [PATCH 637/872] Update dotnet472-known-issues.md From e623b574f9357d91a3b7a598197f2d7f20d4fb2e Mon Sep 17 00:00:00 2001 From: Saurabh Singh Date: Thu, 10 May 2018 13:47:48 -0700 Subject: [PATCH 638/872] Create 611802 - SQLConnection.ConnectionString throws NRE (#742) * Rename 611802 - SQLConnection.ConnectionString throws NullReferenceException.md to 611802 - SQLConnection.ConnectionString throws NullReferenceException .md Documenting known issue for .Net Framework System.Data NRE. * Update 611802 - SQLConnection.ConnectionString throws NullReferenceException .md * Update 611802 - SQLConnection.ConnectionString throws NullReferenceException .md * Update 611802 - SQLConnection.ConnectionString throws NullReferenceException .md * Update 611802 - SQLConnection.ConnectionString throws NullReferenceException .md --- ...onString throws NullReferenceException .md | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 releases/net472/KnownIssues/611802 - SQLConnection.ConnectionString throws NullReferenceException .md diff --git a/releases/net472/KnownIssues/611802 - SQLConnection.ConnectionString throws NullReferenceException .md b/releases/net472/KnownIssues/611802 - SQLConnection.ConnectionString throws NullReferenceException .md new file mode 100644 index 000000000..689010a48 --- /dev/null +++ b/releases/net472/KnownIssues/611802 - SQLConnection.ConnectionString throws NullReferenceException .md @@ -0,0 +1,23 @@ +# NullReferenceException while setting `SqlConnection.ConnectionString` to an empty string or null. +## Symptoms + +When an application tries to set the `ConnectionString` property of the `SqlConnection` object to an empty string or null value, a `NullReferenceException` is thrown. This exception occurs when .NET Framework 4.7.2 is installed on the OS hosting the application. + + +## Cause + +.NET Framework 4.7.2 includes a change that increases the default connection retry count for connections to Azure SQL Database to two. +This change sets the internal value of the retry count without validating if the `ConnectionString` is a non-null or non-empty value, +which results in the `NullReferenceException`. + +## Impact + +The impact is limited to applications using the `SqlConnection.ConnectionString` API to set an empty connection string, which now throws an exception. + +## Workarounds + +No known workarounds with .NET Framework 4.7.2. + +## Resolution + +The .NET team is working on a fix that will be available in a future update. From 61382e5841ba9116a41eaaa4af9c6a87d50f0a61 Mon Sep 17 00:00:00 2001 From: Jose Perez Rodriguez Date: Thu, 10 May 2018 13:55:25 -0700 Subject: [PATCH 639/872] Adding link to new issue on the 4.7.2 known issues page (#744) * Adding link to new issue on the 4.7.2 known issues page * Corrected order that I disordered in merge --- releases/net472/dotnet472-known-issues.md | 1 + 1 file changed, 1 insertion(+) diff --git a/releases/net472/dotnet472-known-issues.md b/releases/net472/dotnet472-known-issues.md index f758e1770..1c0d1f799 100644 --- a/releases/net472/dotnet472-known-issues.md +++ b/releases/net472/dotnet472-known-issues.md @@ -8,3 +8,4 @@ This document lists the known issues that you may experience after you install t - [504055 - WPF - WPF May Not Show Touch Keyboard In All Scenarios on Windows 10 April 2018 Update](https://github.com/Microsoft/dotnet/blob/master/releases/net472/KnownIssues/504055%20-%20WPF%20May%20Not%20Show%20Touch%20Keyboard%20In%20All%20Scenarios%20on%20Windows%2010%20April%202018%20Update.md) - [560016 - XBAP - Applications targeting .NET 2.0,3.5 select wrong runtime version](https://github.com/Microsoft/dotnet/blob/master/releases/net472/KnownIssues/560016-XBAP%20Applications%20targeting%20.NET%202.0%2C3.5%20select%20wrong%20runtime%20version.md) - [611802 - SQL - SQLConnection.ConnectionString throws NullReferenceException](https://github.com/Microsoft/dotnet/blob/master/releases/net472/KnownIssues/611802%20-%20SQLConnection.ConnectionString%20throws%20NullReferenceException%20.md) +- [613745 - Single-name references are removed by the SDK when targeting 4.7.2](https://github.com/Microsoft/dotnet/blob/master/releases/net472/KnownIssues/613745%20-%20Single-name%20references%20are%20removed%20by%20the%20SDK%20when%20targeting%204.7.2.md) From d27b6c951499795a8071e3a94c1ffa3b7098b801 Mon Sep 17 00:00:00 2001 From: Vivek Mishra Date: Thu, 10 May 2018 16:25:16 -0700 Subject: [PATCH 640/872] Update dotnet472-known-issues.md --- releases/net472/dotnet472-known-issues.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/releases/net472/dotnet472-known-issues.md b/releases/net472/dotnet472-known-issues.md index 1c0d1f799..570f5e1de 100644 --- a/releases/net472/dotnet472-known-issues.md +++ b/releases/net472/dotnet472-known-issues.md @@ -8,4 +8,4 @@ This document lists the known issues that you may experience after you install t - [504055 - WPF - WPF May Not Show Touch Keyboard In All Scenarios on Windows 10 April 2018 Update](https://github.com/Microsoft/dotnet/blob/master/releases/net472/KnownIssues/504055%20-%20WPF%20May%20Not%20Show%20Touch%20Keyboard%20In%20All%20Scenarios%20on%20Windows%2010%20April%202018%20Update.md) - [560016 - XBAP - Applications targeting .NET 2.0,3.5 select wrong runtime version](https://github.com/Microsoft/dotnet/blob/master/releases/net472/KnownIssues/560016-XBAP%20Applications%20targeting%20.NET%202.0%2C3.5%20select%20wrong%20runtime%20version.md) - [611802 - SQL - SQLConnection.ConnectionString throws NullReferenceException](https://github.com/Microsoft/dotnet/blob/master/releases/net472/KnownIssues/611802%20-%20SQLConnection.ConnectionString%20throws%20NullReferenceException%20.md) -- [613745 - Single-name references are removed by the SDK when targeting 4.7.2](https://github.com/Microsoft/dotnet/blob/master/releases/net472/KnownIssues/613745%20-%20Single-name%20references%20are%20removed%20by%20the%20SDK%20when%20targeting%204.7.2.md) +- [613745 - BCL - Single-name references are removed by the SDK when targeting 4.7.2](https://github.com/Microsoft/dotnet/blob/master/releases/net472/KnownIssues/613745%20-%20Single-name%20references%20are%20removed%20by%20the%20SDK%20when%20targeting%204.7.2.md) From eebbdeccc44232c1a4a41cb5d68a34f877503c82 Mon Sep 17 00:00:00 2001 From: Vivek Mishra Date: Thu, 10 May 2018 16:49:48 -0700 Subject: [PATCH 641/872] Update NETFXKnownIssuesTemplate.md --- Documentation/KnownIssues/Template/NETFXKnownIssuesTemplate.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Documentation/KnownIssues/Template/NETFXKnownIssuesTemplate.md b/Documentation/KnownIssues/Template/NETFXKnownIssuesTemplate.md index 62bba948c..e17793c3b 100644 --- a/Documentation/KnownIssues/Template/NETFXKnownIssuesTemplate.md +++ b/Documentation/KnownIssues/Template/NETFXKnownIssuesTemplate.md @@ -10,6 +10,9 @@ ## Cause [|Description of the root cause(s)|] +## Workaround +[|Description of the workaround, if available|] + ## Resolution [|Description of the resolution|] // Add the steps that will allow users to resolve the underlying problem including any workarounds. From 8fe9c46c755ea2c4090773be7529a66070c6ac4f Mon Sep 17 00:00:00 2001 From: Matt Johnson Date: Mon, 14 May 2018 12:31:42 -0700 Subject: [PATCH 642/872] Update dotnet-developer-projects.md (#746) Adding several libraries that I maintain that have proven themselves useful over the years. --- dotnet-developer-projects.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 01659b8e7..de50e0072 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -136,6 +136,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [FluentValidation](https://github.com/JeremySkinner/FluentValidation) - A small validation library for .NET that uses a fluent interface and lambda expressions for building validation rules. * [Flurl](https://github.com/tmenier/Flurl) - A fluent, portable, testable URL builder and HTTP client library. * [Font-Awesome-WPF](https://github.com/charri/Font-Awesome-WPF) - WPF controls for the iconic font and CSS toolkit [Font Awesome](http://fortawesome.github.io/Font-Awesome/). + * [GeoTimeZone](https://github.com/mj1856/GeoTimeZone) - Provides an IANA time zone identifier from latitude and longitude coordinates. * [GongSolutions.Wpf.DragDrop](https://github.com/punker76/gong-wpf-dragdrop) - A drag'n'drop framework for WPF. * [GeckoFX](https://bitbucket.org/geckofx) - Mozilla's Gecko layout engine wrapper in .NET. * [HudlFfmpeg](https://github.com/hudl/HudlFfmpeg) - A/V transcoding framework that helps build complex FFmpeg commands. @@ -169,6 +170,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [SharpMap](https://github.com/SharpMap) - An easy-to-use mapping library for use in web and desktop applications * [SharpSnmpLib](https://docs.sharpsnmp.com/en/latest/) - An easy-to-use SNMP library for use on all platforms (.NET/Mono/Xamarin) * [Shielded](https://github.com/jbakic/Shielded) - Software Transactional Memory for .NET + * [SimpleImpersonation](https://github.com/mj1856/SimpleImpersonation) - Allows you to impersonate a user, given their credentials. * [SmartIrc4net](https://github.com/meebey/SmartIrc4net) - IRC C# Library * [Spartacus](https://github.com/wind39/spartacus) - Multi-purpose C# library, containing: 1) classes to access many types of databases in a fast, generic way; 2) classes to work with XLSX, CSV and DBF files; 3) PDF report engine. * [Splat](https://github.com/paulcbetts/splat) - A library to make things cross-platform that should be. @@ -179,6 +181,8 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [surging](https://github.com/dotnetcore/surging) - The distributed micro service framework based on .NET Core provides high-performance RPC Communications. * [Sweet.Jayson](https://github.com/ocdogan/Sweet.Jayson) - Fast, reliable, easy to use, fully json.org compliant, thread safe C# JSON library for server side and desktop operations. * [VkSharp](https://github.com/kasthack/vksharp) - VK client library. + * [TimeZoneConverter](https://github.com/mj1856/TimeZoneConverter) - Lightweight library to convert quickly between IANA, Windows, and Rails time zone names. + * [TimeZoneNames](https://github.com/mj1856/TimeZoneNames) - Provides a complete source of localized time zone names and abbreviations. * [TomP2P.NET](https://github.com/tomp2p/TomP2P.NET) - A P2P-based high performance key-value pair storage library for .NET. (Not Updated in 3 Years - 4/2018) * [WampSharp](https://github.com/Code-Sharp/WampSharp) - A C# implementation of [The Web Application Messaging Protocol](http://wamp.ws) - a protocol that provides messaging patterns of Remote Procedure Calls and Publish/Subscribe over WebSockets. * [WebApiProxy](https://github.com/faniereynders/WebApiProxy) - An automatic proxy provider for RESTful services built on ASP.NET Web API. Includes JavaScript & C# client generation. From 107d249201509e805be69d5703e08059e1b5dac2 Mon Sep 17 00:00:00 2001 From: Ron Petrusha Date: Mon, 14 May 2018 12:50:59 -0700 Subject: [PATCH 643/872] Alphabetized projects (#747) --- dotnet-developer-projects.md | 44 ++++++++++++++++++------------------ 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index de50e0072..9d9d464ad 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -14,11 +14,11 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [SharpLang](https://github.com/xen2/SharpLang) - Compiles C# & .NET to native machine code, using [LLVM](http://llvm.org) as a backend. ## Platforms + * [Akka.NET](http://github.com/akkadotnet) - Akka.NET is a toolkit and runtime for building highly concurrent, distributed, and fault tolerant event-driven applications on .NET & Mono. This community-driven port brings C# & F# developers the capabilities of the original Akka framework in Java/Scala. [[Project Site]](http://getakka.net/) * [Castle Project](https://github.com/castleproject) - Umbrella project for ActiveRecord, DynamicProxy, MonoRail, Windsor * [Catel](https://github.com/catel/catel) - Application platform with IoC, logging, reflection and much more that serves as a base for applications that must be ready for future growth. * [Enterprise Web Library (EWL)](https://github.com/enduracode/enterprise-web-library) - An extremely opinionated platform for web applications that trades off performance, scalability, and development flexibility for an ease of maintenance you won't find anywhere else. [Enterprise Web Library site](http://www.enterpriseweblibrary.org/). * [KonfDB](https://github.com/punitganshani/konfdb) - Configuration Management as a Service for cross-platform, multi-tenant enterprise/hobby applications. - * [Akka.NET](http://github.com/akkadotnet) - Akka.NET is a toolkit and runtime for building highly concurrent, distributed, and fault tolerant event-driven applications on .NET & Mono. This community-driven port brings C# & F# developers the capabilities of the original Akka framework in Java/Scala. [[Project Site]](http://getakka.net/) * [Orleans](http://dotnet.github.io/orleans/) - Orleans is a framework that provides a straightforward approach to building distributed high-scale computing applications, without the need to learn and apply complex concurrency or other scaling patterns. It was created by Microsoft Research and designed for use in the cloud. Orleans is a mature but fast evolving platform that has been battle tested since 2011 by several Microsoft product groups, such as Halo, Gears of War, Skype, Azure, Xbox, as well as by a growing number of other companies using it in Azure, AWS, GCP, and on premises. ## Languages @@ -44,9 +44,9 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [C# Coding Guidelines](https://github.com/dennisdoomen/CSharpGuidelines) - A set of coding guidelines for C# 3.0, 4.0 and 5.0 that extend StyleCop and can be forked and adapted for internal use. ## Security / Identity Management - * [NWebsec](https://github.com/NWebsec/NWebsec) - Security headers for ASP.NET applications. * [IdentityManager](https://github.com/IdentityManager/IdentityManager) - (No Longer Maintained) IdentityManager is a tool for developers and/or administrators to manage the identity information for users of their applications. * [IdentityServer](https://github.com/IdentityServer/IdentityServer3) + * [NWebsec](https://github.com/NWebsec/NWebsec) - Security headers for ASP.NET applications. * [SKGL - Serial Key Generating Library](https://github.com/SerialKeyManager/SKGL) ## Web CMS @@ -56,10 +56,10 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [N2CMS](https://github.com/n2cms/n2cms) - Open source, lightweight, code-first CMS able to seamlessly integrate into any MVC project. * [Orchard](https://github.com/OrchardCMS/Orchard) - A community-focused Content Management System built on the ASP.NET MVC platform. * [Piranha CMS](https://github.com/PiranhaCMS/Piranha) - Lightweight CMS library for new and existing ASP.NET MVC & WebPages applications. + * [Platformus](https://github.com/Platformus/Platformus) - Free, open source and cross-platform CMS based on ASP.NET Core 1.1 and ExtCore framework. * [Suave](https://github.com/SuaveIO/suave) A lightweight web server and a set of combinators to manipulate route flow and task composition. * [Umbraco](https://github.com/umbraco/Umbraco-CMS/) - Web content management platform (CMS). * [WebSharper](https://bitbucket.org/IntelliFactory/websharper) - Web programming platform including a compiler from F# code to JavaScript. - * [Platformus](https://github.com/Platformus/Platformus) - Free, open source and cross-platform CMS based on ASP.NET Core 1.1 and ExtCore framework. ## Web Marketplace * [BeYourMarket](https://github.com/beyourmarket/beyourmarket) - BeYourMarket is a peer-to-peer marketplace framework http://beyourmarket.com @@ -83,9 +83,9 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [System.Data.SQLite](https://system.data.sqlite.org) - SQLite ## Messaging - * [Azure Service Bus](https://github.com/azure/azure-service-bus-dotnet) - .NET Standard client library for [Azure Service Bus](https://docs.microsoft.com/en-us/azure/service-bus/). * [Azure Event Hubs](https://github.com/azure/azure-event-hubs-dotnet) - .NET Standard client library for [Azure Event Hubs](https://docs.microsoft.com/en-us/azure/event-hubs/). * [Azure Relay](https://github.com/azure/azure-relay-dotnet) - .NET Standard client library for [Azure Relay](https://docs.microsoft.com/en-us/azure/service-bus-relay/relay-what-is-it). + * [Azure Service Bus](https://github.com/azure/azure-service-bus-dotnet) - .NET Standard client library for [Azure Service Bus](https://docs.microsoft.com/en-us/azure/service-bus/). * [AzureNetQ](https://github.com/Roysvork/AzureNetQ) - An easy to use .NET API for Azure Service Bus. * [Brighter](https://github.com/iancooper/Paramore) - A Command Dispatcher and Command Processor library with support for Work or Task Queues over different MoM implementations such as RabbitMQ. * [CAP](https://github.com/dotnetcore/CAP) - An EventBus with local persistent message functionality for RabbitMQ or Kafka. @@ -128,6 +128,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [DropboxRestAPI](https://github.com/saguiitay/DropboxRestAPI) - DropBox .Net Client Library. * [DynamicData](https://github.com/RolandPheasant/DynamicData) - Brings the power of Rx to collections. * [Excel-DNA](https://github.com/Excel-DNA/ExcelDna) - Create high-performance, easy to deploy Excel add-ins with .NET - [Home](http://excel-dna.net) + * [ExtCore](https://github.com/ExtCore/ExtCore) - Free, open source and cross-platform framework for creating modular and extendable web applications based on ASP.NET Core 1.1. * [ExtraLINQ](https://github.com/mariusschulz/ExtraLINQ) - Various extension methods for working with .NET collections. * [FeatureToggle](https://github.com/jason-roberts/FeatureToggle) - Simple, reliable feature toggles in .NET. * [FlatMapper](https://github.com/kappy/FlatMapper) - A library to import and export data from and to plain text files in a Linq compatible way. @@ -136,16 +137,16 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [FluentValidation](https://github.com/JeremySkinner/FluentValidation) - A small validation library for .NET that uses a fluent interface and lambda expressions for building validation rules. * [Flurl](https://github.com/tmenier/Flurl) - A fluent, portable, testable URL builder and HTTP client library. * [Font-Awesome-WPF](https://github.com/charri/Font-Awesome-WPF) - WPF controls for the iconic font and CSS toolkit [Font Awesome](http://fortawesome.github.io/Font-Awesome/). + * [GeckoFX](https://bitbucket.org/geckofx) - Mozilla's Gecko layout engine wrapper in .NET. * [GeoTimeZone](https://github.com/mj1856/GeoTimeZone) - Provides an IANA time zone identifier from latitude and longitude coordinates. * [GongSolutions.Wpf.DragDrop](https://github.com/punker76/gong-wpf-dragdrop) - A drag'n'drop framework for WPF. - * [GeckoFX](https://bitbucket.org/geckofx) - Mozilla's Gecko layout engine wrapper in .NET. * [HudlFfmpeg](https://github.com/hudl/HudlFfmpeg) - A/V transcoding framework that helps build complex FFmpeg commands. * [JSON.NET](https://github.com/JamesNK/Newtonsoft.Json) - Popular high-performance JSON framework for .NET * [Kentor.AuthServices](https://github.com/KentorIT/authservices) - A SAML2 Service Provider for .NET. * [Language-ext](https://github.com/louthy/language-ext) - C# 6.0+ functional language extensions. Make C# more like F# and other functional languages - * [LINQ Extensions](https://github.com/TommasoScalici/LINQExtensions) - LINQ extensions for .NET is a collection of useful extensions methods that extends LINQ's capability. There are methods for combinatorics and sequence analysis, generation and manipulation. * [leveldb-sharp](https://github.com/meebey/leveldb-sharp) - cross-platform C# binding for LevelDB * [LibGit2Sharp](https://github.com/libgit2/libgit2sharp) - C# language bindings for the [LibGit2](https://github.com/libgit2/libgit2) implementation of Git. + * [LINQ Extensions](https://github.com/TommasoScalici/LINQExtensions) - LINQ extensions for .NET is a collection of useful extensions methods that extends LINQ's capability. There are methods for combinatorics and sequence analysis, generation and manipulation. * [Localization.SqlLocalizer]( https://github.com/damienbod/AspNet5Localization) - SQL Localizer for ASP.NET Core, dotnet * [Lucene.Net](https://github.com/apache/lucene.net) * [MahApps.Metro.IconPacks](https://github.com/MahApps/MahApps.Metro.IconPacks) - Some awesome icons for `WPF` and `UWP` all together. The library contains controls to use icons from [Material Design](https://materialdesignicons.com/), [Material Design Icons Light](https://github.com/Templarian/MaterialDesignLight), [Font Awesome](http://fontawesome.io/icons/), [GitHub Octicons](https://octicons.github.com/), [Modern](http://modernuiicons.com/), [Entypo+](http://www.entypo.com/) and [Simple Icons](https://simpleicons.org/). @@ -155,8 +156,8 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [Mjolnir](https://github.com/hudl/Mjolnir) - [Hystrix](https://github.com/Netflix/Hystrix)-inspired fault tolerance with circuit breakers and thread pools. * [MoreLINQ](https://morelinq.github.io/) - LINQ to Objects is missing a few desirable features. This project will enhance LINQ to Objects with extra methods, in a manner which keeps to the spirit of LINQ. * [NAudio](https://github.com/naudio/NAudio) - An open source .NET audio and MIDI library. - * [NetTopologySuite](https://github.com/NetTopologySuite) - A .NET port of the JTS Topology Suite. * [NEST](https://github.com/elastic/elasticsearch-net) - The official .NET client library for Elasticsearch. + * [NetTopologySuite](https://github.com/NetTopologySuite) - A .NET port of the JTS Topology Suite. * [NHunspell](http://sourceforge.net/projects/nhunspell/) - Spell Checker, Hyphenation an Theasaurus. * [NModbus4](https://github.com/NModbus4/NModbus4) - Implementation of the Modbus protocol. * [NodaTime](https://nodatime.org/) - A better date and time API for .NET. @@ -180,10 +181,10 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [SuperSocket](https://github.com/kerryjiang/SuperSocket) - An extensible socket server engine which supports .NET and Mono. * [surging](https://github.com/dotnetcore/surging) - The distributed micro service framework based on .NET Core provides high-performance RPC Communications. * [Sweet.Jayson](https://github.com/ocdogan/Sweet.Jayson) - Fast, reliable, easy to use, fully json.org compliant, thread safe C# JSON library for server side and desktop operations. - * [VkSharp](https://github.com/kasthack/vksharp) - VK client library. * [TimeZoneConverter](https://github.com/mj1856/TimeZoneConverter) - Lightweight library to convert quickly between IANA, Windows, and Rails time zone names. * [TimeZoneNames](https://github.com/mj1856/TimeZoneNames) - Provides a complete source of localized time zone names and abbreviations. * [TomP2P.NET](https://github.com/tomp2p/TomP2P.NET) - A P2P-based high performance key-value pair storage library for .NET. (Not Updated in 3 Years - 4/2018) + * [VkSharp](https://github.com/kasthack/vksharp) - VK client library. * [WampSharp](https://github.com/Code-Sharp/WampSharp) - A C# implementation of [The Web Application Messaging Protocol](http://wamp.ws) - a protocol that provides messaging patterns of Remote Procedure Calls and Publish/Subscribe over WebSockets. * [WebApiProxy](https://github.com/faniereynders/WebApiProxy) - An automatic proxy provider for RESTful services built on ASP.NET Web API. Includes JavaScript & C# client generation. * [WebSocket4Net](https://github.com/kerryjiang/WebSocket4Net) - A C# websocket client for .NET, Mono and Xamarin. @@ -191,7 +192,6 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [WpfToolkit](https://github.com/dotnetprojects/wpftoolkit) - Fork of the MS WPF Toolkit. * [XamlEssentials](https://github.com/AdvancedREI/XamlEssentials) - Collection of helpers for Microsoft's XAML platforms. (Not Updated in 4 Years - 4/2018) * [Zlib.Portable](https://github.com/AdvancedREI/Zlib.Portable) - A Portable Class Library port of the Zlib library from http://dotnetzip.codeplex.com. (Not Updated in 3 Years - 4/2018) - * [ExtCore](https://github.com/ExtCore/ExtCore) - Free, open source and cross-platform framework for creating modular and extendable web applications based on ASP.NET Core 1.1. ## Data Mine/Data Extraction/Machine Learning/AI * [AForge.NET](http://www.aforgenet.com/) - a C# framework designed for developers and researchers in the fields of Computer Vision and Artificial Intelligence - image processing, neural networks, genetic algorithms, machine learning, robotics. @@ -201,21 +201,21 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [Toxy](https://github.com/tonyqus/toxy) - An data/text extraction framework for .NET, similar to Tika in Java. (Not Updated in 2 Years - 4/2018) ## Graphics & Server-side Image Processing + * [.NET Image Processor](https://github.com/elkdanger/image-processor) - Extensible, chainable image processing library (GDI+ based). * [DynamicImage](https://github.com/tgjones/dynamic-image) - WPF-based server-side image rendering system - lots of visual effects implemented as high-performance shaders. Has URL api, several plugins available. - * [ImageSharp](https://github.com/jimbobsquarepants/imagesharp/) - A cross-platform library for processing of image files written in C#. (NetStandard 1.1 X-Plat). * [ImageProcessor](https://github.com/jimbobsquarepants/imageprocessor/) - A fluent wrapper around System.Drawing for the processing of image files (NET 4.5+ GDI+ based). * [ImageResizer](https://github.com/imazen/resizer) - Add commands to image URLs to get altered versions in milliseconds. Edit, filter, touch-up images in real-time. (multiple backends - FreeImage, C++/CLI, GDI+, WIC). 45+ plugins available. + * [ImageSharp](https://github.com/jimbobsquarepants/imagesharp/) - A cross-platform library for processing of image files written in C#. (NetStandard 1.1 X-Plat). * [King.Azure.Imaging](https://github.com/jefking/King.Azure.Imaging) - Scalable image uploading and processing for Azure. * [Magick.NET](https://github.com/dlemstra/Magick.NET) - The .NET (Core/Framework) wrapper for the [ImageMagick](https://www.imagemagick.org) library that supports over [100 major file formats](https://www.imagemagick.org/script/formats.php). * [MonoGame](http://www.monogame.net/) - MonoGame is a cross-platform, open-source implementation of the XNA Game Framework. - * [.NET Image Processor](https://github.com/elkdanger/image-processor) - Extensible, chainable image processing library (GDI+ based). + * [numl](http://numl.net) - numl is a general purpose machine learning framework meant to simplify the data analysis process * [OpenTK](https://github.com/opentk/opentk) - OpenTK is a low-level, cross-platform binding to OpenGL, OpenGL ES, OpenCL and OpenAL, available for Windows, Linux, Mac OS X, BSD, Android and iOS. * [SharpDX](https://github.com/sharpdx/SharpDX) - SharpDX is a project delivering the full DirectX API for .NET on all Windows platforms. - * [numl](http://numl.net) - numl is a general purpose machine learning framework meant to simplify the data analysis process ## Logging - * [Exceptionless](https://github.com/exceptionless/Exceptionless) - Provides real-time .NET error reporting for your ASP.NET, Web API, WebForms, WPF, Console, and MVC apps. It organizes the gathered information into simple actionable data that will help your app become exceptionless! * [ELMAH](https://github.com/elmah/Elmah) - [ELMAH (Error Logging Modules and Handlers)](https://elmah.github.io/) is an application-wide error logging facility that is completely pluggable. It can be dynamically added to a running ASP.NET web application, or even all ASP.NET web applications on a machine, without any need for re-compilation or re-deployment. + * [Exceptionless](https://github.com/exceptionless/Exceptionless) - Provides real-time .NET error reporting for your ASP.NET, Web API, WebForms, WPF, Console, and MVC apps. It organizes the gathered information into simple actionable data that will help your app become exceptionless! * [log4net](http://logging.apache.org/log4net/) - A tool to help the programmer output log statements to a variety of output targets. * [LogMaster4Net](https://github.com/kerryjiang/LogMaster4Net) - It is a central log server which can organize your logs in different applications in a same place but have same log behaviors (loggers, appenders, levels and rules) like in the indepedent applications before. * [NLog](https://github.com/NLog/NLog) - NLog is a free logging platform for .NET with rich log routing and management capabilities. @@ -236,12 +236,12 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C ## Tools * [API Port](https://github.com/microsoft/dotnet-apiport) - A tool that will analyze code for compatability issues when migrating between .NET Framework releases. * [Cake](https://github.com/cake-build/cake) (C# Make) - A build automation system with C#/Roslyn driven build scripts. - * [CppSharp](https://github.com/mono/CppSharp) - C/C++ bindings generation for .NET. * [CInject](https://github.com/punitganshani/CodeInject) - A tool to inject your C#/VB.NET code into existing .NET assemblies and executables + * [CppSharp](https://github.com/mono/CppSharp) - C/C++ bindings generation for .NET. + * [Crawler-Lib Build Tools](http://download.crawler-lib.net/BuildTools/) - [A PowerShell based toolbox](http://www.crawler-lib.net/build-tools) for automating the software build process, autmated testing and integration. * [FAKE](http://fsharp.github.io/FAKE/) - Build automation system with capabilities which are similar to make and rake. * [FlubuCore](https://github.com/flubu-core/flubu.core) - Fluent builder is A C# library for building projects and executing deployment scripts using C# code. * [Fody](https://github.com/Fody/Fody) - Extensible tool for weaving .NET assemblies. - * [Crawler-Lib Build Tools](http://download.crawler-lib.net/BuildTools/) - [A PowerShell based toolbox](http://www.crawler-lib.net/build-tools) for automating the software build process, autmated testing and integration. * [FsEye](https://github.com/swensensoftware/fseye) - A visual object tree inspector for the F# Interactive. * [FsharpLint](https://github.com/fsprojects/FSharpLint) - Lint tool for F#. * [FsPickler](https://github.com/nessos/FsPickler) - Serialization library that facilitates the distribution of .NET objects. @@ -321,20 +321,20 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C ## Data Access * [Dapper](https://github.com/StackExchange/dapper-dot-net) - Dapper is a single file you can drop in to your project that will extend your IDbConnection interface. + * [DeveelDB](https://github.com/deveel/deveeldb) - A complete SQL-99 embeddable database management system for .NET and Mono * [Eggado](https://bitbucket.org/raboof/eggado) - Eggado takes generics, lambdas, expression trees, dynamic methods and DLR and uses them to breathe new life into data access using good old ADO.NET. It's for folks who can live with a SQL dialect. + * [Elephant](https://github.com/takenet/elephant) - Persistence library that provides common data structures as composable elements to abstract any storage engine, including (No)SQL databases. * [King.Mapper](https://github.com/jefking/King.Mapper) - High performance model mapping. * [linq2db](https://github.com/linq2db/linq2db/) - Lightweight ORM and LINQ provider with support for various databases including MS SQL, PostgreSQL, Oracle and MySQL + * [LINQ2DynamoDB](https://github.com/scale-tone/linq2dynamodb) - A type-safe data context for AWS DynamoDB with LINQ, in-memory caching and OData support. + * [Marten](https://github.com/JasperFx/marten) - Document DB / Event Store built on top of PostgreSQL. * [NHibernate](https://github.com/nhibernate) - Object Relational Mapper * [Simple Data](https://github.com/markrendle/Simple.Data) - A light-weight, dynamic data access component for C# 4.0. * [Sqlite-net](https://github.com/praeclarum/sqlite-net) - Simple, powerful, cross-platform SQLite client and ORM. - * [DeveelDB](https://github.com/deveel/deveeldb) - A complete SQL-99 embeddable database management system for .NET and Mono * [NMEA Parser](https://github.com/dotMorten/NmeaParser) - Library for handling NMEA message in Windows Desktop, Store, Phone and Xamarin (Android + iOS), coming from files, Bluetooth, serial port or any stream. * [Neyro.Data](https://github.com/neyromant/Neyro.Data) - Tiny, simple and fast ORM. - * [StackExchange.Redis](https://github.com/StackExchange/StackExchange.Redis) * [SQL LocalDB Wrapper](https://github.com/martincostello/sqllocaldb) - SQL LocalDB Wrapper is an assembly providing interop with the SQL LocalDB native API from managed code using .NET APIs. - * [LINQ2DynamoDB](https://github.com/scale-tone/linq2dynamodb) - A type-safe data context for AWS DynamoDB with LINQ, in-memory caching and OData support. - * [Elephant](https://github.com/takenet/elephant) - Persistence library that provides common data structures as composable elements to abstract any storage engine, including (No)SQL databases. - * [Marten](https://github.com/JasperFx/marten) - Document DB / Event Store built on top of PostgreSQL. + * [StackExchange.Redis](https://github.com/StackExchange/StackExchange.Redis) ## Games * [Duality](https://github.com/AdamsLair/duality) - An Open Source 2D Game Engine + Visual Editor written entirely in C#. @@ -350,17 +350,17 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [MahApps.Metro](https://github.com/MahApps/MahApps.Metro) - A toolkit for creating Metro / Modern UI styled WPF apps. [mahapps.com](http://mahapps.com) * [Material Design in XAML Toolkit](https://github.com/ButchersBoy/MaterialDesignInXamlToolkit) - WPF/XAML resources, styles & templates for creating applications using Material Design * [Mono XWT](https://github.com/mono/xwt) - A cross-platform UI toolkit for creating desktop apps - * [UWP Community Toolkit](https://github.com/Microsoft/UWPCommunityToolkit) - The UWP Community Toolkit is a collection of helper functions, custom controls, and app services. It simplifies and demonstrates common developer tasks building UWP apps for Windows 10. * [Neutronium](https://github.com/NeutroniumCore/Neutronium) - Neutronium is a library to create .NET desktop applications using HTML, CSS and javascript. It uses the MVVM pattern exactly the same way as WPF applications. + * [UWP Community Toolkit](https://github.com/Microsoft/UWPCommunityToolkit) - The UWP Community Toolkit is a collection of helper functions, custom controls, and app services. It simplifies and demonstrates common developer tasks building UWP apps for Windows 10. ## Windows Services * [King.Service](https://github.com/jefking/King.Service) - Task scheduling for Azure and Windows * [TopShelf](https://github.com/Topshelf/Topshelf) - An easy service hosting framework for building Windows services using .NET. ## Scheduling + * [FluentScheduler](https://github.com/fluentscheduler/FluentScheduler) - Task scheduler with fluent interface that runs automated tasks (cron jobs) from your application. * [Hangfire](https://github.com/HangfireIO/Hangfire) - An easy way to perform fire-and-forget, delayed and recurring tasks inside ASP.NET applications. * [Quartz.Net](https://github.com/quartznet/quartznet) - A full-featured, open source job scheduling system that can be used from smallest apps to large scale enterprise systems. - * [FluentScheduler](https://github.com/fluentscheduler/FluentScheduler) - Task scheduler with fluent interface that runs automated tasks (cron jobs) from your application. ## Deployment * [DropkicK](https://github.com/chucknorris/dropkick/) - A fluent deployment library for Windows applications From f26a833a80c8ae9c4f9aee8b211dbe87a306cd98 Mon Sep 17 00:00:00 2001 From: Jose Perez Rodriguez Date: Thu, 17 May 2018 09:57:11 -0700 Subject: [PATCH 644/872] Change the workaround and resolution sections (#745) * Change the workaround and resolution sections * Addressed review comments. --- ...references are removed by the SDK when targeting 4.7.2.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/releases/net472/KnownIssues/613745 - Single-name references are removed by the SDK when targeting 4.7.2.md b/releases/net472/KnownIssues/613745 - Single-name references are removed by the SDK when targeting 4.7.2.md index 7c6dc2c09..3a618bf45 100644 --- a/releases/net472/KnownIssues/613745 - Single-name references are removed by the SDK when targeting 4.7.2.md +++ b/releases/net472/KnownIssues/613745 - Single-name references are removed by the SDK when targeting 4.7.2.md @@ -11,7 +11,7 @@ Candidate assemblies that might run into this issue are `System.Diagnostics.Trac ## Cause This issue occurs when a project has two references to the same assembly, one to the platform implementation (that is, the assembly that ships with the .NET Framework) and one to the package implementation. What ends up happening is that two different MSBuild targets conflict with each other, and each one removes one of the two references, so that when the call to the compiler is made, none of the references remain. NuGet targets remove the platform implementation because they assume that the package implementation should always be preferred. After this, the SDK targets remove the package implementation because they check that the platform assembly version is higher than the package one and, if it is, the platform assembly is preferred. -## Resolution +## Workaround The workaround is to add an extra package reference to your project file and exclude all of its assets in order to make sure that the package implementation is never preferred. This ensures that the platform version wins and is not removed by the NuGet targets. Here is an example of how to do this for the `System.Net.Http.dll` case: ```xml @@ -21,3 +21,6 @@ The workaround is to add an extra package reference to your project file and exc ``` + +## Resolution +A proper fix in the MSBuild SDK will ship in the coming versions of Visual Studio. This known issue will be updated with more details when that happens. From 97d0ba433f8aa4a71afafcb39fbde41f57937873 Mon Sep 17 00:00:00 2001 From: Charles Lowell Date: Thu, 24 May 2018 09:09:09 -0700 Subject: [PATCH 645/872] Web Application -> Web Applications (#762) The plural category is conventional everywhere else, and used in migration guide generation to map include paths. --- Documentation/compatibility/aspnet-472-compat-doc.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Documentation/compatibility/aspnet-472-compat-doc.md b/Documentation/compatibility/aspnet-472-compat-doc.md index 18bc55d26..91d7f6411 100644 --- a/Documentation/compatibility/aspnet-472-compat-doc.md +++ b/Documentation/compatibility/aspnet-472-compat-doc.md @@ -26,4 +26,4 @@ If you find that regular expressions in your web application do not work after u ``` ### Category -Web Application +Web Applications From 260ed6c5528510d8536edc22edef2cae4eddff14 Mon Sep 17 00:00:00 2001 From: Holly Muenchow Date: Wed, 30 May 2018 14:35:47 -0700 Subject: [PATCH 646/872] Added release notes for 6.1.5 --- releases/UWP/net-native2.1/README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/releases/UWP/net-native2.1/README.md b/releases/UWP/net-native2.1/README.md index 531c7b030..48f928fcd 100644 --- a/releases/UWP/net-native2.1/README.md +++ b/releases/UWP/net-native2.1/README.md @@ -4,6 +4,9 @@ You can see what was included in each .NET Native 2.1 ([Microsoft.NETCore.Univer When using Visual Studio these packages require Visual Studio 2017 Version 15.7 or later. +### UWP 6.1.5 (.NET native tools 2.1.8) (May 30th, 2018) +- Updates NETStandard.Library reference from version 2.0.2 to 2.0.3 to fix [UWP reference additional NetStandard dll after 15.7](https://developercommunity.visualstudio.com/content/problem/251571/uwp-reference-additional-netstandard-dll-after-157.html) and [After installing ..., a lot of warnings occur](https://github.com/dotnet/standard/issues/708) + ### UWP 6.1.4 (.NET native tools 2.1.8) (May 7th, 2018) - Adds support for [Optional packages with executable code](https://docs.microsoft.com/en-us/windows/uwp/packaging/optional-packages-with-executable-code) - Fixes multiple errors caused by low memory issues when compiling .NET native apps [521825, 574099, 574102] From 3acb62fd911a32351f38f70eab62113e3991555c Mon Sep 17 00:00:00 2001 From: Ryan Yates Date: Thu, 31 May 2018 17:04:14 +0100 Subject: [PATCH 647/872] Rename DrainNGenQueue.ps to DrainNGenQueue.ps1 (#768) to actually make this a PowerShell Script as .ps is not an accepted PowerShell Script extension --- .../{DrainNGenQueue.ps => DrainNGenQueue.ps1} | Bin 1346 -> 1347 bytes 1 file changed, 0 insertions(+), 0 deletions(-) rename tools/DrainNGENQueue/{DrainNGenQueue.ps => DrainNGenQueue.ps1} (99%) diff --git a/tools/DrainNGENQueue/DrainNGenQueue.ps b/tools/DrainNGENQueue/DrainNGenQueue.ps1 similarity index 99% rename from tools/DrainNGENQueue/DrainNGenQueue.ps rename to tools/DrainNGENQueue/DrainNGenQueue.ps1 index 1357853b93137b80bf86c5868a594a192987b10b..42fa617622748800054cb5da142c712510fd2aa5 100644 GIT binary patch delta 9 QcmX@ab(m{|6DuPZ01;0DoB#j- delta 7 OcmX@ib%<+&6Dt4=BLa~C From d7d403a0d636f2140cbea8b08b4ad6680737bb62 Mon Sep 17 00:00:00 2001 From: Alex Ghiondea Date: Wed, 6 Jun 2018 11:05:40 -0700 Subject: [PATCH 648/872] =?UTF-8?q?Create=20623552-BCL=20Higher=20assembly?= =?UTF-8?q?=20versions=20that=204.0.0.0=20for=20System.IO=E2=80=A6=20(#772?= =?UTF-8?q?)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Create 623552-BCL Higher assembly versions that 4.0.0.0 for System.IO.Compression.ZipFile cannot be loaded without a binding redirect.md Add a new known issue for .NET Framework 4.7.1. * Update 623552-BCL Higher assembly versions that 4.0.0.0 for System.IO.Compression.ZipFile cannot be loaded without a binding redirect.md Update per PR feedback * Update 623552-BCL Higher assembly versions that 4.0.0.0 for System.IO.Compression.ZipFile cannot be loaded without a binding redirect.md --- ...ot be loaded without a binding redirect.md | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 releases/net471/KnownIssues/623552-BCL Higher assembly versions that 4.0.0.0 for System.IO.Compression.ZipFile cannot be loaded without a binding redirect.md diff --git a/releases/net471/KnownIssues/623552-BCL Higher assembly versions that 4.0.0.0 for System.IO.Compression.ZipFile cannot be loaded without a binding redirect.md b/releases/net471/KnownIssues/623552-BCL Higher assembly versions that 4.0.0.0 for System.IO.Compression.ZipFile cannot be loaded without a binding redirect.md new file mode 100644 index 000000000..bfd9944d7 --- /dev/null +++ b/releases/net471/KnownIssues/623552-BCL Higher assembly versions that 4.0.0.0 for System.IO.Compression.ZipFile cannot be loaded without a binding redirect.md @@ -0,0 +1,36 @@ +# Assembly versions higher than 4.0.0.0 for System.IO.Compression.ZipFile cannot be loaded without a binding redirect + +## Symptoms + +When building an application that targets .NET Framework 4.7.1, if you reference a .NET Standard 1.x library that uses types from the ZipFile assembly, a runtime error like the following results: + +``` +Error: Exception: System.IO.FileNotFoundException, Could not load file or assembly 'System.IO.Compression.ZipFile, Version=4.0.3.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' or one of its dependencies. The system cannot find the file specified. +``` + +## Cause + +The issue is caused by a bug in the runtime unification table for .NET Framework 4.7.1 for this assembly. The bug prevents the unification of the 4.0.3.0 version of the assembly to the 4.0.0.0 version that is present on the machine. + +## Impact + +This problem occurs when building an application that targets .NET Framework 4.7.1 and consumes .NET Standard-based assets. + +## Workaround + +To address this problem, you can manually add the following binding redirect in your application's config file: + +```xml + + + + + + + + +``` + +## Resolution + +This problem is fixed in [.NET Framework 4.7.2](http://go.microsoft.com/fwlink/?LinkId=863281). From d4b59b942a29c017b2e2b5e652143da240fb57a4 Mon Sep 17 00:00:00 2001 From: Alex Ghiondea Date: Thu, 7 Jun 2018 14:27:24 -0700 Subject: [PATCH 649/872] Update dotnet471-known-issues.md (#775) --- releases/net471/dotnet471-known-issues.md | 1 + 1 file changed, 1 insertion(+) diff --git a/releases/net471/dotnet471-known-issues.md b/releases/net471/dotnet471-known-issues.md index d5ec5c264..4f723be8a 100644 --- a/releases/net471/dotnet471-known-issues.md +++ b/releases/net471/dotnet471-known-issues.md @@ -15,5 +15,6 @@ This document lists the known issues that you may experience after you install t - [517815 - BCL - Stack traces are missing source information for frames with debug information in the Portable PDB format when running on .NET Framework 4.7.1](https://github.com/Microsoft/dotnet/blob/master/releases/net471/KnownIssues/517815-BCL%20Stack%20traces%20are%20missing%20source%20information%20for%20frames%20with%20debug%20information%20in%20the%20Portable%20PDB%20format.md) - [553390 - BCL - SGEN crashes trying to load the System.IO.Compression.FileSystem reference assembly]( https://github.com/Microsoft/dotnet/blob/master/releases/net471/KnownIssues/553390%20-%20BCL%20-%20SGEN%20crashes%20because%20it%20references%20System.IO.Compression.ZipFile.dll.md) - [534719 - BCL - Targeting .NET Framework 4.7.1 copies extra files to your bin directory](https://github.com/Microsoft/dotnet/blob/master/releases/net471/KnownIssues/514195-Targeting%20.NET%20Framework%204.7.1%20copies%20extra%20files%20to%20your%20bin%20directory.md) +- [623552 - BCL - Assembly versions higher than 4.0.0.0 for System.IO.Compression.ZipFile cannot be loaded without a binding redirect](https://github.com/Microsoft/dotnet/blob/master/releases/net471/KnownIssues/623552-BCL%20Higher%20assembly%20versions%20that%204.0.0.0%20for%20System.IO.Compression.ZipFile%20cannot%20be%20loaded%20without%20a%20binding%20redirect.md) - [523633 - Setup - Application crashes occur when running on the .NET Framework 4.7.1 after upgrading from Windows 10 Anniversary Update to Windows 10 Creators Update](https://github.com/Microsoft/dotnet/blob/master/releases/net471/KnownIssues/523633%20-%20Setup%20-%20OS%20upgrade%20to%20Windows%2010%20gets%20the%20product%20in%20bad%20state.md) - [534719 - Networking - ServicePoint.ConnectionLimit default behavior with loopback changed unexpectedly](https://github.com/Microsoft/dotnet/blob/master/releases/net471/KnownIssues/534719-Networking.ServicePoint.ConnectionLimit%20default%20behavior%20changed.md) From be8a9f70a7114dbffa31d1340d393802dae9c84e Mon Sep 17 00:00:00 2001 From: Ron Petrusha Date: Wed, 20 Jun 2018 17:10:01 -0700 Subject: [PATCH 650/872] Copied compat topic from net472 branch (#783) --- Documentation/compatibility/README.md | 1 + ...patcher.Invoke-in-cleanup-of-WeakEvents.md | 45 +++++++++++++++++++ 2 files changed, 46 insertions(+) create mode 100644 Documentation/compatibility/wpf-AppDomain-shutdown-handling-may-now-call-Dispatcher.Invoke-in-cleanup-of-WeakEvents.md diff --git a/Documentation/compatibility/README.md b/Documentation/compatibility/README.md index c9b08c46b..a02b37c52 100644 --- a/Documentation/compatibility/README.md +++ b/Documentation/compatibility/README.md @@ -32,6 +32,7 @@ Please help us improve the [.NET Framework Application Compatibility documents]( - [Support special relative URI notation when Unicode is present](uri-unicode-scheme-only-relative.md) - [The default hash algorithm for WPF's Markup Compiler is now SHA256](wpf-MarkupCompiler-default-hash-algorithm-is-now-SHA256.md) - [WinForm's Domain upbutton and downbutton actions are in sync now](winform's-DomainUpDownControl-button's-actions-in-sync.md) +- [WPF AppDomain Shutdown Handling May Now Call Dispatcher.Invoke in Cleanup of Weak Events](wpf-AppDomain-shutdown-handling-may-now-call-Dispatcher.Invoke-in-cleanup-of-WeakEvents.md) - [WPF Changing a primary key when displaying ADO data in a Master/Detail scenario](wpf-MasterDetail-ADOdata-PrimaryKey.md) - [WPF FocusVisual for RadioButton and CheckBox Now Displays Correctly When The Controls Have No Content](wpf-focus-visual-for-radiobutton-and-checkbox-displays-correctly-when-there-is-no-content.md) - [WPF TextBox/PasswordBox Text Selection Does Not Follow System Colors](wpf-TextBox-PasswordBox-text-selection-does-not-follow-system-colors.md) diff --git a/Documentation/compatibility/wpf-AppDomain-shutdown-handling-may-now-call-Dispatcher.Invoke-in-cleanup-of-WeakEvents.md b/Documentation/compatibility/wpf-AppDomain-shutdown-handling-may-now-call-Dispatcher.Invoke-in-cleanup-of-WeakEvents.md new file mode 100644 index 000000000..245bebf36 --- /dev/null +++ b/Documentation/compatibility/wpf-AppDomain-shutdown-handling-may-now-call-Dispatcher.Invoke-in-cleanup-of-WeakEvents.md @@ -0,0 +1,45 @@ +## WPF AppDomain Shutdown Handling May Now Call Dispatcher.Invoke in Cleanup of Weak Events + +### Scope +Edge + +### Version Introduced +4.7.2 + +### Source Analyzer Status +NotPlanned + +### Change Description +In .NET Framework 4.7.1 and earlier versions, WPF potentially creates a on the .NET finalizer thread during AppDomain shutdown. This was fixed in +.NET Framework 4.7.2 and later versions by making the cleanup of weak events thread-aware. Due to this, WPF may call to complete the cleanup process. + +In certain applications, this change in finalizer timing can potentially cause exceptions during AppDomain or process shutdown. This is generally seen in applications that do not correctly +shut down dispatchers running on worker threads prior to process or AppDomain shutdown. Such applications should take care to properly manage the lifetime of dispatchers. + +- [X] Quirked +- [ ] Build-time break + +### Recommended Action +In .NET Framework 4.7.2 and later versions, developers can disable this fix in order to help alleviate (but not eliminate) timing issues that may occur due to the cleanup change. + +To disable the change in cleanup, use the following AppContext flag. + +```xml + + + + + +``` + +### Affected APIs +Not detectable via API analysis + +### Category +Windows Presentation Foundation (WPF) + + + + From 1b472406d068cfda305a761f6391b7394b025ec1 Mon Sep 17 00:00:00 2001 From: Zach Montoya Date: Wed, 20 Jun 2018 17:12:14 -0700 Subject: [PATCH 651/872] Fix the .NET native 1.7 release notes to correctly state the package contents of UWP 5.4.2 and UWP 6.0.6 --- releases/UWP/net-native1.7/README.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/releases/UWP/net-native1.7/README.md b/releases/UWP/net-native1.7/README.md index fa57d0aec..9e20d1ac5 100644 --- a/releases/UWP/net-native1.7/README.md +++ b/releases/UWP/net-native1.7/README.md @@ -3,7 +3,7 @@ You can see what was included in each .NET Native 1.7 ([Microsoft.NETCore.Univer When using Visual Studio these packages require Visual Studio 2017 or later. -### UWP 5.4.2 (.NET native tools 1.7.3) (January 9th, 2018) +### UWP 6.0.6 (.NET native tools 1.7.3) (January 9th, 2018) - Fixed CVE-2018-0786: Security Feature Bypass in X509 Certificate Validation: https://github.com/Microsoft/dotnet/issues/597 ### UWP 6.0.5 (.NET native tools 1.7.3) (December 12th, 2017) @@ -13,6 +13,9 @@ When using Visual Studio these packages require Visual Studio 2017 or later. - Fixed an unhandled exception when ClientWebSocket loses connection to server. [518456] - Fixed a regression in the 1.7 toolchain causing winmd file corruption when the file stream is left open. [496929] +### UWP 5.4.2 (.NET native tools 1.7.1) (January 9th, 2018) +- Fixed CVE-2018-0786: Security Feature Bypass in X509 Certificate Validation: https://github.com/Microsoft/dotnet/issues/597 + ### UWP 5.4.1 (.NET native tools 1.7.1) (October 9th, 2017) - Fixed an issue with Microsoft.NetNative.targets that prevented C++ hybrid apps from compiling; apps would fail to compile due to an attempt to write a file to a folder that does not exist. [511674] From 4d23d087b7efae98d802bb25d2c21266fa6a2ccc Mon Sep 17 00:00:00 2001 From: merriemcgaw Date: Thu, 21 Jun 2018 16:35:16 -0700 Subject: [PATCH 652/872] Initial changes --- ...TextBox column Readonly property set as true.md | 14 ++++++++++++++ releases/net472/dotnet472-known-issues.md | 1 + 2 files changed, 15 insertions(+) create mode 100644 releases/net472/KnownIssues/599936 - Narrator does not annouce the ReadOnly Status for DataGridView TextBox column with the TextBox column Readonly property set as true.md diff --git a/releases/net472/KnownIssues/599936 - Narrator does not annouce the ReadOnly Status for DataGridView TextBox column with the TextBox column Readonly property set as true.md b/releases/net472/KnownIssues/599936 - Narrator does not annouce the ReadOnly Status for DataGridView TextBox column with the TextBox column Readonly property set as true.md new file mode 100644 index 000000000..0b5f3c35d --- /dev/null +++ b/releases/net472/KnownIssues/599936 - Narrator does not annouce the ReadOnly Status for DataGridView TextBox column with the TextBox column Readonly property set as true.md @@ -0,0 +1,14 @@ +# Narrator does not annouce the ReadOnly Status for DataGridView TextBox column with the TextBox column Readonly property set as true + +## Symptoms +Narrator does not announce the value of the ReadOnly property of the System.Windows.Forms.DataGridViewTextBoxColumn. This is the case regardless of the value of the ReadOnly property. This could cause confusion for Narrator users when editing content in a DataGridViewTextBoxColumn. +## Cause +The issue is caused by changes to updates in .NET Framework 4.7.2 which improved the accessibility support of the DataGridView. That change caused Narrator to be unable to narrate the ReadOnly status of the TextBoxColumn regardless of the setting. + +## Workaround +There is no workaround for this issue. + +## Resolution +A proper fix of the DataGridView AccessibleObject will ship in the coming versions of .NET Framework. This known issue will be updated with more details when that happens. + + diff --git a/releases/net472/dotnet472-known-issues.md b/releases/net472/dotnet472-known-issues.md index 570f5e1de..a20776fbe 100644 --- a/releases/net472/dotnet472-known-issues.md +++ b/releases/net472/dotnet472-known-issues.md @@ -9,3 +9,4 @@ This document lists the known issues that you may experience after you install t - [560016 - XBAP - Applications targeting .NET 2.0,3.5 select wrong runtime version](https://github.com/Microsoft/dotnet/blob/master/releases/net472/KnownIssues/560016-XBAP%20Applications%20targeting%20.NET%202.0%2C3.5%20select%20wrong%20runtime%20version.md) - [611802 - SQL - SQLConnection.ConnectionString throws NullReferenceException](https://github.com/Microsoft/dotnet/blob/master/releases/net472/KnownIssues/611802%20-%20SQLConnection.ConnectionString%20throws%20NullReferenceException%20.md) - [613745 - BCL - Single-name references are removed by the SDK when targeting 4.7.2](https://github.com/Microsoft/dotnet/blob/master/releases/net472/KnownIssues/613745%20-%20Single-name%20references%20are%20removed%20by%20the%20SDK%20when%20targeting%204.7.2.md) +- [599936 - WinForms - Narrator does not annouce the ReadOnly Status for DataGridView TextBox column with the TextBox column Readonly property set as true](https://github.com/Microsoft/dotnet/blob/master/releases/net472/KnownIssues/599936%20Narrator%20does%20not%20annouce%20the%20ReadOnly%20Status%20for%20DataGridView%20TextBox%20column%20with%20the%20TextBox%20column%20Readonly%20property%20set%20as%20true.md) \ No newline at end of file From eed325b8712917ef4eb37e828f443d015398504b Mon Sep 17 00:00:00 2001 From: merriemcgaw Date: Thu, 21 Jun 2018 17:06:56 -0700 Subject: [PATCH 653/872] Remove extra text --- ...umn with the TextBox column Readonly property set as true.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/releases/net472/KnownIssues/599936 - Narrator does not annouce the ReadOnly Status for DataGridView TextBox column with the TextBox column Readonly property set as true.md b/releases/net472/KnownIssues/599936 - Narrator does not annouce the ReadOnly Status for DataGridView TextBox column with the TextBox column Readonly property set as true.md index 0b5f3c35d..d3c963163 100644 --- a/releases/net472/KnownIssues/599936 - Narrator does not annouce the ReadOnly Status for DataGridView TextBox column with the TextBox column Readonly property set as true.md +++ b/releases/net472/KnownIssues/599936 - Narrator does not annouce the ReadOnly Status for DataGridView TextBox column with the TextBox column Readonly property set as true.md @@ -3,7 +3,7 @@ ## Symptoms Narrator does not announce the value of the ReadOnly property of the System.Windows.Forms.DataGridViewTextBoxColumn. This is the case regardless of the value of the ReadOnly property. This could cause confusion for Narrator users when editing content in a DataGridViewTextBoxColumn. ## Cause -The issue is caused by changes to updates in .NET Framework 4.7.2 which improved the accessibility support of the DataGridView. That change caused Narrator to be unable to narrate the ReadOnly status of the TextBoxColumn regardless of the setting. +The issue is caused by changes in .NET Framework 4.7.2 which improved the accessibility support of the DataGridView. That change caused Narrator to be unable to narrate the ReadOnly status of the TextBoxColumn regardless of the setting. ## Workaround There is no workaround for this issue. From fd4af9a1cd3367049e87496751fea96c35016a34 Mon Sep 17 00:00:00 2001 From: merriemcgaw Date: Tue, 26 Jun 2018 14:41:36 -0700 Subject: [PATCH 654/872] review changes --- ...with the TextBox column Readonly property set as true.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/releases/net472/KnownIssues/599936 - Narrator does not annouce the ReadOnly Status for DataGridView TextBox column with the TextBox column Readonly property set as true.md b/releases/net472/KnownIssues/599936 - Narrator does not annouce the ReadOnly Status for DataGridView TextBox column with the TextBox column Readonly property set as true.md index d3c963163..de6274fd3 100644 --- a/releases/net472/KnownIssues/599936 - Narrator does not annouce the ReadOnly Status for DataGridView TextBox column with the TextBox column Readonly property set as true.md +++ b/releases/net472/KnownIssues/599936 - Narrator does not annouce the ReadOnly Status for DataGridView TextBox column with the TextBox column Readonly property set as true.md @@ -1,14 +1,14 @@ -# Narrator does not annouce the ReadOnly Status for DataGridView TextBox column with the TextBox column Readonly property set as true + Narrator does not annouce the ReadOnly Status for DataGridView TextBox column with the TextBox column Readonly property set as true ## Symptoms Narrator does not announce the value of the ReadOnly property of the System.Windows.Forms.DataGridViewTextBoxColumn. This is the case regardless of the value of the ReadOnly property. This could cause confusion for Narrator users when editing content in a DataGridViewTextBoxColumn. ## Cause -The issue is caused by changes in .NET Framework 4.7.2 which improved the accessibility support of the DataGridView. That change caused Narrator to be unable to narrate the ReadOnly status of the TextBoxColumn regardless of the setting. +The issue is caused by changes in .NET Framework 4.7.2 that improved the accessibility support of the DataGridView. That change left Narrator unable to narrate the ReadOnly status of the TextBoxColumn regardless of the setting. ## Workaround There is no workaround for this issue. ## Resolution -A proper fix of the DataGridView AccessibleObject will ship in the coming versions of .NET Framework. This known issue will be updated with more details when that happens. +A proper fix of the DataGridView AccessibleObject will ship in coming versions of .NET Framework. This known issue will be updated with more details when that happens. From 71b0cce1472c44ca062c07d627e4b94abeff6b06 Mon Sep 17 00:00:00 2001 From: Vivek Mishra Date: Thu, 28 Jun 2018 01:25:56 +0000 Subject: [PATCH 655/872] Update known issue readme --- Documentation/KnownIssues/README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Documentation/KnownIssues/README.md b/Documentation/KnownIssues/README.md index 29cee31ef..f8881beb2 100644 --- a/Documentation/KnownIssues/README.md +++ b/Documentation/KnownIssues/README.md @@ -2,6 +2,8 @@ The following links provide the known issues about the various .NET Framework versions at the time of their release. They describe the underlying issue and how to resolve them. +- [.NET Framework 4.7.2](http://go.microsoft.com/fwlink/?LinkId=863257) +- [.NET Framework 4.7.1](http://go.microsoft.com/fwlink/?LinkId=852101) - [.NET Framework 4.7](http://go.microsoft.com/fwlink/?LinkId=825308) - [.NET Framework 4.6.2](http://go.microsoft.com/fwlink/?LinkId=780606) - [.NET Framework 4.6.1](http://go.microsoft.com/fwlink/?LinkId=671749) From 694c6aff17d1d2fad7a49d1f2556f897734cc892 Mon Sep 17 00:00:00 2001 From: Vivek Mishra Date: Wed, 4 Jul 2018 03:46:44 +0000 Subject: [PATCH 656/872] Update dotnet472-known-issues.md --- releases/net472/dotnet472-known-issues.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/releases/net472/dotnet472-known-issues.md b/releases/net472/dotnet472-known-issues.md index a20776fbe..882b10b09 100644 --- a/releases/net472/dotnet472-known-issues.md +++ b/releases/net472/dotnet472-known-issues.md @@ -4,9 +4,9 @@ This document lists the known issues that you may experience after you install the Microsoft .NET Framework 4.7.2. ## Product issues for the .NET Framework 4.7.2 -- [405199 - WPF - 405199 - Non-Adorner TextSelection Occludes Text](https://github.com/Microsoft/dotnet/blob/master/releases/net472/KnownIssues/405199%20-%20WPF%20Non-Adorner%20TextSelection%20Occludes%20Text.md) +- [405199 - WPF - Non-Adorner TextSelection Occludes Text](https://github.com/Microsoft/dotnet/blob/master/releases/net472/KnownIssues/405199%20-%20WPF%20Non-Adorner%20TextSelection%20Occludes%20Text.md) - [504055 - WPF - WPF May Not Show Touch Keyboard In All Scenarios on Windows 10 April 2018 Update](https://github.com/Microsoft/dotnet/blob/master/releases/net472/KnownIssues/504055%20-%20WPF%20May%20Not%20Show%20Touch%20Keyboard%20In%20All%20Scenarios%20on%20Windows%2010%20April%202018%20Update.md) - [560016 - XBAP - Applications targeting .NET 2.0,3.5 select wrong runtime version](https://github.com/Microsoft/dotnet/blob/master/releases/net472/KnownIssues/560016-XBAP%20Applications%20targeting%20.NET%202.0%2C3.5%20select%20wrong%20runtime%20version.md) - [611802 - SQL - SQLConnection.ConnectionString throws NullReferenceException](https://github.com/Microsoft/dotnet/blob/master/releases/net472/KnownIssues/611802%20-%20SQLConnection.ConnectionString%20throws%20NullReferenceException%20.md) - [613745 - BCL - Single-name references are removed by the SDK when targeting 4.7.2](https://github.com/Microsoft/dotnet/blob/master/releases/net472/KnownIssues/613745%20-%20Single-name%20references%20are%20removed%20by%20the%20SDK%20when%20targeting%204.7.2.md) -- [599936 - WinForms - Narrator does not annouce the ReadOnly Status for DataGridView TextBox column with the TextBox column Readonly property set as true](https://github.com/Microsoft/dotnet/blob/master/releases/net472/KnownIssues/599936%20Narrator%20does%20not%20annouce%20the%20ReadOnly%20Status%20for%20DataGridView%20TextBox%20column%20with%20the%20TextBox%20column%20Readonly%20property%20set%20as%20true.md) \ No newline at end of file +- [599936 - WinForms - Narrator does not annouce the ReadOnly Status for DataGridView TextBox column with the TextBox column Readonly property set as true](https://github.com/Microsoft/dotnet/blob/master/releases/net472/KnownIssues/599936%20Narrator%20does%20not%20annouce%20the%20ReadOnly%20Status%20for%20DataGridView%20TextBox%20column%20with%20the%20TextBox%20column%20Readonly%20property%20set%20as%20true.md) From 561d06d7c119b4dcb67a4a9feb4b942d48f94f80 Mon Sep 17 00:00:00 2001 From: Vivek Mishra Date: Mon, 9 Jul 2018 17:51:44 -0700 Subject: [PATCH 657/872] Update 599936 - Narrator does not annouce the ReadOnly Status for DataGridView TextBox column with the TextBox column Readonly property set as true.md --- ...umn with the TextBox column Readonly property set as true.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/releases/net472/KnownIssues/599936 - Narrator does not annouce the ReadOnly Status for DataGridView TextBox column with the TextBox column Readonly property set as true.md b/releases/net472/KnownIssues/599936 - Narrator does not annouce the ReadOnly Status for DataGridView TextBox column with the TextBox column Readonly property set as true.md index de6274fd3..a5365335a 100644 --- a/releases/net472/KnownIssues/599936 - Narrator does not annouce the ReadOnly Status for DataGridView TextBox column with the TextBox column Readonly property set as true.md +++ b/releases/net472/KnownIssues/599936 - Narrator does not annouce the ReadOnly Status for DataGridView TextBox column with the TextBox column Readonly property set as true.md @@ -1,4 +1,4 @@ - Narrator does not annouce the ReadOnly Status for DataGridView TextBox column with the TextBox column Readonly property set as true + # Narrator does not annouce the ReadOnly Status for DataGridView TextBox column with the TextBox column Readonly property set as true ## Symptoms Narrator does not announce the value of the ReadOnly property of the System.Windows.Forms.DataGridViewTextBoxColumn. This is the case regardless of the value of the ReadOnly property. This could cause confusion for Narrator users when editing content in a DataGridViewTextBoxColumn. From 3d7a41b133e5369217ab4f914cb9700d53644509 Mon Sep 17 00:00:00 2001 From: Vivek Mishra Date: Mon, 9 Jul 2018 17:52:05 -0700 Subject: [PATCH 658/872] Update dotnet472-known-issues.md --- releases/net472/dotnet472-known-issues.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/releases/net472/dotnet472-known-issues.md b/releases/net472/dotnet472-known-issues.md index 882b10b09..202cc6eb3 100644 --- a/releases/net472/dotnet472-known-issues.md +++ b/releases/net472/dotnet472-known-issues.md @@ -9,4 +9,4 @@ This document lists the known issues that you may experience after you install t - [560016 - XBAP - Applications targeting .NET 2.0,3.5 select wrong runtime version](https://github.com/Microsoft/dotnet/blob/master/releases/net472/KnownIssues/560016-XBAP%20Applications%20targeting%20.NET%202.0%2C3.5%20select%20wrong%20runtime%20version.md) - [611802 - SQL - SQLConnection.ConnectionString throws NullReferenceException](https://github.com/Microsoft/dotnet/blob/master/releases/net472/KnownIssues/611802%20-%20SQLConnection.ConnectionString%20throws%20NullReferenceException%20.md) - [613745 - BCL - Single-name references are removed by the SDK when targeting 4.7.2](https://github.com/Microsoft/dotnet/blob/master/releases/net472/KnownIssues/613745%20-%20Single-name%20references%20are%20removed%20by%20the%20SDK%20when%20targeting%204.7.2.md) -- [599936 - WinForms - Narrator does not annouce the ReadOnly Status for DataGridView TextBox column with the TextBox column Readonly property set as true](https://github.com/Microsoft/dotnet/blob/master/releases/net472/KnownIssues/599936%20Narrator%20does%20not%20annouce%20the%20ReadOnly%20Status%20for%20DataGridView%20TextBox%20column%20with%20the%20TextBox%20column%20Readonly%20property%20set%20as%20true.md) +- [599936 - WinForms - Narrator does not annouce the ReadOnly Status for DataGridView TextBox column with the TextBox column Readonly property set as true](https://github.com/Microsoft/dotnet/blob/master/releases/net472/KnownIssues/599936%20-%20Narrator%20does%20not%20annouce%20the%20ReadOnly%20Status%20for%20DataGridView%20TextBox%20column%20with%20the%20TextBox%20column%20Readonly%20property%20set%20as%20true.md) From c8e537249cc7bf5da228d7af4e5f98a2d59d773f Mon Sep 17 00:00:00 2001 From: Vivek Mishra Date: Tue, 10 Jul 2018 12:14:09 -0700 Subject: [PATCH 659/872] Publishing 472 WU release related changes (#802) * Update release notes for ZDP fixes * Update known issue for SQL bug 611802 * Update known issue for SQL and Readme * Fixed typos * Fixed Readme * Fixes for review comments --- ...ection.ConnectionString throws NullReferenceException .md | 4 +++- releases/net472/README.md | 3 ++- releases/net472/dotnet472-changes.md | 5 +++++ 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/releases/net472/KnownIssues/611802 - SQLConnection.ConnectionString throws NullReferenceException .md b/releases/net472/KnownIssues/611802 - SQLConnection.ConnectionString throws NullReferenceException .md index 689010a48..450e2efb2 100644 --- a/releases/net472/KnownIssues/611802 - SQLConnection.ConnectionString throws NullReferenceException .md +++ b/releases/net472/KnownIssues/611802 - SQLConnection.ConnectionString throws NullReferenceException .md @@ -20,4 +20,6 @@ No known workarounds with .NET Framework 4.7.2. ## Resolution -The .NET team is working on a fix that will be available in a future update. +This issue has been fixed in the [latest update to .NET Framework 4.7.2](https://go.microsoft.com/fwlink/?LinkId=2005309) for all platforms except Windows 10 April 2018 Update. + +For Windows 10 April 2018 Update, the fix will be available in the upcoming Cumulative Update. diff --git a/releases/net472/README.md b/releases/net472/README.md index d8938d113..b89897ed8 100644 --- a/releases/net472/README.md +++ b/releases/net472/README.md @@ -3,7 +3,8 @@ You can learn about the changes made in the .NET Framework 4.7.2. - [Download](http://go.microsoft.com/fwlink/?LinkId=863262) -- [.NET Framework 4.7.2 Announcement blog post](https://go.microsoft.com/fwlink/?linkid=863281) +- [.NET Framework 4.7.2 RTM Announcement blog post](https://go.microsoft.com/fwlink/?linkid=863281) +- [.NET Framework 4.7.2 Windows Update release blog post](https://go.microsoft.com/fwlink/?LinkId=2005309) - [Release notes](dotnet472-changes.md) - [Application compatibility](https://go.microsoft.com/fwlink/?linkid=863254) - [API changes](dotnet472-api-changes.md) diff --git a/releases/net472/dotnet472-changes.md b/releases/net472/dotnet472-changes.md index 6fe3b966a..74ac710e3 100644 --- a/releases/net472/dotnet472-changes.md +++ b/releases/net472/dotnet472-changes.md @@ -125,6 +125,8 @@ * Fixed error connecting to read only secondary via routing table when connecting using the AOAG listener and specifying Column Encryption Setting=Enabled and ApplicationIntent=Readonly. [510851, System.Data.dll, Bug] * Integrating Azure AD Universal and Multi-factor authentication (MFA) support with SQL .NET driver. [521874, System.Data.dll, Feature] * Signature verification results are now cached improving query execution times for enclave-based queries. [552762, System.Data.dll, Feature] +* Fixes an issue where while using SqlConnection.ConnectionString to set a null or empty connection string a NRE exception would be thrown by the usage of the API while using .Net Framework 4.7.2. [611802, System.Data.dll, Bug] +* While connecting to Azure SQL DB and using MultipleActiveResultSets=true in the connection string with System.Data.SqlClient.SqlConnection, the async query operations would result in a bad TDS protocol request stream being sent from the client, causing the async query APIs to fail. This is now fixed. [620109, System.Data.dll , Bug] ## WCF * Fixed service response problems owing to deadlock in SharedTcpTransportManager.OnClose and OnReceiveComplete. [455781, System.ServiceModel.dll, Bug] @@ -219,3 +221,6 @@ * Fixed a problem where a WPF application that changes TreeView.IsEnabled and (at the same time) changes the underlying collection(s) could experience a spurious ElementNotAvailableException. [581149, PresentationCore.dll, PresentationFramework.dll, Bug] * Fixed a problem where a WPF application can crash with NullReferenceException when changing a property used by a DataTrigger whose host element has been removed from the visual tree. This crash only occurs if the host element is garbage-collected during a small window of time during the property-change notification. [581151, PresentationCore.dll, Bug] * Fixed a problem that causes XAML Browser Applications (XBAP’s) targeting .NET 3.5 to sometimes be loaded using .NET 4.x runtime incorrectly. This fix requires the setting of an opt-in registry key described at https://github.com/Microsoft/dotnet/blob/net472/releases/net472/KnownIssues/560016-XBAP%20Applications%20targeting%20.NET%202.0%2C3.5%20select%20wrong%20runtime%20version.md [581487, PresentationHost_v0400.dll, Bug] +* Adds an AppContext switch that opts out of some work done during AppDomain or process shutdown. This can reduce (but not eliminate) the chance of a crash in apps that make unwarranted assumptions about the timing of the finalizer thread. [593963, WindowsBase.dll, Bug] +* Fixes a crash in WPF when replacing multiple characters with a single character (in a different language than the replaced text) using IMEPad. [605996, PresentationFramework.dll, Bug] +* ComboBox grouped items now report children correctly via UIAutomation. [605922, PresentationFramework.dll, Bug] From 011349a61ec751a7dba231a9cfeed2fe5ba347a6 Mon Sep 17 00:00:00 2001 From: Rob LaDuca Date: Wed, 11 Jul 2018 11:41:19 -0700 Subject: [PATCH 660/872] WPF Known Issue 593963 (#796) * WPF Known Issue 593963 Adding known issue doc for Salon IRIS issue. * Addressing feedback Changing links to actual external links. Adding a link to the resolution KB for touch KB issues in RS4. --- ...enarios on Windows 10 April 2018 Update.md | 4 +-- ...ns during AppDomain or process shutdown.md | 26 +++++++++++++++++++ 2 files changed, 27 insertions(+), 3 deletions(-) create mode 100644 releases/net472/KnownIssues/593963 - WPF Exceptions during AppDomain or process shutdown.md diff --git a/releases/net472/KnownIssues/504055 - WPF May Not Show Touch Keyboard In All Scenarios on Windows 10 April 2018 Update.md b/releases/net472/KnownIssues/504055 - WPF May Not Show Touch Keyboard In All Scenarios on Windows 10 April 2018 Update.md index eb7876699..01f14877f 100644 --- a/releases/net472/KnownIssues/504055 - WPF May Not Show Touch Keyboard In All Scenarios on Windows 10 April 2018 Update.md +++ b/releases/net472/KnownIssues/504055 - WPF May Not Show Touch Keyboard In All Scenarios on Windows 10 April 2018 Update.md @@ -13,6 +13,4 @@ A WPF change in .NET Framework 4.7.2 is preventing WPF from requesting the touch keyboard in all scenarios. ## Resolution -This will be fixed in an upcoming update for Windows 10 April 2018 Update. - -In the meantime, users can tap another text box within the application or they can explicitly tap the touch keyboard button on the start bar to ensure the keyboard shows. +A fix for this issue is available in [KB4103721](https://support.microsoft.com/en-us/help/4103721/windows-10-update-kb4103721). diff --git a/releases/net472/KnownIssues/593963 - WPF Exceptions during AppDomain or process shutdown.md b/releases/net472/KnownIssues/593963 - WPF Exceptions during AppDomain or process shutdown.md new file mode 100644 index 000000000..c69985a80 --- /dev/null +++ b/releases/net472/KnownIssues/593963 - WPF Exceptions during AppDomain or process shutdown.md @@ -0,0 +1,26 @@ +# WPF Exceptions during AppDomain or process shutdown + +## Symptoms +In certain timing-sensitive WPF applications, exceptions may be seen during AppDomain or process shutdown. + +## Cause +In .NET Framework 4.7.1 and earlier versions, WPF potentially creates a [System.Windows.Threading.Dispatcher](https://docs.microsoft.com/en-us/dotnet/api/system.windows.threading.dispatcher) on the .NET finalizer thread during AppDomain shutdown. This was fixed in .NET Framework 4.7.2 and later versions by making the cleanup of weak events thread-aware. Due to this, WPF may call [Dispatcher.Invoke](https://docs.microsoft.com/en-us/dotnet/api/system.windows.threading.dispatcher.invoke) to complete the cleanup process. + +In certain applications, this change in finalizer timing can potentially cause exceptions during AppDomain or process shutdown. This is generally seen in applications that do not correctly +shut down dispatchers running on worker threads prior to process or AppDomain shutdown. + +## Resolution +WPF applications should take care to properly manage the lifetime of dispatchers to eliminate the possibility of this occurring. + +In .NET Framework 4.7.2 and later versions, developers can disable the call to [Dispatcher.Invoke](https://docs.microsoft.com/en-us/dotnet/api/system.windows.threading.dispatcher.invoke) +in order to help alleviate (but not eliminate) timing issues that may occur due to the cleanup change. + +To disable the change in cleanup, use the following AppContext flag. + +```xml + + + + + +``` From 215dec219c834b4a40598c8dddf73aba4a8c0eea Mon Sep 17 00:00:00 2001 From: Vivek Mishra Date: Wed, 11 Jul 2018 18:47:02 +0000 Subject: [PATCH 661/872] Update known issues index for WPF 593963 --- releases/net472/dotnet472-known-issues.md | 1 + 1 file changed, 1 insertion(+) diff --git a/releases/net472/dotnet472-known-issues.md b/releases/net472/dotnet472-known-issues.md index 202cc6eb3..2e0d9ae50 100644 --- a/releases/net472/dotnet472-known-issues.md +++ b/releases/net472/dotnet472-known-issues.md @@ -6,6 +6,7 @@ This document lists the known issues that you may experience after you install t ## Product issues for the .NET Framework 4.7.2 - [405199 - WPF - Non-Adorner TextSelection Occludes Text](https://github.com/Microsoft/dotnet/blob/master/releases/net472/KnownIssues/405199%20-%20WPF%20Non-Adorner%20TextSelection%20Occludes%20Text.md) - [504055 - WPF - WPF May Not Show Touch Keyboard In All Scenarios on Windows 10 April 2018 Update](https://github.com/Microsoft/dotnet/blob/master/releases/net472/KnownIssues/504055%20-%20WPF%20May%20Not%20Show%20Touch%20Keyboard%20In%20All%20Scenarios%20on%20Windows%2010%20April%202018%20Update.md) +- [593963 - WPF - WPF Exceptions during AppDomain or process shutdown](hhttps://github.com/Microsoft/dotnet/blob/master/releases/net472/KnownIssues/593963%20-%20WPF%20Exceptions%20during%20AppDomain%20or%20process%20shutdown.md) - [560016 - XBAP - Applications targeting .NET 2.0,3.5 select wrong runtime version](https://github.com/Microsoft/dotnet/blob/master/releases/net472/KnownIssues/560016-XBAP%20Applications%20targeting%20.NET%202.0%2C3.5%20select%20wrong%20runtime%20version.md) - [611802 - SQL - SQLConnection.ConnectionString throws NullReferenceException](https://github.com/Microsoft/dotnet/blob/master/releases/net472/KnownIssues/611802%20-%20SQLConnection.ConnectionString%20throws%20NullReferenceException%20.md) - [613745 - BCL - Single-name references are removed by the SDK when targeting 4.7.2](https://github.com/Microsoft/dotnet/blob/master/releases/net472/KnownIssues/613745%20-%20Single-name%20references%20are%20removed%20by%20the%20SDK%20when%20targeting%204.7.2.md) From 2c82cbbb48e1d55ff4642061db8c7b7b68e47dda Mon Sep 17 00:00:00 2001 From: Vivek Mishra Date: Wed, 11 Jul 2018 18:48:05 +0000 Subject: [PATCH 662/872] Update dotnet472-known-issues.md --- releases/net472/dotnet472-known-issues.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/releases/net472/dotnet472-known-issues.md b/releases/net472/dotnet472-known-issues.md index 2e0d9ae50..c7d788920 100644 --- a/releases/net472/dotnet472-known-issues.md +++ b/releases/net472/dotnet472-known-issues.md @@ -6,7 +6,7 @@ This document lists the known issues that you may experience after you install t ## Product issues for the .NET Framework 4.7.2 - [405199 - WPF - Non-Adorner TextSelection Occludes Text](https://github.com/Microsoft/dotnet/blob/master/releases/net472/KnownIssues/405199%20-%20WPF%20Non-Adorner%20TextSelection%20Occludes%20Text.md) - [504055 - WPF - WPF May Not Show Touch Keyboard In All Scenarios on Windows 10 April 2018 Update](https://github.com/Microsoft/dotnet/blob/master/releases/net472/KnownIssues/504055%20-%20WPF%20May%20Not%20Show%20Touch%20Keyboard%20In%20All%20Scenarios%20on%20Windows%2010%20April%202018%20Update.md) -- [593963 - WPF - WPF Exceptions during AppDomain or process shutdown](hhttps://github.com/Microsoft/dotnet/blob/master/releases/net472/KnownIssues/593963%20-%20WPF%20Exceptions%20during%20AppDomain%20or%20process%20shutdown.md) +- [593963 - WPF - WPF Exceptions during AppDomain or process shutdown](https://github.com/Microsoft/dotnet/blob/master/releases/net472/KnownIssues/593963%20-%20WPF%20Exceptions%20during%20AppDomain%20or%20process%20shutdown.md) - [560016 - XBAP - Applications targeting .NET 2.0,3.5 select wrong runtime version](https://github.com/Microsoft/dotnet/blob/master/releases/net472/KnownIssues/560016-XBAP%20Applications%20targeting%20.NET%202.0%2C3.5%20select%20wrong%20runtime%20version.md) - [611802 - SQL - SQLConnection.ConnectionString throws NullReferenceException](https://github.com/Microsoft/dotnet/blob/master/releases/net472/KnownIssues/611802%20-%20SQLConnection.ConnectionString%20throws%20NullReferenceException%20.md) - [613745 - BCL - Single-name references are removed by the SDK when targeting 4.7.2](https://github.com/Microsoft/dotnet/blob/master/releases/net472/KnownIssues/613745%20-%20Single-name%20references%20are%20removed%20by%20the%20SDK%20when%20targeting%204.7.2.md) From 98f6372ac5a756dc820437508ef1541df95cbc03 Mon Sep 17 00:00:00 2001 From: Ron Petrusha Date: Wed, 11 Jul 2018 11:52:28 -0700 Subject: [PATCH 663/872] Updated known issues index (#803) --- releases/net472/dotnet472-known-issues.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/releases/net472/dotnet472-known-issues.md b/releases/net472/dotnet472-known-issues.md index c7d788920..4b8e7df56 100644 --- a/releases/net472/dotnet472-known-issues.md +++ b/releases/net472/dotnet472-known-issues.md @@ -8,6 +8,7 @@ This document lists the known issues that you may experience after you install t - [504055 - WPF - WPF May Not Show Touch Keyboard In All Scenarios on Windows 10 April 2018 Update](https://github.com/Microsoft/dotnet/blob/master/releases/net472/KnownIssues/504055%20-%20WPF%20May%20Not%20Show%20Touch%20Keyboard%20In%20All%20Scenarios%20on%20Windows%2010%20April%202018%20Update.md) - [593963 - WPF - WPF Exceptions during AppDomain or process shutdown](https://github.com/Microsoft/dotnet/blob/master/releases/net472/KnownIssues/593963%20-%20WPF%20Exceptions%20during%20AppDomain%20or%20process%20shutdown.md) - [560016 - XBAP - Applications targeting .NET 2.0,3.5 select wrong runtime version](https://github.com/Microsoft/dotnet/blob/master/releases/net472/KnownIssues/560016-XBAP%20Applications%20targeting%20.NET%202.0%2C3.5%20select%20wrong%20runtime%20version.md) +- [593963 - WPF Exceptions during AppDomain or process shutdown](https://github.com/Microsoft/dotnet/blob/master/releases/net472/KnownIssues/593963%20-%20WPF%20Exceptions%20during%20AppDomain%20or%20process%20shutdown.md) +- [599936 - WinForms - Narrator does not annouce the ReadOnly Status for DataGridView TextBox column with the TextBox column Readonly property set as true](https://github.com/Microsoft/dotnet/blob/master/releases/net472/KnownIssues/599936%20-%20Narrator%20does%20not%20annouce%20the%20ReadOnly%20Status%20for%20DataGridView%20TextBox%20column%20with%20the%20TextBox%20column%20Readonly%20property%20set%20as%20true.md) - [611802 - SQL - SQLConnection.ConnectionString throws NullReferenceException](https://github.com/Microsoft/dotnet/blob/master/releases/net472/KnownIssues/611802%20-%20SQLConnection.ConnectionString%20throws%20NullReferenceException%20.md) - [613745 - BCL - Single-name references are removed by the SDK when targeting 4.7.2](https://github.com/Microsoft/dotnet/blob/master/releases/net472/KnownIssues/613745%20-%20Single-name%20references%20are%20removed%20by%20the%20SDK%20when%20targeting%204.7.2.md) -- [599936 - WinForms - Narrator does not annouce the ReadOnly Status for DataGridView TextBox column with the TextBox column Readonly property set as true](https://github.com/Microsoft/dotnet/blob/master/releases/net472/KnownIssues/599936%20-%20Narrator%20does%20not%20annouce%20the%20ReadOnly%20Status%20for%20DataGridView%20TextBox%20column%20with%20the%20TextBox%20column%20Readonly%20property%20set%20as%20true.md) From f46e01a4bab3c70b256a546f2d181eeb426c9952 Mon Sep 17 00:00:00 2001 From: Maoni Stephens Date: Sun, 22 Jul 2018 18:06:37 -0700 Subject: [PATCH 664/872] added more detail for this bug (#806) * added more detail for this bug * Minor grammatical and punctuation changes. --- ...th high rate of large object allocation.md | 29 +++++++++++++------ 1 file changed, 20 insertions(+), 9 deletions(-) diff --git a/releases/net471/KnownIssues/470006-GC Crashes with high rate of large object allocation.md b/releases/net471/KnownIssues/470006-GC Crashes with high rate of large object allocation.md index c3e1c2a01..344f7ff0f 100644 --- a/releases/net471/KnownIssues/470006-GC Crashes with high rate of large object allocation.md +++ b/releases/net471/KnownIssues/470006-GC Crashes with high rate of large object allocation.md @@ -2,14 +2,25 @@ ## Symptoms -When background GC is enabled, an application running on .NET Framework 4.7.1 experiences +When background GC (BGC) is enabled, an application running on .NET Framework 4.7.1 experiences intermittent crashes that did not occur when running on other .NET Framework versions. ## Cause -.NET Framework 4.7.1 includes changes that improve background GC performance. -Because of these changes, a rare combination of factors can cause the background GC -to reclaim a large object while the program is still using it. +.NET Framework 4.7.1 includes changes that improve background GC performance. It allows large object allocations during part of the BGC sweep phase, and the large objects allocated during this time must be marked correctly in the allocator or they will be erroneously reclaimed. A GC can be triggered during the large object allocator code path, and if the following happens, this bug will be triggered: + +- This is a BGC. + +- The range for BGC changed from the previous range (ie, a new segment is allocated outside of the previous range). + +- The new large object is in the region that didn't exist in the previous range. + +- The new large object did its marking during the BGC sweep phase. + +This set of conditions make this bug very rare. + +Since GC doesn't shrink the range, it means this bug usually is only seen very early on during a process or when you suddenly allocate more large objects than before, which requires acquiring a new segment that's outside the heap range. + ## Impact @@ -17,16 +28,16 @@ This problem impacts applications that run with the background GC enabled and th and free large objects at a high rate. As described in the article [Fundamentals of Garbage Collection](https://docs.microsoft.com/en-us/dotnet/standard/garbage-collection/fundamentals#the-managed-heap), a large object is any object that is 85,000 bytes or larger in size. -This problem is rare, and is more likely to occur when running on the x86 version of the -.NET Framework than when running on the x64 version of the 4.7.1 .NET Framework. +This problem is rare and is more likely to occur when running on the x86 version of the +.NET Framework 4.7.1 than when running on the x64 version of the .NET Framework 4.7.1. ## Workarounds -The most practical workaround is to disable the background GC by setting the enabled attribute of the [ element](https://docs.microsoft.com/en-us/dotnet/framework/configure-apps/file-schema/runtime/gcconcurrent-element) in the - section of your application configuration file to false. +The most practical workaround is to disable background GC by setting the `enabled` attribute of the [ element](https://docs.microsoft.com/en-us/dotnet/framework/configure-apps/file-schema/runtimea/gcconcurrent-element) in the + section of your application configuration file to `false`. The only other workaround is to change the application to allocate and free large objects -at a much lower rate. +at a much lower rate. However, note that this workaround doesn't provide a guarantee; it just makes the chance of this bug happening smaller. ## Resolution From 29a367d804458d5916e6a33f128d28f8dacdc7e1 Mon Sep 17 00:00:00 2001 From: Justin Gielski Date: Mon, 23 Jul 2018 15:06:07 -0400 Subject: [PATCH 665/872] Update dotnet-developer-projects.md (#813) * Update dotnet-developer-projects.md * Update dotnet-developer-projects.md --- dotnet-developer-projects.md | 1 + 1 file changed, 1 insertion(+) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 9d9d464ad..8804970f1 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -118,6 +118,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [ColorSharp](https://github.com/Litipk/ColorSharp) - Library to handle color spaces and light spectrums. * [ComparerExtensions](https://github.com/jehugaleahsa/comparerextensions) - Build IComparer and IEqualityComparer objects using natural language syntax. * [Comparers](https://github.com/StephenCleary/Comparers) - Fluent syntax for building comparers (and equality comparers) and implementing object comparison. + * [CoordinateSharp](https://github.com/Tronald/CoordinateSharp) - Parse or convert geographic coordinate formats and calculate location based solar/lunar information. * [Cricket](https://github.com/fsprojects/Cricket) - Actor library. * [DateTimeExtensions](https://github.com/kappy/DateTimeExtensions) - Common Date Time operations on the form of extensions to System.DateTime, including holidays and working days calculations on several culture locales. * [DeveelDB](https://github.com/deveel/deveeldb) - SQL-99 embeddable database engine for .NET. From 4ee609e218f3d9ebfa29072cc4ad200c1fa35ba8 Mon Sep 17 00:00:00 2001 From: Ron Petrusha Date: Thu, 26 Jul 2018 14:07:36 -0700 Subject: [PATCH 666/872] Changed formatting for clarity (#819) * Changed formatting for clarity * Minor changes --- dotnet-free-oss-services.md | 68 +++++++++++++++++++++---------------- 1 file changed, 39 insertions(+), 29 deletions(-) diff --git a/dotnet-free-oss-services.md b/dotnet-free-oss-services.md index 7d528e718..dd85ac9f4 100644 --- a/dotnet-free-oss-services.md +++ b/dotnet-free-oss-services.md @@ -4,41 +4,51 @@ This community maintained list showcases free tools and services for open source Please sort projects alphabetically and provide a one-line description. Where possible links should be to a page showing free open source plans (for example a web page, blog post or pricing page with open source plan detailed). Create new sections, as appropriate. -* IDEs - * [ReSharper](https://www.jetbrains.com/buy/opensource/?product=resharper) - Visual Studio extension providing code analysis, formatting, refactoring and more. - * [Visual Studio Community](http://www.visualstudio.com/en-gb/products/visual-studio-community-vs) - Full version of Visual Studio available free - * [VS Anywhere](https://vsanywhere.com/open_source_students_and_educational_centers.aspx) - Visual Studio extension for in IDE collaborative development. +## IDEs -* Cross Platform Development - * [Xamarin](http://resources.xamarin.com/open-source-contributor.html) - Share .Net code across Windows, iOS, Android and Mac. +* [ReSharper](https://www.jetbrains.com/buy/opensource/?product=resharper) - Visual Studio extension providing code analysis, formatting, refactoring and more. +* [Visual Studio Community](http://www.visualstudio.com/en-gb/products/visual-studio-community-vs) - Full version of Visual Studio available free +* [VS Anywhere](https://vsanywhere.com/open_source_students_and_educational_centers.aspx) - Visual Studio extension for in IDE collaborative development. -* Hosted Build and Continous Integration - * [AppVeyor](http://www.appveyor.com/pricing) - Windows based cloud build/CI servers tailored for .Net developers. - * [TeamCity at CodeBetter](http://codebetter.com/codebetter-ci) - JetBrains TeamCity CI server made available for open source projects by CodeBetter. - * [TravisCI](https://travis-ci.com/plans) - Hosted CI service supporting .Net builds via Mono on Linux. +## Cross Platform Development -* Profilers - * [ANTS Memory Profiler](http://reflectorblog.red-gate.com/2013/07/open-source) - .Net memory profiler from redgate. - * [ANTS Performance Profiler](http://reflectorblog.red-gate.com/2013/07/open-source) - .Net performance profiler from redgate. - * [dotTrace](https://www.jetbrains.com/buy/opensource/?product=profiler) - Performance profiler for .Net applications +* [Xamarin](http://resources.xamarin.com/open-source-contributor.html) - Share .Net code across Windows, iOS, Android and Mac. -* Aspect Oriented Programming - * [PostSharp](http://www.postsharp.net/purchase#discounts) - Aspect-oriented programming tool to eradicate boilerplate code. +## Hosted Build and Continous Integration -* Code Analysis - * [Coverity Scan](https://scan.coverity.com) - Static analysis service to identify defects in C# code. - * [dotCover](https://www.jetbrains.com/buy/opensource/?product=dotCover) - Code coverage tool integrated with Visual Studio. - * [.Net Reflector](http://reflectorblog.red-gate.com/2013/07/open-source) - Browse, analyse and decompiler IL code. +* [AppVeyor](http://www.appveyor.com/pricing) - Windows based cloud build/CI servers tailored for .Net developers. +* [TeamCity at CodeBetter](http://codebetter.com/codebetter-ci) - JetBrains TeamCity CI server made available for open source projects by CodeBetter. +* [TravisCI](https://travis-ci.com/plans) - Hosted CI service supporting .Net builds via Mono on Linux. -* Package Management - * [MyGet](https://www.myget.org/opensource) - Publish public NuGet feeds of your packages for free. +## Profilers -* Analytics and Error Reporting - * [Bugsnag](https://bugsnag.com/blog/bugsnag-loves-open-source) - Cross platform error reporting. +* [ANTS Memory Profiler](http://reflectorblog.red-gate.com/2013/07/open-source) - .Net memory profiler from redgate. +* [ANTS Performance Profiler](http://reflectorblog.red-gate.com/2013/07/open-source) - .Net performance profiler from redgate. +* [dotTrace](https://www.jetbrains.com/buy/opensource/?product=profiler) - Performance profiler for .Net applications -* Cloud Resources and Services - * [Azure SDK for .NET](https://www.visualstudio.com/features/azure-tools-vs) - Easily build, manage, and deploy cloud-scale apps with Visual Studio and Azure. +## Aspect Oriented Programming -* Misc - * [Crowdin](https://crowdin.com/page/open-source-project-setup-request) - Localisation management platform. - * [Transifex](https://www.transifex.com/pricing/) - Localisation management platform. \ No newline at end of file +* [PostSharp](http://www.postsharp.net/purchase#discounts) - Aspect-oriented programming tool to eradicate boilerplate code. + +## Code Analysis + +* [Coverity Scan](https://scan.coverity.com) - Static analysis service to identify defects in C# code. +* [dotCover](https://www.jetbrains.com/buy/opensource/?product=dotCover) - Code coverage tool integrated with Visual Studio. +* [.Net Reflector](http://reflectorblog.red-gate.com/2013/07/open-source) - Browse, analyse and decompile IL code. + +## Package Management + +* [MyGet](https://www.myget.org/opensource) - Publish public NuGet feeds of your packages for free. + +## Analytics and Error Reporting + +* [Bugsnag](https://bugsnag.com/blog/bugsnag-loves-open-source) - Cross platform error reporting. + +## Cloud Resources and Services + +* [Azure SDK for .NET](https://www.visualstudio.com/features/azure-tools-vs) - Easily build, manage, and deploy cloud-scale apps with Visual Studio and Azure. + +## Misc + +* [Crowdin](https://crowdin.com/page/open-source-project-setup-request) - Localization management platform. +* [Transifex](https://www.transifex.com/pricing/) - Localization management platform. From e91e6af9b59037b99d3e711f75b2f5eafd243d4b Mon Sep 17 00:00:00 2001 From: Jeff Schwartz Date: Thu, 26 Jul 2018 17:31:52 -0700 Subject: [PATCH 667/872] Resgen compatibility break in .NET 4.7.2 (#820) --- .../resgen-block-mark-of-the-web-content.md | 33 +++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 Documentation/compatibility/resgen-block-mark-of-the-web-content.md diff --git a/Documentation/compatibility/resgen-block-mark-of-the-web-content.md b/Documentation/compatibility/resgen-block-mark-of-the-web-content.md new file mode 100644 index 000000000..cabf932ac --- /dev/null +++ b/Documentation/compatibility/resgen-block-mark-of-the-web-content.md @@ -0,0 +1,33 @@ +## Resgen refuses to load content from the web + +### Scope +Edge + +### Version Introduced +4.7.2 + +### Source Analyzer Status +NotPlanned + +### Change Description +.resx files may contain binary formatted input. If you attempt to use resgen to load a file that was downloaded from an untrusted location, it will fail to load the input by default. + +- [x] Quirked +- [x] Build-time break + +### Recommended Action +Resgen users who require loading binary formatted input from untrusted locations can either remove the mark of the web from the input file or apply the opt-out quirk. + +Add the following registry setting to apply the machine wide opt-out quirk: +[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\SDK] +"AllowProcessOfUntrustedResourceFiles"="true" + +### Category +Core + + + + From 3e956d210712933bea08ee02e92d2e354497a8f3 Mon Sep 17 00:00:00 2001 From: mindems <34209456+mindems@users.noreply.github.com> Date: Fri, 27 Jul 2018 19:37:04 +0200 Subject: [PATCH 668/872] New section Tutorials (#822) --- dotnet-developer-projects.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 8804970f1..cb876284e 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -39,6 +39,9 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [NiL.JS](https://github.com/nilproject/NiL.JS) - A .NET implementation of the ECMAScript language and runtime. * [Phalanger](https://github.com/DEVSENSE/Phalanger) - full-featured PHP runtime & compiler for .NET/Mono frameworks. Phalanger is modern open-source implementation of PHP, compatible with the vast array of existing PHP code. * [Roslyn (.NET Compiler Platform)](https://github.com/dotnet/roslyn) - Open-source C# and Visual Basic compilers with rich code analysis APIs. + +## Tutorials + * [Docker with .NET Core](https://github.com/mindems/Docker.NET) - A tutorial trilogy designed to get you up and running quickly. ## Quality Assurance * [C# Coding Guidelines](https://github.com/dennisdoomen/CSharpGuidelines) - A set of coding guidelines for C# 3.0, 4.0 and 5.0 that extend StyleCop and can be forked and adapted for internal use. From 7d4737dc8075014416fe70ec6220a1aaccac99e4 Mon Sep 17 00:00:00 2001 From: Holly Muenchow Date: Fri, 27 Jul 2018 13:44:08 -0700 Subject: [PATCH 669/872] Update README.md --- releases/UWP/net-native1.7/README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/releases/UWP/net-native1.7/README.md b/releases/UWP/net-native1.7/README.md index 9e20d1ac5..448d9fa9e 100644 --- a/releases/UWP/net-native1.7/README.md +++ b/releases/UWP/net-native1.7/README.md @@ -3,6 +3,9 @@ You can see what was included in each .NET Native 1.7 ([Microsoft.NETCore.Univer When using Visual Studio these packages require Visual Studio 2017 or later. +### UWP 6.1.7 (.NET native tools 1.7.3) (July 27th, 2018) +- Fixed CVE-2018-8356: Security Feature Bypass in X509 Certificate Validation: https://github.com/dotnet/announcements/issues/73 + ### UWP 6.0.6 (.NET native tools 1.7.3) (January 9th, 2018) - Fixed CVE-2018-0786: Security Feature Bypass in X509 Certificate Validation: https://github.com/Microsoft/dotnet/issues/597 From f29daaf4c4c198b982be1eec8b865f563681e456 Mon Sep 17 00:00:00 2001 From: Holly Muenchow Date: Fri, 27 Jul 2018 14:11:46 -0700 Subject: [PATCH 670/872] Update README.md --- releases/UWP/net-native2.1/README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/releases/UWP/net-native2.1/README.md b/releases/UWP/net-native2.1/README.md index 48f928fcd..63edcd7a1 100644 --- a/releases/UWP/net-native2.1/README.md +++ b/releases/UWP/net-native2.1/README.md @@ -4,6 +4,9 @@ You can see what was included in each .NET Native 2.1 ([Microsoft.NETCore.Univer When using Visual Studio these packages require Visual Studio 2017 Version 15.7 or later. +### UWP 6.1.7 (.NET native tools 2.1.8) (July 27th, 2018) +- Fixed CVE-2018-8356: Security Feature Bypass in X509 Certificate Validation: https://github.com/dotnet/announcements/issues/73 + ### UWP 6.1.5 (.NET native tools 2.1.8) (May 30th, 2018) - Updates NETStandard.Library reference from version 2.0.2 to 2.0.3 to fix [UWP reference additional NetStandard dll after 15.7](https://developercommunity.visualstudio.com/content/problem/251571/uwp-reference-additional-netstandard-dll-after-157.html) and [After installing ..., a lot of warnings occur](https://github.com/dotnet/standard/issues/708) From c893e7b4723ca3ef614fee14e882ccdcd4189642 Mon Sep 17 00:00:00 2001 From: Holly Muenchow Date: Fri, 27 Jul 2018 14:11:58 -0700 Subject: [PATCH 671/872] Update README.md --- releases/UWP/net-native1.4/README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/releases/UWP/net-native1.4/README.md b/releases/UWP/net-native1.4/README.md index a3f096b0c..5bac6430b 100644 --- a/releases/UWP/net-native1.4/README.md +++ b/releases/UWP/net-native1.4/README.md @@ -4,6 +4,9 @@ You can see what was included in each .NET Native 1.4 ([Microsoft.NETCore.Univer When using Visual Studio these packages require Visual Studio 2015 Update 3 or later. +### 5.2.6 (July 27th, 2018) +- Fixed CVE-2018-8356: Security Feature Bypass in X509 Certificate Validation: https://github.com/dotnet/announcements/issues/73 + ### 5.2.4 (January 9th, 2018) - Fixed CVE-2018-0786: Security Feature Bypass in X509 Certificate Validation: https://github.com/Microsoft/dotnet/issues/597 From 75bbb83aebdbcdae3a3ea30247adbf9953e35f55 Mon Sep 17 00:00:00 2001 From: Holly Muenchow Date: Sat, 28 Jul 2018 10:06:50 -0700 Subject: [PATCH 672/872] Update readme with 5.4.4 release --- releases/UWP/net-native1.7/README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/releases/UWP/net-native1.7/README.md b/releases/UWP/net-native1.7/README.md index 448d9fa9e..946ab81c8 100644 --- a/releases/UWP/net-native1.7/README.md +++ b/releases/UWP/net-native1.7/README.md @@ -16,6 +16,9 @@ When using Visual Studio these packages require Visual Studio 2017 or later. - Fixed an unhandled exception when ClientWebSocket loses connection to server. [518456] - Fixed a regression in the 1.7 toolchain causing winmd file corruption when the file stream is left open. [496929] +### UWP 5.4.4 (.NET native tools 1.7.3) (July 27th, 2018) +- Fixed CVE-2018-8356: Security Feature Bypass in X509 Certificate Validation: https://github.com/dotnet/announcements/issues/73 + ### UWP 5.4.2 (.NET native tools 1.7.1) (January 9th, 2018) - Fixed CVE-2018-0786: Security Feature Bypass in X509 Certificate Validation: https://github.com/Microsoft/dotnet/issues/597 From a66dcda02e699a4d3b0edd78de653d356d76cb66 Mon Sep 17 00:00:00 2001 From: Holly Muenchow Date: Sat, 28 Jul 2018 10:07:35 -0700 Subject: [PATCH 673/872] Update README.md --- releases/UWP/net-native1.6/README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/releases/UWP/net-native1.6/README.md b/releases/UWP/net-native1.6/README.md index 4935bff08..1c995a5ac 100644 --- a/releases/UWP/net-native1.6/README.md +++ b/releases/UWP/net-native1.6/README.md @@ -4,6 +4,9 @@ You can see what was included in each .NET Native 1.6 ([Microsoft.NETCore.Univer When using Visual Studio these packages require Visual Studio 2017 or later. +### UWP 5.3.7 (July 27th, 2018) +- Fixed CVE-2018-8356: Security Feature Bypass in X509 Certificate Validation: https://github.com/dotnet/announcements/issues/73 + ### 5.3.5 (January 9th, 2018) - Fixed CVE-2018-0786: Security Feature Bypass in X509 Certificate Validation: https://github.com/Microsoft/dotnet/issues/597 From 8e810133ac428f87be6a10e35af21ed5eb315a59 Mon Sep 17 00:00:00 2001 From: Holly Muenchow Date: Sat, 28 Jul 2018 10:08:58 -0700 Subject: [PATCH 674/872] Update README.md --- releases/UWP/net-native2.0/README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/releases/UWP/net-native2.0/README.md b/releases/UWP/net-native2.0/README.md index 1d731047d..f890c0755 100644 --- a/releases/UWP/net-native2.0/README.md +++ b/releases/UWP/net-native2.0/README.md @@ -4,6 +4,9 @@ You can see what was included in each .NET Native 2.0 ([Microsoft.NETCore.Univer When using Visual Studio these packages require Visual Studio 2017 Version 15.4 or later. +### UWP 6.0.10 (.NET native tools 2.0.3) (July 27th, 2018) +- Fixed CVE-2018-8356: Security Feature Bypass in X509 Certificate Validation: https://github.com/dotnet/announcements/issues/73 + ### UWP 6.0.8 (.NET native tools 2.0.3) (March 5th, 2018) - Fixed a packaging and publishing issue. [570878] From 9aba19159fe2d53c0a62e0ddbdc2d8c52d84bcc7 Mon Sep 17 00:00:00 2001 From: Ron Petrusha Date: Mon, 30 Jul 2018 15:39:47 -0700 Subject: [PATCH 675/872] Corrected typo in URL (#826) --- ...0006-GC Crashes with high rate of large object allocation.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/releases/net471/KnownIssues/470006-GC Crashes with high rate of large object allocation.md b/releases/net471/KnownIssues/470006-GC Crashes with high rate of large object allocation.md index 344f7ff0f..10ed0dd52 100644 --- a/releases/net471/KnownIssues/470006-GC Crashes with high rate of large object allocation.md +++ b/releases/net471/KnownIssues/470006-GC Crashes with high rate of large object allocation.md @@ -33,7 +33,7 @@ This problem is rare and is more likely to occur when running on the x86 version ## Workarounds -The most practical workaround is to disable background GC by setting the `enabled` attribute of the [ element](https://docs.microsoft.com/en-us/dotnet/framework/configure-apps/file-schema/runtimea/gcconcurrent-element) in the +The most practical workaround is to disable background GC by setting the `enabled` attribute of the [ element](https://docs.microsoft.com/en-us/dotnet/framework/configure-apps/file-schema/runtime/gcconcurrent-element) in the section of your application configuration file to `false`. The only other workaround is to change the application to allocate and free large objects From 63b87a3fd4b0ff4e1adfe685555c9f7a97d436fc Mon Sep 17 00:00:00 2001 From: Vivek Mishra Date: Tue, 14 Aug 2018 18:09:42 -0700 Subject: [PATCH 676/872] Added known issue for TLS 1.2 --- releases/net471/dotnet471-known-issues.md | 1 + 1 file changed, 1 insertion(+) diff --git a/releases/net471/dotnet471-known-issues.md b/releases/net471/dotnet471-known-issues.md index 4f723be8a..2b614d445 100644 --- a/releases/net471/dotnet471-known-issues.md +++ b/releases/net471/dotnet471-known-issues.md @@ -18,3 +18,4 @@ This document lists the known issues that you may experience after you install t - [623552 - BCL - Assembly versions higher than 4.0.0.0 for System.IO.Compression.ZipFile cannot be loaded without a binding redirect](https://github.com/Microsoft/dotnet/blob/master/releases/net471/KnownIssues/623552-BCL%20Higher%20assembly%20versions%20that%204.0.0.0%20for%20System.IO.Compression.ZipFile%20cannot%20be%20loaded%20without%20a%20binding%20redirect.md) - [523633 - Setup - Application crashes occur when running on the .NET Framework 4.7.1 after upgrading from Windows 10 Anniversary Update to Windows 10 Creators Update](https://github.com/Microsoft/dotnet/blob/master/releases/net471/KnownIssues/523633%20-%20Setup%20-%20OS%20upgrade%20to%20Windows%2010%20gets%20the%20product%20in%20bad%20state.md) - [534719 - Networking - ServicePoint.ConnectionLimit default behavior with loopback changed unexpectedly](https://github.com/Microsoft/dotnet/blob/master/releases/net471/KnownIssues/534719-Networking.ServicePoint.ConnectionLimit%20default%20behavior%20changed.md) +- [663475 - Setup - Applications that rely on TLS 1.2 strong encryption experience connectivity failures after a Windows upgrade](https://support.microsoft.com/help/4458166) From e6dbb0456e3a2f0db6ab0df69d15aab4878cf64d Mon Sep 17 00:00:00 2001 From: Vivek Mishra Date: Tue, 14 Aug 2018 18:11:01 -0700 Subject: [PATCH 677/872] Added known issue for TLS --- releases/net472/dotnet472-known-issues.md | 1 + 1 file changed, 1 insertion(+) diff --git a/releases/net472/dotnet472-known-issues.md b/releases/net472/dotnet472-known-issues.md index 4b8e7df56..d21efd0ec 100644 --- a/releases/net472/dotnet472-known-issues.md +++ b/releases/net472/dotnet472-known-issues.md @@ -12,3 +12,4 @@ This document lists the known issues that you may experience after you install t - [599936 - WinForms - Narrator does not annouce the ReadOnly Status for DataGridView TextBox column with the TextBox column Readonly property set as true](https://github.com/Microsoft/dotnet/blob/master/releases/net472/KnownIssues/599936%20-%20Narrator%20does%20not%20annouce%20the%20ReadOnly%20Status%20for%20DataGridView%20TextBox%20column%20with%20the%20TextBox%20column%20Readonly%20property%20set%20as%20true.md) - [611802 - SQL - SQLConnection.ConnectionString throws NullReferenceException](https://github.com/Microsoft/dotnet/blob/master/releases/net472/KnownIssues/611802%20-%20SQLConnection.ConnectionString%20throws%20NullReferenceException%20.md) - [613745 - BCL - Single-name references are removed by the SDK when targeting 4.7.2](https://github.com/Microsoft/dotnet/blob/master/releases/net472/KnownIssues/613745%20-%20Single-name%20references%20are%20removed%20by%20the%20SDK%20when%20targeting%204.7.2.md) +- [663475 - Setup - Applications that rely on TLS 1.2 strong encryption experience connectivity failures after a Windows upgrade](https://support.microsoft.com/help/4458166) From 7bd4bad401343a98f43cea86bb78d0a7106ff348 Mon Sep 17 00:00:00 2001 From: Ron Petrusha Date: Mon, 20 Aug 2018 09:51:26 -0700 Subject: [PATCH 678/872] Added .NET Guide to documentation readme (#831) * Added .NET Guide * Added separate .NET Standard link --- Documentation/README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Documentation/README.md b/Documentation/README.md index 188127774..6323e4aa1 100644 --- a/Documentation/README.md +++ b/Documentation/README.md @@ -11,3 +11,5 @@ The following .NET Framework documentation is available from Microsoft: - [.NET Framework Documentation](https://docs.microsoft.com/dotnet/articles/framework/) - [.NET Core Documentation](https://docs.microsoft.com/dotnet/articles/core/) +- [.NET Standard Documentation](https://docs.microsoft.com/dotnet/standard/net-standard) +- [General .NET Development](https://docs.microsoft.com/dotnet/standard/) From a9acbe6f5b9a972e1a5f931f38fb7aab263f381d Mon Sep 17 00:00:00 2001 From: mzorec Date: Mon, 20 Aug 2018 18:54:01 +0200 Subject: [PATCH 679/872] Open Source Developer Projects - FlubuCore (#834) "FlubuCore - "Fluent Builder Core" is a cross platform build and deployment automation system. You can define your build and deployment scripts in C# using an intuitive fluent interface. This gives you code completion, IntelliSense, debugging, FlubuCore custom analyzers, and native access to the whole .NET ecosystem inside of your scripts. https://github.com/flubu-core/flubu.core Features: * Intuitive an easy to learn. C#, fluent interface, and IntelliSense make even most complex script creation a breeze. * Large number of often used built-in tasks like e.g. running tests, managing IIS, creating deployment packages, publishing NuGet * packages, executing PowerShell scripts and many more. * Execute your own custom C# code. * Reference any .NET library, NuGet package or C# source code in your scripts. * Pass command line arguments, settings from json configuration file or enviroment variables to your script. * Extending FlubuCore fluent interface by writing your own FlubuCore tasks. * Asynchronous execution of tasks, target dependencies and custom code. * Possibility to test and debug your build scripts. * Easily automate deployments remotely via the FlubuCore Web API. * Possibility to use FlubuCore tasks in any other .NET application. * Improved developer experience with FlubuCore custom analyzers. --- dotnet-developer-projects.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index cb876284e..795e43222 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -244,7 +244,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [CppSharp](https://github.com/mono/CppSharp) - C/C++ bindings generation for .NET. * [Crawler-Lib Build Tools](http://download.crawler-lib.net/BuildTools/) - [A PowerShell based toolbox](http://www.crawler-lib.net/build-tools) for automating the software build process, autmated testing and integration. * [FAKE](http://fsharp.github.io/FAKE/) - Build automation system with capabilities which are similar to make and rake. - * [FlubuCore](https://github.com/flubu-core/flubu.core) - Fluent builder is A C# library for building projects and executing deployment scripts using C# code. + * [FlubuCore](https://github.com/flubu-core/flubu.core) - A cross platform build and deployment automation system for building projects and executing deployment scripts using C# code. * [Fody](https://github.com/Fody/Fody) - Extensible tool for weaving .NET assemblies. * [FsEye](https://github.com/swensensoftware/fseye) - A visual object tree inspector for the F# Interactive. * [FsharpLint](https://github.com/fsprojects/FSharpLint) - Lint tool for F#. From cc7730e718772e861e04cc5eae116de66aaa51d5 Mon Sep 17 00:00:00 2001 From: David Shulman Date: Thu, 6 Sep 2018 11:36:54 -0700 Subject: [PATCH 680/872] Update .NET 4.71 Known issues with networking fix (#842) --- ...imit default behavior with loopback changed unexpectedly.md | 3 ++- ...ng.ServicePoint.ConnectionLimit default behavior changed.md | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/releases/net471/KnownIssues/534719-Networking ServicePoint.ConnectionLimit default behavior with loopback changed unexpectedly.md b/releases/net471/KnownIssues/534719-Networking ServicePoint.ConnectionLimit default behavior with loopback changed unexpectedly.md index c6ca2d76f..cbcae13ab 100644 --- a/releases/net471/KnownIssues/534719-Networking ServicePoint.ConnectionLimit default behavior with loopback changed unexpectedly.md +++ b/releases/net471/KnownIssues/534719-Networking ServicePoint.ConnectionLimit default behavior with loopback changed unexpectedly.md @@ -70,4 +70,5 @@ ServicePointManager.DefaultConnectionLimit = 20; // Actual value should be based Note: This will also change the limits for non-loopback addresses. ## More information -We will fix this problem in a future .NET Framework Quality Rollup release. +This issue was fixed in the [August 2018 Security and Quality Rollup](https://blogs.msdn.microsoft.com/dotnet/2018/08/14/august-2018-security-and-quality-rollup/). +Installing this or later updates will correct the problem. diff --git a/releases/net471/KnownIssues/534719-Networking.ServicePoint.ConnectionLimit default behavior changed.md b/releases/net471/KnownIssues/534719-Networking.ServicePoint.ConnectionLimit default behavior changed.md index 49f8defd5..85cc125f0 100644 --- a/releases/net471/KnownIssues/534719-Networking.ServicePoint.ConnectionLimit default behavior changed.md +++ b/releases/net471/KnownIssues/534719-Networking.ServicePoint.ConnectionLimit default behavior changed.md @@ -61,4 +61,5 @@ ServicePointManager.DefaultConnectionLimit = 20; // Actual value should be based ``` ## More information -We will fix this problem in a future .NET Framework Quality Rollup release. +This issue was fixed in the [August 2018 Security and Quality Rollup](https://blogs.msdn.microsoft.com/dotnet/2018/08/14/august-2018-security-and-quality-rollup/). +Installing this or later updates will correct the problem. From c3fe1da371da242817a3fa06a26f441b7a685957 Mon Sep 17 00:00:00 2001 From: Jim Carley Date: Mon, 10 Sep 2018 19:01:40 -0700 Subject: [PATCH 681/872] =?UTF-8?q?Create=20669153=20-=20Remoting=20calls?= =?UTF-8?q?=20made=20within=20a=20transaction=20can=20lead=20to=20?= =?UTF-8?q?=E2=80=A6=20(#843)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Create 669153 - Remoting calls made within a transaction can lead to Transaction.Current incorrectly returning null.md Known issue for System.Transactions.Transaction.Current being null after remoting calls. * Update 669153 - Remoting calls made within a transaction can lead to Transaction.Current incorrectly returning null.md Removed reference to the Security Update and just referenced .NET 4.7.2. * Update 669153 - Remoting calls made within a transaction can lead to Transaction.Current incorrectly returning null.md Removing reference to security update from title. * Added cross-reference links --- ...tion.Current incorrectly returning null.md | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 releases/net472/KnownIssues/669153 - Remoting calls made within a transaction can lead to Transaction.Current incorrectly returning null.md diff --git a/releases/net472/KnownIssues/669153 - Remoting calls made within a transaction can lead to Transaction.Current incorrectly returning null.md b/releases/net472/KnownIssues/669153 - Remoting calls made within a transaction can lead to Transaction.Current incorrectly returning null.md new file mode 100644 index 000000000..d5e8a4b9c --- /dev/null +++ b/releases/net472/KnownIssues/669153 - Remoting calls made within a transaction can lead to Transaction.Current incorrectly returning null.md @@ -0,0 +1,28 @@ +# Errors occur in applications that combine transaction flow and remote calls. + +## Symptoms +In .NET 4.7.2, you notice errors in .NET Framework applications that meet the following criteria: +- The application uses instances of the [System.Transaction.TransactionScope](https://docs.microsoft.com/dotnet/api/system.transactions.transactionscope) class where transaction flow is enabled by passing [TransactionScopeAsyncFlowOption.Enabled](https://docs.microsoft.com/dotnet/api/system.transactions.transactionscopeasyncflowoption) to the constructor. + +- The application makes one or more remote calls while one of these transaction scopes is active, where a remote call is any call that travels through a transparent proxy before reaching the server object. Examples of remote calls include calls to other application domains and calls made through remoting channels such as the client channels defined in the **System.Runtime.Remoting.Channels** namespaces. + +- After the remote call, [System.Transactions.Transaction.Current](https://docs.microsoft.com/dotnet/api/system.transactions.transaction.current) returns `null`, rather than the value that was returned before the remote call. + +## Workaround +To work around this issue, try any of the following methods: +- For each transaction scope that enables transaction flow, change the application to make sure that no remote calls occur anywhere in the code that runs while the transaction scope is active. When you consider whether a transaction scope contains any remote calls, note the following: + - A call to a static method is never a remote call. + - For a call to an instance method on a target object, the call is remote only if the target object is a transparent proxy. + - For a call to a constructor, the call is remote only if the constructed object is a transparent proxy. + + **Note** The [System.Runtime.Remoting.RemotingServices.IsTransparentProxy](https://docs.microsoft.com/dotnet/api/system.runtime.remoting.remotingservices.istransparentproxy) method can always be used to check whether an object is a transparent proxy. + +- Disable transaction flow by removing the [TransactionScopeAsyncFlowOption.Enabled](https://docs.microsoft.com/dotnet/api/system.transactions.transactionscopeasyncflowoption) constructor argument. + + **Warning** This workaround is likely to cause other errors if any "await" operations execute while the transaction scope is active. + +- The [System.Transactions.Transaction.Current](https://docs.microsoft.com/dotnet/api/system.transactions.transaction.current) property is not automatically serialized to the remote call. It must be passed as a parameter. If the remote call does not pass the transaction as a parameter and does not make a callback to the client during the remote call, then you can create the remote call inside a new [System.Transaction.TransactionScope](https://docs.microsoft.com/dotnet/api/system.transactions.transactionscope) object that uses the [TransactionScopeOption.Suppress](https://docs.microsoft.com/dotnet/api/system.transactions.transactionscopeoption) option. Inside this suppress transaction scope, the [System.Transactions.Transaction.Current](https://docs.microsoft.com/dotnet/api/system.transactions.transaction.current) property will have a `null` value. + + +## Status +We are aware of this issue and are currently working on a resolution. From bd40197acc99e6a31649c78886e625e1d620ca97 Mon Sep 17 00:00:00 2001 From: Jim Carley Date: Tue, 11 Sep 2018 11:45:46 -0700 Subject: [PATCH 682/872] Added link to Known Issue 669153 (#844) System.Transactions and remoting. --- releases/net472/dotnet472-known-issues.md | 1 + 1 file changed, 1 insertion(+) diff --git a/releases/net472/dotnet472-known-issues.md b/releases/net472/dotnet472-known-issues.md index d21efd0ec..e179c9f11 100644 --- a/releases/net472/dotnet472-known-issues.md +++ b/releases/net472/dotnet472-known-issues.md @@ -13,3 +13,4 @@ This document lists the known issues that you may experience after you install t - [611802 - SQL - SQLConnection.ConnectionString throws NullReferenceException](https://github.com/Microsoft/dotnet/blob/master/releases/net472/KnownIssues/611802%20-%20SQLConnection.ConnectionString%20throws%20NullReferenceException%20.md) - [613745 - BCL - Single-name references are removed by the SDK when targeting 4.7.2](https://github.com/Microsoft/dotnet/blob/master/releases/net472/KnownIssues/613745%20-%20Single-name%20references%20are%20removed%20by%20the%20SDK%20when%20targeting%204.7.2.md) - [663475 - Setup - Applications that rely on TLS 1.2 strong encryption experience connectivity failures after a Windows upgrade](https://support.microsoft.com/help/4458166) +- [669153 - Remoting calls made within a transaction can lead to Transaction.Current incorrectly returning null](https://github.com/Microsoft/dotnet/blob/master/releases/net472/KnownIssues/669153%20-%20Remoting%20calls%20made%20within%20a%20transaction%20can%20lead%20to%20Transaction.Current%20incorrectly%20returning%20null.md) From 2d97253f955802c8c6c6f328821f1576250e06fa Mon Sep 17 00:00:00 2001 From: Holly Muenchow Date: Tue, 11 Sep 2018 11:58:46 -0700 Subject: [PATCH 683/872] Release notes for 2nd 6.2 Preview --- releases/UWP/net-native2.2/README.md | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/releases/UWP/net-native2.2/README.md b/releases/UWP/net-native2.2/README.md index bb7b59a32..c856ad5f0 100644 --- a/releases/UWP/net-native2.2/README.md +++ b/releases/UWP/net-native2.2/README.md @@ -2,8 +2,13 @@ You can see what was included in each .NET Native 2.2 ([Microsoft.NETCore.UniversalWindowsPlatform 6.2.x](https://www.nuget.org/packages/Microsoft.NETCore.UniversalWindowsPlatform)) release below. -When using Visual Studio these packages require Visual Studio 2017 Version 15.7 or later. +When using Visual Studio these packages require Visual Studio 2017 Version 15.9 Preview 2 or later. -### UWP 6.2.0 Preview (May 7th, 2018) +### UWP 6.2.0-preview1-26831-02 Preview (September 11th, 2018) +These are preview bits in advance of the release in November 2018 +- Integrates support for ARM64 into the Visual Studio tooling experience +- Addresses top cusomter issues with 6.1 and 6.2 Preview. + +### UWP 6.2.0-Preview1-26502-02 Preview (May 7th, 2018) These are preview bits in advance of the release at the end of 2018 - Adds support for ARM64 From bf0fbfa3bdf8af0cfe682f72ac0718cf4aec9803 Mon Sep 17 00:00:00 2001 From: Vadym Kurachevskyi Date: Mon, 17 Sep 2018 18:49:26 +0300 Subject: [PATCH 684/872] Added rebus to the list (#849) --- dotnet-developer-projects.md | 1 + 1 file changed, 1 insertion(+) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 795e43222..ea10b74b1 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -97,6 +97,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [MassTransit](https://github.com/MassTransit/MassTransit) - A distributed application framework for RabbitMQ and Azure Service Bus. * [NServiceBus](https://github.com/Particular/NServiceBus) - The most popular service bus for .NET. * [RestBus](https://github.com/tenor/RestBus) - Easy Asynchronous Messaging and Queueing for .NET. + * [Rebus](https://github.com/rebus-org/Rebus) - Rebus is a lean service bus implementation for .NET. ## Libraries * [Albedo](https://github.com/ploeh/Albedo) - A .NET library targeted at making Reflection programming more consistent, using a common set of abstractions and utilities. From 21f150f669ef48988810ca1cced8cda19265fb1d Mon Sep 17 00:00:00 2001 From: Holly Muenchow Date: Tue, 2 Oct 2018 17:31:44 -0700 Subject: [PATCH 685/872] Release notes for .NET UWP for VS 15.9 Preview 3 --- releases/UWP/net-native2.2/README.md | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/releases/UWP/net-native2.2/README.md b/releases/UWP/net-native2.2/README.md index c856ad5f0..299bc8c7d 100644 --- a/releases/UWP/net-native2.2/README.md +++ b/releases/UWP/net-native2.2/README.md @@ -4,8 +4,13 @@ You can see what was included in each .NET Native 2.2 ([Microsoft.NETCore.Univer When using Visual Studio these packages require Visual Studio 2017 Version 15.9 Preview 2 or later. +### UWP 6.2.0-preview1-26926-04 Preview (October 2nd, 2018) +These are preview bits in advance of the release in November 2018 available in Visual Studio 15.9 Preview 3 +- Improved performance for debugging scenarios (F5) +- Addresses bugs when used with React Framework 4.1 + ### UWP 6.2.0-preview1-26831-02 Preview (September 11th, 2018) -These are preview bits in advance of the release in November 2018 +These are preview bits in advance of the release in November 2018 available in Visual Studio 15.9 Preview 2 - Integrates support for ARM64 into the Visual Studio tooling experience - Addresses top cusomter issues with 6.1 and 6.2 Preview. From 0db07be3411fe926ecdd49b694f4db116265d9b3 Mon Sep 17 00:00:00 2001 From: Cody Condon Date: Fri, 5 Oct 2018 15:43:30 -0400 Subject: [PATCH 686/872] fix readme typo (#864) * fix readme typo * add needed comma --- README.md | 4 ++-- dotnet-consumer-projects.md | 18 +++++++++--------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index 063d72f2e..64c4e6981 100644 --- a/README.md +++ b/README.md @@ -64,10 +64,10 @@ There are additional templates available for `dotnet new`. For more info see [Av ## .NET Foundation Many .NET open source projects are part of the -[.NET Foundation](http://www.dotnetfoundation.org/projects). Microsoft has contributed many projects, including ASP.NET Core and +[.NET Foundation](http://www.dotnetfoundation.org/projects). Microsoft has contributed many projects, including ASP.NET Core and .NET Core. You may want to consider [joining the .NET Foundation](https://dotnetfoundation.org/get-involved). -Check out the [.NET Foundation Forums](http://forums.dotnetfoundation.org/) to see what others are talking about or start a new discussion to ask a question or make a point. +Check out the [.NET Foundation Forums](http://forums.dotnetfoundation.org/) to see what others are talking about, or start a new discussion to ask a question or make a point. ## License diff --git a/dotnet-consumer-projects.md b/dotnet-consumer-projects.md index 436ec6e03..7684e531f 100644 --- a/dotnet-consumer-projects.md +++ b/dotnet-consumer-projects.md @@ -1,13 +1,13 @@ # .NET Open Source Consumer Projects -This community maintained list showcases .NET open source consumer projects. It is intended to include projects that are useful for consumers, such as desktop applications, websites, mobile apps, etc. For developer projects, see the [.NET open source developer projects list](dotnet-developer-projects.md). PR a change into either list and it will be accepted (modulo duplicates). +This community maintained list showcases .NET open source consumer projects. It is intended to include projects that are useful for consumers, such as desktop applications, websites, mobile apps, etc. For developer projects, see the [.NET open source developer projects list](dotnet-developer-projects.md). PR a change into either list and it will be accepted (modulo duplicates). -Please sort projects alphabetically and provide a one-line description. GitHub/CodePlex (or other source) links are preferred, but feel free to also include marketing sites. Create new sections, as appropriate. +Please sort projects alphabetically and provide a one-line description. GitHub/CodePlex (or other source) links are preferred, but feel free to also include marketing sites. Create new sections, as appropriate. ## Media Streaming/Media file Editor * [Media Browser](https://github.com/mediabrowser/) - [www.mediabrowser.tv](http://www.mediabrowser.tv) - A client/server application that allows you to easily manage your own media content and present it in an eye catching way. Server runs on Windows, Linux and Mac. Clients are for WP, Android, iOS, Media Centre, Windows, Roku, etc. * [Pinta](https://github.com/PintaProject/Pinta) - simple drawing/editing program modeled after Paint.NET - + ## Audio players * [Banshee](https://github.com/GNOME/banshee) - A cross-platform multimedia player * [Espera](https://github.com/flagbug/Espera) - A media player that plays your music, YouTube videos, SoundCloud songs, has a special "party mode" and an Android remote control. @@ -15,25 +15,25 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [Waf Music Manager](https://jbe2277.github.io/musicmanager) – is a simple and fast application that makes it fun to manage the local music collection. ## Internet/Chat Applications - * [Smuxi IM](https://github.com/meebey/smuxi) - free, distributed and user-friendly IRC / Twitter / XMPP / Campfire / JabbR client for Linux, Windows and Mac OS X + * [Smuxi IM](https://github.com/meebey/smuxi) - free, distributed, and user-friendly IRC / Twitter / XMPP / Campfire / JabbR client for Linux, Windows and Mac OS X -## Utilities +## Utilities * [Gmail Notifier Plus](https://github.com/shellscape/Gmail-Notifier-Plus) - An app to monitor multiple Gmail accounts from a single, compact point, sitting in Windows 7/8/8.1 taskbar. * [YouCast](https://github.com/I3arnon/YouCast) - YouCast allows you to subscribe to video feeds on YouTube as podcasts in any standard podcatcher like iTunes, BeyondPod on Adroid or even Zune PC and so forth. * [Ember](https://github.com/Embershot/Ember) - Simple & Beautiful Screenshot App * [Waf Stopwatch](http://wafstopwatch.codeplex.com) - is an advanced stopwatch with a lap recording feature. Additionally, it provides a Countdown with alert sound. * [Waf File Hash Generator](http://fhg.codeplex.com) - is a simple tool to generate the hash values of one or more files. It supports: SHA512, SHA256, SHA1 and MD5 in hexadecimal or Base64 format. * [Zero Install](https://github.com/0install/0install-win) - [0install.de](http://0install.de/) - is a decentralized cross-platform software-installation system. Run apps with a single click or control every detail. - + ## Administration * [OpenPetra](https://github.com/openpetra/openpetra) - [www.openpetra.org](https://www.openpetra.org) - An administration software for charities that can be used to manage personnel, supporters, book keeping, gift receipting, accounts payable, conferences etc. - + ## Crypto Currency * [CoiniumServ](https://github.com/CoiniumServ/CoiniumServ) - a high performance, extremely efficient, platform-agnostic, easy to setup bitcoin & alt-coin pool server implementation. It features stratum services, reward, payment, share processors, vardiff & ban managers, user-friendly embedded web-server & front-end and a full-stack API. - + ## Online Algorithm Competitions * [OpenJudgeSystem](https://github.com/NikolayIT/OpenJudgeSystem) - an open source system for online algorithm competitions. The algorithm competitions (currently available in C#, C++, JavaScript, Java and PHP programming languages) are timed contests where all contestants compete online and are given the same algorithmic problems to solve under the same time and memory constraints. - + This list is just a starting point - also take a look at all the projects on [CodePlex](http://www.codeplex.com/) and on [GitHub Trending C#](https://github.com/trending?l=csharp). Thanks to [@scottisafool](https://twitter.com/scottisafool) for providing the initial list. From 02d05d43d02041473bee8aa4da433035be68aee3 Mon Sep 17 00:00:00 2001 From: Tyler Brinkley Date: Fri, 5 Oct 2018 14:45:35 -0500 Subject: [PATCH 687/872] Added Enums.NET to the list (#866) --- dotnet-developer-projects.md | 1 + 1 file changed, 1 insertion(+) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index ea10b74b1..7fd3e25a5 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -132,6 +132,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [DotNetOpenAuth](https://github.com/DotNetOpenAuth) - Library that adds support for your site visitors to login with their OpenIDs by just dropping an ASP.NET control onto your page. * [DropboxRestAPI](https://github.com/saguiitay/DropboxRestAPI) - DropBox .Net Client Library. * [DynamicData](https://github.com/RolandPheasant/DynamicData) - Brings the power of Rx to collections. + * [Enums.NET](https://github.com/TylerBrinkley/Enums.NET) - High-performance type-safe .NET enum utility library. * [Excel-DNA](https://github.com/Excel-DNA/ExcelDna) - Create high-performance, easy to deploy Excel add-ins with .NET - [Home](http://excel-dna.net) * [ExtCore](https://github.com/ExtCore/ExtCore) - Free, open source and cross-platform framework for creating modular and extendable web applications based on ASP.NET Core 1.1. * [ExtraLINQ](https://github.com/mariusschulz/ExtraLINQ) - Various extension methods for working with .NET collections. From 23e4ebc4b77dddc2db222752c6217fb7d3144e0a Mon Sep 17 00:00:00 2001 From: Holly Muenchow Date: Wed, 10 Oct 2018 10:33:18 -0700 Subject: [PATCH 688/872] Release notes for 6.1.9 --- releases/UWP/net-native2.1/README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/releases/UWP/net-native2.1/README.md b/releases/UWP/net-native2.1/README.md index 63edcd7a1..2b793a660 100644 --- a/releases/UWP/net-native2.1/README.md +++ b/releases/UWP/net-native2.1/README.md @@ -4,6 +4,9 @@ You can see what was included in each .NET Native 2.1 ([Microsoft.NETCore.Univer When using Visual Studio these packages require Visual Studio 2017 Version 15.7 or later. +### UWP 6.1.9 (.NET native tools 2.1.8) (October 9th, 2018) +- Fixed CVE-2018-8292:.NET Information Disclosure Vulnerability: https://github.com/dotnet/announcements/issues/88 + ### UWP 6.1.7 (.NET native tools 2.1.8) (July 27th, 2018) - Fixed CVE-2018-8356: Security Feature Bypass in X509 Certificate Validation: https://github.com/dotnet/announcements/issues/73 From 0c3fd7b165906b2ad1bf2a8aed714b50c591a5f8 Mon Sep 17 00:00:00 2001 From: Holly Muenchow Date: Wed, 10 Oct 2018 10:35:13 -0700 Subject: [PATCH 689/872] Release Notes for 6.0.12 --- releases/UWP/net-native2.0/README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/releases/UWP/net-native2.0/README.md b/releases/UWP/net-native2.0/README.md index f890c0755..e79817632 100644 --- a/releases/UWP/net-native2.0/README.md +++ b/releases/UWP/net-native2.0/README.md @@ -4,6 +4,9 @@ You can see what was included in each .NET Native 2.0 ([Microsoft.NETCore.Univer When using Visual Studio these packages require Visual Studio 2017 Version 15.4 or later. +### UWP 6.0.12 (.NET native tools 2.0.3) (October 9th, 2018) +- Fixed CVE-2018-8292:.NET Information Disclosure Vulnerability: https://github.com/dotnet/announcements/issues/88 + ### UWP 6.0.10 (.NET native tools 2.0.3) (July 27th, 2018) - Fixed CVE-2018-8356: Security Feature Bypass in X509 Certificate Validation: https://github.com/dotnet/announcements/issues/73 From 2a4a91100f61e04d6820726e2868361e2cfcb8aa Mon Sep 17 00:00:00 2001 From: Sascha Greuel Date: Fri, 12 Oct 2018 17:12:47 +0200 Subject: [PATCH 690/872] Fixed typo (#883) --- Documentation/KnownIssues/Template/NETFXKnownIssuesTemplate.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Documentation/KnownIssues/Template/NETFXKnownIssuesTemplate.md b/Documentation/KnownIssues/Template/NETFXKnownIssuesTemplate.md index e17793c3b..879c3612a 100644 --- a/Documentation/KnownIssues/Template/NETFXKnownIssuesTemplate.md +++ b/Documentation/KnownIssues/Template/NETFXKnownIssuesTemplate.md @@ -4,7 +4,7 @@ // Entries with [| ... |] are fields that must be updated. ## Symptoms -[|Description of the symtopms|] +[|Description of the symptom(s)|] // A description of the symptom(s) that exhibit due to the underlying issue. ## Cause From 4aa20e0041d06f5079480993ec725eac808b3fa8 Mon Sep 17 00:00:00 2001 From: Parikshit Hooda Date: Fri, 12 Oct 2018 20:44:25 +0530 Subject: [PATCH 691/872] expanded info to information, site to website (#867) commit explained in commit message. will open a pull request in connect wit hacktoberfest --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 64c4e6981..fb1e4e3c4 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ This repository is a starting point to learn about and engage in .NET and .NET o This repo is not an official .NET Framework support location, however, we will respond to issues filed here as best we can. Please file .NET Core product issues at [dotnet/core](https://github.com/dotnet/core/issues) and ASP.NET Core product issues at [aspnet/home](https://github.com/aspnet/home/issues). -You can try out an early access release of the .NET Framework at the [.NET Framework Early Access](https://github.com/microsoft/dotnet-framework-early-access) site. +You can try out an early access release of the .NET Framework at the [.NET Framework Early Access](https://github.com/microsoft/dotnet-framework-early-access) website. ## In this repository @@ -59,7 +59,7 @@ Here is a short list of projects to check out: * [MVVM Cross](https://github.com/MvvmCross/MvvmCross) * [ReactiveUI](https://github.com/reactiveui/ReactiveUI) -There are additional templates available for `dotnet new`. For more info see [Available templates for dotnet new](https://github.com/dotnet/templating/wiki/Available-templates-for-dotnet-new) +There are additional templates available for `dotnet new`. For more information, see [Available templates for dotnet new](https://github.com/dotnet/templating/wiki/Available-templates-for-dotnet-new) ## .NET Foundation From c06cb7eca51dcf0c13a3469d165f68f0dfd68329 Mon Sep 17 00:00:00 2001 From: Ron Petrusha Date: Mon, 15 Oct 2018 08:57:01 -0700 Subject: [PATCH 692/872] Removed duplicated word (#891) --- .../compatibility/winforms-accessibility-changes-472.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Documentation/compatibility/winforms-accessibility-changes-472.md b/Documentation/compatibility/winforms-accessibility-changes-472.md index 2cff7ef83..c03ba22c0 100644 --- a/Documentation/compatibility/winforms-accessibility-changes-472.md +++ b/Documentation/compatibility/winforms-accessibility-changes-472.md @@ -41,7 +41,7 @@ Note that to opt in to the accessibility features added in .NET Framework 4.7.2, Applications that target the .NET Framework 4.7.2 or later and want to preserve the legacy accessibility behavior can opt in to the use of legacy accessibility features by explicitly setting this AppContext switch to `true`. __Use of OS-defined colors in High Contrast themes__ -- The drop down arrow arrow of the now uses OS-defined colors in High Contrast theme. +- The drop down arrow of the now uses OS-defined colors in High Contrast theme. - , and controls with set to or now use OS-defined colors in High Contrast theme when selected. Previously, text and background colors were not contrasting and were hard to read. - Controls contained within a that has its property set to `false` will now use OS-defined colors in High Contrast theme. - The , , and controls have an increased luminosity contrast ratio in High Contrast Mode. From 9fd05d7fca621061d8645de2eb46fdc058448421 Mon Sep 17 00:00:00 2001 From: Saurabh Tiwari <33518730+Studd116@users.noreply.github.com> Date: Tue, 16 Oct 2018 01:24:10 +0530 Subject: [PATCH 693/872] Update testing-with-ryujit.md (#888) --- ...testing-with-ryujit.md => update testing-with-ryujit.md} | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) rename Documentation/{testing-with-ryujit.md => update testing-with-ryujit.md} (94%) diff --git a/Documentation/testing-with-ryujit.md b/Documentation/update testing-with-ryujit.md similarity index 94% rename from Documentation/testing-with-ryujit.md rename to Documentation/update testing-with-ryujit.md index 8e584404f..1b8e2aad1 100644 --- a/Documentation/testing-with-ryujit.md +++ b/Documentation/update testing-with-ryujit.md @@ -5,7 +5,7 @@ This document provides instructions to disable RyuJIT or one of its optimization If you find a problem that appears to be a bug with the .NET JIT compiler, we want to know about it! Please report the bug at [Visual Studio Connect](https://connect.microsoft.com/VisualStudio) or as a [microsoft/dotnet issue](https://github.com/microsoft/dotnet/issues). -**Important** Follow the steps in this document carefully. Serious problems might +**Important** Follow these steps in this document carefully. Serious problems might be occur if you modify the registry incorrectly. Before you modify it, [back up the registry](http://support.microsoft.com/kb/322756) so that it can be restored in case problems occur. @@ -77,7 +77,7 @@ Disable loading NGEN Images If you encounter a bug when you use the new JIT, and if the bug manifests itself in a function in an NGEN native image (see [here](https://msdn.microsoft.com/en-us/library/6t9t5wcf(v=vs.110).aspx) for details), use any of the following methods to force certain named assemblies to be recompiled by the JIT and not use the existing native images. You will generally pair one of these methods with the same numbered method above to get an NGEN image to fall back to JIT compilation, and, in addition, do that JIT compilation with the legacy JIT. -In the examples below, we wish to prevent using the NGEN images of three assemblies, named `assembly_one.dll`, `assembly_two.dll`, and `assembly_three.dll`. We specify the assemblies using simple assembly names (no public key token, no architecture, and so on). The assembly names are specified without using the `.dll` file name extension. +In the examples below, we wish to prevent using the NGEN images of three assemblies, named `assembly_one.dll`, `assembly_two.dll`, and `assembly_three.dll`. We specify these assemblies using simple assembly names (no public key token, no architecture, and so on). The assembly names are specified without using the `.dll` file name extension. ### Method 1: : per-application config file @@ -168,7 +168,7 @@ Using Registry Editor (regedit.exe), find either of the following subkeys: Type: DWORD (32-bit) Value (also called REG_WORD) Value: 1 - **Note** Windows has both 32-bit and 64-bit registry sections. The addresses shown above use the 64-bit registry path, so are appropriate for troubleshooting RyuJIT and not affecting 32-bit .NET applications. On a 64-bit machine, the 32-bit registry path for the `HKEY_LOCAL_MACHINE` case is `HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\.NETFramework`. + **Note** Windows has both 32-bit and 64-bit registry sections. The addresses shown above use the 64-bit registry path, so they are appropriate for troubleshooting RyuJIT and not affecting 32-bit .NET applications. On a 64-bit machine, the 32-bit registry path for the `HKEY_LOCAL_MACHINE` case is `HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\.NETFramework`. Disable Tail Call Optimization ============================== From 4bdaec5be5b2775030001adccc8d987eb8510cae Mon Sep 17 00:00:00 2001 From: Shivam Agarwal Date: Tue, 16 Oct 2018 01:28:22 +0530 Subject: [PATCH 694/872] Update dotnet-developer-projects.md (#885) --- dotnet-developer-projects.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 7fd3e25a5..4557e43ec 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -223,7 +223,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [ELMAH](https://github.com/elmah/Elmah) - [ELMAH (Error Logging Modules and Handlers)](https://elmah.github.io/) is an application-wide error logging facility that is completely pluggable. It can be dynamically added to a running ASP.NET web application, or even all ASP.NET web applications on a machine, without any need for re-compilation or re-deployment. * [Exceptionless](https://github.com/exceptionless/Exceptionless) - Provides real-time .NET error reporting for your ASP.NET, Web API, WebForms, WPF, Console, and MVC apps. It organizes the gathered information into simple actionable data that will help your app become exceptionless! * [log4net](http://logging.apache.org/log4net/) - A tool to help the programmer output log statements to a variety of output targets. - * [LogMaster4Net](https://github.com/kerryjiang/LogMaster4Net) - It is a central log server which can organize your logs in different applications in a same place but have same log behaviors (loggers, appenders, levels and rules) like in the indepedent applications before. + * [LogMaster4Net](https://github.com/kerryjiang/LogMaster4Net) - It is a central log server which can organize your logs in different applications in the same place but have same log behaviors (loggers, appenders, levels and rules) like in the independent applications before. * [NLog](https://github.com/NLog/NLog) - NLog is a free logging platform for .NET with rich log routing and management capabilities. ## Model-View-ViewModel (MVVM) Frameworks From a94c17ec23a9acda2bf069232b094bb21d0d8f60 Mon Sep 17 00:00:00 2001 From: Cinchoo Date: Tue, 16 Oct 2018 13:20:32 -0400 Subject: [PATCH 695/872] Add Cinchoo ETL (#887) * Add Cinchoo ETL ETL Framework for .NET (Parser / Writer for CSV, Flat, Xml, JSON, Key-Value formatted files) * As requested, rearranged Cinchoo ETL entry. Please review and let me know --- dotnet-developer-projects.md | 1 + 1 file changed, 1 insertion(+) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 4557e43ec..91c67eea4 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -116,6 +116,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [Castle Windsor ASP.NET Core / Microsoft.Extensions.DependencyInjection Adapter](https://github.com/volosoft/castle-windsor-ms-adapter) - This library is a Castle Windsor adapter for the Microsoft.Extensions.DependencyInjection NuGet package. * [Cecil](https://github.com/jbevain/cecil) - A popular library to read, modify and write .NET binaries. * [Cimbalino Toolkit](https://github.com/Cimbalino/Cimbalino-Toolkit) - A set of useful and powerful tools that will help you build your Windows Platform applications. + * [Cinchoo ETL](https://github.com/Cinchoo/ChoETL) - ETL Framework for .NET (Parser / Writer for CSV, Flat, Xml, JSON, Key-Value formatted files). * [CodeJam](https://github.com/rsdn/CodeJam) - Set of handy reusable .NET components that can simplify your daily work and save your time when you copy and paste your favorite helper methods and classes from one project to another. * [Coding4Fun Toolkit](https://github.com/Coding4FunProjects/Coding4FunToolkit) * [ColoredConsole](https://github.com/colored-console/colored-console) - Add some color to your console. From 07c63ef7cd022dfdadf39374f42dd07d59d6d27d Mon Sep 17 00:00:00 2001 From: Ron Petrusha Date: Thu, 18 Oct 2018 16:03:24 -0700 Subject: [PATCH 696/872] Changes for markdig migration in dotnet/docs (#893) --- .../compatibility/sslstream-support-for-tls-alerts.md | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/Documentation/compatibility/sslstream-support-for-tls-alerts.md b/Documentation/compatibility/sslstream-support-for-tls-alerts.md index bf9f21bac..c083bbf5d 100644 --- a/Documentation/compatibility/sslstream-support-for-tls-alerts.md +++ b/Documentation/compatibility/sslstream-support-for-tls-alerts.md @@ -63,13 +63,11 @@ for .NET Framework 4.6 and later applications running on .NET Framework 4.7 or l - Registry key (machine global): - Set the Value to `false` to enable the feature in .NET Framework 4.6 - 4.6.2. + Set the Value to `false` to enable the feature in .NET Framework 4.6 - 4.6.2. - ``` - Key = HKLM\SOFTWARE\[Wow6432Node\]Microsoft\.NETFramework\AppContext\Switch.System.Net.DontEnableTlsAlerts - Type = String - Value = "true" - ``` + - Key: HKLM\SOFTWARE\Wow6432Node\Microsoft\\.NETFramework\AppContext\Switch.System.Net.DontEnableTlsAlerts + - Type: String + - Value: "true" ### Affected APIs * `T:System.Net.Security.SslStream` From 16823818950849c5bacd767baa62f9084a1f3701 Mon Sep 17 00:00:00 2001 From: Ron Petrusha Date: Fri, 19 Oct 2018 12:10:14 -0700 Subject: [PATCH 697/872] Fixed badly formatted link (#898) --- .../compatibility/winforms-accessibility-changes-471.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Documentation/compatibility/winforms-accessibility-changes-471.md b/Documentation/compatibility/winforms-accessibility-changes-471.md index fb88e39d2..73300ad0a 100644 --- a/Documentation/compatibility/winforms-accessibility-changes-471.md +++ b/Documentation/compatibility/winforms-accessibility-changes-471.md @@ -66,7 +66,7 @@ The .NET Framework 4.7.1 adds support for the following UI automation patterns a **Improvements to the PropertyGrid control**
The .NET Framework 4.7.1 adds the following improvements to the PropertyBrowser control: -- The **Details** button in the error dialog that is displayed when the user enters an incorrect value in the control supports the [Expand/Collapse pattern](~/docs/framework/ui-automation/implementing-the-ui-automation-expandcollapse-control-pattern.md), state and name change notifications, and a [ControlType]~/docs/framework/ui-automation/ui-automation-support-for-the-menubar-control-type.md) property with a value of . +- The **Details** button in the error dialog that is displayed when the user enters an incorrect value in the control supports the [Expand/Collapse pattern](~/docs/framework/ui-automation/implementing-the-ui-automation-expandcollapse-control-pattern.md), state and name change notifications, and a [ControlType](~/docs/framework/ui-automation/ui-automation-support-for-the-menubar-control-type.md) property with a value of . - The message pane displayed when the **Details** button of the error dialog is expanded is now keyboard accessible and allows Narrator to announce the content of the error message. - The [AccessibleRole](xref:System.Windows.Forms.AccessibleRole) of rows in the control have changed from "Row" to "Cell". The cell maps to UIA ControlType "DataItem", which allows it to support appropriate keyboard shortcuts and Narrator announcements. - The control rows that represent header items when the control has a property set to have a [ControlType](~/docs/framework/ui-automation/ui-automation-support-for-the-menubar-control-type.md) property value of . From bec34857c86aff21d521e9bc9c2b86c9e4a7362a Mon Sep 17 00:00:00 2001 From: Ron Petrusha Date: Tue, 23 Oct 2018 15:41:41 -0700 Subject: [PATCH 698/872] Addressed formatting issues from markdig conversion (#902) --- .../compatibility/winforms-accessibility-changes-471.md | 2 +- .../compatibility/winforms-accessibility-changes-472.md | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/Documentation/compatibility/winforms-accessibility-changes-471.md b/Documentation/compatibility/winforms-accessibility-changes-471.md index 73300ad0a..6a7fffe43 100644 --- a/Documentation/compatibility/winforms-accessibility-changes-471.md +++ b/Documentation/compatibility/winforms-accessibility-changes-471.md @@ -47,7 +47,7 @@ In order for the application to benefit from these changes, it must run on the .
Applications that target the .NET Framework 4.7.1 or later and want to preserve the legacy accessibility behavior can opt in to the use of legacy accessibility features by explicitly setting this AppContext switch to `true`.

-For an overview of UI automation, see the [UI Automation Overview](~/docs/framework/ui-automation/ui-automation-overview.md).

+For an overview of UI automation, see the [UI Automation Overview](~/docs/framework/ui-automation/ui-automation-overview.md).

**Added support for UI Automation patterns and properties**
diff --git a/Documentation/compatibility/winforms-accessibility-changes-472.md b/Documentation/compatibility/winforms-accessibility-changes-472.md index c03ba22c0..6c5d67289 100644 --- a/Documentation/compatibility/winforms-accessibility-changes-472.md +++ b/Documentation/compatibility/winforms-accessibility-changes-472.md @@ -71,8 +71,7 @@ __Improved Property Grid Support__ - The control child elements now return a `true` for the property only when a PropertyGrid element is enabled. - The control child elements now return a `false` for the property only when a PropertyGrid element can be changed by the user. -For an overview of UI automation, see the [UI Automation Overview](https://docs.microsoft.com/dotnet/framework/ui-automation/ui-automation-overview). - +For an overview of UI automation, see the [UI Automation Overview](https://docs.microsoft.com/dotnet/framework/ui-automation/ui-automation-overview).

__Improved keyboard navigation__ - now allows focus when contained within a that has the property set to `true` From b8909d8389758916bde40417f9a452e9da8f9645 Mon Sep 17 00:00:00 2001 From: Chris Ulanowicz Date: Wed, 24 Oct 2018 12:41:22 -0500 Subject: [PATCH 699/872] Fix typo in dotnet-free-oss-services.md (#903) --- dotnet-free-oss-services.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dotnet-free-oss-services.md b/dotnet-free-oss-services.md index dd85ac9f4..4f7d03731 100644 --- a/dotnet-free-oss-services.md +++ b/dotnet-free-oss-services.md @@ -14,7 +14,7 @@ Please sort projects alphabetically and provide a one-line description. Where po * [Xamarin](http://resources.xamarin.com/open-source-contributor.html) - Share .Net code across Windows, iOS, Android and Mac. -## Hosted Build and Continous Integration +## Hosted Build and Continuous Integration * [AppVeyor](http://www.appveyor.com/pricing) - Windows based cloud build/CI servers tailored for .Net developers. * [TeamCity at CodeBetter](http://codebetter.com/codebetter-ci) - JetBrains TeamCity CI server made available for open source projects by CodeBetter. From 2ab884e04a0a40c84dcb8782033b2191b7a94fd4 Mon Sep 17 00:00:00 2001 From: Amanda Date: Wed, 24 Oct 2018 10:53:27 -0700 Subject: [PATCH 700/872] Rename testing-with-ryujit documentation (#900) --- .../{update testing-with-ryujit.md => testing-with-ryujit.md} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename Documentation/{update testing-with-ryujit.md => testing-with-ryujit.md} (100%) diff --git a/Documentation/update testing-with-ryujit.md b/Documentation/testing-with-ryujit.md similarity index 100% rename from Documentation/update testing-with-ryujit.md rename to Documentation/testing-with-ryujit.md From ff53ff0ee7ecea55b6e6a2d63ecd4323227b50f7 Mon Sep 17 00:00:00 2001 From: AnonProgrammer007 <44278258+AnonProgrammer007@users.noreply.github.com> Date: Thu, 1 Nov 2018 16:10:09 -0500 Subject: [PATCH 701/872] Update dotnet-consumer-projects.md consistency (#913) Updated capitalization & sentence structure to remain consistent throughout page --- dotnet-consumer-projects.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/dotnet-consumer-projects.md b/dotnet-consumer-projects.md index 7684e531f..43b9808a6 100644 --- a/dotnet-consumer-projects.md +++ b/dotnet-consumer-projects.md @@ -6,33 +6,33 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C ## Media Streaming/Media file Editor * [Media Browser](https://github.com/mediabrowser/) - [www.mediabrowser.tv](http://www.mediabrowser.tv) - A client/server application that allows you to easily manage your own media content and present it in an eye catching way. Server runs on Windows, Linux and Mac. Clients are for WP, Android, iOS, Media Centre, Windows, Roku, etc. - * [Pinta](https://github.com/PintaProject/Pinta) - simple drawing/editing program modeled after Paint.NET + * [Pinta](https://github.com/PintaProject/Pinta) - A simple drawing/editing program modeled after Paint.NET ## Audio players * [Banshee](https://github.com/GNOME/banshee) - A cross-platform multimedia player * [Espera](https://github.com/flagbug/Espera) - A media player that plays your music, YouTube videos, SoundCloud songs, has a special "party mode" and an Android remote control. - * [Simple Music Player](https://github.com/punker76/simple-music-player) SimpleMP or Simple Music Player is a simple and easy to use music player for free. It plays the most common music files (mp3, ogg, wma, wav) in a simple way. - * [Waf Music Manager](https://jbe2277.github.io/musicmanager) – is a simple and fast application that makes it fun to manage the local music collection. + * [Simple Music Player](https://github.com/punker76/simple-music-player) SimpleMP or Simple Music Player - A simple and easy to use music player for free. It plays the most common music files (mp3, ogg, wma, wav) in a simple way. + * [Waf Music Manager](https://jbe2277.github.io/musicmanager) – A simple and fast application that makes it fun to manage the local music collection. ## Internet/Chat Applications - * [Smuxi IM](https://github.com/meebey/smuxi) - free, distributed, and user-friendly IRC / Twitter / XMPP / Campfire / JabbR client for Linux, Windows and Mac OS X + * [Smuxi IM](https://github.com/meebey/smuxi) - Free, distributed, and user-friendly IRC / Twitter / XMPP / Campfire / JabbR client for Linux, Windows and Mac OS X ## Utilities * [Gmail Notifier Plus](https://github.com/shellscape/Gmail-Notifier-Plus) - An app to monitor multiple Gmail accounts from a single, compact point, sitting in Windows 7/8/8.1 taskbar. * [YouCast](https://github.com/I3arnon/YouCast) - YouCast allows you to subscribe to video feeds on YouTube as podcasts in any standard podcatcher like iTunes, BeyondPod on Adroid or even Zune PC and so forth. - * [Ember](https://github.com/Embershot/Ember) - Simple & Beautiful Screenshot App - * [Waf Stopwatch](http://wafstopwatch.codeplex.com) - is an advanced stopwatch with a lap recording feature. Additionally, it provides a Countdown with alert sound. - * [Waf File Hash Generator](http://fhg.codeplex.com) - is a simple tool to generate the hash values of one or more files. It supports: SHA512, SHA256, SHA1 and MD5 in hexadecimal or Base64 format. - * [Zero Install](https://github.com/0install/0install-win) - [0install.de](http://0install.de/) - is a decentralized cross-platform software-installation system. Run apps with a single click or control every detail. + * [Ember](https://github.com/Embershot/Ember) - A simple & Beautiful Screenshot App + * [Waf Stopwatch](http://wafstopwatch.codeplex.com) - An advanced stopwatch with a lap recording feature. Additionally, it provides a Countdown with alert sound. + * [Waf File Hash Generator](http://fhg.codeplex.com) - A simple tool to generate the hash values of one or more files. It supports: SHA512, SHA256, SHA1 and MD5 in hexadecimal or Base64 format. + * [Zero Install](https://github.com/0install/0install-win) - [0install.de](http://0install.de/) - A decentralized cross-platform software-installation system. Run apps with a single click or control every detail. ## Administration * [OpenPetra](https://github.com/openpetra/openpetra) - [www.openpetra.org](https://www.openpetra.org) - An administration software for charities that can be used to manage personnel, supporters, book keeping, gift receipting, accounts payable, conferences etc. ## Crypto Currency - * [CoiniumServ](https://github.com/CoiniumServ/CoiniumServ) - a high performance, extremely efficient, platform-agnostic, easy to setup bitcoin & alt-coin pool server implementation. It features stratum services, reward, payment, share processors, vardiff & ban managers, user-friendly embedded web-server & front-end and a full-stack API. + * [CoiniumServ](https://github.com/CoiniumServ/CoiniumServ) - A high performance, extremely efficient, platform-agnostic, easy to setup bitcoin & alt-coin pool server implementation. It features stratum services, reward, payment, share processors, vardiff & ban managers, user-friendly embedded web-server & front-end and a full-stack API. ## Online Algorithm Competitions - * [OpenJudgeSystem](https://github.com/NikolayIT/OpenJudgeSystem) - an open source system for online algorithm competitions. The algorithm competitions (currently available in C#, C++, JavaScript, Java and PHP programming languages) are timed contests where all contestants compete online and are given the same algorithmic problems to solve under the same time and memory constraints. + * [OpenJudgeSystem](https://github.com/NikolayIT/OpenJudgeSystem) - An open source system for online algorithm competitions. The algorithm competitions (currently available in C#, C++, JavaScript, Java and PHP programming languages) are timed contests where all contestants compete online and are given the same algorithmic problems to solve under the same time and memory constraints. This list is just a starting point - also take a look at all the projects on [CodePlex](http://www.codeplex.com/) and on [GitHub Trending C#](https://github.com/trending?l=csharp). From 7b18b92c650569ca74cc4754f0909d88b01b3575 Mon Sep 17 00:00:00 2001 From: Rahul Arulkumaran Date: Wed, 7 Nov 2018 06:16:02 +0530 Subject: [PATCH 702/872] add year in license (#856) * add year in license * Update LICENSE --- LICENSE | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/LICENSE b/LICENSE index 9984736c7..e4fb4ba8d 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ The MIT License (MIT) -Copyright (c) Microsoft +Copyright (c) 2018 Microsoft All rights reserved. From f50bd3567ec07d0ad7c690e0b12dab707a3f13f6 Mon Sep 17 00:00:00 2001 From: Samreen Zarroug Date: Tue, 6 Nov 2018 18:49:37 -0600 Subject: [PATCH 703/872] Removing all rights reserved from MIT license (#909) --- LICENSE | 2 -- 1 file changed, 2 deletions(-) diff --git a/LICENSE b/LICENSE index e4fb4ba8d..a70e8cf66 100644 --- a/LICENSE +++ b/LICENSE @@ -2,8 +2,6 @@ The MIT License (MIT) Copyright (c) 2018 Microsoft -All rights reserved. - Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights From 62473be1e402f3191ae99386469b7334c2ef87a6 Mon Sep 17 00:00:00 2001 From: Rakesh Singh Date: Wed, 7 Nov 2018 15:16:26 -0800 Subject: [PATCH 704/872] Add new issue for .NET 4.7.2 setup (#916) * Add new issue for .NET 4.7.2 setup * Updated per review comments * Update 695400 - Setup skips installing payload on Windows 7 to Windows 10 migration .md --- ...d on Windows 7 to Windows 10 migration .md | 41 +++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 releases/net472/KnownIssues/695400 - Setup skips installing payload on Windows 7 to Windows 10 migration .md diff --git a/releases/net472/KnownIssues/695400 - Setup skips installing payload on Windows 7 to Windows 10 migration .md b/releases/net472/KnownIssues/695400 - Setup skips installing payload on Windows 7 to Windows 10 migration .md new file mode 100644 index 000000000..33362a4f3 --- /dev/null +++ b/releases/net472/KnownIssues/695400 - Setup skips installing payload on Windows 7 to Windows 10 migration .md @@ -0,0 +1,41 @@ +# Setup fails to install files on OS when upgraded from Windows 7 SP1 or Windows Server 2008 R2 with .NET Framework 4.7.2 . + +## Symptoms +When you install the .NET Framework 4.7.2 on Windows 10 version 1803 or lower and your system was upgraded from Windows 7 SP1 with .NET Framework 4.7.2 , .NET 4.7.2 setup installation reports success but fails to install .NET 4.7.2 files on the machine. + +Consider the following scenario: + 1. On Windows 7 SP1 or Windows Server 2008 R2, install the .NET Framework 4.7.2 + 2. Upgrade the machine to Windows 10 Fall Creators (version 1709) or lower. The upgraded OS can be any version of Windows 8.1, Windows 10, or Windows Server 2008 R2. + 3. Run .NET 4.7.2 setup. + 4. .NET Framework 4.7.2 setup reports successful installation but fails to install .NET Framework files. + +Note: This issue does not occur when upgrading to Windows 10 April 2018 Update (version 1803) because it comes pre-installed with .NET Framework 4.7.2. + +## Cause +This issue occurs because the OS upgrade leaves behind .NET Framework 4.7.2 setup files in the Windows installer cache and its registration. Due to a bug in .NET Framework setup that checks for the setup files in Windows installer, setup determines that .NET Framework 4.7.2 is already installed and thus skips installing .NET framework files on the upgraded Windows 10 machine. + +## Impact +.NET 4.7.2 setup reports successful installation but skips installing its files and registry entries. + +Note: This issue occurs only when you upgrade from Windows 7 or Windows Server 2008 R2 with .NET Framework 4.7.2 already installed. + +## Resolution +Upgrade to Windows 10 April 2018 Update (Version 1803) or later version.They come pre-installed with .NET Framework 4.7.2 or a later version. + +Alternatively, you can install .NET Framework 4.7.2 on the failed machine by directly installing the respective MSU from Microsoft Update Catalog: +* [Windows Server 2012](https://www.catalog.update.microsoft.com/Search.aspx?q=4054542) +* [Windows 8.1 or Windows Server 2012 R2](https://www.catalog.update.microsoft.com/Search.aspx?q=4054566) +* [Windows 10 Anniversary Update or Windows 10 Creator Update](https://www.catalog.update.microsoft.com/Search.aspx?q=4054590) +* [Windows 10 Fall Creators ](https://www.catalog.update.microsoft.com/Search.aspx?q=4073120) + +If you choose not to follow the previous two resolutions, you can run the following commands from an administrator command prompt to remove the setup registration and re-run .NET Framework 4.7.2 setup. + +On a Windows x64 machine: +``` +reg delete HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Patches\0AE22574CBE1266379CC1B5852EA79B8 /f +``` + +On a Windows x86 machine: +``` +reg delete HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Patches\4758749C64399713BA590E9520B4EEC8 /f +``` From 8e920cda6b1a53e751a80b1229d73eeb5198d388 Mon Sep 17 00:00:00 2001 From: Darran Date: Thu, 8 Nov 2018 21:49:14 +0000 Subject: [PATCH 705/872] Added DalSoft.RestClient to Libraries (#917) --- dotnet-developer-projects.md | 1 + 1 file changed, 1 insertion(+) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 91c67eea4..1e78d4487 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -125,6 +125,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [Comparers](https://github.com/StephenCleary/Comparers) - Fluent syntax for building comparers (and equality comparers) and implementing object comparison. * [CoordinateSharp](https://github.com/Tronald/CoordinateSharp) - Parse or convert geographic coordinate formats and calculate location based solar/lunar information. * [Cricket](https://github.com/fsprojects/Cricket) - Actor library. + * [DalSoft.RestClient](https://restclient.dalsoft.io/) - An extensible, dynamic and fluent Rest Client. Create frictionless code whilst still using the HttpClient you already know. * [DateTimeExtensions](https://github.com/kappy/DateTimeExtensions) - Common Date Time operations on the form of extensions to System.DateTime, including holidays and working days calculations on several culture locales. * [DeveelDB](https://github.com/deveel/deveeldb) - SQL-99 embeddable database engine for .NET. * [Deveel Math](https://github.com/deveel/deveel-math) - A port of Google's Harmony library of the Math components to .NET for the computation of astonomic decimals (numbers with more than 1 million decimal digits). From 3ff7f9d72bc158e0dc4e446c7bd2b9ad661a251e Mon Sep 17 00:00:00 2001 From: Vivek Mishra Date: Fri, 9 Nov 2018 10:51:27 -0800 Subject: [PATCH 706/872] Update 695400 - Setup skips installing payload on Windows 7 to Windows 10 migration .md --- ... installing payload on Windows 7 to Windows 10 migration .md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/releases/net472/KnownIssues/695400 - Setup skips installing payload on Windows 7 to Windows 10 migration .md b/releases/net472/KnownIssues/695400 - Setup skips installing payload on Windows 7 to Windows 10 migration .md index 33362a4f3..f95eada14 100644 --- a/releases/net472/KnownIssues/695400 - Setup skips installing payload on Windows 7 to Windows 10 migration .md +++ b/releases/net472/KnownIssues/695400 - Setup skips installing payload on Windows 7 to Windows 10 migration .md @@ -1,4 +1,4 @@ -# Setup fails to install files on OS when upgraded from Windows 7 SP1 or Windows Server 2008 R2 with .NET Framework 4.7.2 . +# Setup fails to install files on OS when upgraded from Windows 7 SP1 or Windows Server 2008 R2 with .NET Framework 4.7.2 ## Symptoms When you install the .NET Framework 4.7.2 on Windows 10 version 1803 or lower and your system was upgraded from Windows 7 SP1 with .NET Framework 4.7.2 , .NET 4.7.2 setup installation reports success but fails to install .NET 4.7.2 files on the machine. From aa5ad5aaac42549ce07daa89b8f2ca018d6d8480 Mon Sep 17 00:00:00 2001 From: Ron Petrusha Date: Mon, 12 Nov 2018 09:27:33 -0800 Subject: [PATCH 707/872] Updated known issues list (#920) --- ...ter migrating OS from Windows 7 or Windows Server 2008 R2.md} | 0 releases/net472/dotnet472-known-issues.md | 1 + 2 files changed, 1 insertion(+) rename releases/net472/KnownIssues/{695400 - Setup skips installing payload on Windows 7 to Windows 10 migration .md => 695400 - Setup fails to install the product after migrating OS from Windows 7 or Windows Server 2008 R2.md} (100%) diff --git a/releases/net472/KnownIssues/695400 - Setup skips installing payload on Windows 7 to Windows 10 migration .md b/releases/net472/KnownIssues/695400 - Setup fails to install the product after migrating OS from Windows 7 or Windows Server 2008 R2.md similarity index 100% rename from releases/net472/KnownIssues/695400 - Setup skips installing payload on Windows 7 to Windows 10 migration .md rename to releases/net472/KnownIssues/695400 - Setup fails to install the product after migrating OS from Windows 7 or Windows Server 2008 R2.md diff --git a/releases/net472/dotnet472-known-issues.md b/releases/net472/dotnet472-known-issues.md index e179c9f11..e6629e1ae 100644 --- a/releases/net472/dotnet472-known-issues.md +++ b/releases/net472/dotnet472-known-issues.md @@ -14,3 +14,4 @@ This document lists the known issues that you may experience after you install t - [613745 - BCL - Single-name references are removed by the SDK when targeting 4.7.2](https://github.com/Microsoft/dotnet/blob/master/releases/net472/KnownIssues/613745%20-%20Single-name%20references%20are%20removed%20by%20the%20SDK%20when%20targeting%204.7.2.md) - [663475 - Setup - Applications that rely on TLS 1.2 strong encryption experience connectivity failures after a Windows upgrade](https://support.microsoft.com/help/4458166) - [669153 - Remoting calls made within a transaction can lead to Transaction.Current incorrectly returning null](https://github.com/Microsoft/dotnet/blob/master/releases/net472/KnownIssues/669153%20-%20Remoting%20calls%20made%20within%20a%20transaction%20can%20lead%20to%20Transaction.Current%20incorrectly%20returning%20null.md) +- [695400 - Setup fails to install the product after migrating OS from Windows 7 or Windows Server 2008 R2](https://github.com/Microsoft/dotnet/blob/master/releases/net472/KnownIssues/695400%20-%20Setup%20skips%20installing%20payload%20on%20Windows%207%20to%20Windows%2010%20migration%20.md) \ No newline at end of file From 5aa8a9eb7693e5776003d3df27861a2d6cf604b6 Mon Sep 17 00:00:00 2001 From: Rakesh Singh Date: Mon, 12 Nov 2018 09:32:00 -0800 Subject: [PATCH 708/872] Update Known issues list for .NET 4.7.2 (#918) * Update Known issues list for .NET 4.7.2 * updated per feedback --- releases/net472/dotnet472-known-issues.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/releases/net472/dotnet472-known-issues.md b/releases/net472/dotnet472-known-issues.md index e6629e1ae..70af3ed93 100644 --- a/releases/net472/dotnet472-known-issues.md +++ b/releases/net472/dotnet472-known-issues.md @@ -14,4 +14,4 @@ This document lists the known issues that you may experience after you install t - [613745 - BCL - Single-name references are removed by the SDK when targeting 4.7.2](https://github.com/Microsoft/dotnet/blob/master/releases/net472/KnownIssues/613745%20-%20Single-name%20references%20are%20removed%20by%20the%20SDK%20when%20targeting%204.7.2.md) - [663475 - Setup - Applications that rely on TLS 1.2 strong encryption experience connectivity failures after a Windows upgrade](https://support.microsoft.com/help/4458166) - [669153 - Remoting calls made within a transaction can lead to Transaction.Current incorrectly returning null](https://github.com/Microsoft/dotnet/blob/master/releases/net472/KnownIssues/669153%20-%20Remoting%20calls%20made%20within%20a%20transaction%20can%20lead%20to%20Transaction.Current%20incorrectly%20returning%20null.md) -- [695400 - Setup fails to install the product after migrating OS from Windows 7 or Windows Server 2008 R2](https://github.com/Microsoft/dotnet/blob/master/releases/net472/KnownIssues/695400%20-%20Setup%20skips%20installing%20payload%20on%20Windows%207%20to%20Windows%2010%20migration%20.md) \ No newline at end of file +- [695400 - Setup fails to install the product after migrating OS from Windows 7 or Windows Server 2008 R2](https://github.com/Microsoft/dotnet/blob/master/releases/net472/KnownIssues/695400%20-%20Setup%20fails%20to%20install%20the%20product%20after%20migrating%20OS%20from%20Windows%207%20or%20Windows%20Server%202008%20R2.md) \ No newline at end of file From 6e65cc369aff9f8af363c1bb546bbda7a4882d9e Mon Sep 17 00:00:00 2001 From: maxnorth Date: Wed, 14 Nov 2018 16:14:23 -0500 Subject: [PATCH 709/872] Fix code typo in aspnet-472-compat-doc (#922) Casing of the 'appSettings' element was wrong, I copied and pasted this into my own config without noticing the casing issue and spent a while figuring out why the setting wasn't working. --- Documentation/compatibility/aspnet-472-compat-doc.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Documentation/compatibility/aspnet-472-compat-doc.md b/Documentation/compatibility/aspnet-472-compat-doc.md index 91d7f6411..0c2f1f123 100644 --- a/Documentation/compatibility/aspnet-472-compat-doc.md +++ b/Documentation/compatibility/aspnet-472-compat-doc.md @@ -17,11 +17,11 @@ If you find that regular expressions in your web application do not work after u ```xml - + ... ... - + ``` From 29bbcba0b336a9b59f46e626d3abee7945967451 Mon Sep 17 00:00:00 2001 From: Devendar Reddy Adulla Date: Wed, 14 Nov 2018 14:16:43 -0800 Subject: [PATCH 710/872] 4.7.2 known issue for visualstylestate (#921) * 4.7.2 known issue for visualstylestate * resolving comments * resolving comment * Resolving comments that were missed. * Deletign duplicate file. * Update 706819 - Winforms applications may have problems rendering UI on latest Operating Systems.md --- ...roblems rendering UI on latest Operating Systems.md | 10 ++++++++++ releases/net472/dotnet472-known-issues.md | 3 ++- 2 files changed, 12 insertions(+), 1 deletion(-) create mode 100644 releases/net472/KnownIssues/706819 - Winforms applications may have problems rendering UI on latest Operating Systems.md diff --git a/releases/net472/KnownIssues/706819 - Winforms applications may have problems rendering UI on latest Operating Systems.md b/releases/net472/KnownIssues/706819 - Winforms applications may have problems rendering UI on latest Operating Systems.md new file mode 100644 index 000000000..a748aeff3 --- /dev/null +++ b/releases/net472/KnownIssues/706819 - Winforms applications may have problems rendering UI on latest Operating Systems.md @@ -0,0 +1,10 @@ + # WinForms applications may have problems rendering the application UI and instead may render a white screen with a red ‘X’ symbol. The issue is caused by a change in Windows 10 October 2018 Update that exposed a bug in .NET Framework 4.7.2. + +## Symptoms +WinForms applications may have problems rendering the application UI and instead may render a white screen with a red ‘X’ symbol. The issue is caused by a change in Windows 10 October 2018 Update that exposed a bug in .NET Framework 4.7.2. + +## Cause +The issue is caused by a change in Windows 10 October 2018 Update that exposed a bug in .NET Framework 4.7.2. The Windows 10 October 2018 Update adds a new flag to VisualStyle state when the application UI launches a child dialog (i.e., a FileSaveDialog or PrintpreviewDialog) that causes .NET Framework to fail its VisualStyleState check and thus throw an exception while rendering the application UI. + +## Resolution +A .NET 4.7.2 servicing fix for this will be released in near future and will also be included in the next version (4.8) of .NET Framework. This known issue will be updated with more details when that happens. diff --git a/releases/net472/dotnet472-known-issues.md b/releases/net472/dotnet472-known-issues.md index 70af3ed93..82e9fc328 100644 --- a/releases/net472/dotnet472-known-issues.md +++ b/releases/net472/dotnet472-known-issues.md @@ -14,4 +14,5 @@ This document lists the known issues that you may experience after you install t - [613745 - BCL - Single-name references are removed by the SDK when targeting 4.7.2](https://github.com/Microsoft/dotnet/blob/master/releases/net472/KnownIssues/613745%20-%20Single-name%20references%20are%20removed%20by%20the%20SDK%20when%20targeting%204.7.2.md) - [663475 - Setup - Applications that rely on TLS 1.2 strong encryption experience connectivity failures after a Windows upgrade](https://support.microsoft.com/help/4458166) - [669153 - Remoting calls made within a transaction can lead to Transaction.Current incorrectly returning null](https://github.com/Microsoft/dotnet/blob/master/releases/net472/KnownIssues/669153%20-%20Remoting%20calls%20made%20within%20a%20transaction%20can%20lead%20to%20Transaction.Current%20incorrectly%20returning%20null.md) -- [695400 - Setup fails to install the product after migrating OS from Windows 7 or Windows Server 2008 R2](https://github.com/Microsoft/dotnet/blob/master/releases/net472/KnownIssues/695400%20-%20Setup%20fails%20to%20install%20the%20product%20after%20migrating%20OS%20from%20Windows%207%20or%20Windows%20Server%202008%20R2.md) \ No newline at end of file +- [695400 - Setup fails to install the product after migrating OS from Windows 7 or Windows Server 2008 R2](https://github.com/Microsoft/dotnet/blob/master/releases/net472/KnownIssues/695400%20-%20Setup%20fails%20to%20install%20the%20product%20after%20migrating%20OS%20from%20Windows%207%20or%20Windows%20Server%202008%20R2.md) +- [706819 - Winforms applications may have problems rendering UI on latest Windows operating system] (https://github.com/Microsoft/dotnet/blob/master/releases/net472/KnownIssues/706819%20-%20Winforms%20applications%20may%20have%20problems%20rendering%20UI%20on%20latest%20Windows%20operating%20system.md) From b804756d0edd962f927b90d100304274677c90f0 Mon Sep 17 00:00:00 2001 From: Vivek Mishra Date: Wed, 14 Nov 2018 14:25:33 -0800 Subject: [PATCH 711/872] Update dotnet472-known-issues.md --- releases/net472/dotnet472-known-issues.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/releases/net472/dotnet472-known-issues.md b/releases/net472/dotnet472-known-issues.md index 82e9fc328..8e8f3dd2f 100644 --- a/releases/net472/dotnet472-known-issues.md +++ b/releases/net472/dotnet472-known-issues.md @@ -15,4 +15,4 @@ This document lists the known issues that you may experience after you install t - [663475 - Setup - Applications that rely on TLS 1.2 strong encryption experience connectivity failures after a Windows upgrade](https://support.microsoft.com/help/4458166) - [669153 - Remoting calls made within a transaction can lead to Transaction.Current incorrectly returning null](https://github.com/Microsoft/dotnet/blob/master/releases/net472/KnownIssues/669153%20-%20Remoting%20calls%20made%20within%20a%20transaction%20can%20lead%20to%20Transaction.Current%20incorrectly%20returning%20null.md) - [695400 - Setup fails to install the product after migrating OS from Windows 7 or Windows Server 2008 R2](https://github.com/Microsoft/dotnet/blob/master/releases/net472/KnownIssues/695400%20-%20Setup%20fails%20to%20install%20the%20product%20after%20migrating%20OS%20from%20Windows%207%20or%20Windows%20Server%202008%20R2.md) -- [706819 - Winforms applications may have problems rendering UI on latest Windows operating system] (https://github.com/Microsoft/dotnet/blob/master/releases/net472/KnownIssues/706819%20-%20Winforms%20applications%20may%20have%20problems%20rendering%20UI%20on%20latest%20Windows%20operating%20system.md) +- [706819 - Winforms applications may have problems rendering UI on latest Windows operating system](https://github.com/Microsoft/dotnet/blob/master/releases/net472/KnownIssues/706819%20-%20Winforms%20applications%20may%20have%20problems%20rendering%20UI%20on%20latest%20Windows%20operating%20system.md) From 65b31b9784fbe4190cc80f024b8bc4467f5568af Mon Sep 17 00:00:00 2001 From: Vivek Mishra Date: Wed, 14 Nov 2018 14:27:55 -0800 Subject: [PATCH 712/872] Update dotnet472-known-issues.md --- releases/net472/dotnet472-known-issues.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/releases/net472/dotnet472-known-issues.md b/releases/net472/dotnet472-known-issues.md index 8e8f3dd2f..d973d2d51 100644 --- a/releases/net472/dotnet472-known-issues.md +++ b/releases/net472/dotnet472-known-issues.md @@ -15,4 +15,4 @@ This document lists the known issues that you may experience after you install t - [663475 - Setup - Applications that rely on TLS 1.2 strong encryption experience connectivity failures after a Windows upgrade](https://support.microsoft.com/help/4458166) - [669153 - Remoting calls made within a transaction can lead to Transaction.Current incorrectly returning null](https://github.com/Microsoft/dotnet/blob/master/releases/net472/KnownIssues/669153%20-%20Remoting%20calls%20made%20within%20a%20transaction%20can%20lead%20to%20Transaction.Current%20incorrectly%20returning%20null.md) - [695400 - Setup fails to install the product after migrating OS from Windows 7 or Windows Server 2008 R2](https://github.com/Microsoft/dotnet/blob/master/releases/net472/KnownIssues/695400%20-%20Setup%20fails%20to%20install%20the%20product%20after%20migrating%20OS%20from%20Windows%207%20or%20Windows%20Server%202008%20R2.md) -- [706819 - Winforms applications may have problems rendering UI on latest Windows operating system](https://github.com/Microsoft/dotnet/blob/master/releases/net472/KnownIssues/706819%20-%20Winforms%20applications%20may%20have%20problems%20rendering%20UI%20on%20latest%20Windows%20operating%20system.md) +- [706819 - Winforms applications may have problems rendering UI on Windows 10 October 2018 Update](https://github.com/Microsoft/dotnet/blob/master/releases/net472/KnownIssues/706819%20-%20Winforms%20applications%20may%20have%20problems%20rendering%20UI%20on%20latest%20Operating%20Systems.md) From 700996398571e69f7b609e2b87e691239e124969 Mon Sep 17 00:00:00 2001 From: Ron Petrusha Date: Tue, 11 Dec 2018 16:03:03 -0800 Subject: [PATCH 713/872] Revisions for .NET Framework 4.8 (#933) * Updates for net48 branch * Modified readme for 4.8 --- .../Template/NETFXKnownIssuesTemplate.md | 2 +- Documentation/compatibility/README.md | 3 +++ releases/net48/README.md | 13 ++++++++++ releases/net48/dotnet48--api-changes.md | 4 +++ releases/net48/dotnet48--changes.md | 25 +++++++++++++++++++ releases/net48/dotnet48--known-issues.md | 7 ++++++ 6 files changed, 53 insertions(+), 1 deletion(-) create mode 100644 releases/net48/README.md create mode 100644 releases/net48/dotnet48--api-changes.md create mode 100644 releases/net48/dotnet48--changes.md create mode 100644 releases/net48/dotnet48--known-issues.md diff --git a/Documentation/KnownIssues/Template/NETFXKnownIssuesTemplate.md b/Documentation/KnownIssues/Template/NETFXKnownIssuesTemplate.md index 879c3612a..c729b6205 100644 --- a/Documentation/KnownIssues/Template/NETFXKnownIssuesTemplate.md +++ b/Documentation/KnownIssues/Template/NETFXKnownIssuesTemplate.md @@ -1,6 +1,6 @@ # [|Known Issue Title|] // There is no built-in way to do comments in Markdown, so this template uses a C#-style comment to mark comments. Please REMOVE ALL COMMENTS before submission. -// Please use proper markdown syntax for code snippets. See http://daringfireball.net/projects/markdown/syntax for examples. +// Please use proper markdown syntax for code snippets. See for examples. // Entries with [| ... |] are fields that must be updated. ## Symptoms diff --git a/Documentation/compatibility/README.md b/Documentation/compatibility/README.md index a02b37c52..515fe166d 100644 --- a/Documentation/compatibility/README.md +++ b/Documentation/compatibility/README.md @@ -4,6 +4,7 @@ The following documents provide information on .NET Framework application compat Please help us improve the [.NET Framework Application Compatibility documents](https://github.com/Microsoft/dotnet/tree/master/Documentation/compatibility). In particular, better titles will improve the index below, both in content and the sort. +- [.NET Framework 4.8](#net-framework-48) - [.NET Framework 4.7.2](#net-framework-472) - [.NET Framework 4.7.1](#net-framework-471) - [.NET Framework 4.7](#net-framework-47) @@ -14,6 +15,8 @@ Please help us improve the [.NET Framework Application Compatibility documents]( - [.NET Framework 4.5.1](#net-framework-451) - [.NET Framework 4.5](#net-framework-45) +## .NET Framework 4.8 + ## .NET Framework 4.7.2 - ["dataAnnotations:dataTypeAttribute:disableRegEx" app setting is on by default in .NET Framework 4.7.2](aspnet-472-compat-doc.md) diff --git a/releases/net48/README.md b/releases/net48/README.md new file mode 100644 index 000000000..78df30c94 --- /dev/null +++ b/releases/net48/README.md @@ -0,0 +1,13 @@ +# .NET Framework 4.8 Release Notes + +You can learn about the changes made in the .NET Framework 4.8. + +- [Download .NET 4.8 Developer Pack build 3694](https://go.microsoft.com/fwlink/?linkid=2033281) +- [.NET Framework 4.8 Early Access build 3694 Announcement blog post](https://blogs.msdn.microsoft.com/dotnet/2018/11/28/announcing-net-framework-4-8-early-access-build-3694/) +- [Release notes](dotnet472-changes.md) +- [Application compatibility](https://go.microsoft.com/fwlink/?linkid=863254) +- [API changes](dotnet48-api-changes.md) +- [Known issues](dotnet48-known-issues.md) + +## Release Notes by Product Area + diff --git a/releases/net48/dotnet48--api-changes.md b/releases/net48/dotnet48--api-changes.md new file mode 100644 index 000000000..3557742d1 --- /dev/null +++ b/releases/net48/dotnet48--api-changes.md @@ -0,0 +1,4 @@ +```diff + + +``` diff --git a/releases/net48/dotnet48--changes.md b/releases/net48/dotnet48--changes.md new file mode 100644 index 000000000..25108ebeb --- /dev/null +++ b/releases/net48/dotnet48--changes.md @@ -0,0 +1,25 @@ +# .NET Framework 4.8 Release Notes + +.NET Framework release notes describe product improvements grouped by product area. Each change includes a Microsoft-internal VSTS bug ID, the primary binary that was updated and whether the change was a bug or a feature. + +## ASPNET + + +## BCL + +## CLR + + +## ClickOnce + +## Networking + +## SQL + +## WCF + +## Windows Forms + +## Workflow + +## WPF diff --git a/releases/net48/dotnet48--known-issues.md b/releases/net48/dotnet48--known-issues.md new file mode 100644 index 000000000..eb1aee3e7 --- /dev/null +++ b/releases/net48/dotnet48--known-issues.md @@ -0,0 +1,7 @@ +.NET Framework 4.8 Known Issues +================================= + +This document lists the known issues that you may experience after you install .NET Framework 4.8. + +## Product issues for .NET Framework 4.8 + From 6a9296b868760a2a5248d890aaf80556c12c794d Mon Sep 17 00:00:00 2001 From: Thomas Claudius Huber Date: Wed, 12 Dec 2018 23:05:12 +0100 Subject: [PATCH 714/872] Add WPF and Windows Forms to .NET Core in Readme (#934) --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index fb1e4e3c4..899780239 100644 --- a/README.md +++ b/README.md @@ -33,6 +33,8 @@ There are many projects that you can use and contribute to, some of which are li - [ASP.NET Core docs (aspnet/Docs)](https://github.com/aspnet/Docs) - [Roslyn Compiler Platform (dotnet/roslyn)](https://github.com/dotnet/roslyn) - [EntityFramework (aspnet/entityframework)](https://github.com/aspnet/EntityFramework) +- [WPF (dotnet/wpf)](https://github.com/dotnet/wpf) +- [Windows Forms (dotnet/winforms)](https://github.com/dotnet/winforms) ### .NET Framework From 8ffebf0530b2945262d74beb570119a12cbd3254 Mon Sep 17 00:00:00 2001 From: FlamingFox911 Date: Fri, 4 Jan 2019 18:12:49 -0500 Subject: [PATCH 715/872] Markdown syntax error (#941) Changed code to inline-block `code` --- Documentation/compatibility/changes-in-path-normalization.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Documentation/compatibility/changes-in-path-normalization.md b/Documentation/compatibility/changes-in-path-normalization.md index aeb7db1b5..0054e2d85 100644 --- a/Documentation/compatibility/changes-in-path-normalization.md +++ b/Documentation/compatibility/changes-in-path-normalization.md @@ -27,7 +27,7 @@ in path normalization are enabled by default: - The runtime defers to the operating system's [GetFullPathName](https://msdn.microsoft.com/library/windows/desktop/aa364963(v=vs.85).aspx) function to normalize paths. - Normalization no longer involves trimming the end of directory segments (such as a space at the end of a directory name). -- Support for device path syntax in full trust, including \\.\ and, for file I/O APIs in mscorlib.dll, \\?\. +- Support for device path syntax in full trust, including `\\.\` and, for file I/O APIs in mscorlib.dll, `\\?\`. - The runtime does not validate device syntax paths. - The use of device syntax to access alternate data streams is supported. From 08321b6bef4bb7ada92b057e282056cef3ae9048 Mon Sep 17 00:00:00 2001 From: Ron Petrusha Date: Mon, 7 Jan 2019 10:39:37 -0800 Subject: [PATCH 716/872] Changed link, link text (#944) --- ...b4062-if-using-the-entitydeploysplit-or-entityclean-tasks.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Documentation/compatibility/building-an-entity-framework-edmx-with-visual-studio-2013-can-fail-with-error-msb4062-if-using-the-entitydeploysplit-or-entityclean-tasks.md b/Documentation/compatibility/building-an-entity-framework-edmx-with-visual-studio-2013-can-fail-with-error-msb4062-if-using-the-entitydeploysplit-or-entityclean-tasks.md index 3552df72b..e62084d30 100644 --- a/Documentation/compatibility/building-an-entity-framework-edmx-with-visual-studio-2013-can-fail-with-error-msb4062-if-using-the-entitydeploysplit-or-entityclean-tasks.md +++ b/Documentation/compatibility/building-an-entity-framework-edmx-with-visual-studio-2013-can-fail-with-error-msb4062-if-using-the-entitydeploysplit-or-entityclean-tasks.md @@ -25,7 +25,7 @@ upgrading the .NET Framework. - [x] Build-time break ### Recommended Action -Entity Framework targets files are fixed to work with the new MSBuild layout beginning in the .NET Framework 4.6. Upgrading to that version of the Framework will fix this issue. Alternatively, [this](http://stackoverflow.com/a/24249247/131944) workaround can be used to patch the targets files directly. +Entity Framework targets files are fixed to work with the new MSBuild layout beginning in the .NET Framework 4.6. Upgrading to that version of the Framework will fix this issue. Alternatively, [this workaround](https://stackoverflow.com/a/24249247/131944) can be used to patch the targets files directly. ### Affected APIs * Not detectable via API analysis From 5e8e81a84b3ee131353b40a71ee625f4cf9010b0 Mon Sep 17 00:00:00 2001 From: Nicolas Musset Date: Sat, 19 Jan 2019 10:05:16 +0900 Subject: [PATCH 717/872] Update dotnet-developer-projects.md (#947) * Update dotnet-developer-projects.md Paradox was renamed to Xenko a few years ago. And last year it became fully MIT (wondering if license should be mentioned on this page). * Update dotnet-developer-projects.md Fix alphabetical order in **Games** section. --- dotnet-developer-projects.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 1e78d4487..f073afa95 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -348,8 +348,8 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [Duality](https://github.com/AdamsLair/duality) - An Open Source 2D Game Engine + Visual Editor written entirely in C#. * [MonoGame](https://github.com/mono/MonoGame) - One framework for creating powerful cross-platform games. * [OpenRA](https://github.com/OpenRA/OpenRA) - An open-source implementation of the Command & Conquer: Red Alert engine using .NET/Mono and OpenGL. - * [Paradox](https://github.com/SiliconStudio/paradox) - Paradox is a versatile and engaging game engine. * [WaveEngine](https://github.com/waveengine) - A powerful component based game engine for desktop and mobile platforms using C#. + * [Xenko](https://github.com/xenko3d/xenko) - Xenko is a versatile and engaging game engine. ## UI and Control libraries * [Callisto](https://github.com/timheuer/callisto) - UI Control Toolkit for WinRT apps. From 7036f8446ea0408b549c76b5895a87a6040fc862 Mon Sep 17 00:00:00 2001 From: Ron Petrusha Date: Fri, 18 Jan 2019 17:06:57 -0800 Subject: [PATCH 718/872] Changed http to https (#948) --- .../compatibility/uri-unicode-bidirectional-characters.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Documentation/compatibility/uri-unicode-bidirectional-characters.md b/Documentation/compatibility/uri-unicode-bidirectional-characters.md index b52fda469..9184a3836 100644 --- a/Documentation/compatibility/uri-unicode-bidirectional-characters.md +++ b/Documentation/compatibility/uri-unicode-bidirectional-characters.md @@ -13,7 +13,7 @@ NotPlanned Unicode specifies several special control characters used to specify the orientation of text. In previous versions of the .NET Framework, these characters were incorrectly stripped from all URIs even if they were present in their percent-encoded form. In order to better -follow [RFC 3987](http://tools.ietf.org/html/rfc3987), we now allow these characters in URIs. When found unencoded +follow [RFC 3987](https://tools.ietf.org/html/rfc3987), we now allow these characters in URIs. When found unencoded in a URI, they are percent-encoded. When found percent-encoded they are left as-is. - [x] Quirked From d20342b6dcf6f5116e6c2fc8a9559b436cece975 Mon Sep 17 00:00:00 2001 From: Ron Petrusha Date: Mon, 4 Feb 2019 16:59:48 -0800 Subject: [PATCH 719/872] Updated MSDN links based on dotnet/docs#10259 (#957) --- Documentation/compatibility/changes-in-path-normalization.md | 2 +- ...cspparameters_parentwindowhandle-now-expects-hwnd-value.md | 2 +- .../httprequest_contentencoding-property-prohibits-utf7.md | 2 +- .../httputility_javascriptstringencode-escapes-ampersand.md | 2 +- ...protocol-defaults-to-securityprotocoltype.systemdefault.md | 2 +- ...t-to-sql-server-1997-or-databases-using-the-via-adapter.md | 2 +- .../compatibility/sslstream-support-for-tls-alerts.md | 4 ++-- ...sch-send-aux-record-flag-to-the-underlying-schannel-api.md | 4 ++-- .../compatibility/winforms-accessibility-changes-471.md | 2 +- 9 files changed, 11 insertions(+), 11 deletions(-) diff --git a/Documentation/compatibility/changes-in-path-normalization.md b/Documentation/compatibility/changes-in-path-normalization.md index 0054e2d85..af98239fc 100644 --- a/Documentation/compatibility/changes-in-path-normalization.md +++ b/Documentation/compatibility/changes-in-path-normalization.md @@ -25,7 +25,7 @@ Normalization typically involves: Starting with apps that target the .NET Framework 4.6.2, the following changes in path normalization are enabled by default: -- The runtime defers to the operating system's [GetFullPathName](https://msdn.microsoft.com/library/windows/desktop/aa364963(v=vs.85).aspx) function to normalize paths. +- The runtime defers to the operating system's [GetFullPathName](https://docs.microsoft.com/windows/desktop/api/fileapi/nf-fileapi-getfullpathnamew) function to normalize paths. - Normalization no longer involves trimming the end of directory segments (such as a space at the end of a directory name). - Support for device path syntax in full trust, including `\\.\` and, for file I/O APIs in mscorlib.dll, `\\?\`. - The runtime does not validate device syntax paths. diff --git a/Documentation/compatibility/cspparameters_parentwindowhandle-now-expects-hwnd-value.md b/Documentation/compatibility/cspparameters_parentwindowhandle-now-expects-hwnd-value.md index dd81df732..b63ca16af 100644 --- a/Documentation/compatibility/cspparameters_parentwindowhandle-now-expects-hwnd-value.md +++ b/Documentation/compatibility/cspparameters_parentwindowhandle-now-expects-hwnd-value.md @@ -26,7 +26,7 @@ cspParameters.ParentWindowHandle = form.Handle; In previous versions of the .NET Framework, the value was expected to be an representing a location in memory where the -[HWND](https://msdn.microsoft.com/library/windows/desktop/aa383751.aspx#HWND) value resided. +[HWND](https://docs.microsoft.com/windows/desktop/WinProg/windows-data-types#HWND) value resided. Setting the property to form.Handle on Windows 7 and earlier versions had no effect, but on Windows 8 and later versions, it results in a ": The parameter is incorrect." diff --git a/Documentation/compatibility/httprequest_contentencoding-property-prohibits-utf7.md b/Documentation/compatibility/httprequest_contentencoding-property-prohibits-utf7.md index 254c93763..162d521f1 100644 --- a/Documentation/compatibility/httprequest_contentencoding-property-prohibits-utf7.md +++ b/Documentation/compatibility/httprequest_contentencoding-property-prohibits-utf7.md @@ -25,7 +25,7 @@ Ideally, applications should be updated to not use UTF-7 encoding in s. Alternatively, legacy behavior can be restored by using the `aspnet:AllowUtf7RequestContentEncoding` attribute of the -[appSettings](https://msdn.microsoft.com/library/hh975440(v=vs.110).aspx) +[appSettings](~/docs/framework/configure-apps/file-schema/appsettings/appsettings-element-for-configuration.md) element. ### Affected APIs diff --git a/Documentation/compatibility/httputility_javascriptstringencode-escapes-ampersand.md b/Documentation/compatibility/httputility_javascriptstringencode-escapes-ampersand.md index b851ba4da..0aafffe85 100644 --- a/Documentation/compatibility/httputility_javascriptstringencode-escapes-ampersand.md +++ b/Documentation/compatibility/httputility_javascriptstringencode-escapes-ampersand.md @@ -21,7 +21,7 @@ escapes the ampersand (&) character. If your app depends on the previous behavior of this method, you can add an aspnet:JavaScriptDoNotEncodeAmpersand setting to the -[ASP.NET appSettings element](https://msdn.microsoft.com/library/hh975440.aspx) +[ASP.NET appSettings element](https://docs.microsoft.com/previous-versions/aspnet/hh975440(v=vs.120)) in your configuration file. ### Affected APIs diff --git a/Documentation/compatibility/servicepointmanager.securityprotocol-defaults-to-securityprotocoltype.systemdefault.md b/Documentation/compatibility/servicepointmanager.securityprotocol-defaults-to-securityprotocoltype.systemdefault.md index 021db3d58..a1bbf4244 100644 --- a/Documentation/compatibility/servicepointmanager.securityprotocol-defaults-to-securityprotocoltype.systemdefault.md +++ b/Documentation/compatibility/servicepointmanager.securityprotocol-defaults-to-securityprotocoltype.systemdefault.md @@ -10,7 +10,7 @@ Minor NotPlanned ### Change Description -Starting with apps that target the .NET Framework 4.7, the default value of the property is . This change allows .NET Framework networking APIs based on SslStream (such as FTP, HTTPS, and SMTP) to inherit the default security protocols from the operating system instead of using hard-coded values defined by the .NET Framework. The default varies by operating system and any custom configuration performed by the system administrator. For information on the default SChannel protocol in each version of the Windows operating system, see [Protocols in TLS/SSL (Schannel SSP)](https://msdn.microsoft.com/library/windows/desktop/mt808159.aspx).

+Starting with apps that target the .NET Framework 4.7, the default value of the property is . This change allows .NET Framework networking APIs based on SslStream (such as FTP, HTTPS, and SMTP) to inherit the default security protocols from the operating system instead of using hard-coded values defined by the .NET Framework. The default varies by operating system and any custom configuration performed by the system administrator. For information on the default SChannel protocol in each version of the Windows operating system, see [Protocols in TLS/SSL (Schannel SSP)](https://docs.microsoft.com/windows/desktop/SecAuthN/protocols-in-tls-ssl--schannel-ssp-).

For applications that target an earlier version of the .NET Framework, the default value of the property depends on the version of the .NET Framework targeted. See the [Networking section of Retargeting Changes for Migration from .NET Framework 4.5.2 to 4.6](~/docs/framework/migration-guide/retargeting/4.5.2-4.6.md#networking) for more information. diff --git a/Documentation/compatibility/sqlconnection-can-no-longer-connect-to-sql-server-1997-or-databases-using-the-via-adapter.md b/Documentation/compatibility/sqlconnection-can-no-longer-connect-to-sql-server-1997-or-databases-using-the-via-adapter.md index 1c803fefe..85970dd07 100644 --- a/Documentation/compatibility/sqlconnection-can-no-longer-connect-to-sql-server-1997-or-databases-using-the-via-adapter.md +++ b/Documentation/compatibility/sqlconnection-can-no-longer-connect-to-sql-server-1997-or-databases-using-the-via-adapter.md @@ -20,7 +20,7 @@ Also, connections to SQL Server 7 (1997) are no longer supported. - [ ] Build-time break ### Recommended Action -The VIA protocol is deprecated, so an alternative protocol should be used to connect to SQL databases. The most common protocol used is TCP/IP. Instructions for enabling the TCP/IP protocol can be found [here](https://msdn.microsoft.com/library/bb909712.aspx). If the database is only accessed from within an intranet, the shared pipes protocol may provide better performance if the network is slow. +The VIA protocol is deprecated, so an alternative protocol should be used to connect to SQL databases. The most common protocol used is TCP/IP. For more information about connecting through TCP/IP, see [Enable the TCP/IP protocol for a database instance](https://docs.microsoft.com/previous-versions/visualstudio/visual-studio-2008/bb909712(v=vs.90)). If the database is only accessed from within an intranet, the shared pipes protocol may provide better performance if the network is slow. ### Affected APIs * `M:System.Data.SqlClient.SqlConnection.#ctor(System.String)` diff --git a/Documentation/compatibility/sslstream-support-for-tls-alerts.md b/Documentation/compatibility/sslstream-support-for-tls-alerts.md index c083bbf5d..a317d283f 100644 --- a/Documentation/compatibility/sslstream-support-for-tls-alerts.md +++ b/Documentation/compatibility/sslstream-support-for-tls-alerts.md @@ -17,8 +17,8 @@ After a failed TLS handshake, an be thrown by the first I/O Read/Write operation. The code for the -can be mapped to the TLS Alert from the remote party using this -[Schannel documentation](https://msdn.microsoft.com/library/windows/desktop/dd721886%28v=vs.85%29.aspx). +can be mapped to the TLS Alert from the remote party using the +[Schannel error codes for TLS and SSL alerts](https://docs.microsoft.com/windows/desktop/SecAuthN/schannel-error-codes-for-tls-and-ssl-alerts). For more information, see [RFC 2246: Section 7.2.2 Error alerts](https://tools.ietf.org/html/rfc2246#section-7.2.2).
diff --git a/Documentation/compatibility/tls-1-x-by-default-passes-sch-send-aux-record-flag-to-the-underlying-schannel-api.md b/Documentation/compatibility/tls-1-x-by-default-passes-sch-send-aux-record-flag-to-the-underlying-schannel-api.md index 1e1dd4794..2129b0a87 100644 --- a/Documentation/compatibility/tls-1-x-by-default-passes-sch-send-aux-record-flag-to-the-underlying-schannel-api.md +++ b/Documentation/compatibility/tls-1-x-by-default-passes-sch-send-aux-record-flag-to-the-underlying-schannel-api.md @@ -11,7 +11,7 @@ NotPlanned ### Change Description -When using TLS 1.x, the .NET Framework relies on the underlying Windows SCHANNEL API. Starting with .NET Framework 4.6, the [`SCH_SEND_AUX_RECORD`](https://msdn.microsoft.com/library/windows/desktop/aa379810.aspx) flag is passed by default to SCHANNEL. This causes SCHANNEL to split data to be encrypted into two separate records, the first as a single byte and the second as *n*-1 bytes. +When using TLS 1.x, the .NET Framework relies on the underlying Windows SCHANNEL API. Starting with .NET Framework 4.6, the [`SCH_SEND_AUX_RECORD`](https://docs.microsoft.com/windows/desktop/api/schannel/ns-schannel-_schannel_cred) flag is passed by default to SCHANNEL. This causes SCHANNEL to split data to be encrypted into two separate records, the first as a single byte and the second as *n*-1 bytes. In rare cases, this breaks communication between clients and existing servers that make the assumption that the data resides in a single record. @@ -20,7 +20,7 @@ In rare cases, this breaks communication between clients and existing servers th ### Recommended Action -If this change breaks communication with an existing server, you can disable sending the [`SCH_SEND_AUX_RECORD`](https://msdn.microsoft.com/library/windows/desktop/aa379810.aspx) flag and restore the previous behavior of not splitting data into separate records by adding the following switch to the [``](~/docs/framework/configure-apps/file-schema/runtime/appcontextswitchoverrides-element.md) element in the [``](~/docs/framework/configure-apps/file-schema/runtime/runtime-element.md) section of your app configuration file: +If this change breaks communication with an existing server, you can disable sending the [`SCH_SEND_AUX_RECORD`](https://docs.microsoft.com/windows/desktop/api/schannel/ns-schannel-_schannel_cred) flag and restore the previous behavior of not splitting data into separate records by adding the following switch to the [``](~/docs/framework/configure-apps/file-schema/runtime/appcontextswitchoverrides-element.md) element in the [``](~/docs/framework/configure-apps/file-schema/runtime/runtime-element.md) section of your app configuration file: ```xml diff --git a/Documentation/compatibility/winforms-accessibility-changes-471.md b/Documentation/compatibility/winforms-accessibility-changes-471.md index 6a7fffe43..5b084b9ef 100644 --- a/Documentation/compatibility/winforms-accessibility-changes-471.md +++ b/Documentation/compatibility/winforms-accessibility-changes-471.md @@ -51,7 +51,7 @@ For an overview of UI automation, see the [UI Automation Overview](~/docs/framew **Added support for UI Automation patterns and properties**
-Accessibility clients can take advantage of new WinForms accessibility functionality by using common, publicly described invocation patterns. These patterns are not WinForms-specific. For instance, accessibility clients can call the QueryInterface method on the IAccessible interface (MAAS) to obtain an IServiceProvider interface. If this interface is available, clients can use its QueryService method to request an IAccessibleEx interface. For more information, see [Using IAccessibleEx from a Client](https://msdn.microsoft.com/library/windows/desktop/dd561924.aspx). Starting with the .NET Framework 4.7.1, IServiceProvider and [IAccessibleEx]( https://msdn.microsoft.com/library/windows/desktop/dd561898.aspx) (where applicable) are available for WinForms accessibility objects.

+Accessibility clients can take advantage of new WinForms accessibility functionality by using common, publicly described invocation patterns. These patterns are not WinForms-specific. For instance, accessibility clients can call the QueryInterface method on the IAccessible interface (MAAS) to obtain an IServiceProvider interface. If this interface is available, clients can use its QueryService method to request an IAccessibleEx interface. For more information, see [Using IAccessibleEx from a Client](https://docs.microsoft.com/windows/desktop/WinAuto/using-iaccessibleex-from-a-client). Starting with the .NET Framework 4.7.1, IServiceProvider and [IAccessibleEx]( https://docs.microsoft.com/windows/desktop/WinAuto/iaccessibleex) (where applicable) are available for WinForms accessibility objects.

The .NET Framework 4.7.1 adds support for the following UI automation patterns and properties: From e05c355edf906ba9b0a9f66c3eff0f959e8ff030 Mon Sep 17 00:00:00 2001 From: Ron Petrusha Date: Wed, 6 Feb 2019 14:04:41 -0800 Subject: [PATCH 720/872] Changed http to https where appropriate (#959) --- Documentation/compatibility/! Template.md | 2 +- ...empts-to-automatically-reconnect-broken-sql-connections.md | 2 +- ...062-if-using-the-entitydeploysplit-or-entityclean-tasks.md | 2 +- ...disposition-datetimes-returns-slightly-different-string.md | 4 ++-- ...cspparameters_parentwindowhandle-now-expects-hwnd-value.md | 2 +- .../compatibility/ef-version-must-match-netfx-version.md | 2 +- ...ch-iterator-variable-is-now-scoped-within-the-iteration.md | 2 +- ...xt_extent-return-different-values-beginning-in-_net-4_5.md | 2 +- ...xchanging-event-when-leaving-the-final-page-of-the-view.md | 2 +- Documentation/compatibility/list_sort-algorithm-changed.md | 2 +- ...isselected-binding-issue-with-observablecollection_move.md | 2 +- ...issing-target-framework-moniker-results-in-4_0-behavior.md | 2 +- ...rentdictionary-serialized-with-a-different-_net-version.md | 2 +- ...values-are-not-visible-in-debugger-until-one-step-later.md | 2 +- ...t_servicepointmanager-and-system_net_security_sslstream.md | 2 +- ...is-called-repeatedly-if-its-handler-shows-a-message-box.md | 2 +- .../system_uri-escaping-now-supports-rfc-3986.md | 2 +- ...partial-namespace-qualification-for-system_windows-apis.md | 2 +- .../compatibility/workflow-3_0-types-are-obsolete.md | 2 +- ...nd-aerolite-themes-toggle-button-doesn't-show-any-state.md | 2 +- ...hat-hides-an-accessible-member-with-an-inaccessible-one.md | 2 +- 21 files changed, 22 insertions(+), 22 deletions(-) diff --git a/Documentation/compatibility/! Template.md b/Documentation/compatibility/! Template.md index 20bb677f5..843116dd5 100644 --- a/Documentation/compatibility/! Template.md +++ b/Documentation/compatibility/! Template.md @@ -1,7 +1,7 @@ ## [|Breaking Change Title|] // There is no built in way to do comments in Markdown, so this C# style comment used to mark comments. Please remove all of these before submission -// Please use proper markdown syntax for code snippets. See http://daringfireball.net/projects/markdown/syntax for examples +// Please use proper markdown syntax for code snippets. See https://daringfireball.net/projects/markdown/syntax for examples // Entries with [| ... |] are fields that must be updated. ### Scope diff --git a/Documentation/compatibility/ado_net-now-attempts-to-automatically-reconnect-broken-sql-connections.md b/Documentation/compatibility/ado_net-now-attempts-to-automatically-reconnect-broken-sql-connections.md index 2e50c74d1..3cc036a5b 100644 --- a/Documentation/compatibility/ado_net-now-attempts-to-automatically-reconnect-broken-sql-connections.md +++ b/Documentation/compatibility/ado_net-now-attempts-to-automatically-reconnect-broken-sql-connections.md @@ -43,7 +43,7 @@ property of a connection string (or ADO.NET Data -[More information](http://blogs.msdn.com/b/dotnet/archive/2013/10/17/net-framework-4-5-1-rtm-gt-start-coding.aspx) +[More information](https://blogs.msdn.com/b/dotnet/archive/2013/10/17/net-framework-4-5-1-rtm-gt-start-coding.aspx) diff --git a/Documentation/compatibility/contentdisposition-datetimes-returns-slightly-different-string.md b/Documentation/compatibility/contentdisposition-datetimes-returns-slightly-different-string.md index 6719505a1..109cec6d2 100644 --- a/Documentation/compatibility/contentdisposition-datetimes-returns-slightly-different-string.md +++ b/Documentation/compatibility/contentdisposition-datetimes-returns-slightly-different-string.md @@ -15,8 +15,8 @@ String representations of 's have been updated, beginning in 4.6, to always represent the hour component of a with two digits. This is to comply -with [RFC822](http://www.ietf.org/rfc/rfc0822.txt) and -[RFC2822](http://www.ietf.org/rfc/rfc2822.txt). This causes +with [RFC822](https://www.ietf.org/rfc/rfc0822.txt) and +[RFC2822](https://www.ietf.org/rfc/rfc2822.txt). This causes to return a slightly different string in 4.6 in scenarios where one of the disposition's time elements was before 10:00 AM. Note that diff --git a/Documentation/compatibility/cspparameters_parentwindowhandle-now-expects-hwnd-value.md b/Documentation/compatibility/cspparameters_parentwindowhandle-now-expects-hwnd-value.md index b63ca16af..ff921c44b 100644 --- a/Documentation/compatibility/cspparameters_parentwindowhandle-now-expects-hwnd-value.md +++ b/Documentation/compatibility/cspparameters_parentwindowhandle-now-expects-hwnd-value.md @@ -44,7 +44,7 @@ cspParameters.ParentWindowHandle = form.Handle; Users who had identified that the correct value to pass was the address of a memory location which held the value `form.Handle` can opt out of the behavior change by setting the AppContext switch `Switch.System.Security.Cryptography.DoNotAddrOfCspParentWindowHandle` to `true`. -1. By programmatically setting compat switches on the AppContext, as explained [here](http://blogs.msdn.com/b/dotnet/archive/2015/04/29/net-announcements-at-build-2015.aspx#dotnet46) +1. By programmatically setting compat switches on the AppContext, as explained [here](https://blogs.msdn.com/b/dotnet/archive/2015/04/29/net-announcements-at-build-2015.aspx#dotnet46) 2. By adding the following line to the `` section of the app.config file: ```xml diff --git a/Documentation/compatibility/ef-version-must-match-netfx-version.md b/Documentation/compatibility/ef-version-must-match-netfx-version.md index dca80963a..a9987f8c4 100644 --- a/Documentation/compatibility/ef-version-must-match-netfx-version.md +++ b/Documentation/compatibility/ef-version-must-match-netfx-version.md @@ -30,6 +30,6 @@ Upgrade to Entity Framework 5 for .NET Framework 4.5 ### Category Entity Framework -[More information](http://forums.asp.net/t/1779042.aspx) +[More information](https://forums.asp.net/t/1779042.aspx) diff --git a/Documentation/compatibility/foreach-iterator-variable-is-now-scoped-within-the-iteration.md b/Documentation/compatibility/foreach-iterator-variable-is-now-scoped-within-the-iteration.md index 5af7159ff..1227d0ee7 100644 --- a/Documentation/compatibility/foreach-iterator-variable-is-now-scoped-within-the-iteration.md +++ b/Documentation/compatibility/foreach-iterator-variable-is-now-scoped-within-the-iteration.md @@ -24,6 +24,6 @@ Ideally, code should be updated to expect the new compiler behavior. If the old ### Categories Core -[More information](http://blogs.msdn.com/b/ericlippert/archive/2009/11/12/closing-over-the-loop-variable-considered-harmful.aspx) +[More information](https://blogs.msdn.com/b/ericlippert/archive/2009/11/12/closing-over-the-loop-variable-considered-harmful.aspx) diff --git a/Documentation/compatibility/glyphrun_computeinkboundingbox()-and-formattedtext_extent-return-different-values-beginning-in-_net-4_5.md b/Documentation/compatibility/glyphrun_computeinkboundingbox()-and-formattedtext_extent-return-different-values-beginning-in-_net-4_5.md index 946e05919..69ee227e6 100644 --- a/Documentation/compatibility/glyphrun_computeinkboundingbox()-and-formattedtext_extent-return-different-values-beginning-in-_net-4_5.md +++ b/Documentation/compatibility/glyphrun_computeinkboundingbox()-and-formattedtext_extent-return-different-values-beginning-in-_net-4_5.md @@ -43,6 +43,6 @@ the app.config file: ### Category Windows Presentation Foundation (WPF) -[More information](http://support.microsoft.com/kb/3009678) +[More information](https://support.microsoft.com/kb/3009678) diff --git a/Documentation/compatibility/gridviews-with-allowcustompaging-set-to-true-may-fire-the-pageindexchanging-event-when-leaving-the-final-page-of-the-view.md b/Documentation/compatibility/gridviews-with-allowcustompaging-set-to-true-may-fire-the-pageindexchanging-event-when-leaving-the-final-page-of-the-view.md index ee1d5ef8f..5b3ed7087 100644 --- a/Documentation/compatibility/gridviews-with-allowcustompaging-set-to-true-may-fire-the-pageindexchanging-event-when-leaving-the-final-page-of-the-view.md +++ b/Documentation/compatibility/gridviews-with-allowcustompaging-set-to-true-may-fire-the-pageindexchanging-event-when-leaving-the-final-page-of-the-view.md @@ -42,7 +42,7 @@ paging), as that scenario does not demonstrate the problem. ### Category ASP.NET -[More information](http://stackoverflow.com/questions/18793795/asp-net-4-5-gridview-postback-of-last-page) +[More information](https://stackoverflow.com/questions/18793795/asp-net-4-5-gridview-postback-of-last-page) diff --git a/Documentation/compatibility/listboxitem-isselected-binding-issue-with-observablecollection_move.md b/Documentation/compatibility/listboxitem-isselected-binding-issue-with-observablecollection_move.md index ebbe37bbb..79d69c686 100644 --- a/Documentation/compatibility/listboxitem-isselected-binding-issue-with-observablecollection_move.md +++ b/Documentation/compatibility/listboxitem-isselected-binding-issue-with-observablecollection_move.md @@ -43,6 +43,6 @@ Framework. ### Category Windows Presentation Foundation (WPF) -[More information](http://social.msdn.microsoft.com/Forums/afcbc8b3-a2f2-41e4-b402-2efc9eab1ffe/listboxitem-isselected-binding-issue-with-observablecollectiontmove?forum=wpf) +[More information](https://social.msdn.microsoft.com/Forums/en-US/afcbc8b3-a2f2-41e4-b402-2efc9eab1ffe/listboxitem-isselected-binding-issue-with-observablecollectionlttgtmove?forum=wpf) diff --git a/Documentation/compatibility/missing-target-framework-moniker-results-in-4_0-behavior.md b/Documentation/compatibility/missing-target-framework-moniker-results-in-4_0-behavior.md index 5ab4743b8..e70aefe64 100644 --- a/Documentation/compatibility/missing-target-framework-moniker-results-in-4_0-behavior.md +++ b/Documentation/compatibility/missing-target-framework-moniker-results-in-4_0-behavior.md @@ -30,7 +30,7 @@ automatically apply a A should be supplied, either through adding the attribute directly to the assembly or by specifying a target framework in the -[project file or through Visual Studio's project properties GUI](http://blogs.msdn.com/b/visualstudio/archive/2010/05/19/visual-studio- managed-multi-targeting-part-1-concepts-target-framework-moniker-target-framework.aspx). +[project file or through Visual Studio's project properties GUI](https://blogs.msdn.com/b/visualstudio/archive/2010/05/19/visual-studio- managed-multi-targeting-part-1-concepts-target-framework-moniker-target-framework.aspx). ### Affected APIs * Not detectable via API analysis diff --git a/Documentation/compatibility/netdatacontractserializer-fails-to-deserialize-a-concurrentdictionary-serialized-with-a-different-_net-version.md b/Documentation/compatibility/netdatacontractserializer-fails-to-deserialize-a-concurrentdictionary-serialized-with-a-different-_net-version.md index d5d829102..9cdfd6443 100644 --- a/Documentation/compatibility/netdatacontractserializer-fails-to-deserialize-a-concurrentdictionary-serialized-with-a-different-_net-version.md +++ b/Documentation/compatibility/netdatacontractserializer-fails-to-deserialize-a-concurrentdictionary-serialized-with-a-different-_net-version.md @@ -38,6 +38,6 @@ There are a number of possible work-arounds for this issue: ### Category Serialization -[More information](http://stackoverflow.com/questions/19585791/net-4-5-1-wcf-serialization-exception) +[More information](https://stackoverflow.com/questions/19585791/net-4-5-1-wcf-serialization-exception) diff --git a/Documentation/compatibility/null-coalescer-values-are-not-visible-in-debugger-until-one-step-later.md b/Documentation/compatibility/null-coalescer-values-are-not-visible-in-debugger-until-one-step-later.md index 2acf7b15a..e14b09101 100644 --- a/Documentation/compatibility/null-coalescer-values-are-not-visible-in-debugger-until-one-step-later.md +++ b/Documentation/compatibility/null-coalescer-values-are-not-visible-in-debugger-until-one-step-later.md @@ -27,6 +27,6 @@ Stepping one additional time in the debugger will cause the local/field's value ### Category Debugger -[More information](http://stackoverflow.com/questions/19352130/why-doesnt-the-null-coalescing-operator-work-in-this-situation) +[More information](https://stackoverflow.com/questions/19352130/why-doesnt-the-null-coalescing-operator-work-in-this-situation) diff --git a/Documentation/compatibility/only-tls-1_0-1_1-and-1_2-protocols-supported-in-system_net_servicepointmanager-and-system_net_security_sslstream.md b/Documentation/compatibility/only-tls-1_0-1_1-and-1_2-protocols-supported-in-system_net_servicepointmanager-and-system_net_security_sslstream.md index 314332ce6..bb6c35789 100644 --- a/Documentation/compatibility/only-tls-1_0-1_1-and-1_2-protocols-supported-in-system_net_servicepointmanager-and-system_net_security_sslstream.md +++ b/Documentation/compatibility/only-tls-1_0-1_1-and-1_2-protocols-supported-in-system_net_servicepointmanager-and-system_net_security_sslstream.md @@ -27,7 +27,7 @@ or Tls1.2. If this is not feasible, or if client apps are broken, the class can be used to opt out of this feature in either of two ways: -1. By programmatically setting compat switches on the , as explained [here](http://blogs.msdn.com/b/dotnet/archive/2015/04/29/net-announcements-at-build-2015.aspx#dotnet46) +1. By programmatically setting compat switches on the , as explained [here](https://blogs.msdn.com/b/dotnet/archive/2015/04/29/net-announcements-at-build-2015.aspx#dotnet46) 2. By adding the following line to the `` section of the app.config file: ``; ### Affected APIs diff --git a/Documentation/compatibility/previewlostkeyboardfocus-is-called-repeatedly-if-its-handler-shows-a-message-box.md b/Documentation/compatibility/previewlostkeyboardfocus-is-called-repeatedly-if-its-handler-shows-a-message-box.md index 451fabfa6..84d654797 100644 --- a/Documentation/compatibility/previewlostkeyboardfocus-is-called-repeatedly-if-its-handler-shows-a-message-box.md +++ b/Documentation/compatibility/previewlostkeyboardfocus-is-called-repeatedly-if-its-handler-shows-a-message-box.md @@ -36,7 +36,7 @@ There are two options to work around this issue: Windows Forms Windows Presentation Foundation (WPF) -[More information](http://stackoverflow.com/questions/17988219/system-windows-forms-messagebox-in-netversion-4-0-4-5-behaves-differently-in-wi) +[More information](https://stackoverflow.com/questions/17988219/system-windows-forms-messagebox-in-netversion-4-0-4-5-behaves-differently-in-wi) diff --git a/Documentation/compatibility/workflow-3_0-types-are-obsolete.md b/Documentation/compatibility/workflow-3_0-types-are-obsolete.md index cc73fd6d1..b2116112d 100644 --- a/Documentation/compatibility/workflow-3_0-types-are-obsolete.md +++ b/Documentation/compatibility/workflow-3_0-types-are-obsolete.md @@ -16,7 +16,7 @@ Windows Workflow Foundation (WWF) 3.0 APIs (those from the System.Workflow names - [x] Build-time break ### Recommended Action -New WWF 4.0 APIs (in System.Activities) should be used instead. An example of using the new APIs can be found [here](~/docs/framework/windows-workflow-foundation/how-to-update-the-definition-of-a-running-workflow-instance.md) and further guidance is available [here](http://blogs.msdn.com/b/workflowteam/archive/2012/02/08/deprecatingwf3.aspx). Alternatively, since the WWF 3.0 APIs are still supported, they may be used and the build-time warning avoided either by suppressing it or by using an older compiler. +New WWF 4.0 APIs (in System.Activities) should be used instead. An example of using the new APIs can be found [here](~/docs/framework/windows-workflow-foundation/how-to-update-the-definition-of-a-running-workflow-instance.md) and further guidance is available [here](https://blogs.msdn.com/b/workflowteam/archive/2012/02/08/deprecatingwf3.aspx). Alternatively, since the WWF 3.0 APIs are still supported, they may be used and the build-time warning avoided either by suppressing it or by using an older compiler. ### Affected APIs * Not detectable via API analysis diff --git a/Documentation/compatibility/wpf-aero2-and-aerolite-themes-toggle-button-doesn't-show-any-state.md b/Documentation/compatibility/wpf-aero2-and-aerolite-themes-toggle-button-doesn't-show-any-state.md index 8c1615143..df15bb31f 100644 --- a/Documentation/compatibility/wpf-aero2-and-aerolite-themes-toggle-button-doesn't-show-any-state.md +++ b/Documentation/compatibility/wpf-aero2-and-aerolite-themes-toggle-button-doesn't-show-any-state.md @@ -28,7 +28,7 @@ This issue was fixed in a servicing update. Update the .NET Framework 4.5, or up ### Category Windows Presentation Foundation (WPF) -[More information](http://stackoverflow.com/questions/12450751/togglebutton-doesnt-show-any-state) +[More information](https://stackoverflow.com/questions/12450751/togglebutton-doesnt-show-any-state) From 35ac0d4cced347ba819beecd36e878511058c52e Mon Sep 17 00:00:00 2001 From: "Nikola Milosavljevic (CLR)" Date: Tue, 19 Feb 2019 08:05:42 -0800 Subject: [PATCH 721/872] Add README for release notes --- releases/reference-assemblies/README.md | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 releases/reference-assemblies/README.md diff --git a/releases/reference-assemblies/README.md b/releases/reference-assemblies/README.md new file mode 100644 index 000000000..ee15003bf --- /dev/null +++ b/releases/reference-assemblies/README.md @@ -0,0 +1,25 @@ +# Preview of .NET Framework Targeting Pack Nuget packages + +## Status + +Early preview. + +## Goal + +Enable building projects targeting .NET Framework on machines without the machine-wide, Windows-only .NET Framework targeting packs. + +## Benefits + +- Support OSS .NET development on non-Windows operating systems. +- Enable machines to build projects targeting .NET Framework without requiring a machine-wide, admin-permission install. +- Enable developing Mono projects with the .NET CLI. + +## Package location + +https://dotnet.myget.org/feed/roslyn-tools/package/nuget/Microsoft.NETFramework.ReferenceAssemblies + +## Latest release + +Version: 1.0.0-alpha-5 +Releases: Tue, 04 Dec 2018 00:13:27 GMT + From 2234a79b634e3cb9f406c734f16500db8872909c Mon Sep 17 00:00:00 2001 From: Nikola Milosavljevic Date: Tue, 19 Feb 2019 08:09:39 -0800 Subject: [PATCH 722/872] Update README.md --- releases/reference-assemblies/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/releases/reference-assemblies/README.md b/releases/reference-assemblies/README.md index ee15003bf..196bbf233 100644 --- a/releases/reference-assemblies/README.md +++ b/releases/reference-assemblies/README.md @@ -21,5 +21,6 @@ https://dotnet.myget.org/feed/roslyn-tools/package/nuget/Microsoft.NETFramework. ## Latest release Version: 1.0.0-alpha-5 + Releases: Tue, 04 Dec 2018 00:13:27 GMT From 44a06a5dde6f4d4a987f94bef42709cc8c162e15 Mon Sep 17 00:00:00 2001 From: Nikola Milosavljevic Date: Tue, 19 Feb 2019 08:11:31 -0800 Subject: [PATCH 723/872] Update README.md --- releases/reference-assemblies/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/releases/reference-assemblies/README.md b/releases/reference-assemblies/README.md index 196bbf233..de065830d 100644 --- a/releases/reference-assemblies/README.md +++ b/releases/reference-assemblies/README.md @@ -20,7 +20,7 @@ https://dotnet.myget.org/feed/roslyn-tools/package/nuget/Microsoft.NETFramework. ## Latest release -Version: 1.0.0-alpha-5 +Version: 1.0.0-alpha-5 -Releases: Tue, 04 Dec 2018 00:13:27 GMT +Date: Tue, 04 Dec 2018 00:13:27 GMT From 94fcc556d541e9ad0e43cae2cca0af8ac09a5ddb Mon Sep 17 00:00:00 2001 From: Rich Lander Date: Thu, 21 Feb 2019 16:43:14 -0800 Subject: [PATCH 724/872] Update README.md --- releases/reference-assemblies/README.md | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/releases/reference-assemblies/README.md b/releases/reference-assemblies/README.md index de065830d..6304d621c 100644 --- a/releases/reference-assemblies/README.md +++ b/releases/reference-assemblies/README.md @@ -1,18 +1,16 @@ -# Preview of .NET Framework Targeting Pack Nuget packages +# .NET Framework Targeting Pack Nuget Packages (Preview) -## Status - -Early preview. +These packages enable building .NET Framework projects on any machine with at least MSBuild or the .NET Core SDK installed. -## Goal +The following scenarios and benefits are enabled for .NET Framework projects: -Enable building projects targeting .NET Framework on machines without the machine-wide, Windows-only .NET Framework targeting packs. +- Build without requiring admin operations to install pre-requisites such as [Visual Studio](https://visualstudio.microsoft.com/vs/) or [.NET Framework targeting packs](https://dotnet.microsoft.com/download/visual-studio-sdks). +- Build libraries on any operating system supported by the .NET Core SDK. +- Build Mono-based projects. -## Benefits +## Status -- Support OSS .NET development on non-Windows operating systems. -- Enable machines to build projects targeting .NET Framework without requiring a machine-wide, admin-permission install. -- Enable developing Mono projects with the .NET CLI. +Early preview. ## Package location @@ -23,4 +21,3 @@ https://dotnet.myget.org/feed/roslyn-tools/package/nuget/Microsoft.NETFramework. Version: 1.0.0-alpha-5 Date: Tue, 04 Dec 2018 00:13:27 GMT - From a89fc1a6dc79fcb538256c28b886d534c350eace Mon Sep 17 00:00:00 2001 From: Nikola Milosavljevic Date: Fri, 22 Feb 2019 09:22:16 -0800 Subject: [PATCH 725/872] Update README.md --- releases/reference-assemblies/README.md | 63 +++++++++++++++++++++++++ 1 file changed, 63 insertions(+) diff --git a/releases/reference-assemblies/README.md b/releases/reference-assemblies/README.md index 6304d621c..0993d282e 100644 --- a/releases/reference-assemblies/README.md +++ b/releases/reference-assemblies/README.md @@ -12,6 +12,69 @@ The following scenarios and benefits are enabled for .NET Framework projects: Early preview. +## Usage + +At the moment, packages are located on a non-default package feed. Until packages are moved to the default package feed, a change in your project's `NuGet.Config` file is needed. Add the following line to `` section: + +```xml + +``` + +Sample `NuGet.Config` file: + +```xml + + + + + + +``` + +Make the following changes based on the type of project you are using. + +### SDK-style project + +Add `TargetFramework` property and a `PackageReference` like in the following example `csproj` file: + +```xml + + + + Exe + net472 + + + + + + +``` + +### Classic-style project + +Add `PackageReference` to your `csproj` file, the same way as in the SDK-style sample above. + +Add, or modify, `TargetFrameworkVersion` property in your `csproj` file: + +```xml +v4.7.2 +``` + +### Building your project + +1. Restore NuGet packages: + +```xml +msbuild /t:restore +``` + +2. Build the project: + +```xml +msbuild +``` + ## Package location https://dotnet.myget.org/feed/roslyn-tools/package/nuget/Microsoft.NETFramework.ReferenceAssemblies From f9d7e0917dc225fe974128da0a8e499750c714a7 Mon Sep 17 00:00:00 2001 From: Nikola Milosavljevic Date: Tue, 26 Feb 2019 11:46:38 -0800 Subject: [PATCH 726/872] Update README.md --- releases/reference-assemblies/README.md | 26 ++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/releases/reference-assemblies/README.md b/releases/reference-assemblies/README.md index 0993d282e..13232f442 100644 --- a/releases/reference-assemblies/README.md +++ b/releases/reference-assemblies/README.md @@ -33,6 +33,30 @@ Sample `NuGet.Config` file: Make the following changes based on the type of project you are using. +### .NET Core project + +This sample uses a multi-targeting ClassLibrary project, that can be created using `dotnet new classlib`. Add or modify NuGet.config file as described above. + +Change `TargetFramework` property to `TargetFrameworks` and add a new .NET Framework target, like in the following example: + +```xml +netstandard2.0;net472 +``` + +Add Package reference: + +```xml + + + +``` + +Build as usual: + +```xml +dotnet build +``` + ### SDK-style project Add `TargetFramework` property and a `PackageReference` like in the following example `csproj` file: @@ -61,7 +85,7 @@ Add, or modify, `TargetFrameworkVersion` property in your `csproj` file: v4.7.2 ``` -### Building your project +### Building your .NET Framework (SDK and Classic) project 1. Restore NuGet packages: From e32138ad69441f5a478669f6806254399cea5c63 Mon Sep 17 00:00:00 2001 From: Ron Petrusha Date: Wed, 27 Feb 2019 00:00:37 -0800 Subject: [PATCH 727/872] Update releases/reference-assemblies/README.md Co-Authored-By: NikolaMilosavljevic --- releases/reference-assemblies/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/releases/reference-assemblies/README.md b/releases/reference-assemblies/README.md index 13232f442..f8bfa1d97 100644 --- a/releases/reference-assemblies/README.md +++ b/releases/reference-assemblies/README.md @@ -79,7 +79,7 @@ Add `TargetFramework` property and a `PackageReference` like in the following ex Add `PackageReference` to your `csproj` file, the same way as in the SDK-style sample above. -Add, or modify, `TargetFrameworkVersion` property in your `csproj` file: +Add or modify the `TargetFrameworkVersion` property in your *csproj* file: ```xml v4.7.2 From d7ac439de05368f6038824853abc0b51031ea97e Mon Sep 17 00:00:00 2001 From: Nikola Milosavljevic Date: Wed, 27 Feb 2019 08:35:12 -0800 Subject: [PATCH 728/872] Update README.md --- releases/reference-assemblies/README.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/releases/reference-assemblies/README.md b/releases/reference-assemblies/README.md index f8bfa1d97..f990ae7ad 100644 --- a/releases/reference-assemblies/README.md +++ b/releases/reference-assemblies/README.md @@ -46,14 +46,14 @@ Change `TargetFramework` property to `TargetFrameworks` and add a new .NET Frame Add Package reference: ```xml - - - + + + ``` Build as usual: -```xml +```console dotnet build ``` @@ -77,9 +77,9 @@ Add `TargetFramework` property and a `PackageReference` like in the following ex ### Classic-style project -Add `PackageReference` to your `csproj` file, the same way as in the SDK-style sample above. +1. Add `PackageReference` to your `csproj` file, the same way as in the SDK-style sample above. -Add or modify the `TargetFrameworkVersion` property in your *csproj* file: +2. Add or modify the `TargetFrameworkVersion` property in your *csproj* file: ```xml v4.7.2 @@ -89,13 +89,13 @@ Add or modify the `TargetFrameworkVersion` property in your *csproj* file: 1. Restore NuGet packages: -```xml +```console msbuild /t:restore ``` 2. Build the project: -```xml +```console msbuild ``` From 769df738ab9be06dbd9c3f4d0198a21faec64769 Mon Sep 17 00:00:00 2001 From: Jim Carley Date: Wed, 27 Feb 2019 10:22:25 -0800 Subject: [PATCH 729/872] Compat documents for .NET 4.8 for Workflow runtime and designer. (#966) * Compat documents for .NET 4.8 for Workflow runtime and designer. * Addressed review comments --- .../workflow-designer-accessibility-4-8.md | 56 +++++++++++++++++ ...for-symbols-changed-from-sha1-to-sha256.md | 54 ++++++++++++++++ ...rvice-caches-changed-from-md5-to-sha256.md | 63 +++++++++++++++++++ ...le-checksums-changed-from-md5-to-sha256.md | 58 +++++++++++++++++ 4 files changed, 231 insertions(+) create mode 100644 Documentation/compatibility/workflow-designer-accessibility-4-8.md create mode 100644 Documentation/compatibility/workflow-xaml-checksums-for-symbols-changed-from-sha1-to-sha256.md create mode 100644 Documentation/compatibility/workflow-xoml-definition-and-sqltrackingservice-caches-changed-from-md5-to-sha256.md create mode 100644 Documentation/compatibility/workflow-xoml-file-checksums-changed-from-md5-to-sha256.md diff --git a/Documentation/compatibility/workflow-designer-accessibility-4-8.md b/Documentation/compatibility/workflow-designer-accessibility-4-8.md new file mode 100644 index 000000000..2613e9fb8 --- /dev/null +++ b/Documentation/compatibility/workflow-designer-accessibility-4-8.md @@ -0,0 +1,56 @@ +## Accessibility improvements in Windows Workflow Foundation (WF) workflow designer + +### Scope +Minor + +### Version Introduced +4.8 + +### Source Analyzer Status +NotPlanned + +### Change Description +The Windows Workflow Foundation (WF) workflow designer is improving how it works with accessibility technologies. These improvements include the following changes: +- Users using Narrator will see improvements in FlowSwitch case labels. +- Users who choose High Contrast themes will see many improvements in the visibility of the Workflow Designer and its controls, like better contrast ratios between elements and more noticeable selection boxes used for focus elements. +- Users using Narrator will see improvements in button descriptions. + +- [x] Quirked +- [ ] Build-time break + +### Recommended Action +If you have an application with a re-hosted workflow designer, your application can benefit from these changes by performing either of these actions: +- Recompile your application to target the .NET Framework 4.8 or later. These accessibility changes are enabled by default. +- If your application targets the .NET Framework 4.7.2 or earlier but is running on the .NET Framework 4.8 or later, you can opt out of these legacy accessibility behaviors by adding the following [AppContext switch](~/docs/framework/configure-apps/file-schema/runtime/appcontextswitchoverrides-element.md) to the `` section of the app.config file and set it to `false`, as the following example shows. +```xml + + + + + + + + + + +``` +Applications that target the .NET Framework 4.8 and want to preserve the legacy accessibility behavior can opt in to the use of legacy accessibility features by explicitly setting this AppContext switch to `true`. + + +### Affected APIs + * Not detectable via API analysis + +### Category +Windows Workflow Foundation (WF) + + + + diff --git a/Documentation/compatibility/workflow-xaml-checksums-for-symbols-changed-from-sha1-to-sha256.md b/Documentation/compatibility/workflow-xaml-checksums-for-symbols-changed-from-sha1-to-sha256.md new file mode 100644 index 000000000..8ddcbc9cd --- /dev/null +++ b/Documentation/compatibility/workflow-xaml-checksums-for-symbols-changed-from-sha1-to-sha256.md @@ -0,0 +1,54 @@ +## Workflow XAML checksums for symbols changed from SHA1 to SHA256 + +### Scope +Minor + +### Version Introduced +4.8 + +### Source Analyzer Status +NotPlanned + +### Change Description +To support debugging with Visual Studio, +the Workflow runtime generates a checksum for a workflow XAML file using a hashing algorithm. +In the .NET Framework 4.6.2 and earlier versions, workflow checksum hashing used the MD5 +algorithm, which caused issues on FIPS-enabled systems. Starting with the .NET Framework 4.7, +the default algorithm was changed to SHA1. Starting with the .NET Framework 4.8, the default +algorithm was changed to SHA256. + +- [x] Quirked +- [ ] Build-time break + +### Recommended Action +If your code is unable to load workflow instances or to find appropriate symbols +due to a checksum failure, try setting +the `AppContext` switch "Switch.System.Activities.UseSHA1HashForDebuggerSymbols" to true. + +In code: +```csharp +System.AppContext.SetSwitch("Switch.System.Activities.UseSHA1HashForDebuggerSymbols", true); +``` + +Or in configuration: +```xml + + + + + +``` + +### Affected APIs +* Not detectable via API analysis + +### Category +Windows Workflow Foundation (WF) + + diff --git a/Documentation/compatibility/workflow-xoml-definition-and-sqltrackingservice-caches-changed-from-md5-to-sha256.md b/Documentation/compatibility/workflow-xoml-definition-and-sqltrackingservice-caches-changed-from-md5-to-sha256.md new file mode 100644 index 000000000..88eb04d82 --- /dev/null +++ b/Documentation/compatibility/workflow-xoml-definition-and-sqltrackingservice-caches-changed-from-md5-to-sha256.md @@ -0,0 +1,63 @@ +## Workflow XOML definition and SqlTrackingService cache keys changed from MD5 to SHA256 + +### Scope +Minor + +### Version Introduced +4.8 + +### Source Analyzer Status +NotPlanned + +### Change Description +The Workflow Runtime in keeps a cache of workflow definitions defined in XOML. +The SqlTrackingService also keeps a cache that is keyed by strings. +These caches are keyed by values that include checksum hash value. +In the .NET Framework 4.7.2 and earlier versions, this checksum hashing used the MD5 +algorithm, which caused issues on FIPS-enabled systems. Starting with the .NET Framework 4.8, +the algorithm used is SHA256. + +There shouldn't be an compatability issue with this change because the values are recalculated +each time the Workflow Runtime and SqlTrackingService is started. However, we have provided quirks to allow +customers to revert back to usage of the legacy hashing algorithm, if necessary. + +- [x] Quirked +- [ ] Build-time break // Causes a break if attempted to recompile + +### Recommended Action +If this change presents a problem when executing workflows, try setting one or both of +the `AppContext` switches: +- "Switch.System.Workflow.Runtime.UseLegacyHashForWorkflowDefinitionDispenserCacheKey" to true. +- "Switch.System.Workflow.Runtime.UseLegacyHashForSqlTrackingCacheKey" to true. + +In code: +```csharp +System.AppContext.SetSwitch("Switch.System.Workflow.Runtime.UseLegacyHashForWorkflowDefinitionDispenserCacheKey", true); +System.AppContext.SetSwitch("Switch.System.Workflow.Runtime.UseLegacyHashForSqlTrackingCacheKey", true); +``` + +Or in the configuration file (this needs to be in the config file for the application that is creating the object): +```xml + + + + + + +``` + +### Affected APIs +* Not detectable via API analysis + +### Category +Windows Workflow Foundation (WF) + + + + diff --git a/Documentation/compatibility/workflow-xoml-file-checksums-changed-from-md5-to-sha256.md b/Documentation/compatibility/workflow-xoml-file-checksums-changed-from-md5-to-sha256.md new file mode 100644 index 000000000..e04eae5fc --- /dev/null +++ b/Documentation/compatibility/workflow-xoml-file-checksums-changed-from-md5-to-sha256.md @@ -0,0 +1,58 @@ +## Workflow XOML file checksums changed from MD5 to SHA256 + +### Scope +Minor + +### Version Introduced +4.8 + +### Source Analyzer Status +NotPlanned + +### Change Description +To support debugging XOML-based workflows with Visual Studio, +when workflow projects containing XOML files build, a checksum of the contents of the XOML file is included in the code +generated as a value. +In the .NET Framework 4.7.2 and earlier versions, this checksum hashing used the MD5 +algorithm, which caused issues on FIPS-enabled systems. Starting with the .NET Framework 4.8, +the algorithm used is SHA256. To be compatibile with the WorkflowMarkupSourceAttribute.MD5Digest, +only the first 16 bytes of the generated checksum are used. + +This may cause problems during debugging. You may need to re-build your project. + +- [x] Quirked +- [ ] Build-time break // Causes a break if attempted to recompile + +### Recommended Action +If re-building your project does not solve the problem, try setting +the `AppContext` switch "Switch.System.Workflow.ComponentModel.UseLegacyHashForXomlFileChecksum" to true. + +In code: +```csharp +System.AppContext.SetSwitch("Switch.System.Workflow.ComponentModel.UseLegacyHashForXomlFileChecksum", true); +``` + +Or in a configuration file (this needs to be in MSBuild.exe.config for the MSBuild.exe that you are using): +```xml + + + + + +``` + +### Affected APIs +* Not detectable via API analysis + +### Category +Windows Workflow Foundation (WF) + + + + From cec70ecd2b843cc29e01040d99338281f1ae0ca9 Mon Sep 17 00:00:00 2001 From: Nikola Milosavljevic Date: Thu, 28 Feb 2019 10:12:11 -0800 Subject: [PATCH 730/872] Update README.md --- releases/reference-assemblies/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/releases/reference-assemblies/README.md b/releases/reference-assemblies/README.md index f990ae7ad..a665c3930 100644 --- a/releases/reference-assemblies/README.md +++ b/releases/reference-assemblies/README.md @@ -59,7 +59,7 @@ dotnet build ### SDK-style project -Add `TargetFramework` property and a `PackageReference` like in the following example `csproj` file: +Add the `TargetFramework` property and a `PackageReference` like in the following example `csproj` file: ```xml From 1a9aaeeb1f823c795cec312fd73c1d3b654287d7 Mon Sep 17 00:00:00 2001 From: Zach Montoya Date: Mon, 4 Mar 2019 15:48:34 -0800 Subject: [PATCH 731/872] Add license info for UWP releases. --- releases/UWP/LICENSE.TXT | 55 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 releases/UWP/LICENSE.TXT diff --git a/releases/UWP/LICENSE.TXT b/releases/UWP/LICENSE.TXT new file mode 100644 index 000000000..6bfa203d0 --- /dev/null +++ b/releases/UWP/LICENSE.TXT @@ -0,0 +1,55 @@ +MICROSOFT SOFTWARE LICENSE TERMS +MICROSOFT.NETCORE.UNIVERSALWINDOWSPLATFORM + +These license terms are an agreement between Microsoft Corporation (or based on where you live, one of its affiliates) and you. They apply to the software named above. The terms also apply to any Microsoft services or updates for the software, except to the extent those have different terms. + +IF YOU COMPLY WITH THESE LICENSE TERMS, YOU HAVE THE RIGHTS BELOW. + +1. INSTALLATION AND USE RIGHTS. You may install and use any number of copies of the software to develop and test your applications. +2. THIRD PARTY COMPONENTS. The software may include third party components with separate legal notices or governed by other agreements, as may be described in the ThirdPartyNotices file(s) accompanying the software. +3. DISTRIBUTABLE CODE. The software contains code that you are permitted to distribute in applications you develop as described in this Section. (For this Section the term “distribution” also means deployment of your applications for third parties to access over the Internet.). + a. Right to Use and Distribute. The object code listed below is “Distributable Code”. + • You may copy and distribute the object code form of the software. + • Third Party Distribution. You may permit distributors of your applications to copy and distribute the Distributable Code as part of those applications. + b. Distribution Requirements. For any Distributable Code you distribute, you must + • add significant primary functionality to it in your applications; + • require distributors and external end users to agree to terms that protect the Distributable Code at least as much as this agreement; and, + • indemnify, defend, and hold harmless Microsoft from any claims, including attorneys’ fees, related to the distribution or use of your applications, except to the extent that any claim is based solely on the Distributable Code. + c. Distribution Restrictions. You may not use Microsoft’s trademarks in your applications’ names or branding in a way that suggests your applications come from or are endorsed by Microsoft; or modify or distribute the source code of any Distributable Code so that any part of it becomes subject to an Excluded License. An Excluded License is one that requires, as a condition of use, modification or distribution, that + i. the code be disclosed or distributed in source code form; or + ii. others have the right to modify it. +4. DATA. + a. Data Collection. The software may collect information about you and your use of the software, and send that to Microsoft. Microsoft may use this information to provide services and improve our products and services. You may opt-out of many of these scenarios, but not all, as described in the product documentation. There are also some features in the software that may enable you and Microsoft to collect data from users of your applications. If you use these features, you must comply with applicable law, including providing appropriate notices to users of your applications together with a copy of Microsoft’s privacy statement. Our privacy statement is located at https://go.microsoft.com/fwlink/?LinkID=824704. You can learn more about data collection and use in the help documentation and our privacy statement. Your use of the software operates as your consent to these practices. + b. Processing of Personal Data. To the extent Microsoft is a processor or subprocessor of personal data in connection with the software, Microsoft makes the commitments in the European Union General Data Protection Regulation Terms of the Online Services Terms to all customers effective May 25, 2018, at http://go.microsoft.com/?linkid=9840733. +5. SCOPE OF LICENSE. The software is licensed, not sold. This agreement only gives you some rights to use the software. Microsoft reserves all other rights. Unless applicable law gives you more rights despite this limitation, you may use the software only as expressly permitted in this agreement. In doing so, you must comply with any technical limitations in the software that only allow you to use it in certain ways. You may not + • work around any technical limitations in the software; + • reverse engineer, decompile or disassemble the software, or otherwise attempt to derive the source code for the software, except and to the extent required by third party licensing terms governing use of certain open source components that may be included in the software; + • remove, minimize, block or modify any notices of Microsoft or its suppliers in the software; + • use the software in any way that is against the law; or + • share, publish, rent or lease the software, provide the software as a stand-alone offering for others to use, or transfer the software or this agreement to any third party. +6. EXPORT RESTRICTIONS. You must comply with all domestic and international export laws and regulations that apply to the software, which include restrictions on destinations, end users, and end use. For further information on export restrictions, visit www.microsoft.com/exporting. +7. SUPPORT SERVICES. Because this software is “as is,” we may not provide support services for it. +8. ENTIRE AGREEMENT. This agreement, and the terms for supplements, updates, Internet-based services and support services that you use, are the entire agreement for the software and support services. +9. APPLICABLE LAW. If you acquired the software in the United States, Washington law applies to interpretation of and claims for breach of this agreement, and the laws of the state where you live apply to all other claims. If you acquired the software in any other country, its laws apply. +10. CONSUMER RIGHTS; REGIONAL VARIATIONS. This agreement describes certain legal rights. You may have other rights, including consumer rights, under the laws of your state or country. Separate and apart from your relationship with Microsoft, you may also have rights with respect to the party from which you acquired the software. This agreement does not change those other rights if the laws of your state or country do not permit it to do so. For example, if you acquired the software in one of the below regions, or mandatory country law applies, then the following provisions apply to you: + a) Australia. You have statutory guarantees under the Australian Consumer Law and nothing in this agreement is intended to affect those rights. + b) Canada. If you acquired this software in Canada, you may stop receiving updates by turning off the automatic update feature, disconnecting your device from the Internet (if and when you re-connect to the Internet, however, the software will resume checking for and installing updates), or uninstalling the software. The product documentation, if any, may also specify how to turn off updates for your specific device or software. + c) Germany and Austria. + (i) Warranty. The software will perform substantially as described in any Microsoft materials that accompany it. However, Microsoft gives no contractual guarantee in relation to the software. + (ii) Limitation of Liability. In case of intentional conduct, gross negligence, claims based on the Product Liability Act, as well as in case of death or personal or physical injury, Microsoft is liable according to the statutory law. +Subject to the foregoing clause (ii), Microsoft will only be liable for slight negligence if Microsoft is in breach of such material contractual obligations, the fulfillment of which facilitate the due performance of this agreement, the breach of which would endanger the purpose of this agreement and the compliance with which a party may constantly trust in (so-called "cardinal obligations"). In other cases of slight negligence, Microsoft will not be liable for slight negligence +11. DISCLAIMER OF WARRANTY. THE SOFTWARE IS LICENSED “AS-IS.” YOU BEAR THE RISK OF USING IT. MICROSOFT GIVES NO EXPRESS WARRANTIES, GUARANTEES OR CONDITIONS. TO THE EXTENT PERMITTED UNDER YOUR LOCAL LAWS, MICROSOFT EXCLUDES THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. +12. LIMITATION ON AND EXCLUSION OF REMEDIES AND DAMAGES. YOU CAN RECOVER FROM MICROSOFT AND ITS SUPPLIERS ONLY DIRECT DAMAGES UP TO U.S. $5.00. YOU CANNOT RECOVER ANY OTHER DAMAGES, INCLUDING CONSEQUENTIAL, LOST PROFITS, SPECIAL, INDIRECT OR INCIDENTAL DAMAGES. +This limitation applies to (a) anything related to the software, services, content (including code) on third party Internet sites, or third party applications; and (b) claims for breach of contract, breach of warranty, guarantee or condition, strict liability, negligence, or other tort to the extent permitted by applicable law. +It also applies even if Microsoft knew or should have known about the possibility of the damages. The above limitation or exclusion may not apply to you because your state or country may not allow the exclusion or limitation of incidental, consequential or other damages. + +Please note: As this software is distributed in Quebec, Canada, some of the clauses in this agreement are provided below in French. +Remarque : Ce logiciel étant distribué au Québec, Canada, certaines des clauses dans ce contrat sont fournies ci-dessous en français. +EXONÉRATION DE GARANTIE. Le logiciel visé par une licence est offert « tel quel ». Toute utilisation de ce logiciel est à votre seule risque et péril. Microsoft n’accorde aucune autre garantie expresse. Vous pouvez bénéficier de droits additionnels en vertu du droit local sur la protection des consommateurs, que ce contrat ne peut modifier. La ou elles sont permises par le droit locale, les garanties implicites de qualité marchande, d’adéquation à un usage particulier et d’absence de contrefaçon sont exclues. +LIMITATION DES DOMMAGES-INTÉRÊTS ET EXCLUSION DE RESPONSABILITÉ POUR LES DOMMAGES. Vous pouvez obtenir de Microsoft et de ses fournisseurs une indemnisation en cas de dommages directs uniquement à hauteur de 5,00 $ US. Vous ne pouvez prétendre à aucune indemnisation pour les autres dommages, y compris les dommages spéciaux, indirects ou accessoires et pertes de bénéfices. +Cette limitation concerne: + · tout ce qui est relié au logiciel, aux services ou au contenu (y compris le code) figurant sur des sites Internet tiers ou dans des programmes tiers ; et + · les réclamations au titre de violation de contrat ou de garantie, ou au titre de responsabilité stricte, de négligence ou d’une autre faute dans la limite autorisée par la loi en vigueur. +Elle s’applique également, même si Microsoft connaissait ou devrait connaître l’éventualité d’un tel dommage. Si votre pays n’autorise pas l’exclusion ou la limitation de responsabilité pour les dommages indirects, accessoires ou de quelque nature que ce soit, il se peut que la limitation ou l’exclusion ci-dessus ne s’appliquera pas à votre égard. +EFFET JURIDIQUE. Le présent contrat décrit certains droits juridiques. Vous pourriez avoir d’autres droits prévus par les lois de votre pays. Le présent contrat ne modifie pas les droits que vous confèrent les lois de votre pays si celles-ci ne le permettent pas. + From b758f37eac8bfa1971675c0d75c49cfb003d82ce Mon Sep 17 00:00:00 2001 From: Ashraf Alam Date: Fri, 8 Mar 2019 03:12:51 +0800 Subject: [PATCH 732/872] Removed broken link (#972) The link is not available. --- dotnet-developer-projects.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index f073afa95..833bffd74 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -65,7 +65,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [WebSharper](https://bitbucket.org/IntelliFactory/websharper) - Web programming platform including a compiler from F# code to JavaScript. ## Web Marketplace - * [BeYourMarket](https://github.com/beyourmarket/beyourmarket) - BeYourMarket is a peer-to-peer marketplace framework http://beyourmarket.com + * [BeYourMarket](https://github.com/beyourmarket/beyourmarket) - BeYourMarket is a peer-to-peer marketplace framework. ## Web Frameworks * [ASP.NET Boilerplate](https://github.com/aspnetboilerplate/aspnetboilerplate) - ASP.NET Boilerplate is a general-purpose application framework specially designed for new modern web applications. It uses already familiar tools and implements best practices around them to provide you a solid development experience. From 24bf0f67d0b34234381ecc5843e434647e2e5f4f Mon Sep 17 00:00:00 2001 From: Alicia Li Date: Thu, 7 Mar 2019 13:01:23 -0800 Subject: [PATCH 733/872] Add WCF compat doc for bug#424922 (#970) * Add WCF compat doc for bug#424922 * Update Documentation/compatibility/wcf-accessbility-combobox-high-contrast-issue-in-svcTraceViewer-tool.md Update per review feedback Co-Authored-By: Lxiamail * Update Documentation/compatibility/wcf-accessbility-combobox-high-contrast-issue-in-svcTraceViewer-tool.md Update per review feedback Co-Authored-By: Lxiamail * Update wcf-accessbility-combobox-high-contrast-issue-in-svcTraceViewer-tool.md --- ...h-contrast-issue-in-svcTraceViewer-tool.md | 35 +++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 Documentation/compatibility/wcf-accessbility-combobox-high-contrast-issue-in-svcTraceViewer-tool.md diff --git a/Documentation/compatibility/wcf-accessbility-combobox-high-contrast-issue-in-svcTraceViewer-tool.md b/Documentation/compatibility/wcf-accessbility-combobox-high-contrast-issue-in-svcTraceViewer-tool.md new file mode 100644 index 000000000..94201b240 --- /dev/null +++ b/Documentation/compatibility/wcf-accessbility-combobox-high-contrast-issue-in-svcTraceViewer-tool.md @@ -0,0 +1,35 @@ + +## [svcTraceViewer ComboBox high contrast change] + +### Scope +Edge + +### Version Introduced +4.8 +### Source Analyzer Status +NotPlanned + +### Change Description +In the [Microsoft Service Trace Viewer tool](~/docs/framework/wcf/service-trace-viewer-tool-svctraceviewer-exe.md), ComboBox controls were not displayed in the correct color in certain high contrast themes. The issue was fixed in .NET Framework 4.7.2. However, due to .NET Framework SDK backward compatibility requirements, the fix was not visible to customers by default. .NET 4.8 surfaces this change by adding the following [AppContext configuration switches](~/docs/framework/configure-apps/file-schema/runtime/appcontextswitchoverrides-element.md) to the svcTraceViewer.exe.config file: +```xml + +``` + +### Recommended Action + - How to opt out of the change + If you don't want to have the high contrast behavior change, you can disable it by removing the following section from the svcTraceViewer.exe.config file: +```xml + +``` + +### Affected APIs +* Not detectable via API analysis + +### Category +Windows Communication Foundation (WCF) + + + From 7698a155c60dface3db453626fa189f8bf45e4a2 Mon Sep 17 00:00:00 2001 From: Miguel Pena Garcia <32345992+miguep@users.noreply.github.com> Date: Thu, 7 Mar 2019 13:03:16 -0800 Subject: [PATCH 734/872] Wpf documentation for 4.8 features and bug fixes (#968) * Accessibility improvements and SelectionTextBrush * adding xrefs to accessibility improvements * adding HwndHost fix doc * Adding bug fixes * Apply suggestions from code review Co-Authored-By: miguep <32345992+miguep@users.noreply.github.com> * Addressing additional feedback: Adding a link to the older TextBox Password change, so it is clearer what the change does, and how to enable the previous change --- ...ld-hwnd-correct-size-during-DPI-changes.md | 43 ++++ ...rush-property-for-non-adorner-selection.md | 45 ++++ .../wpf-accessibility-improvements-48.md | 202 ++++++++++++++++++ ...-databinding-should-use-key-not-indexer.md | 40 ++++ ...-size-allocation-with-collapsed-element.md | 27 +++ .../wpf-hang-listbox-duplicate-valuetypes.md | 24 +++ ...f-keyboard-navigation-listbox-hyperlink.md | 24 +++ ...formace-improvement-grouping-automation.md | 24 +++ 8 files changed, 429 insertions(+) create mode 100644 Documentation/compatibility/wpf-HwndHost-child-hwnd-correct-size-during-DPI-changes.md create mode 100644 Documentation/compatibility/wpf-SelectionTextBrush-property-for-non-adorner-selection.md create mode 100644 Documentation/compatibility/wpf-accessibility-improvements-48.md create mode 100644 Documentation/compatibility/wpf-databinding-should-use-key-not-indexer.md create mode 100644 Documentation/compatibility/wpf-grid-row-size-allocation-with-collapsed-element.md create mode 100644 Documentation/compatibility/wpf-hang-listbox-duplicate-valuetypes.md create mode 100644 Documentation/compatibility/wpf-keyboard-navigation-listbox-hyperlink.md create mode 100644 Documentation/compatibility/wpf-performace-improvement-grouping-automation.md diff --git a/Documentation/compatibility/wpf-HwndHost-child-hwnd-correct-size-during-DPI-changes.md b/Documentation/compatibility/wpf-HwndHost-child-hwnd-correct-size-during-DPI-changes.md new file mode 100644 index 000000000..e47479c52 --- /dev/null +++ b/Documentation/compatibility/wpf-HwndHost-child-hwnd-correct-size-during-DPI-changes.md @@ -0,0 +1,43 @@ +## HwndHost now correctly resizes child-HWND during DPI changes + +### Scope +Major + +### Version Introduced +4.8 + +### Source Analyzer Status +NotPlanned + +### Change Description +In .NET Framework 4.7.2 and earlier versions, when WPF was run in Per-Monitor Aware mode, controls hosted within were not sized correctly after DPI changes, such as when moving applications from one monitor to another. This fix ensures that hosted controls are sized appropriately. + +- [x] Quirked +- [ ] Build-time break + +### Recommended Action +In order for the application to benefit from these changes, it must run on the .NET Framework 4.7.2 or later, and it must opt-in to this behavior by setting the following [AppContext Switch](https://docs.microsoft.com/dotnet/framework/configure-apps/file-schema/runtime/appcontextswitchoverrides-element) in the `` section of the app config file to `false`, as the following example shows. + +```xml + + + + + + + + + + +``` + +### Category +WPF + + diff --git a/Documentation/compatibility/wpf-SelectionTextBrush-property-for-non-adorner-selection.md b/Documentation/compatibility/wpf-SelectionTextBrush-property-for-non-adorner-selection.md new file mode 100644 index 000000000..12fbf2799 --- /dev/null +++ b/Documentation/compatibility/wpf-SelectionTextBrush-property-for-non-adorner-selection.md @@ -0,0 +1,45 @@ +## Add SelectionTextBrush public property to TextBox/PasswordBox non-adorner selection + +### Scope +Major + +### Version Introduced +4.8 + +### Source Analyzer Status +NotPlanned + +### Change Description +In WPF applications using [non-adorner based text selection](wpf-TextBox-PasswordBox-text-selection-does-not-follow-system-colors.md) for [TextBox](xref:System.Windows.Controls.TextBox) and [PasswordBox](xref:System.Windows.Controls.PasswordBox), developers may now set the newly added SelectionTextBrush property in order to alter the rendering of the selected text. By default, this color changes with [SystemColors.HighlightTextBrushKey](xref:System.Windows.SystemColors.HighlightTextBrushKey). If non-adorner based text selection is not enabled, this property does nothing. + +- [x] Quirked +- [ ] Build-time break + +### Recommended Action +Once non-adorner based text selection is enabled, you can use the and [TextBox.SelectionTextBrush](xref:System.Windows.Controls.Primitives.TextBoxBase.SelectionTextBrush) property to change the appearance of the selected text. This can be achieved using XAML: + + +```xaml + + This is some text. + +``` + + +### Affected APIs +* `F:System.Windows.Controls.Primitives.TextBoxBase.SelectionTextBrushProperty` +* `P:System.Windows.Controls.Primitives.TextBoxBase.SelectionTextBrush` +* [System.Windows.Controls.TextBox](xref:System.Windows.Controls.TextBox) +* [System.Windows.Controls.PasswordBox](xref:System.Windows.Controls.PasswordBox) + +### Category +WPF + + diff --git a/Documentation/compatibility/wpf-accessibility-improvements-48.md b/Documentation/compatibility/wpf-accessibility-improvements-48.md new file mode 100644 index 000000000..75cfa99c7 --- /dev/null +++ b/Documentation/compatibility/wpf-accessibility-improvements-48.md @@ -0,0 +1,202 @@ +## Accessibility improvements in WPF + +### Scope +Major + +### Version Introduced +4.8 + +### Source Analyzer Status +NotPlanned + +### Change Description +**Tooltips show on Keyboard focus** +In .NET Framework 4.7.2 and earlier versions, tooltips only display when a user hovers the mouse cursor over a WPF control. Starting with .NET Framework 4.8, , tooltips are displayed on keyboard focus as well as via a keyboard shortcut. +To enable this feature, an application needs to target .NET Framework 4.8 or opt-in via [SystemColors.HighlightTextBrushKey](xref:System.Windows.SystemColors.HighlightTextBrushKey) `Switch.UseLegacyAccessibilityFeatures.3` and `Switch.UseLegacyToolTipDisplay`., as the following example shows: +```xml + + + + + + + + + +``` + +Once enabled, all controls containing a tooltip will display it once the control receives keyboard focus. The tooltip can be dismissed over time or when keyboard focus changes. Users can also dismiss the tooltip manually with a new keyboard shortcut, Ctrl + Shift + F10. Once the tooltip has been dismissed, it can be displayed again by using the same keyboard shortcut. + +Note: [RibbonToolTips](xref:System.Windows.Controls.Ribbon.RibbonToolTip) on [RibbonControls](xref:System.Windows.Controls.Ribbon.RibbonControl) don’t show on keyboard focus; they only show by using the keyboard shortcut. + +**Elements with Collapsed or Hidden visibility are no longer announced by screen readers** +User interfaces containing or elements can be misrepresented by screen readers if such elements are announced to the user. In .NET Framework 4.8, WPF no longer includes Collapsed or Hidden elements in the Control View of the UIAutomation tree, so that screen readers no longer announce these elements. + +**SizeOfSet and PositionInSet Support** +Windows 10 introduced the SizeOfSet and PositionInSet [UIAutomation properties](/windows/desktop/winauto/uiauto-automation-element-propids), which are used by applications to describe the count of items in a set. UIAutomation client applications such as screen readers can then query an application for these properties and announce an accurate representation of the application’s UI. + +This feature adds support for WPF applications to expose these two properties to UIAutomation. These two properties can be exposed to UIAutomation in either of two ways: + +- __Dependency Properties__
The [SizeOfSet](xref:System.Windows.Automation.AutomationProperties.SizeOfSetProperty) and [PositionInSet](xref:System.Windows.Automation.AutomationProperties.PositionInSetProperty) [dependency properties](xref:System.Windows.DependencyProperty) have been added to the class. A developer can set their values via XAML: +```xaml + + + +``` + + +- __AutomationPeer virtual methods__
The and virtual methods have been added to the class. A developer can provide values for `SizeOfSet` and `PositionInSet` by overriding these methods: +```csharp + public class MyButtonAutomationPeer : ButtonAutomationPeer + { + protected override int GetSizeOfSetCore() + { + // Call into your own logic to provide a value for SizeOfSet + return CalculateSizeOfSet(); + } + + protected override int GetPositionInSetCore() + { + // Call into your own logic to provide a value for PositionInSet + return CalculatePositionInSet(); + } + } +``` +- __Automatic Values__
Items in [ItemsControls](xref:System.Windows.Controls.ItemsControl) provide a value for these properties automatically without additional action from the developer. If an ItemsControl is grouped, the collection of groups is represented as a set, and each group is counted as a separate set, with each item inside that group providing its position inside that group as well as the size of the group. Automatic values are not affected by virtualization. Even if an item is not realized, it is still counted toward the total size of the set and affects the position in the set of its sibling items. + +**ControllerFor property support** +UIAutomation’s ControllerFor property returns an array of automation elements that are manipulated by the automation element that supports this property. This property is commonly used for Auto-suggest accessibility. ControllerFor is used when an automation element affects one or more segments of the application UI or the desktop. Otherwise, it is hard to associate the impact of the control operation with UI elements. This feature adds the ability for controls to provide a value for the ControllerFor property. + +A new virtual method has been added to the class: +```csharp + virtual protected List GetControlledPeersCore() +``` +To provide a value for the ControllerFor property, simply override this method and return a list of [AutomationPeers](xref:System.Windows.Automation.Peers.AutomationPeer) for the controls being manipulated by this : +```csharp +public class AutoSuggestTextBox: TextBox + { + protected override AutomationPeer OnCreateAutomationPeer() + { + return new AutoSuggestTextBoxAutomationPeer(this); + } + + public ListBox SuggestionListBox; + } + + internal class AutoSuggestTextBoxAutomationPeer : TextBoxAutomationPeer + { + public AutoSuggestTextBoxAutomationPeer(AutoSuggestTextBox owner) : base(owner) + { + } + + protected override List GetControlledPeersCore() + { + List controlledPeers = new List(); + AutoSuggestTextBox owner = Owner as AutoSuggestTextBox; + + controlledPeers.Add(UIElementAutomationPeer.CreatePeerForElement(owner.SuggestionListBox)); + return controlledPeers; + } + } +``` + +**The Name Automation property is now correctly propagated for the DatePicker and RibbonComboBox controls** +Starting with .NET Framework 4.8, the and controls reflect the value assigned to them when read by a screen reader. + +**Expanders in GroupItem headers are now announced by screen readers** +Starting with .NET Framework 4.8, an in a re-templated header is announced by screen readers. + +**Improved focus move logic when WPF is hosted in Windows Forms** +The focus no longer loops inside a WPF instead of breaking out of it under some hosting scenarios. + +**Changed the padding header in GridView to not focusable** +In the .NET Framework 4.7.2 and earlier versions, the automatically generated padding header in a control was focusable, creating a bad experience for keyboard-only users. Starting with .NET Framework 4.8, it is not focusable. + +**Fixed automation tree for plain ItemsControl** +Fixed an accessibility problem where the automation tree exposed for a plain (as opposed to a derived class like ListBox or DataGrid) was not correct. + +**Fixed bounding rectangles in Per-Monitor DPI** +In .NET Framework 4.7.2 and earlier versions, certain bounding rectangles around text are drawn incorrectly by Accessibility tools when WPF is run in Per-Monitor Aware mode. Starting with .NET Framework 4.8, they are drawn correctly. + +
+ +- [x] Quirked +- [ ] Build-time break + +### Recommended Action +__How to opt in or out of these changes__ + +In order for the application to benefit from these changes, it must run on the .NET Framework 4.8 or later. The application can benefit from these changes in either of the following ways: +- It is recompiled to target the .NET Framework 4.8. These accessibility changes are enabled by default on WPF applications that target the .NET Framework 4.8 or later. +- It targets the .NET Framework 4.7.2 or an earlier version and opts out of the legacy accessibility behaviors by adding the following [AppContext switch](https://docs.microsoft.com/dotnet/framework/configure-apps/file-schema/runtime/appcontextswitchoverrides-element) to the `` section of the app config file and setting it to `false`, as the following example shows. + +```xml + + + + + + + + + + +``` +Note that to opt in to the accessibility features added in .NET Framework 4.8, you must also opt in to the accessibility features of .NET Framework 4.7.2 and .NET Framework 4.7.1 as well. +Applications that target the .NET Framework 4.8 or later and want to preserve the legacy accessibility behavior can opt in to the use of legacy accessibility features by explicitly setting this AppContext switch to `true`. + +### Affected APIs + +* `M:System.Windows.Automation.Peers.AutomationPeer.GetSizeOfSetCore` +* `M:System.Windows.Automation.Peers.AutomationPeer.GetPositionInSetCore` +* `M:System.Windows.Automation.Peers.AutomationPeer.GetControlledPeersCore` +* `M:System.Windows.Automation.Peers.AutomationPeer.GetSizeOfSet` +* `M:System.Windows.Automation.Peers.AutomationPeer.GetPositionInSet` +* `M:System.Windows.Automation.Peers.AutomationPeer.GetControlledPeers` +* `M:System.Windows.Automation.Peers.ContentElementAutomationPeer.GetSizeOfSetCore` +* `M:System.Windows.Automation.Peers.ContentElementAutomationPeer.GetPositionInSetCore` +* `M:System.Windows.Automation.Peers.UIElementAutomationPeer.GetSizeOfSetCore` +* `M:System.Windows.Automation.Peers.UIElementAutomationPeer.GetPositionInSetCore` +* `M:System.Windows.Automation.Peers.UIElement3DAutomationPeer.GetSizeOfSetCore` +* `M:System.Windows.Automation.Peers.UIElement3DAutomationPeer.GetPositionInSetCore` +* `M:System.Windows.Automation.Peers.DataGridCellItemAutomationPeer.GetSizeOfSetCore` +* `M:System.Windows.Automation.Peers.DataGridCellItemAutomationPeer.GetPositionInSetCore` +* `M:System.Windows.Automation.Peers.DateTimeAutomationPeer.GetSizeOfSetCore` +* `M:System.Windows.Automation.Peers.DateTimeAutomationPeer.GetPositionInSetCore` +* `M:System.Windows.Automation.Peers.GroupItemAutomationPeer.GetSizeOfSetCore` +* `M:System.Windows.Automation.Peers.GroupItemAutomationPeer.GetPositionInSetCore` +* `M:System.Windows.Automation.Peers.ItemAutomationPeer.GetSizeOfSetCore` +* `M:System.Windows.Automation.Peers.ItemAutomationPeer.GetPositionInSetCore` +* `M:System.Windows.Automation.Peers.MenuItemAutomationPeer.GetSizeOfSetCore` +* `M:System.Windows.Automation.Peers.MenuItemAutomationPeer.GetPositionInSetCore` +* `F:System.Windows.Automation.AutomationProperties.SizeOfSetProperty` +* `M:System.Windows.Automation.AutomationProperties.SetSizeOfSet(System.Windows.DependencyObject,int)` +* `M:System.Windows.Automation.AutomationProperties.GetSizeOfSet(System.Windows.DependencyObject)` +* `F:System.Windows.Automation.AutomationProperties.PositionInSetProperty` +* `M:System.Windows.Automation.AutomationProperties.SetPositionInSet(System.Windows.DependencyObject,int)` +* `M:System.Windows.Automation.AutomationProperties.GetPositionInSet(System.Windows.DependencyObject)` +* `F:System.Windows.Automation.AutomationElement.SizeOfSetProperty` +* `F:System.Windows.Automation.AutomationElement.PositionInSetProperty` +* `F:System.Windows.Automation.AutomationElementIdentifiers.SizeOfSetProperty` +* `F:System.Windows.Automation.AutomationElementIdentifiers.PositionInSetProperty` +* `F:System.Windows.Automation.AutomationElementIdentifiers.ControllerForProperty` + +### Category +WPF + + diff --git a/Documentation/compatibility/wpf-databinding-should-use-key-not-indexer.md b/Documentation/compatibility/wpf-databinding-should-use-key-not-indexer.md new file mode 100644 index 000000000..c140ed7f8 --- /dev/null +++ b/Documentation/compatibility/wpf-databinding-should-use-key-not-indexer.md @@ -0,0 +1,40 @@ +## Data Binding improvement for KeyedCollection + +### Scope +Major + +### Version Introduced +4.8 + +### Source Analyzer Status +NotPlanned + +### Change Description +Fixed [Binding's](xref:System.Windows.Data.Binding) incorrect use of IList indexer when the source object declares a custom indexer with the same signature (e.g. KeyedCollection). + +- [ ] Quirked +- [ ] Build-time break + +### Recommended Action +In order for the application to benefit from this change, it must run on the .NET Framework 4.7.2 or later, and it must opt in to the change by adding the following [AppContext switch](https://docs.microsoft.com/dotnet/framework/configure-apps/file-schema/runtime/appcontextswitchoverrides-element) to the `` section of the app config file and setting it to `false`: + +```xml + + + + + + + + + + +``` + +### Category +WPF + + diff --git a/Documentation/compatibility/wpf-grid-row-size-allocation-with-collapsed-element.md b/Documentation/compatibility/wpf-grid-row-size-allocation-with-collapsed-element.md new file mode 100644 index 000000000..c232ad041 --- /dev/null +++ b/Documentation/compatibility/wpf-grid-row-size-allocation-with-collapsed-element.md @@ -0,0 +1,27 @@ +## Improvements to Grid star-rows space allocating algorithm + +### Scope +Major + +### Version Introduced +4.8 + +### Source Analyzer Status +NotPlanned + +### Change Description +Fixed a bug in the [algorithm for allocating sizes to \*-rows](wpf-grid-allocation-of-space-to-star-columns.md) in a introduced in .NET Framework 4.7. In some cases, such as a Grid with `Height="Auto"` containing empty rows, rows were arranged at the wrong position, possibly outside the Grid altogether. + +- [ ] Quirked +- [ ] Build-time break + +### Recommended Action +In order for the application to benefit from these changes, it must run on the .NET Framework 4.8 or later. + +### Category +WPF + + diff --git a/Documentation/compatibility/wpf-hang-listbox-duplicate-valuetypes.md b/Documentation/compatibility/wpf-hang-listbox-duplicate-valuetypes.md new file mode 100644 index 000000000..e87de1555 --- /dev/null +++ b/Documentation/compatibility/wpf-hang-listbox-duplicate-valuetypes.md @@ -0,0 +1,24 @@ +## Fixed a hang when ListBox contains duplicate value-types + +### Scope +Major + +### Version Introduced +4.8 + +### Source Analyzer Status +NotPlanned + +### Change Description +Fixed a problem where a virtualizing can hang during scrolling when its Items collection contains duplicate value-typed objects. + +- [ ] Quirked +- [ ] Build-time break + +### Category +WPF + + diff --git a/Documentation/compatibility/wpf-keyboard-navigation-listbox-hyperlink.md b/Documentation/compatibility/wpf-keyboard-navigation-listbox-hyperlink.md new file mode 100644 index 000000000..8e3c49cb7 --- /dev/null +++ b/Documentation/compatibility/wpf-keyboard-navigation-listbox-hyperlink.md @@ -0,0 +1,24 @@ +## Keyboard navigation improvement in ListBox with Hyperlinks + +### Scope +Major + +### Version Introduced +4.8 + +### Source Analyzer Status +NotPlanned + +### Change Description +Fixed incorrect result of pressing an arrow key when the focus is on a hyperlink within an item that is not the [SelectedItem](xref:System.Windows.Controls.SelectedItemCollection) of the parent . + +- [ ] Quirked +- [ ] Build-time break + +### Category +WPF + + diff --git a/Documentation/compatibility/wpf-performace-improvement-grouping-automation.md b/Documentation/compatibility/wpf-performace-improvement-grouping-automation.md new file mode 100644 index 000000000..68652bb64 --- /dev/null +++ b/Documentation/compatibility/wpf-performace-improvement-grouping-automation.md @@ -0,0 +1,24 @@ +## Performance improvement in Automation tree for grouping ItemsControls + +### Scope +Major + +### Version Introduced +4.8 + +### Source Analyzer Status +NotPlanned + +### Change Description +Improved the performance of rebuilding the automation tree of an , such as a ListBox or DataGrid, in which grouping is enabled. + +- [ ] Quirked +- [ ] Build-time break + +### Category +WPF + + From 36132dd15a5f0e21465d0bdd647f734990bcffae Mon Sep 17 00:00:00 2001 From: Ron Petrusha Date: Fri, 8 Mar 2019 16:49:06 -0800 Subject: [PATCH 735/872] Updated blog links (#976) --- ...arameters_parentwindowhandle-now-expects-hwnd-value.md | 4 ++-- ...ng-target-framework-moniker-results-in-4_0-behavior.md | 2 +- ...rvicepointmanager-and-system_net_security_sslstream.md | 8 ++++++-- 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/Documentation/compatibility/cspparameters_parentwindowhandle-now-expects-hwnd-value.md b/Documentation/compatibility/cspparameters_parentwindowhandle-now-expects-hwnd-value.md index ff921c44b..b9bcb1880 100644 --- a/Documentation/compatibility/cspparameters_parentwindowhandle-now-expects-hwnd-value.md +++ b/Documentation/compatibility/cspparameters_parentwindowhandle-now-expects-hwnd-value.md @@ -42,9 +42,9 @@ cspParameters.ParentWindowHandle = form.Handle; ``` Users who had identified that the correct value to pass was the address of a memory location which held the value `form.Handle` can opt out of the -behavior change by setting the AppContext switch `Switch.System.Security.Cryptography.DoNotAddrOfCspParentWindowHandle` to `true`. +behavior change by setting the AppContext switch `Switch.System.Security.Cryptography.DoNotAddrOfCspParentWindowHandle` to `true`: -1. By programmatically setting compat switches on the AppContext, as explained [here](https://blogs.msdn.com/b/dotnet/archive/2015/04/29/net-announcements-at-build-2015.aspx#dotnet46) +1. By programmatically setting compat switches on the AppContext, as explained [here](https://devblogs.microsoft.com/dotnet/net-announcements-at-build-2015/#dotnet46). 2. By adding the following line to the `` section of the app.config file: ```xml diff --git a/Documentation/compatibility/missing-target-framework-moniker-results-in-4_0-behavior.md b/Documentation/compatibility/missing-target-framework-moniker-results-in-4_0-behavior.md index e70aefe64..4fa40649f 100644 --- a/Documentation/compatibility/missing-target-framework-moniker-results-in-4_0-behavior.md +++ b/Documentation/compatibility/missing-target-framework-moniker-results-in-4_0-behavior.md @@ -30,7 +30,7 @@ automatically apply a A should be supplied, either through adding the attribute directly to the assembly or by specifying a target framework in the -[project file or through Visual Studio's project properties GUI](https://blogs.msdn.com/b/visualstudio/archive/2010/05/19/visual-studio- managed-multi-targeting-part-1-concepts-target-framework-moniker-target-framework.aspx). +[project file or through Visual Studio's project properties GUI](https://devblogs.microsoft.com/visualstudio/visual-studio-managed-multi-targeting-part-1-concepts-target-framework-moniker-target-framework/). ### Affected APIs * Not detectable via API analysis diff --git a/Documentation/compatibility/only-tls-1_0-1_1-and-1_2-protocols-supported-in-system_net_servicepointmanager-and-system_net_security_sslstream.md b/Documentation/compatibility/only-tls-1_0-1_1-and-1_2-protocols-supported-in-system_net_servicepointmanager-and-system_net_security_sslstream.md index bb6c35789..f8056e504 100644 --- a/Documentation/compatibility/only-tls-1_0-1_1-and-1_2-protocols-supported-in-system_net_servicepointmanager-and-system_net_security_sslstream.md +++ b/Documentation/compatibility/only-tls-1_0-1_1-and-1_2-protocols-supported-in-system_net_servicepointmanager-and-system_net_security_sslstream.md @@ -27,8 +27,12 @@ or Tls1.2. If this is not feasible, or if client apps are broken, the class can be used to opt out of this feature in either of two ways: -1. By programmatically setting compat switches on the , as explained [here](https://blogs.msdn.com/b/dotnet/archive/2015/04/29/net-announcements-at-build-2015.aspx#dotnet46) -2. By adding the following line to the `` section of the app.config file: ``; +1. By programmatically setting compat switches on the , as explained [here](https://devblogs.microsoft.com/dotnet/net-announcements-at-build-2015/#dotnet46). +2. By adding the following line to the `` section of the app.config file: + + ```xml + + ``` ### Affected APIs * `F:System.Net.SecurityProtocolType.Ssl3` From 7a9379861b90e40c316275f0737e1b6b545b7cfe Mon Sep 17 00:00:00 2001 From: Jeff Schwartz Date: Mon, 11 Mar 2019 15:39:33 +0000 Subject: [PATCH 736/872] Enable QI IAgileObject for WinRT on Desktop (#974) * Enable QI IAgileObject for WinRT on Desktop * Address feedback --- .../interop-enable-winrt-iagileobject.md | 58 +++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 Documentation/compatibility/interop-enable-winrt-iagileobject.md diff --git a/Documentation/compatibility/interop-enable-winrt-iagileobject.md b/Documentation/compatibility/interop-enable-winrt-iagileobject.md new file mode 100644 index 000000000..58f750910 --- /dev/null +++ b/Documentation/compatibility/interop-enable-winrt-iagileobject.md @@ -0,0 +1,58 @@ +## .NET Interop will now QueryInterface for IAgileObject (a WinRT interface) + +### Scope +Edge + +### Version Introduced +4.8 + +### Source Analyzer Status +NotPlanned + +### Change Description +When using a WinRT event with a .NET delegate, Windows will QI for IAgileObject starting with the .NET Framework 4.8. In previous versions of the .NET Framework, the runtime would fail that QI, and the event could not be subscribed. + +- [ x ] Quirked +- [ ] Build-time break + +### Recommended Action +If enabling the QI for IAgileObject breaks execution, you can disable this code by setting the following configuration. + +#### Method 1: Environment variable + +Set the following environment variable: + + COMPLUS_DisableCCWSupportIAgileObject=1 + + This method affects any environment that inherits this environment variable. This might be just a single + console session, or it might affect the entire machine if you set the environment variable globally. + + The environment variable name is not case-sensitive. + +#### Method 2: Registry + +Using Registry Editor (regedit.exe), find either of the following subkeys: + + HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework + HKEY_CURRENT_USER\SOFTWARE\Microsoft\.NETFramework + + Then add the following: + + Value name: DisableCCWSupportIAgileObject + Type: DWORD (32-bit) Value (also called REG_WORD) + Value: 1 + + You can use the Windows REG.EXE tool to add this value from a command-line or scripting environment. For example: + +```console +reg add HKLM\SOFTWARE\Microsoft\.NETFramework /v DisableCCWSupportIAgileObject /t REG_DWORD /d 1 +``` + + In this case, `HKLM` is used instead of `HKEY_LOCAL_MACHINE`. Use `reg add /?` to see help on this syntax. + + The registry value name is not case-sensitive. + +### Category +Core + + From 29b8cde7de091451caa831c07554e8af9fdd37e6 Mon Sep 17 00:00:00 2001 From: Jeff Schwartz Date: Mon, 11 Mar 2019 15:40:13 +0000 Subject: [PATCH 737/872] CLR COM Event Handler returns E_INVALIDARG and Array Data is not Updatted when Event Parameter is double pointer to SAFEARRAY. (#975) * CLR COM Event Handler returns E_INVALIDARG and Array Data is not Updated when Event Parameter is double pointer to SAFEARRAY. * Address pr feedback --- .../interop-event-handlers-safearray.md | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 Documentation/compatibility/interop-event-handlers-safearray.md diff --git a/Documentation/compatibility/interop-event-handlers-safearray.md b/Documentation/compatibility/interop-event-handlers-safearray.md new file mode 100644 index 000000000..b8afffd72 --- /dev/null +++ b/Documentation/compatibility/interop-event-handlers-safearray.md @@ -0,0 +1,28 @@ +## .NET COM successfully marshals ByRef SafeArray parameters on events + +### Scope +Minor + +### Version Introduced +4.8 + +### Source Analyzer Status +NotPlanned + +### Change Description +In the .NET Framework 4.7.2 and earlier versions, a ByRef [SafeArray](https://docs.microsoft.com/en-us/windows/desktop/api/oaidl/ns-oaidl-safearray) parameter on a COM event would fail to marshal back to native code. With this change the [SafeArray](https://docs.microsoft.com/en-us/windows/desktop/api/oaidl/ns-oaidl-safearray) is now marshalled successfully. + +- [ x ] Quirked +- [ ] Build-time break + +### Recommended Action +If properly marshalling ByRef SafeArray parameters on COM Events breaks execution, you can disable this code by adding the following configuration switch to your application config: + +```xml + + + +``` + +### Category +Core From 0bb047b8b2b6865a0d1273f9aaa4fd981272179c Mon Sep 17 00:00:00 2001 From: Holly Muenchow Date: Wed, 13 Mar 2019 10:16:06 -0700 Subject: [PATCH 738/872] Added 6.2.8 release notes --- releases/UWP/net-native2.2/README.md | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/releases/UWP/net-native2.2/README.md b/releases/UWP/net-native2.2/README.md index 299bc8c7d..300785835 100644 --- a/releases/UWP/net-native2.2/README.md +++ b/releases/UWP/net-native2.2/README.md @@ -2,7 +2,20 @@ You can see what was included in each .NET Native 2.2 ([Microsoft.NETCore.UniversalWindowsPlatform 6.2.x](https://www.nuget.org/packages/Microsoft.NETCore.UniversalWindowsPlatform)) release below. -When using Visual Studio these packages require Visual Studio 2017 Version 15.9 Preview 2 or later. +When using Visual Studio, these packages require Visual Studio 2019 or Visual Studio 2017 Version 15.9. + +### UWP 6.2.8 (March 13th, 2019) +- Adds support for ARM64 +- Improved performance for debugging scenarios (F5) +- Addresses top cusomter issues with 6.1 and 6.2 Preview. +- Addresses some issues when used with ReactiveUI 4.1. It is still recommended that projects wishing to use this package add true to their projects. +- Fix metadata reader issue leading to build failure when using Microsoft.ML.Net (https://github.com/XamlBrewer/UWP-MachineLearning-Sample/pull/1#issuecomment-469988557) +- Fix crashes during resouce loading for some locales (https://developercommunity.visualstudio.com/content/problem/386760/net-native-22-uwp-project-build-fail.html) +- Fix crashes caused by improper escaping for application assets with spaces in path (https://github.com/Microsoft/dotnet/issues/930) +- Add PackageConflictPreferredPackages property to avoid build breaks with certain package graphs +- Fix issues related to Store upload failures (Error 1201) +- Fix for a domain spoofing vulnerability which causes the meaning of a URI to change when International Domain Name encoding is applied. An attacker who successfully exploited the vulnerability could redirect a URI. (https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/CVE-2019-0657) + ### UWP 6.2.0-preview1-26926-04 Preview (October 2nd, 2018) These are preview bits in advance of the release in November 2018 available in Visual Studio 15.9 Preview 3 From 15f927fa99639de277db123af2ef5ffd9a7b742a Mon Sep 17 00:00:00 2001 From: Holly Muenchow Date: Wed, 13 Mar 2019 10:28:34 -0700 Subject: [PATCH 739/872] fixed minor errors --- releases/UWP/net-native2.2/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/releases/UWP/net-native2.2/README.md b/releases/UWP/net-native2.2/README.md index 300785835..48e548b33 100644 --- a/releases/UWP/net-native2.2/README.md +++ b/releases/UWP/net-native2.2/README.md @@ -7,8 +7,8 @@ When using Visual Studio, these packages require Visual Studio 2019 or Visual St ### UWP 6.2.8 (March 13th, 2019) - Adds support for ARM64 - Improved performance for debugging scenarios (F5) -- Addresses top cusomter issues with 6.1 and 6.2 Preview. -- Addresses some issues when used with ReactiveUI 4.1. It is still recommended that projects wishing to use this package add true to their projects. +- Addresses top customer issues with 6.1 and 6.2 Preview. +- Addresses some issues when used with ReactiveUI 4.1. It is still recommended that projects wishing to use this package add ShortcutGenericAnalysis flag set to true to the projects. - Fix metadata reader issue leading to build failure when using Microsoft.ML.Net (https://github.com/XamlBrewer/UWP-MachineLearning-Sample/pull/1#issuecomment-469988557) - Fix crashes during resouce loading for some locales (https://developercommunity.visualstudio.com/content/problem/386760/net-native-22-uwp-project-build-fail.html) - Fix crashes caused by improper escaping for application assets with spaces in path (https://github.com/Microsoft/dotnet/issues/930) From 73df4979c6846c49ad356c52acaccf4b96de9e8d Mon Sep 17 00:00:00 2001 From: Holly Muenchow Date: Wed, 13 Mar 2019 10:31:00 -0700 Subject: [PATCH 740/872] Moved 2.2 to release --- releases/UWP/README.md | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/releases/UWP/README.md b/releases/UWP/README.md index 7198d3542..6178c7d49 100644 --- a/releases/UWP/README.md +++ b/releases/UWP/README.md @@ -6,16 +6,13 @@ You can learn about Microsoft.NETCore.UniversalWindowsPlatform [releases](#relea You can see what was included in each .NET Native (Microsoft.NETCore.UniversalWindowsPlatform) release. +- [.NET Native 2.2 (UWP 6.2.x)](net-native2.2/README.md) - [.NET Native 2.1 (UWP 6.1.x)](net-native2.1/README.md) - [.NET Native 2.0 (UWP 6.0.x)](net-native2.0/README.md) - [.NET Native 1.7 (UWP 5.4.x)](net-native1.7/README.md) - [.NET Native 1.6 (UWP 5.3.x)](net-native1.6/README.md) - [.NET Native 1.4 (UWP 5.2.x)](net-native1.4/README.md) -## Preview Notes - -- [.NET Native 2.2 (UWP 6.2.x)](net-native2.2/README.md) - ## Resources - [Getting Started with .NET Native](https://docs.microsoft.com/en-us/dotnet/framework/net-native/getting-started-with-net-native) From 12fd702ef06e4418d858cc64d7735057ddcbea3c Mon Sep 17 00:00:00 2001 From: Holly Muenchow Date: Wed, 13 Mar 2019 11:01:43 -0700 Subject: [PATCH 741/872] Added 6.1.12 release notes --- releases/UWP/net-native2.1/README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/releases/UWP/net-native2.1/README.md b/releases/UWP/net-native2.1/README.md index 2b793a660..687b53b3b 100644 --- a/releases/UWP/net-native2.1/README.md +++ b/releases/UWP/net-native2.1/README.md @@ -4,6 +4,9 @@ You can see what was included in each .NET Native 2.1 ([Microsoft.NETCore.Univer When using Visual Studio these packages require Visual Studio 2017 Version 15.7 or later. +### UWP 6.1.12 (.NET native tools 2.1.8) (March 13th, 2019) +- Fix for a domain spoofing vulnerability which causes the meaning of a URI to change when International Domain Name encoding is applied. An attacker who successfully exploited the vulnerability could redirect a URI. (https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/CVE-2019-0657) + ### UWP 6.1.9 (.NET native tools 2.1.8) (October 9th, 2018) - Fixed CVE-2018-8292:.NET Information Disclosure Vulnerability: https://github.com/dotnet/announcements/issues/88 From 96962086a379296cfecf0c32da2eb43730c54c91 Mon Sep 17 00:00:00 2001 From: Holly Muenchow Date: Wed, 13 Mar 2019 11:02:33 -0700 Subject: [PATCH 742/872] Added 6.0.15 release notes --- releases/UWP/net-native2.0/README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/releases/UWP/net-native2.0/README.md b/releases/UWP/net-native2.0/README.md index e79817632..44b6541b4 100644 --- a/releases/UWP/net-native2.0/README.md +++ b/releases/UWP/net-native2.0/README.md @@ -4,6 +4,9 @@ You can see what was included in each .NET Native 2.0 ([Microsoft.NETCore.Univer When using Visual Studio these packages require Visual Studio 2017 Version 15.4 or later. +### UWP 6.0.15 (.NET native tools 2.0.3) (March 13th, 2019) +- Fix for a domain spoofing vulnerability which causes the meaning of a URI to change when International Domain Name encoding is applied. An attacker who successfully exploited the vulnerability could redirect a URI. (https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/CVE-2019-0657) + ### UWP 6.0.12 (.NET native tools 2.0.3) (October 9th, 2018) - Fixed CVE-2018-8292:.NET Information Disclosure Vulnerability: https://github.com/dotnet/announcements/issues/88 From 6d3eff0e8f62c8b408600f18890e2908e0082f53 Mon Sep 17 00:00:00 2001 From: Zach Montoya Date: Wed, 13 Mar 2019 11:40:51 -0700 Subject: [PATCH 743/872] Amends the net-native2.2 to clarify the difference between the UWP 6.2.7 and 6.2.8 product --- releases/UWP/net-native2.2/README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/releases/UWP/net-native2.2/README.md b/releases/UWP/net-native2.2/README.md index 48e548b33..0ce522630 100644 --- a/releases/UWP/net-native2.2/README.md +++ b/releases/UWP/net-native2.2/README.md @@ -5,6 +5,9 @@ You can see what was included in each .NET Native 2.2 ([Microsoft.NETCore.Univer When using Visual Studio, these packages require Visual Studio 2019 or Visual Studio 2017 Version 15.9. ### UWP 6.2.8 (March 13th, 2019) +- Fixes package publishing issues + +### UWP 6.2.7 (March 12th, 2019) - Adds support for ARM64 - Improved performance for debugging scenarios (F5) - Addresses top customer issues with 6.1 and 6.2 Preview. From 1bc46a704681e42da9b22a5dcad88e4d6ce49181 Mon Sep 17 00:00:00 2001 From: Zach Montoya Date: Wed, 13 Mar 2019 15:01:23 -0700 Subject: [PATCH 744/872] Update release notes for the UWP 5.x releases for March 2019 - UWP 5.2.9 - UWP 5.3.10 - UWP 5.4.7 --- releases/UWP/net-native1.4/README.md | 3 +++ releases/UWP/net-native1.6/README.md | 3 +++ releases/UWP/net-native1.7/README.md | 5 ++++- 3 files changed, 10 insertions(+), 1 deletion(-) diff --git a/releases/UWP/net-native1.4/README.md b/releases/UWP/net-native1.4/README.md index 5bac6430b..81dd1f25d 100644 --- a/releases/UWP/net-native1.4/README.md +++ b/releases/UWP/net-native1.4/README.md @@ -4,6 +4,9 @@ You can see what was included in each .NET Native 1.4 ([Microsoft.NETCore.Univer When using Visual Studio these packages require Visual Studio 2015 Update 3 or later. +### 5.2.9 (March 13th, 2019) +- Fix for a domain spoofing vulnerability which causes the meaning of a URI to change when International Domain Name encoding is applied. An attacker who successfully exploited the vulnerability could redirect a URI. (https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/CVE-2019-0657) + ### 5.2.6 (July 27th, 2018) - Fixed CVE-2018-8356: Security Feature Bypass in X509 Certificate Validation: https://github.com/dotnet/announcements/issues/73 diff --git a/releases/UWP/net-native1.6/README.md b/releases/UWP/net-native1.6/README.md index 1c995a5ac..a2ee3f45f 100644 --- a/releases/UWP/net-native1.6/README.md +++ b/releases/UWP/net-native1.6/README.md @@ -4,6 +4,9 @@ You can see what was included in each .NET Native 1.6 ([Microsoft.NETCore.Univer When using Visual Studio these packages require Visual Studio 2017 or later. +### UWP 5.3.10 (March 13th, 2019) +- Fix for a domain spoofing vulnerability which causes the meaning of a URI to change when International Domain Name encoding is applied. An attacker who successfully exploited the vulnerability could redirect a URI. (https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/CVE-2019-0657) + ### UWP 5.3.7 (July 27th, 2018) - Fixed CVE-2018-8356: Security Feature Bypass in X509 Certificate Validation: https://github.com/dotnet/announcements/issues/73 diff --git a/releases/UWP/net-native1.7/README.md b/releases/UWP/net-native1.7/README.md index 946ab81c8..d04eb461c 100644 --- a/releases/UWP/net-native1.7/README.md +++ b/releases/UWP/net-native1.7/README.md @@ -3,6 +3,9 @@ You can see what was included in each .NET Native 1.7 ([Microsoft.NETCore.Univer When using Visual Studio these packages require Visual Studio 2017 or later. +### UWP 5.4.7 | UWP 6.0.15 | UWP 6.1.12 | UWP 6.2.7 (.NET native tools 1.7.6) (March 13th, 2019) +- Fix for a domain spoofing vulnerability which causes the meaning of a URI to change when International Domain Name encoding is applied. An attacker who successfully exploited the vulnerability could redirect a URI. (https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/CVE-2019-0657) + ### UWP 6.1.7 (.NET native tools 1.7.3) (July 27th, 2018) - Fixed CVE-2018-8356: Security Feature Bypass in X509 Certificate Validation: https://github.com/dotnet/announcements/issues/73 @@ -16,7 +19,7 @@ When using Visual Studio these packages require Visual Studio 2017 or later. - Fixed an unhandled exception when ClientWebSocket loses connection to server. [518456] - Fixed a regression in the 1.7 toolchain causing winmd file corruption when the file stream is left open. [496929] -### UWP 5.4.4 (.NET native tools 1.7.3) (July 27th, 2018) +### UWP 5.4.4 (.NET native tools 1.7.1) (July 27th, 2018) - Fixed CVE-2018-8356: Security Feature Bypass in X509 Certificate Validation: https://github.com/dotnet/announcements/issues/73 ### UWP 5.4.2 (.NET native tools 1.7.1) (January 9th, 2018) From 8187d21610a78be2abcf77c0fb84b9a375618292 Mon Sep 17 00:00:00 2001 From: Hong Li Date: Fri, 15 Mar 2019 13:13:57 -0700 Subject: [PATCH 745/872] compat doc for bug#563497 (#977) * compat doc for bug#563497 * update perfeedback and add two new documents provided by Steve * Update Documentation/compatibility/aspnet-Fix handling Input and Label attributes for WebForms CheckBox control.md Co-Authored-By: HongGit * Update Documentation/compatibility/aspnet-Fix handling Input and Label attributes for WebForms CheckBox control.md Co-Authored-By: HongGit * Update Documentation/compatibility/aspnet-Fix handling Input and Label attributes for WebForms CheckBox control.md Co-Authored-By: HongGit * Update Documentation/compatibility/aspnet-Invalid results from HttpRequest.GetAttributeFromHeader.md Co-Authored-By: HongGit * Update Documentation/compatibility/aspnet-Invalid results from HttpRequest.GetAttributeFromHeader.md Co-Authored-By: HongGit * Update Documentation/compatibility/aspnet-Invalid results from HttpRequest.GetAttributeFromHeader.md Co-Authored-By: HongGit * Update Documentation/compatibility/aspnet-Invalid results from HttpRequest.GetAttributeFromHeader.md Co-Authored-By: HongGit * more update per feedback * Update Documentation/compatibility/aspnet-Invalid results from HttpRequest.GetAttributeFromHeader.md Co-Authored-By: HongGit * update per review feedback * Update aspnet-Invalid results from HttpRequest.GetAttributeFromHeader.md * Update aspnet-ASP.NET ValidationContext.MemberName is null sometimes.md * Update aspnet-Fix handling Input and Label attributes for WebForms CheckBox control.md --- ...ionContext.MemberName is null sometimes.md | 34 ++++++++++++++++ ...ttributes for WebForms CheckBox control.md | 34 ++++++++++++++++ ...from HttpRequest.GetAttributeFromHeader.md | 40 +++++++++++++++++++ 3 files changed, 108 insertions(+) create mode 100644 Documentation/compatibility/aspnet-ASP.NET ValidationContext.MemberName is null sometimes.md create mode 100644 Documentation/compatibility/aspnet-Fix handling Input and Label attributes for WebForms CheckBox control.md create mode 100644 Documentation/compatibility/aspnet-Invalid results from HttpRequest.GetAttributeFromHeader.md diff --git a/Documentation/compatibility/aspnet-ASP.NET ValidationContext.MemberName is null sometimes.md b/Documentation/compatibility/aspnet-ASP.NET ValidationContext.MemberName is null sometimes.md new file mode 100644 index 000000000..ff27485d1 --- /dev/null +++ b/Documentation/compatibility/aspnet-ASP.NET ValidationContext.MemberName is null sometimes.md @@ -0,0 +1,34 @@ +## ASP.NET ValidationContext.MemberName is not NULL when using custom DataAnnotations.ValidationAttribute + +### Version Introduced +4.8 + +### Change Description +In .NET Framework 4.7.2 and earlier versions, when using a custom , the property returns `null`. In .NET Framework 4.8, it returns the member name. + + +### Recommended Action +The default behavior of the property remains the same. To retrieve a valid value from the `ValidationContext.MemberName` property, add the following setting to your app config file: + +```xml + + + ... + + ... + + +``` + +### Affected APIs +`System.ComponentModel.DataAnnotations.ValidationContext.MemberName` + +### Category +ASP.NET + + + + diff --git a/Documentation/compatibility/aspnet-Fix handling Input and Label attributes for WebForms CheckBox control.md b/Documentation/compatibility/aspnet-Fix handling Input and Label attributes for WebForms CheckBox control.md new file mode 100644 index 000000000..a139ce44d --- /dev/null +++ b/Documentation/compatibility/aspnet-Fix handling Input and Label attributes for WebForms CheckBox control.md @@ -0,0 +1,34 @@ +## ASP.NET Fix handling of InputAttributes and LabelAttributes for WebForms CheckBox control + +### Version Introduced +4.8 + +### Change Description +For applications that target .NET Framework 4.7.2 and earlier versions, and that are programmatically added to a WebForms control are lost +after postback. For applications that target .NET Framework 4.8 or later versions, they are preserved after postback. + +### Recommended Action +For the correct behavior for restoring attributes on postback, set the `targetFrameworkVersion` to 4.8 or higher. For example: + +```xml + + + + + +``` + +Setting it lower, or not at all, preserves the old incorrect behavior. + +### Affected APIs +`System.Web.UI.WebControls.CheckBox` + +### Category +ASP.NET + + + + diff --git a/Documentation/compatibility/aspnet-Invalid results from HttpRequest.GetAttributeFromHeader.md b/Documentation/compatibility/aspnet-Invalid results from HttpRequest.GetAttributeFromHeader.md new file mode 100644 index 000000000..6ce5a1e78 --- /dev/null +++ b/Documentation/compatibility/aspnet-Invalid results from HttpRequest.GetAttributeFromHeader.md @@ -0,0 +1,40 @@ +## ASP.NET Incorrect multipart handling may result in lost form data. + +### Version Introduced +4.8 + +### Change Description +In applications that target .NET Framework 4.7.2 and earlier versions, ASP.Net might incorrectly parse multipart boundary values, +resulting in form data being unavailable during request execution. Applications that target .NET Framework 4.8 or later versions +correctly parse multipart data, so form values are available during request execution. + +### Recommended Action +Starting with applications running on .NET Framework 4.8, when targeting .NET Framework 4.8 or later by using the `targetFrameworkVersion` element, the default behavior changes to strip delimiters. When targeting previous framework versions or not using `targetFrameworkVersion`, trailing delimiters for +some values are still returned. + +This behavior can also be explicitly controlled with an `appSetting`: + +```xml + + + ... + + ... + + +``` + +### Affected APIs +`System.Web.HttpRequest.Form` +`System.Web.HttpRequest.Files` +`System.Web.HttpRequest.Encoding` + +### Category +ASP.NET + + + + From 0849ab0fc26835a6b25ef3fe50eacdcbce7fb564 Mon Sep 17 00:00:00 2001 From: Ron Petrusha Date: Fri, 15 Mar 2019 16:38:14 -0700 Subject: [PATCH 746/872] Migrations (#984) * Updates for net48 branch * Modified readme for 4.8 * Migrated issues merged to master, generated readme --- Documentation/compatibility/README.md | 20 +++++++ ...ionContext.MemberName is null sometimes.md | 34 +++++++++++ ...ttributes for WebForms CheckBox control.md | 34 +++++++++++ ...from HttpRequest.GetAttributeFromHeader.md | 40 +++++++++++++ .../interop-enable-winrt-iagileobject.md | 58 +++++++++++++++++++ .../interop-event-handlers-safearray.md | 28 +++++++++ ...h-contrast-issue-in-svcTraceViewer-tool.md | 1 - 7 files changed, 214 insertions(+), 1 deletion(-) create mode 100644 Documentation/compatibility/aspnet-ASP.NET ValidationContext.MemberName is null sometimes.md create mode 100644 Documentation/compatibility/aspnet-Fix handling Input and Label attributes for WebForms CheckBox control.md create mode 100644 Documentation/compatibility/aspnet-Invalid results from HttpRequest.GetAttributeFromHeader.md create mode 100644 Documentation/compatibility/interop-enable-winrt-iagileobject.md create mode 100644 Documentation/compatibility/interop-event-handlers-safearray.md diff --git a/Documentation/compatibility/README.md b/Documentation/compatibility/README.md index 515fe166d..8a1bcc5b0 100644 --- a/Documentation/compatibility/README.md +++ b/Documentation/compatibility/README.md @@ -17,6 +17,25 @@ Please help us improve the [.NET Framework Application Compatibility documents]( ## .NET Framework 4.8 +- [.NET COM successfully marshals ByRef SafeArray parameters on events](interop-event-handlers-safearray.md) +- [.NET Interop will now QueryInterface for IAgileObject (a WinRT interface)](interop-enable-winrt-iagileobject.md) +- [[svcTraceViewer ComboBox high contrast change]](wcf-accessbility-combobox-high-contrast-issue-in-svcTraceViewer-tool.md) +- [Accessibility improvements in Windows Workflow Foundation (WF) workflow designer](workflow-designer-accessibility-4-8.md) +- [Accessibility improvements in WPF](wpf-accessibility-improvements-48.md) +- [Add SelectionTextBrush public property to TextBox/PasswordBox non-adorner selection](wpf-SelectionTextBrush-property-for-non-adorner-selection.md) +- [ASP.NET Fix handling of InputAttributes and LabelAttributes for WebForms CheckBox control](aspnet-Fix handling Input and Label attributes for WebForms CheckBox control.md) +- [ASP.NET Incorrect multipart handling may result in lost form data.](aspnet-Invalid results from HttpRequest.GetAttributeFromHeader.md) +- [ASP.NET ValidationContext.MemberName is not NULL when using custom DataAnnotations.ValidationAttribute](aspnet-ASP.NET ValidationContext.MemberName is null sometimes.md) +- [Data Binding improvement for KeyedCollection](wpf-databinding-should-use-key-not-indexer.md) +- [Fixed a hang when ListBox contains duplicate value-types](wpf-hang-listbox-duplicate-valuetypes.md) +- [HwndHost now correctly resizes child-HWND during DPI changes](wpf-HwndHost-child-hwnd-correct-size-during-DPI-changes.md) +- [Improvements to Grid star-rows space allocating algorithm](wpf-grid-row-size-allocation-with-collapsed-element.md) +- [Keyboard navigation improvement in ListBox with Hyperlinks](wpf-keyboard-navigation-listbox-hyperlink.md) +- [Performance improvement in Automation tree for grouping ItemsControls](wpf-performace-improvement-grouping-automation.md) +- [Workflow XAML checksums for symbols changed from SHA1 to SHA256](workflow-xaml-checksums-for-symbols-changed-from-sha1-to-sha256.md) +- [Workflow XOML definition and SqlTrackingService cache keys changed from MD5 to SHA256](workflow-xoml-definition-and-sqltrackingservice-caches-changed-from-md5-to-sha256.md) +- [Workflow XOML file checksums changed from MD5 to SHA256](workflow-xoml-file-checksums-changed-from-md5-to-sha256.md) + ## .NET Framework 4.7.2 - ["dataAnnotations:dataTypeAttribute:disableRegEx" app setting is on by default in .NET Framework 4.7.2](aspnet-472-compat-doc.md) @@ -31,6 +50,7 @@ Please help us improve the [.NET Framework Application Compatibility documents]( - [Keyboard focus now moves correctly across multiple layers of WinForms/WPF hosting ](wpf-KB-focus-now-moves-correctly-across-hosting-scenarios.md) - [Keytips behavior improved in WPF](keytips-behavior-improved-in-wpf.md) - [PrivateFontCollection.AddFontFile method releases Font resources](winforms-PrivateFontCollection-Font-handle-leak-fix.md) +- [Resgen refuses to load content from the web](resgen-block-mark-of-the-web-content.md) - [Stack traces obtained when using portable PDBs now include source file and line information if requested](Stack-traces-obtained-when-using-portable-PDBs-now-include-source-file-and-line-information-if-requested.md) - [Support special relative URI notation when Unicode is present](uri-unicode-scheme-only-relative.md) - [The default hash algorithm for WPF's Markup Compiler is now SHA256](wpf-MarkupCompiler-default-hash-algorithm-is-now-SHA256.md) diff --git a/Documentation/compatibility/aspnet-ASP.NET ValidationContext.MemberName is null sometimes.md b/Documentation/compatibility/aspnet-ASP.NET ValidationContext.MemberName is null sometimes.md new file mode 100644 index 000000000..ff27485d1 --- /dev/null +++ b/Documentation/compatibility/aspnet-ASP.NET ValidationContext.MemberName is null sometimes.md @@ -0,0 +1,34 @@ +## ASP.NET ValidationContext.MemberName is not NULL when using custom DataAnnotations.ValidationAttribute + +### Version Introduced +4.8 + +### Change Description +In .NET Framework 4.7.2 and earlier versions, when using a custom , the property returns `null`. In .NET Framework 4.8, it returns the member name. + + +### Recommended Action +The default behavior of the property remains the same. To retrieve a valid value from the `ValidationContext.MemberName` property, add the following setting to your app config file: + +```xml + + + ... + + ... + + +``` + +### Affected APIs +`System.ComponentModel.DataAnnotations.ValidationContext.MemberName` + +### Category +ASP.NET + + + + diff --git a/Documentation/compatibility/aspnet-Fix handling Input and Label attributes for WebForms CheckBox control.md b/Documentation/compatibility/aspnet-Fix handling Input and Label attributes for WebForms CheckBox control.md new file mode 100644 index 000000000..a139ce44d --- /dev/null +++ b/Documentation/compatibility/aspnet-Fix handling Input and Label attributes for WebForms CheckBox control.md @@ -0,0 +1,34 @@ +## ASP.NET Fix handling of InputAttributes and LabelAttributes for WebForms CheckBox control + +### Version Introduced +4.8 + +### Change Description +For applications that target .NET Framework 4.7.2 and earlier versions, and that are programmatically added to a WebForms control are lost +after postback. For applications that target .NET Framework 4.8 or later versions, they are preserved after postback. + +### Recommended Action +For the correct behavior for restoring attributes on postback, set the `targetFrameworkVersion` to 4.8 or higher. For example: + +```xml + + + + + +``` + +Setting it lower, or not at all, preserves the old incorrect behavior. + +### Affected APIs +`System.Web.UI.WebControls.CheckBox` + +### Category +ASP.NET + + + + diff --git a/Documentation/compatibility/aspnet-Invalid results from HttpRequest.GetAttributeFromHeader.md b/Documentation/compatibility/aspnet-Invalid results from HttpRequest.GetAttributeFromHeader.md new file mode 100644 index 000000000..6ce5a1e78 --- /dev/null +++ b/Documentation/compatibility/aspnet-Invalid results from HttpRequest.GetAttributeFromHeader.md @@ -0,0 +1,40 @@ +## ASP.NET Incorrect multipart handling may result in lost form data. + +### Version Introduced +4.8 + +### Change Description +In applications that target .NET Framework 4.7.2 and earlier versions, ASP.Net might incorrectly parse multipart boundary values, +resulting in form data being unavailable during request execution. Applications that target .NET Framework 4.8 or later versions +correctly parse multipart data, so form values are available during request execution. + +### Recommended Action +Starting with applications running on .NET Framework 4.8, when targeting .NET Framework 4.8 or later by using the `targetFrameworkVersion` element, the default behavior changes to strip delimiters. When targeting previous framework versions or not using `targetFrameworkVersion`, trailing delimiters for +some values are still returned. + +This behavior can also be explicitly controlled with an `appSetting`: + +```xml + + + ... + + ... + + +``` + +### Affected APIs +`System.Web.HttpRequest.Form` +`System.Web.HttpRequest.Files` +`System.Web.HttpRequest.Encoding` + +### Category +ASP.NET + + + + diff --git a/Documentation/compatibility/interop-enable-winrt-iagileobject.md b/Documentation/compatibility/interop-enable-winrt-iagileobject.md new file mode 100644 index 000000000..58f750910 --- /dev/null +++ b/Documentation/compatibility/interop-enable-winrt-iagileobject.md @@ -0,0 +1,58 @@ +## .NET Interop will now QueryInterface for IAgileObject (a WinRT interface) + +### Scope +Edge + +### Version Introduced +4.8 + +### Source Analyzer Status +NotPlanned + +### Change Description +When using a WinRT event with a .NET delegate, Windows will QI for IAgileObject starting with the .NET Framework 4.8. In previous versions of the .NET Framework, the runtime would fail that QI, and the event could not be subscribed. + +- [ x ] Quirked +- [ ] Build-time break + +### Recommended Action +If enabling the QI for IAgileObject breaks execution, you can disable this code by setting the following configuration. + +#### Method 1: Environment variable + +Set the following environment variable: + + COMPLUS_DisableCCWSupportIAgileObject=1 + + This method affects any environment that inherits this environment variable. This might be just a single + console session, or it might affect the entire machine if you set the environment variable globally. + + The environment variable name is not case-sensitive. + +#### Method 2: Registry + +Using Registry Editor (regedit.exe), find either of the following subkeys: + + HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework + HKEY_CURRENT_USER\SOFTWARE\Microsoft\.NETFramework + + Then add the following: + + Value name: DisableCCWSupportIAgileObject + Type: DWORD (32-bit) Value (also called REG_WORD) + Value: 1 + + You can use the Windows REG.EXE tool to add this value from a command-line or scripting environment. For example: + +```console +reg add HKLM\SOFTWARE\Microsoft\.NETFramework /v DisableCCWSupportIAgileObject /t REG_DWORD /d 1 +``` + + In this case, `HKLM` is used instead of `HKEY_LOCAL_MACHINE`. Use `reg add /?` to see help on this syntax. + + The registry value name is not case-sensitive. + +### Category +Core + + diff --git a/Documentation/compatibility/interop-event-handlers-safearray.md b/Documentation/compatibility/interop-event-handlers-safearray.md new file mode 100644 index 000000000..b8afffd72 --- /dev/null +++ b/Documentation/compatibility/interop-event-handlers-safearray.md @@ -0,0 +1,28 @@ +## .NET COM successfully marshals ByRef SafeArray parameters on events + +### Scope +Minor + +### Version Introduced +4.8 + +### Source Analyzer Status +NotPlanned + +### Change Description +In the .NET Framework 4.7.2 and earlier versions, a ByRef [SafeArray](https://docs.microsoft.com/en-us/windows/desktop/api/oaidl/ns-oaidl-safearray) parameter on a COM event would fail to marshal back to native code. With this change the [SafeArray](https://docs.microsoft.com/en-us/windows/desktop/api/oaidl/ns-oaidl-safearray) is now marshalled successfully. + +- [ x ] Quirked +- [ ] Build-time break + +### Recommended Action +If properly marshalling ByRef SafeArray parameters on COM Events breaks execution, you can disable this code by adding the following configuration switch to your application config: + +```xml + + + +``` + +### Category +Core diff --git a/Documentation/compatibility/wcf-accessbility-combobox-high-contrast-issue-in-svcTraceViewer-tool.md b/Documentation/compatibility/wcf-accessbility-combobox-high-contrast-issue-in-svcTraceViewer-tool.md index 94201b240..8c0c60659 100644 --- a/Documentation/compatibility/wcf-accessbility-combobox-high-contrast-issue-in-svcTraceViewer-tool.md +++ b/Documentation/compatibility/wcf-accessbility-combobox-high-contrast-issue-in-svcTraceViewer-tool.md @@ -1,4 +1,3 @@ - ## [svcTraceViewer ComboBox high contrast change] ### Scope From dc4977d90997ff2304dbd694ce6ac42a7e392495 Mon Sep 17 00:00:00 2001 From: Ron Petrusha Date: Fri, 22 Mar 2019 16:20:10 -0700 Subject: [PATCH 747/872] Changes made in dotnet/docs#11463 (#985) --- .../ServiceBase-doesnt-propagate-OnStart-exceptions.md | 4 ++-- .../change-in-path-separator-character-in-zip-files.md | 4 ++-- ...ode-contracts-and-string-isnullorempty-compiler-warning.md | 2 +- ...sch-send-aux-record-flag-to-the-underlying-schannel-api.md | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/Documentation/compatibility/ServiceBase-doesnt-propagate-OnStart-exceptions.md b/Documentation/compatibility/ServiceBase-doesnt-propagate-OnStart-exceptions.md index 6f4ec3310..e4da8d13b 100644 --- a/Documentation/compatibility/ServiceBase-doesnt-propagate-OnStart-exceptions.md +++ b/Documentation/compatibility/ServiceBase-doesnt-propagate-OnStart-exceptions.md @@ -23,13 +23,13 @@ Starting with applications that target the .NET Framework 4.7.1, the runtime pro ### Recommended Action On service start, if there is an exception, that exception will be propagated. This should help diagnose cases where services fail to start.
-If this behavior is undesirable, you can opt out of it by adding the following element to the section of your application configuration file: +If this behavior is undesirable, you can opt out of it by adding the following <AppContextSwitchOverrides> element to the <runtime> section of your application configuration file: ```xml ``` -If your application targets an earlier version than 4.7.1 but you want to have this behavior, add the following element to the section of your application configuration file: +If your application targets an earlier version than 4.7.1 but you want to have this behavior, add the following <AppContextSwitchOverrides> element to the <runtime> section of your application configuration file: ```xml diff --git a/Documentation/compatibility/change-in-path-separator-character-in-zip-files.md b/Documentation/compatibility/change-in-path-separator-character-in-zip-files.md index 94ea4d059..bf2c38975 100644 --- a/Documentation/compatibility/change-in-path-separator-character-in-zip-files.md +++ b/Documentation/compatibility/change-in-path-separator-character-in-zip-files.md @@ -22,7 +22,7 @@ Decompressing a zip file created by an app that targets a previous version of th The impact of this change on .ZIP files that are decompressed on the Windows operating system by APIs in the .NET Framework namespace should be minimal, since these APIs can seamlessly handle either a forward slash ("/") or a backslash ("\\") as the path separator character.
-If this change is undesirable, you can opt out of it by adding a configuration setting to the [``](~/docs/framework/configure-apps/file-schema/runtime/runtime-element.md) section of your application configuration file. The following example shows both the `` section and the `Switch.System.IO.Compression.ZipFile.UseBackslash` opt-out switch: +If this change is undesirable, you can opt out of it by adding a configuration setting to the [\](~/docs/framework/configure-apps/file-schema/runtime/runtime-element.md) section of your application configuration file. The following example shows both the `` section and the `Switch.System.IO.Compression.ZipFile.UseBackslash` opt-out switch: ```xml @@ -30,7 +30,7 @@ If this change is undesirable, you can opt out of it by adding a configuration s ``` -In addition, apps that target previous versions of the .NET Framework but are running on the .NET Framework 4.6.1 and later versions can opt in to this behavior by adding a configuration setting to the [``](~/docs/framework/configure-apps/file-schema/runtime/runtime-element.md) section of the application configuration file. The following shows both the `` section and the `Switch.System.IO.Compression.ZipFile.UseBackslash` opt-in switch. +In addition, apps that target previous versions of the .NET Framework but are running on the .NET Framework 4.6.1 and later versions can opt in to this behavior by adding a configuration setting to the [\](~/docs/framework/configure-apps/file-schema/runtime/runtime-element.md) section of the application configuration file. The following shows both the `` section and the `Switch.System.IO.Compression.ZipFile.UseBackslash` opt-in switch. ```xml diff --git a/Documentation/compatibility/code-contracts-and-string-isnullorempty-compiler-warning.md b/Documentation/compatibility/code-contracts-and-string-isnullorempty-compiler-warning.md index 2b4d16341..e80517506 100644 --- a/Documentation/compatibility/code-contracts-and-string-isnullorempty-compiler-warning.md +++ b/Documentation/compatibility/code-contracts-and-string-isnullorempty-compiler-warning.md @@ -1,4 +1,4 @@ -## Contract.Invariant or Contract.Requires do not consider String.IsNullOrEmpty to be pure +## Contract.Invariant or Contract.Requires\ do not consider String.IsNullOrEmpty to be pure ### Scope Minor diff --git a/Documentation/compatibility/tls-1-x-by-default-passes-sch-send-aux-record-flag-to-the-underlying-schannel-api.md b/Documentation/compatibility/tls-1-x-by-default-passes-sch-send-aux-record-flag-to-the-underlying-schannel-api.md index 2129b0a87..886158526 100644 --- a/Documentation/compatibility/tls-1-x-by-default-passes-sch-send-aux-record-flag-to-the-underlying-schannel-api.md +++ b/Documentation/compatibility/tls-1-x-by-default-passes-sch-send-aux-record-flag-to-the-underlying-schannel-api.md @@ -20,7 +20,7 @@ In rare cases, this breaks communication between clients and existing servers th ### Recommended Action -If this change breaks communication with an existing server, you can disable sending the [`SCH_SEND_AUX_RECORD`](https://docs.microsoft.com/windows/desktop/api/schannel/ns-schannel-_schannel_cred) flag and restore the previous behavior of not splitting data into separate records by adding the following switch to the [``](~/docs/framework/configure-apps/file-schema/runtime/appcontextswitchoverrides-element.md) element in the [``](~/docs/framework/configure-apps/file-schema/runtime/runtime-element.md) section of your app configuration file: +If this change breaks communication with an existing server, you can disable sending the [`SCH_SEND_AUX_RECORD`](https://docs.microsoft.com/windows/desktop/api/schannel/ns-schannel-_schannel_cred) flag and restore the previous behavior of not splitting data into separate records by adding the following switch to the [\](~/docs/framework/configure-apps/file-schema/runtime/appcontextswitchoverrides-element.md) element in the [\](~/docs/framework/configure-apps/file-schema/runtime/runtime-element.md) section of your app configuration file: ```xml From 6ed50eaa2722fa0b0ae845270f86465e680ce38f Mon Sep 17 00:00:00 2001 From: Mikhail Lipin Date: Mon, 25 Mar 2019 08:48:06 -0700 Subject: [PATCH 748/872] Adding NET 4.8 WinForms Accessibility changes compatibility document. (#969) * Adding NET 4.8 WinForms Accessibility changes compatibility document. * Updating recomended action wording as per review comment: "opt in into these changes" instead "benefit from these changes". Co-Authored-By: M-Lipin * Adding the link to UI automation notification events. * Updating LinkLabel section header. Co-Authored-By: M-Lipin * Updating ProgressBar section header. Co-Authored-By: M-Lipin * Fixed wording and spelling for PropertyGrid section text. Co-Authored-By: M-Lipin * Updating PropertyGrid section wording. Co-Authored-By: M-Lipin * Updating PropertyGrid section header. Co-Authored-By: M-Lipin * Updating ToolStrip section header. Co-Authored-By: M-Lipin * Updating CheckedListBox section spelling. Co-Authored-By: M-Lipin * Updating the Change Description section. Co-Authored-By: M-Lipin * Updating the Change Description section - spelling. Co-Authored-By: M-Lipin * Updating recomended action word capitalization. Co-Authored-By: M-Lipin * Updating CheckedListBox section wording. Co-Authored-By: M-Lipin * Updating ComboBox section punctuation and articles. Co-Authored-By: M-Lipin * Updating LinkLabel section articles. Co-Authored-By: M-Lipin * Adding articles to ProgressBar section. Co-Authored-By: M-Lipin * Updating articles and punctation in PropertyGrid section. Co-Authored-By: M-Lipin * Updating articles and punctation in ToolStrip section. Co-Authored-By: M-Lipin * Updating punctation in ToolStrip section. Co-Authored-By: M-Lipin * Adding accessibility bug links related to ToolTip fix and NotSupportedException in 4.8 fix. Co-Authored-By: M-Lipin * Adding note about enabling keyboard ToolTip. Co-Authored-By: M-Lipin * Adding keyboard ToolTip section. Co-Authored-By: M-Lipin * Introducing minor updates. * Adding notes about UI automation in design time, high contrast themes. * Update Documentation/compatibility/winforms-accessibility-changes-48.md Co-Authored-By: M-Lipin * Adding the note about enabling keyboard ToolTip feature. * Update winforms-accessibility-changes-48.md --- .../winforms-accessibility-changes-48.md | 121 ++++++++++++++++++ 1 file changed, 121 insertions(+) create mode 100644 Documentation/compatibility/winforms-accessibility-changes-48.md diff --git a/Documentation/compatibility/winforms-accessibility-changes-48.md b/Documentation/compatibility/winforms-accessibility-changes-48.md new file mode 100644 index 000000000..ed9c0259e --- /dev/null +++ b/Documentation/compatibility/winforms-accessibility-changes-48.md @@ -0,0 +1,121 @@ +## Accessibility improvements in Windows Forms controls for .NET 4.8 + +### Scope +Major + +### Version Introduced +4.8 + +### Source Analyzer Status +NotPlanned + +### Change Description +The Windows Forms Framework is continuing to improve how it works with accessibility technologies to better support Windows Forms customers. These include the following changes: +- Changes to improve display during High Contrast mode. +- Changes to interaction with Narrator. +- Changes in the Accessible hierarchy (improving navigation through the UI Automation tree). + +- [x] Quirked +- [ ] Build-time break + +### Recommended Action +__How to opt in or out of these changes__ + +In order for the application to benefit from these changes, it must run on the .NET Framework 4.8. The application can opt in into these changes in either of the following ways: +- It is recompiled to target the .NET Framework 4.8. These accessibility changes are enabled by default on Windows Forms applications that target the .NET Framework 4.8. +- It targets the .NET Framework 4.7.2 or earlier version and opts out of the legacy accessibility behaviors by adding the following [AppContext switch](https://docs.microsoft.com/dotnet/framework/configure-apps/file-schema/runtime/appcontextswitchoverrides-element) to the `` section of the app config file and setting it to `false`, as the following example shows. + +```xml + + + + + + + + + + +``` +Note that to opt in to the accessibility features added in .NET Framework 4.8, you must also opt in to accessibility features of .NET Framework 4.7.1 and 4.7.2 as well. +Applications that target the .NET Framework 4.8 and want to preserve the legacy accessibility behavior can opt in to the use of legacy accessibility features by explicitly setting this AppContext switch to `true`. + +Enabling the keyboard ToolTip invocation support requires adding the `Switch.System.Windows.Forms.UseLegacyToolTipDisplay=false` line to the AppContextSwitchOverrides value: + +```xml +`` +``` + +Note that enabling this feature requires opting in to the aforementioned accessibility features of .NET Framework 4.7.1 - 4.8. Also, if any of the accessibility features are not opted in but the tooltip display feature is opted in, a runtime will be thrown on the first access to these features. The exception message indicates that keyboard ToolTips require accessibility improvements of level 3 to be enabled. + +__Use of OS-defined colors in High Contrast themes__ +- Improved high-contrast themes. + +__Improved Narrator support__ +- Narrator now announces the sort direction of the when announcing an accessible name of a . + +__Improved CheckedListBox Accessibility support__ +- Improved Narrator support for the control. When navigating to the control using the keyboard, Narrator focuses the item and announces it. +- An empty CheckedListBox control now has a focus rectangle drawn for a virtual first item when the control becomes focused. + +__Improved ComboBox Accessibility support__ +- Enabled UI Automation support for the control, with the ability to use UI Automation notifications and other UI Automation features. + +__Improved DataGridView Accessibility support__ +- Enabled UI Automation support for control with ability to use UI Automation notifications and other UI Automation features. +- The UI Automation element which corresponds to the or is now a child of corresponding editing cell. + +__Improved LinkLabel Accessibility support__ +- Improved control accessibility: Narrator announces the disabled state for the link if the corresponding control is disabled. + +__Improved ProgressBar Accessibility support__ +- Enabled UI Automation support for the control with the ability to use UI Automation notifications and other UI Automation features. Developers are now able to use UI Automation notifications which Narrator can announce to indicate progress. + +For an overview of UI automation events overview, including UI automation notification events, see the [UI Automation Events Overview](https://docs.microsoft.com/en-us/windows/desktop/WinAuto/uiauto-eventsoverview). + +__Improved PropertyGrid Accessibility support__ +- Enabled UI Automation support for the control, with the ability to use UI Automation notifications and other UI Automation features. +- The UI Automation element which corresponds to the currently edited property is now a child of the corresponding property item UI Automation element. +- The UI Automation property item element is now a child of the corresponding category element if the parent control is set to category view. + +__Improved ToolStrip support__ +- Enabled UI Automation support for the control, with the ability to use UI Automation notifications and other UI Automation features. +- Improved navigation through items. +- In items mode, Narrator focus does not disappear and does not go to hidden items. + +__Improved Visual cues__ +- An empty control now displays a focus indicator when it receives focus. + +Note: UI automation support is enabled for controls in runtime but is not used in design time. +For an overview of UI automation, see the [UI Automation Overview](https://docs.microsoft.com/dotnet/framework/ui-automation/ui-automation-overview).

+ +__Invoking controls' ToolTips with a keyboard__ +- Control tooltip can now be invoked by focusing the control with keyboard. This feature needs to be enabled explicitly for the application (see section __"How to opt in or out of these changes"__) + +### Affected APIs + + + +### Category +Windows Forms + + + + + From e3b6a9a7ba9df71523b25a22f217c48aea26ba48 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Benjamin=20R=C3=BChl?= Date: Wed, 27 Mar 2019 00:02:26 +0100 Subject: [PATCH 749/872] Add AdonisUI to dotnet-developer-projects.md (#988) --- dotnet-developer-projects.md | 1 + 1 file changed, 1 insertion(+) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 833bffd74..403f9d0a6 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -352,6 +352,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [Xenko](https://github.com/xenko3d/xenko) - Xenko is a versatile and engaging game engine. ## UI and Control libraries + * [AdonisUI](https://github.com/benruehl/adonis-ui) - Lightweight UI toolkit for WPF applications offering classic but enhanced Windows visuals. * [Callisto](https://github.com/timheuer/callisto) - UI Control Toolkit for WinRT apps. * [Dragablz](http://github.com/ButchersBoy/Dragablz) - A tearable TabControl for WPF which also provides easy-to-use and implement docking features. * [Eto](https://github.com/picoe/Eto) - Cross platform GUI Toolkit for desktop and mobile apps From e273e1ec1738490672fcd76b705509e9e081d2bf Mon Sep 17 00:00:00 2001 From: Hong Li Date: Wed, 3 Apr 2019 10:01:27 -0700 Subject: [PATCH 750/872] add ASP.NET 4.8 known issues (#992) * add ASP.NET 4.8 known issues * Removed More information section --- ...imitMonitorSingleton.AlertProxyMonitors.md | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 Documentation/KnownIssues/776516-InvalidOperationException in System_Web_ni!System.Web.Hosting.RecycleLimitMonitor+RecycleLimitMonitorSingleton.AlertProxyMonitors.md diff --git a/Documentation/KnownIssues/776516-InvalidOperationException in System_Web_ni!System.Web.Hosting.RecycleLimitMonitor+RecycleLimitMonitorSingleton.AlertProxyMonitors.md b/Documentation/KnownIssues/776516-InvalidOperationException in System_Web_ni!System.Web.Hosting.RecycleLimitMonitor+RecycleLimitMonitorSingleton.AlertProxyMonitors.md new file mode 100644 index 000000000..985c1e1da --- /dev/null +++ b/Documentation/KnownIssues/776516-InvalidOperationException in System_Web_ni!System.Web.Hosting.RecycleLimitMonitor+RecycleLimitMonitorSingleton.AlertProxyMonitors.md @@ -0,0 +1,20 @@ +# InvalidOperationException in ASP.Net-RecycleLimitMonitor-AlertProxyMonitors + +## Symptoms +ASP.Net applications may crash intermittently due to an `InvalidOperationException` in +`System_Web_ni!System.Web.Hosting.RecycleLimitMonitor+RecycleLimitMonitorSingleton.AlertProxyMonitors`. + +## Cause +This issue was introduced when ASP.Net 4.7 separated cache management and memory monitoring. This new `RecycleLimitMonitorSingleton` monitors worker process private bytes usage against the recycling limit for the process, and when +the limit is near, it alerts a set of "proxy monitors" in each registered AppDomain so they can take action to avoid a process +recycle. The collection of "proxy monitors" being enumerated was not thread-safe, though, so new AppDomains spinning up or old +AppDomains shutting down while this monitor enumerated the collection could result in this unhandled `InvalidOperationException` +in the default AppDomain, causing a crash. + +## Workaround +There is no reliable workaround. If the environment does not tend to consume private bytes near the recycling limit, or if +web app domain lifetimes tend to last the entire length of the process lifetime, then chances of hitting this issue are +extremely minimal. More private bytes consumption and/or more AppDomain recycling increases the odds of hitting this exception condition. + +## Resolution +A hotfix for this issue is planned for .Net 4.8. This page will be updated with a link to the hotfix when it becomes available. From 2864bc7b3757daa1f3c56216e4ce40b2ae4adfab Mon Sep 17 00:00:00 2001 From: Miguel Pena Garcia <32345992+miguep@users.noreply.github.com> Date: Wed, 3 Apr 2019 14:31:08 -0700 Subject: [PATCH 751/872] Adding known issues documentation for WPF (#991) * Adding known issues documentation for WPF * Update Documentation/KnownIssues/wpf-pma-window-drag.md Co-Authored-By: miguep <32345992+miguep@users.noreply.github.com> --- Documentation/KnownIssues/wpf-pma-window-drag.md | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 Documentation/KnownIssues/wpf-pma-window-drag.md diff --git a/Documentation/KnownIssues/wpf-pma-window-drag.md b/Documentation/KnownIssues/wpf-pma-window-drag.md new file mode 100644 index 000000000..b68e59cac --- /dev/null +++ b/Documentation/KnownIssues/wpf-pma-window-drag.md @@ -0,0 +1,7 @@ +# Per-Monitor DPI-aware WPF applications position mouse cursor incorrectly when dragging between monitors + +## Symptoms +A user running a WPF application that enables the Per-Monitor DPI awareness feature introduced in .NET Framework 4.7.2 may notice that the mouse cursor is in a different location relative to the window after dragging the window from one monitor to another. + +## Cause +This issue is caused by a calculation error when resizing and placing the window after switching DPI. From 1ee7ec3cc95b540d4719aeee3cde49fe408a3ef1 Mon Sep 17 00:00:00 2001 From: Ashraf Alam Date: Sat, 6 Apr 2019 01:57:41 +0800 Subject: [PATCH 752/872] EISK: Added new project template on asp.net core. (#993) * EISK: Added new project template on asp.net core. EISK is a .net core based open source project that is intended providing developer resources to build scalable applications on top of awesome application architecture. Hopefully developers will be able to get benefited by having access to it via this repo. * Project Templates / EISK: Fixed Typos --- dotnet-developer-projects.md | 1 + 1 file changed, 1 insertion(+) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 403f9d0a6..8267eb34f 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -399,6 +399,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C ## Project Templates * [ASP.NET Core & Mvc/Angular5 Startup Template](https://github.com/aspnetboilerplate/module-zero-core-template) - This is a template to create ASP.NET Core MVC / Angular based startup projects for [ASP.NET Boilerplate](https://github.com/aspnetboilerplate/aspnetboilerplate). This project also supports multi-tenancy. * [ASP.NET MVC Boilerplate](https://github.com/ASP-NET-MVC-Boilerplate/Templates) - Professional ASP.NET MVC templates for building secure, fast, robust and adaptable web applications or sites. It provides the minimum amount of code required on top of the default MVC template provided by Microsoft. + * [EISK](https://github.com/eisk) - .NET Core project templates with simple use cases to build scalable applications with architectural best practices(https://docs.microsoft.com/en-us/dotnet/standard/modern-web-apps-azure-architecture/common-web-application-architectures) (DDD, Onion Architecture etc). This list is just a starting point - also take a look at all the projects on [GitHub Trending C#](https://github.com/trending?l=csharp). From 87ba925efec4d65860eaa9429735392d169922a2 Mon Sep 17 00:00:00 2001 From: Ron Petrusha Date: Fri, 5 Apr 2019 13:20:27 -0700 Subject: [PATCH 753/872] Addressed build errors from dotnet/docs#11670 (#996) * Addressed docs build issues * Updated readme --- Documentation/compatibility/README.md | 7 ++++--- ....net-validationcontext.membername-is-null-sometimes.md} | 2 +- ...-and-label-attributes-for-webforms-checkbox-control.md} | 2 +- ...lid-results-from-httprequest.getattributefromheader.md} | 6 +++--- ...-combobox-high-contrast-issue-in-svcTraceViewer-tool.md | 2 ++ .../wpf-keyboard-navigation-listbox-hyperlink.md | 2 +- 6 files changed, 12 insertions(+), 9 deletions(-) rename Documentation/compatibility/{aspnet-ASP.NET ValidationContext.MemberName is null sometimes.md => aspnet-asp.net-validationcontext.membername-is-null-sometimes.md} (94%) rename Documentation/compatibility/{aspnet-Fix handling Input and Label attributes for WebForms CheckBox control.md => aspnet-fix-handling-input-and-label-attributes-for-webforms-checkbox-control.md} (96%) rename Documentation/compatibility/{aspnet-Invalid results from HttpRequest.GetAttributeFromHeader.md => aspnet-invalid-results-from-httprequest.getattributefromheader.md} (92%) diff --git a/Documentation/compatibility/README.md b/Documentation/compatibility/README.md index 8a1bcc5b0..ef438010a 100644 --- a/Documentation/compatibility/README.md +++ b/Documentation/compatibility/README.md @@ -20,12 +20,13 @@ Please help us improve the [.NET Framework Application Compatibility documents]( - [.NET COM successfully marshals ByRef SafeArray parameters on events](interop-event-handlers-safearray.md) - [.NET Interop will now QueryInterface for IAgileObject (a WinRT interface)](interop-enable-winrt-iagileobject.md) - [[svcTraceViewer ComboBox high contrast change]](wcf-accessbility-combobox-high-contrast-issue-in-svcTraceViewer-tool.md) +- [Accessibility improvements in Windows Forms controls for .NET 4.8](winforms-accessibility-changes-48.md) - [Accessibility improvements in Windows Workflow Foundation (WF) workflow designer](workflow-designer-accessibility-4-8.md) - [Accessibility improvements in WPF](wpf-accessibility-improvements-48.md) - [Add SelectionTextBrush public property to TextBox/PasswordBox non-adorner selection](wpf-SelectionTextBrush-property-for-non-adorner-selection.md) -- [ASP.NET Fix handling of InputAttributes and LabelAttributes for WebForms CheckBox control](aspnet-Fix handling Input and Label attributes for WebForms CheckBox control.md) -- [ASP.NET Incorrect multipart handling may result in lost form data.](aspnet-Invalid results from HttpRequest.GetAttributeFromHeader.md) -- [ASP.NET ValidationContext.MemberName is not NULL when using custom DataAnnotations.ValidationAttribute](aspnet-ASP.NET ValidationContext.MemberName is null sometimes.md) +- [ASP.NET Fix handling of InputAttributes and LabelAttributes for WebForms CheckBox control](aspnet-fix-handling-input-and-label-attributes-for-webforms-checkbox-control.md) +- [ASP.NET Incorrect multipart handling may result in lost form data.](aspnet-invalid-results-from-httprequest.getattributefromheader.md) +- [ASP.NET ValidationContext.MemberName is not NULL when using custom DataAnnotations.ValidationAttribute](aspnet-asp.net-validationcontext.membername-is-null-sometimes.md) - [Data Binding improvement for KeyedCollection](wpf-databinding-should-use-key-not-indexer.md) - [Fixed a hang when ListBox contains duplicate value-types](wpf-hang-listbox-duplicate-valuetypes.md) - [HwndHost now correctly resizes child-HWND during DPI changes](wpf-HwndHost-child-hwnd-correct-size-during-DPI-changes.md) diff --git a/Documentation/compatibility/aspnet-ASP.NET ValidationContext.MemberName is null sometimes.md b/Documentation/compatibility/aspnet-asp.net-validationcontext.membername-is-null-sometimes.md similarity index 94% rename from Documentation/compatibility/aspnet-ASP.NET ValidationContext.MemberName is null sometimes.md rename to Documentation/compatibility/aspnet-asp.net-validationcontext.membername-is-null-sometimes.md index ff27485d1..43da41d50 100644 --- a/Documentation/compatibility/aspnet-ASP.NET ValidationContext.MemberName is null sometimes.md +++ b/Documentation/compatibility/aspnet-asp.net-validationcontext.membername-is-null-sometimes.md @@ -21,7 +21,7 @@ The default behavior of the ``` +- [ ] Quirked +- [ ] Build-time break ### Recommended Action - How to opt out of the change diff --git a/Documentation/compatibility/wpf-keyboard-navigation-listbox-hyperlink.md b/Documentation/compatibility/wpf-keyboard-navigation-listbox-hyperlink.md index 8e3c49cb7..7cdb86354 100644 --- a/Documentation/compatibility/wpf-keyboard-navigation-listbox-hyperlink.md +++ b/Documentation/compatibility/wpf-keyboard-navigation-listbox-hyperlink.md @@ -10,7 +10,7 @@ Major NotPlanned ### Change Description -Fixed incorrect result of pressing an arrow key when the focus is on a hyperlink within an item that is not the [SelectedItem](xref:System.Windows.Controls.SelectedItemCollection) of the parent . +Fixed incorrect result of pressing an arrow key when the focus is on a hyperlink within an item that is not the selected item of the parent . - [ ] Quirked - [ ] Build-time break From e06ac6b7866a142347bbb0a33cb2f6afa07634ff Mon Sep 17 00:00:00 2001 From: Ron Petrusha Date: Fri, 5 Apr 2019 14:39:51 -0700 Subject: [PATCH 754/872] Replaced build-time link --- .../wpf-grid-row-size-allocation-with-collapsed-element.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Documentation/compatibility/wpf-grid-row-size-allocation-with-collapsed-element.md b/Documentation/compatibility/wpf-grid-row-size-allocation-with-collapsed-element.md index c232ad041..004383970 100644 --- a/Documentation/compatibility/wpf-grid-row-size-allocation-with-collapsed-element.md +++ b/Documentation/compatibility/wpf-grid-row-size-allocation-with-collapsed-element.md @@ -10,7 +10,7 @@ Major NotPlanned ### Change Description -Fixed a bug in the [algorithm for allocating sizes to \*-rows](wpf-grid-allocation-of-space-to-star-columns.md) in a introduced in .NET Framework 4.7. In some cases, such as a Grid with `Height="Auto"` containing empty rows, rows were arranged at the wrong position, possibly outside the Grid altogether. +Fixed a bug in the [algorithm for allocating sizes to *-rows](https://github.com/Microsoft/dotnet/blob/master/Documentation/compatibility/wpf-grid-allocation-of-space-to-star-columns.md)) in a introduced in .NET Framework 4.7. In some cases, such as a Grid with `Height="Auto"` containing empty rows, rows were arranged at the wrong position, possibly outside the Grid altogether. - [ ] Quirked - [ ] Build-time break From a02d811837ea191125b0ec7e26caa3367beeed27 Mon Sep 17 00:00:00 2001 From: Ron Petrusha Date: Fri, 5 Apr 2019 14:52:40 -0700 Subject: [PATCH 755/872] Changed another design-time link --- ...wpf-SelectionTextBrush-property-for-non-adorner-selection.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Documentation/compatibility/wpf-SelectionTextBrush-property-for-non-adorner-selection.md b/Documentation/compatibility/wpf-SelectionTextBrush-property-for-non-adorner-selection.md index 12fbf2799..49872a3c3 100644 --- a/Documentation/compatibility/wpf-SelectionTextBrush-property-for-non-adorner-selection.md +++ b/Documentation/compatibility/wpf-SelectionTextBrush-property-for-non-adorner-selection.md @@ -10,7 +10,7 @@ Major NotPlanned ### Change Description -In WPF applications using [non-adorner based text selection](wpf-TextBox-PasswordBox-text-selection-does-not-follow-system-colors.md) for [TextBox](xref:System.Windows.Controls.TextBox) and [PasswordBox](xref:System.Windows.Controls.PasswordBox), developers may now set the newly added SelectionTextBrush property in order to alter the rendering of the selected text. By default, this color changes with [SystemColors.HighlightTextBrushKey](xref:System.Windows.SystemColors.HighlightTextBrushKey). If non-adorner based text selection is not enabled, this property does nothing. +In WPF applications using [non-adorner based text selection](https://github.com/Microsoft/dotnet/blob/master/Documentation/compatibility/wpf-TextBox-PasswordBox-text-selection-does-not-follow-system-colors.md) for [TextBox](xref:System.Windows.Controls.TextBox) and [PasswordBox](xref:System.Windows.Controls.PasswordBox), developers may now set the newly added SelectionTextBrush property in order to alter the rendering of the selected text. By default, this color changes with [SystemColors.HighlightTextBrushKey](xref:System.Windows.SystemColors.HighlightTextBrushKey). If non-adorner based text selection is not enabled, this property does nothing. - [x] Quirked - [ ] Build-time break From d028d02eb0977ad07926f963f5b8cdd41eee24fd Mon Sep 17 00:00:00 2001 From: Ron Petrusha Date: Fri, 5 Apr 2019 15:02:46 -0700 Subject: [PATCH 756/872] Removed brackets from title --- ...ility-combobox-high-contrast-issue-in-svcTraceViewer-tool.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Documentation/compatibility/wcf-accessbility-combobox-high-contrast-issue-in-svcTraceViewer-tool.md b/Documentation/compatibility/wcf-accessbility-combobox-high-contrast-issue-in-svcTraceViewer-tool.md index 953884f82..123ec463a 100644 --- a/Documentation/compatibility/wcf-accessbility-combobox-high-contrast-issue-in-svcTraceViewer-tool.md +++ b/Documentation/compatibility/wcf-accessbility-combobox-high-contrast-issue-in-svcTraceViewer-tool.md @@ -1,4 +1,4 @@ -## [svcTraceViewer ComboBox high contrast change] +## svcTraceViewer ComboBox high contrast change ### Scope Edge From 989712e035da0d8fe03987024a957ac1f9512ebe Mon Sep 17 00:00:00 2001 From: Ashraf Alam Date: Mon, 8 Apr 2019 23:57:56 +0800 Subject: [PATCH 757/872] Project Templates / EISK: improvement on details (#995) * Fixed hyperlink with regard to markdown syntax * EISK: Improved project summary sentence wording * Project Templates / EISK: Added project site url * EISK: Improved project details --- dotnet-developer-projects.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 8267eb34f..7f6d04a2e 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -399,7 +399,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C ## Project Templates * [ASP.NET Core & Mvc/Angular5 Startup Template](https://github.com/aspnetboilerplate/module-zero-core-template) - This is a template to create ASP.NET Core MVC / Angular based startup projects for [ASP.NET Boilerplate](https://github.com/aspnetboilerplate/aspnetboilerplate). This project also supports multi-tenancy. * [ASP.NET MVC Boilerplate](https://github.com/ASP-NET-MVC-Boilerplate/Templates) - Professional ASP.NET MVC templates for building secure, fast, robust and adaptable web applications or sites. It provides the minimum amount of code required on top of the default MVC template provided by Microsoft. - * [EISK](https://github.com/eisk) - .NET Core project templates with simple use cases to build scalable applications with architectural best practices(https://docs.microsoft.com/en-us/dotnet/standard/modern-web-apps-azure-architecture/common-web-application-architectures) (DDD, Onion Architecture etc). + * [EISK](https://github.com/eisk) - .NET Core project templates with simple use cases and framework for building scalable web applications, following architectural [best practices](https://docs.microsoft.com/en-us/dotnet/standard/modern-web-apps-azure-architecture/common-web-application-architectures) (DDD, Onion Architecture etc). [Project site](https://eisk.github.io). This list is just a starting point - also take a look at all the projects on [GitHub Trending C#](https://github.com/trending?l=csharp). From bcc220ce915a7d1e2322773eacb6f7b61114949e Mon Sep 17 00:00:00 2001 From: Ron Petrusha Date: Mon, 15 Apr 2019 11:28:31 -0700 Subject: [PATCH 758/872] Documented FIPS mode change for .NET Framework 4.8 (#1002) * Documented FIPS mode change * Added SHA256Managed * Revised text * Incorporated review comments * Addressed additional comment * opt into --> opt in to * Changed scope to Edge --- ...raphicexception-not-thrown-in-fips-mode.md | 56 +++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 Documentation/compatibility/cryptographicexception-not-thrown-in-fips-mode.md diff --git a/Documentation/compatibility/cryptographicexception-not-thrown-in-fips-mode.md b/Documentation/compatibility/cryptographicexception-not-thrown-in-fips-mode.md new file mode 100644 index 000000000..8b72b8adc --- /dev/null +++ b/Documentation/compatibility/cryptographicexception-not-thrown-in-fips-mode.md @@ -0,0 +1,56 @@ +## Managed cryptography classes do not throw a CryptographyException in FIPS mode + +### Scope +Edge + +### Version Introduced +4.8 + +### Source Analyzer Status +NotPlanned + +### Change Description + +In .NET Framework 4.7.2 and earlier versions, managed cryptographic provider classes such as throw a when the system cryptographic libraries are configured in FIPS mode. These exceptions are thrown because the managed versions have not undergone FIPS (Federal Information Processing Standards) 140-2 certification, as well as to block cryptographic algorithms that were not considered to be approved based on the FIPS rules. Because few developers have their development machines in FIPS mode, these exceptions are frequently thrown only on production systems. + +Applications that target .NET Framework 4.8 and later versions automatically switch to the newer, relaxed policy, so that a is no longer thrown by default in such cases. Instead, the managed cryptography classes redirect cryptographic operations to a system cryptography library. This policy change effectively removes a potentially confusing difference between developer environments and the production environments and makes native components and managed components operate under the same cryptographic policy. + +- [X] Quirked +- [ ] Build-time break + +### Recommended Action + +If this behavior is undesirable, you can opt out of it and restore the previous behavior so that a is thrown in FIPS mode by adding the following [AppContextSwitchOverrides](~/docs/framework/configure-apps/file-schema/runtime/appcontextswitchoverrides-element.md) configuration setting to the [``](~/docs/framework/configure-apps/file-schema/runtime/runtime-element.md) section of your application configuration file: + +```xml + + + +``` + +If your application targets .NET Framework 4.7.2 or earlier, you can also opt in to this change by adding the following [AppContextSwitchOverrides](~/docs/framework/configure-apps/file-schema/runtime/appcontextswitchoverrides-element.md) configuration setting to the [``](~/docs/framework/configure-apps/file-schema/runtime/runtime-element.md) section of your application configuration file: + +```xml + + + +``` + +### Affected APIs + +* `T:System.Security.Cryptography.AesManaged` +* `T:System.Security.Cryptography.MD5Cng` +* `T:System.Security.Cryptography.MD5CryptoServiceProvider` +* `T:System.Security.Cryptography.RC2CryptoServiceProvider` +* `T:System.Security.Cryptography.RijndaelManaged` +* `T:System.Security.Cryptography.RIPEMD160Managed` +* `T:System.Security.Cryptography.SHA1Managed` +* `T:System.Security.Cryptography.SHA256Managed` + +### Category +Core + + From c7c09be65beb2dae4a07e7d741f719dddb1be7cf Mon Sep 17 00:00:00 2001 From: Ron Petrusha Date: Mon, 15 Apr 2019 15:40:21 -0700 Subject: [PATCH 759/872] Generated new readme.md (#1007) --- Documentation/compatibility/README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Documentation/compatibility/README.md b/Documentation/compatibility/README.md index ef438010a..3f1f11f13 100644 --- a/Documentation/compatibility/README.md +++ b/Documentation/compatibility/README.md @@ -19,7 +19,6 @@ Please help us improve the [.NET Framework Application Compatibility documents]( - [.NET COM successfully marshals ByRef SafeArray parameters on events](interop-event-handlers-safearray.md) - [.NET Interop will now QueryInterface for IAgileObject (a WinRT interface)](interop-enable-winrt-iagileobject.md) -- [[svcTraceViewer ComboBox high contrast change]](wcf-accessbility-combobox-high-contrast-issue-in-svcTraceViewer-tool.md) - [Accessibility improvements in Windows Forms controls for .NET 4.8](winforms-accessibility-changes-48.md) - [Accessibility improvements in Windows Workflow Foundation (WF) workflow designer](workflow-designer-accessibility-4-8.md) - [Accessibility improvements in WPF](wpf-accessibility-improvements-48.md) @@ -32,7 +31,9 @@ Please help us improve the [.NET Framework Application Compatibility documents]( - [HwndHost now correctly resizes child-HWND during DPI changes](wpf-HwndHost-child-hwnd-correct-size-during-DPI-changes.md) - [Improvements to Grid star-rows space allocating algorithm](wpf-grid-row-size-allocation-with-collapsed-element.md) - [Keyboard navigation improvement in ListBox with Hyperlinks](wpf-keyboard-navigation-listbox-hyperlink.md) +- [Managed cryptography classes do not throw a CryptographyException in FIPS mode](cryptographicexception-not-thrown-in-fips-mode.md) - [Performance improvement in Automation tree for grouping ItemsControls](wpf-performace-improvement-grouping-automation.md) +- [svcTraceViewer ComboBox high contrast change](wcf-accessbility-combobox-high-contrast-issue-in-svcTraceViewer-tool.md) - [Workflow XAML checksums for symbols changed from SHA1 to SHA256](workflow-xaml-checksums-for-symbols-changed-from-sha1-to-sha256.md) - [Workflow XOML definition and SqlTrackingService cache keys changed from MD5 to SHA256](workflow-xoml-definition-and-sqltrackingservice-caches-changed-from-md5-to-sha256.md) - [Workflow XOML file checksums changed from MD5 to SHA256](workflow-xoml-file-checksums-changed-from-md5-to-sha256.md) From bfeb9cc29af40ccef2bb6d84c6fb93e71ced2d3c Mon Sep 17 00:00:00 2001 From: Namrata Karnam <43251581+NKarnam15@users.noreply.github.com> Date: Thu, 18 Apr 2019 10:08:13 -0700 Subject: [PATCH 760/872] .NET 4.8 RTM Updates (#1008) * .NET 4.8 RTM Updates .NET 4.8 RTM Updates Remove additonal files Remove additonal files .NET 4.8 RTM Updates .NET 4.8 RTM Updates .NET 4.8 RTM Updates .NET 4.8 RTM Updates .NET 4.8 RTM Updates Adding .NET Framework 4.8 .NET 4.8 RTM Updates * .NET 4.8 RTM Updates * .NET 4.8 RTM Updates * .NET 4.8 RTM Updates * .NET 4.8 RTM Updates * .NET 4.8 RTM Updates * .NET 4.8 RTM Updates --- Documentation/KnownIssues/README.md | 1 + data/platforms.json | 33 +- releases/README.md | 1 + ...imitMonitorSingleton.AlertProxyMonitors.md | 20 + .../net48/KnownIssues/wpf-pma-window-drag.md | 7 + releases/net48/README.md | 19 +- releases/net48/dotnet48--api-changes.md | 4 - releases/net48/dotnet48--changes.md | 25 -- releases/net48/dotnet48--known-issues.md | 7 - releases/net48/dotnet48-api-changes.md | 331 ++++++++++++++ releases/net48/dotnet48-changes.md | 409 ++++++++++++++++++ releases/net48/dotnet48-known-issues.md | 11 + 12 files changed, 827 insertions(+), 41 deletions(-) create mode 100644 releases/net48/KnownIssues/776516-InvalidOperationException in System_Web_ni!System.Web.Hosting.RecycleLimitMonitor+RecycleLimitMonitorSingleton.AlertProxyMonitors.md create mode 100644 releases/net48/KnownIssues/wpf-pma-window-drag.md delete mode 100644 releases/net48/dotnet48--api-changes.md delete mode 100644 releases/net48/dotnet48--changes.md delete mode 100644 releases/net48/dotnet48--known-issues.md create mode 100644 releases/net48/dotnet48-api-changes.md create mode 100644 releases/net48/dotnet48-changes.md create mode 100644 releases/net48/dotnet48-known-issues.md diff --git a/Documentation/KnownIssues/README.md b/Documentation/KnownIssues/README.md index f8881beb2..09f2c10c3 100644 --- a/Documentation/KnownIssues/README.md +++ b/Documentation/KnownIssues/README.md @@ -2,6 +2,7 @@ The following links provide the known issues about the various .NET Framework versions at the time of their release. They describe the underlying issue and how to resolve them. +- [.NET Framework 4.8](http://go.microsoft.com/fwlink/?LinkId=2086606) - [.NET Framework 4.7.2](http://go.microsoft.com/fwlink/?LinkId=863257) - [.NET Framework 4.7.1](http://go.microsoft.com/fwlink/?LinkId=852101) - [.NET Framework 4.7](http://go.microsoft.com/fwlink/?LinkId=825308) diff --git a/data/platforms.json b/data/platforms.json index 492124783..6b57825d8 100644 --- a/data/platforms.json +++ b/data/platforms.json @@ -82,6 +82,35 @@ } ] }, + { + "platform": ".NET Framework 4.8", + "alias": "net48", + "category": "netfx", + "supportInfo": { + "support": "Supported", + "link": "" + }, + "popular": true, + "info": "http://go.microsoft.com/fwlink/?LinkId=2054306", + "supportedBy": [ + "VS2019", + "VS2017" + ], + "runtime": [ + { + "name": ".NET Framework 4.8", + "link": "http://go.microsoft.com/fwlink/?LinkId=2085155", + "directLink": "http://go.microsoft.com/fwlink/?LinkId=2085155&source=getdotnet&desc=dotnet48" + } + ], + "tools": [ + { + "name": ".NET Framework 4.8 Developer Pack", + "link": "http://go.microsoft.com/fwlink/?LinkId=2085167", + "description": "The .NET 4.8 Developer pack includes 4.8 reference assemblies needed by Visual Studio and msbuild." + } + ] + }, { "platform": ".NET Framework 4.7.2", "alias": "net472", @@ -93,9 +122,10 @@ "popular": true, "info": "http://go.microsoft.com/fwlink/?LinkId=863281", "includedIn": [ - "VS2017" + "VS2019" ], "supportedBy": [ + "VS2017", "VS2015" ], "runtime": [ @@ -316,6 +346,7 @@ "info": "http://msdn.microsoft.com/library/w0x726c2(VS.90).aspx", "includedIn": [], "supportedBy": [ + "VS2019", "VS2017", "VS2015", "VS2013" diff --git a/releases/README.md b/releases/README.md index e514ef286..773025579 100644 --- a/releases/README.md +++ b/releases/README.md @@ -8,6 +8,7 @@ To get up-to-date with the latest versions of .NET Framework and Visual Studio, You can see what was included in each .NET Framework release. Some releases are now unsupported, as called out. +- [.NET Framework 4.8](net48/README.md) - [.NET Framework 4.7.2](net472/README.md) - [.NET Framework 4.7.1](net471/README.md) - [.NET Framework 4.7](net47/README.md) diff --git a/releases/net48/KnownIssues/776516-InvalidOperationException in System_Web_ni!System.Web.Hosting.RecycleLimitMonitor+RecycleLimitMonitorSingleton.AlertProxyMonitors.md b/releases/net48/KnownIssues/776516-InvalidOperationException in System_Web_ni!System.Web.Hosting.RecycleLimitMonitor+RecycleLimitMonitorSingleton.AlertProxyMonitors.md new file mode 100644 index 000000000..985c1e1da --- /dev/null +++ b/releases/net48/KnownIssues/776516-InvalidOperationException in System_Web_ni!System.Web.Hosting.RecycleLimitMonitor+RecycleLimitMonitorSingleton.AlertProxyMonitors.md @@ -0,0 +1,20 @@ +# InvalidOperationException in ASP.Net-RecycleLimitMonitor-AlertProxyMonitors + +## Symptoms +ASP.Net applications may crash intermittently due to an `InvalidOperationException` in +`System_Web_ni!System.Web.Hosting.RecycleLimitMonitor+RecycleLimitMonitorSingleton.AlertProxyMonitors`. + +## Cause +This issue was introduced when ASP.Net 4.7 separated cache management and memory monitoring. This new `RecycleLimitMonitorSingleton` monitors worker process private bytes usage against the recycling limit for the process, and when +the limit is near, it alerts a set of "proxy monitors" in each registered AppDomain so they can take action to avoid a process +recycle. The collection of "proxy monitors" being enumerated was not thread-safe, though, so new AppDomains spinning up or old +AppDomains shutting down while this monitor enumerated the collection could result in this unhandled `InvalidOperationException` +in the default AppDomain, causing a crash. + +## Workaround +There is no reliable workaround. If the environment does not tend to consume private bytes near the recycling limit, or if +web app domain lifetimes tend to last the entire length of the process lifetime, then chances of hitting this issue are +extremely minimal. More private bytes consumption and/or more AppDomain recycling increases the odds of hitting this exception condition. + +## Resolution +A hotfix for this issue is planned for .Net 4.8. This page will be updated with a link to the hotfix when it becomes available. diff --git a/releases/net48/KnownIssues/wpf-pma-window-drag.md b/releases/net48/KnownIssues/wpf-pma-window-drag.md new file mode 100644 index 000000000..b68e59cac --- /dev/null +++ b/releases/net48/KnownIssues/wpf-pma-window-drag.md @@ -0,0 +1,7 @@ +# Per-Monitor DPI-aware WPF applications position mouse cursor incorrectly when dragging between monitors + +## Symptoms +A user running a WPF application that enables the Per-Monitor DPI awareness feature introduced in .NET Framework 4.7.2 may notice that the mouse cursor is in a different location relative to the window after dragging the window from one monitor to another. + +## Cause +This issue is caused by a calculation error when resizing and placing the window after switching DPI. diff --git a/releases/net48/README.md b/releases/net48/README.md index 78df30c94..43a6d4381 100644 --- a/releases/net48/README.md +++ b/releases/net48/README.md @@ -2,12 +2,23 @@ You can learn about the changes made in the .NET Framework 4.8. -- [Download .NET 4.8 Developer Pack build 3694](https://go.microsoft.com/fwlink/?linkid=2033281) -- [.NET Framework 4.8 Early Access build 3694 Announcement blog post](https://blogs.msdn.microsoft.com/dotnet/2018/11/28/announcing-net-framework-4-8-early-access-build-3694/) -- [Release notes](dotnet472-changes.md) -- [Application compatibility](https://go.microsoft.com/fwlink/?linkid=863254) +- [Download](http://go.microsoft.com/fwlink/?LinkId=2085155) +- [.NET Framework 4.8 RTM Announcement blog post](https://go.microsoft.com/fwlink/?linkid=2054306) +- [Release notes](dotnet48-changes.md) +- [Application compatibility](https://go.microsoft.com/fwlink/?linkid=2053971) - [API changes](dotnet48-api-changes.md) - [Known issues](dotnet48-known-issues.md) ## Release Notes by Product Area +- [ASP.NET](dotnet48-changes.md#aspnet) +- [BCL](dotnet48-changes.md#bcl) +- [ClickOnce](dotnet48-changes.md#clickonce) +- [CLR](dotnet48-changes.md#clr) +- [Networking](dotnet48-changes.md#networking) +- [SQL](dotnet48-changes.md#sql) +- [WCF](dotnet48-changes.md#wcf) +- [Windows Forms](dotnet48-changes.md#windows-forms) +- [WPF](dotnet48-changes.md#wpf) +- [Workflow](dotnet48-changes.md#workflow) + diff --git a/releases/net48/dotnet48--api-changes.md b/releases/net48/dotnet48--api-changes.md deleted file mode 100644 index 3557742d1..000000000 --- a/releases/net48/dotnet48--api-changes.md +++ /dev/null @@ -1,4 +0,0 @@ -```diff - - -``` diff --git a/releases/net48/dotnet48--changes.md b/releases/net48/dotnet48--changes.md deleted file mode 100644 index 25108ebeb..000000000 --- a/releases/net48/dotnet48--changes.md +++ /dev/null @@ -1,25 +0,0 @@ -# .NET Framework 4.8 Release Notes - -.NET Framework release notes describe product improvements grouped by product area. Each change includes a Microsoft-internal VSTS bug ID, the primary binary that was updated and whether the change was a bug or a feature. - -## ASPNET - - -## BCL - -## CLR - - -## ClickOnce - -## Networking - -## SQL - -## WCF - -## Windows Forms - -## Workflow - -## WPF diff --git a/releases/net48/dotnet48--known-issues.md b/releases/net48/dotnet48--known-issues.md deleted file mode 100644 index eb1aee3e7..000000000 --- a/releases/net48/dotnet48--known-issues.md +++ /dev/null @@ -1,7 +0,0 @@ -.NET Framework 4.8 Known Issues -================================= - -This document lists the known issues that you may experience after you install .NET Framework 4.8. - -## Product issues for .NET Framework 4.8 - diff --git a/releases/net48/dotnet48-api-changes.md b/releases/net48/dotnet48-api-changes.md new file mode 100644 index 000000000..10e1b3d81 --- /dev/null +++ b/releases/net48/dotnet48-api-changes.md @@ -0,0 +1,331 @@ +```diff +namespace System.Security.Cryptography.X509Certificates { + public class X509Certificate { + public virtual byte[] GetCertHash(HashAlgorithmName hashAlgorithm) + public virtual string GetCertHashString(HashAlgorithmName hashAlgorithm) + } +} +namespace System.Security.Cryptography { + protected class SHA1Managed.Dispose(bool) + protected class SHA256Managed.Dispose(bool) + protected class SHA384Managed.Dispose(bool) + protected class SHA512Managed.Dispose(bool) +} +namespace System { + public static class GC{ + public static long GetAllocatedBytesForCurrentThread() + } +} +namespace System.Reflection{ + public enum MethodImplAttributes{SecurityMitigations} +} +namespace System.Runtime.CompilerServices { + public enum MethodImplOptions{ SecurityMitigations } +} +namespace System.Threading { + public static class Interlocked{ + public static void SpeculationBarrier() + } +} +namespace System.Net.Configuration { + public sealed class WebProxyScriptElement : ConfigurationElement { + [ConfigurationProperty("autoConfigUrlRetryInterval", DefaultValue = 600)] + public static int AutoConfigUrlRetryInterval { get; set; } + } +} +namespace System.Net { + [Flags] + public enum SecurityProtocolType { + Tls13 = 12288 + } +} +namespace System.Security.Authentication { + public enum SslProtocols { + Tls13 = 12288, + } +} +namespace System.Net.Configuration { + public sealed class SettingsSection : ConfigurationSection { + [ConfigurationProperty("windowsAuthentication")] + public WindowsAuthenticationElement WindowsAuthentication { get; } + } + public sealed class WindowsAuthenticationElement : ConfigurationElement { + [ConfigurationProperty("defaultCredentialsHandleCacheSize", DefaultValue = 0)] + public int DefaultCredentialsHandleCacheSize { get; set; } + } +} +namespace System.ServiceModel.Configuration { + public sealed class ServiceHealthElement : BehaviorExtensionElement { + public ServiceHealthElement(); + public override Type BehaviorType { get; } + public bool HealthDetailsEnabled { get; set; } + public string HttpGetBinding { get; set; } + public string HttpGetBindingConfiguration { get; set; } + public bool HttpGetEnabled { get; set; } + public Uri HttpGetUrl { get; set; } + public string HttpsGetBinding { get; set; } + public string HttpsGetBindingConfiguration { get; set; } + public bool HttpsGetEnabled { get; set; } + public Uri HttpsGetUrl { get; set; } + protected override ConfigurationPropertyCollection Properties { get; } + public override void CopyFrom(ServiceModelExtensionElement from); + protected internal override object CreateBehavior(); + } +} +namespace System.ServiceModel.Description { + public class ServiceHealthBehavior : ServiceHealthBehaviorBase { + public ServiceHealthBehavior(); + protected virtual bool HasXmlSupport { get; } + protected static void AddHttpProperty(Message message, HttpStatusCode status, bool isXml); + protected static bool EnsureHttpStatusCode(int code); + protected virtual HttpStatusCode GetHttpResponseCode(ServiceHostBase serviceHost, string[] queries); + protected virtual ServiceHealthSectionCollection GetServiceHealthSections(ServiceHostBase serviceHost); + protected virtual XmlDocument GetXmlDocument(ServiceHostBase serviceHost); + public override void HandleHealthRequest(ServiceHostBase serviceHost, Message httpGetRequest, string[] queries, out Message replyMessage); + protected static bool TryParseBooleanQueryParameter(string parameterName, string parameter, bool defaultValue, out bool result); + protected static bool TryParseHttpStatusCodeQueryParameter(string parameterName, string parameter, HttpStatusCode defaultErrorCode, out HttpStatusCode result); + } + public abstract class ServiceHealthBehaviorBase : IServiceBehavior { + protected ServiceHealthBehaviorBase(); + public bool HealthDetailsEnabled { get; set; } + public Binding HttpGetBinding { get; set; } + public bool HttpGetEnabled { get; set; } + public Uri HttpGetUrl { get; set; } + public Binding HttpsGetBinding { get; set; } + public bool HttpsGetEnabled { get; set; } + public Uri HttpsGetUrl { get; set; } + protected DateTimeOffset ServiceStartTime { get; } + public abstract void HandleHealthRequest(ServiceHostBase serviceHost, Message httpGetRequest, string[] queries, out Message replyMessage); + void System.ServiceModel.Description.IServiceBehavior.AddBindingParameters(ServiceDescription description, ServiceHostBase serviceHostBase, Collection endpoints, BindingParameterCollection parameters); + void System.ServiceModel.Description.IServiceBehavior.ApplyDispatchBehavior(ServiceDescription description, ServiceHostBase serviceHostBase); + void System.ServiceModel.Description.IServiceBehavior.Validate(ServiceDescription description, ServiceHostBase serviceHostBase); + } + public sealed class ServiceHealthElement { + public ServiceHealthElement(string key, string[] values); + public string Key { get; set; } + public string[] Values { get; set; } + } + public sealed class ServiceHealthElementCollection : KeyedCollection { + public ServiceHealthElementCollection(); + public void Add(string key, string value); + public void Add(string key, string[] values); + protected override string GetKeyForItem(ServiceHealthElement element); + } + public class ServiceHealthModel { + public const string Namespace = "http://schemas.microsoft.com/net/2018/08/health"; + public ServiceHealthModel(); + public ServiceHealthModel(ServiceHostBase serviceHost); + public ServiceHealthModel(ServiceHostBase serviceHost, DateTimeOffset serviceStartTime); + public ServiceHealthModel.ChannelDispatcherModel[] ChannelDispatchers { get; } + public DateTimeOffset Date { get; } + public ServiceHealthModel.ProcessInformationModel ProcessInformation { get; } + public ServiceHealthModel.ProcessThreadsModel ProcessThreads { get; } + public ServiceHealthModel.ServiceEndpointModel[] ServiceEndpoints { get; } + public ServiceHealthModel.ServicePropertiesModel ServiceProperties { get; } + public class ChannelDispatcherModel { + public ChannelDispatcherModel(); + public ChannelDispatcherModel(ChannelDispatcherBase channelDispatcher); + public string BindingName { get; } + public ServiceHealthModel.CommunicationTimeoutsModel CommunicationTimeouts { get; } + public string ContractName { get; } + public bool IsSystemEndpoint { get; } + public Nullable ListenerState { get; } + public string ListenerUri { get; } + public string MessageEncoder { get; } + public string[] MessageInspectors { get; } + public ServiceHealthModel.ServiceThrottleModel ServiceThrottle { get; } + public Nullable State { get; } + } + public class CommunicationTimeoutsModel { + public CommunicationTimeoutsModel(); + public CommunicationTimeoutsModel(IDefaultCommunicationTimeouts timeouts); + public TimeSpan CloseTimeout { get; } + public bool HasTimeouts { get; } + public TimeSpan OpenTimeout { get; } + public TimeSpan ReceiveTimeout { get; } + public TimeSpan SendTimeout { get; } + } + public class ProcessInformationModel { + public ProcessInformationModel(); + public ProcessInformationModel(ServiceHostBase serviceHost); + public int Bitness { get; } + public string GCMode { get; } + public string ProcessName { get; } + public DateTimeOffset ProcessStartDate { get; } + public DateTimeOffset ServiceStartDate { get; } + public ServiceHealthModel.ProcessThreadsModel Threads { get; } + public TimeSpan Uptime { get; } + public void SetServiceStartDate(DateTimeOffset serviceStartTime); + } + public class ProcessThreadsModel { + public ProcessThreadsModel(); + public int AvailableCompletionPortThreads { get; } + public int AvailableWorkerThreads { get; } + public int MaxCompletionPortThreads { get; } + public int MaxWorkerThreads { get; } + public int MinCompletionPortThreads { get; } + public int MinWorkerThreads { get; } + public int NativeThreadCount { get; } + } + public class ServiceEndpointModel { + public ServiceEndpointModel(); + public ServiceEndpointModel(ServiceEndpoint endpoint); + public string Address { get; } + public string[] BehaviorNames { get; } + public string BindingName { get; } + public string ContractName { get; } + } + public class ServicePropertiesModel { + public ServicePropertiesModel(); + public ServicePropertiesModel(ServiceHostBase serviceHost); + public string[] BaseAddresses { get; } + public Nullable ConcurrencyMode { get; } + public Nullable InstanceContextMode { get; } + public string Name { get; } + public string[] ServiceBehaviorNames { get; } + public ServiceHealthModel.ServiceThrottleModel ServiceThrottle { get; } + public string ServiceTypeName { get; } + public CommunicationState State { get; } + } + public class ServiceThrottleModel { + public ServiceThrottleModel(); + public ServiceThrottleModel(ServiceThrottle serviceThrottle); + public int CallsCapacity { get; } + public int CallsCount { get; } + public bool HasThrottle { get; } + public int InstanceContextsCapacity { get; } + public int InstanceContextsCount { get; } + public int SessionsCapacity { get; } + public int SessionsCount { get; } + } + } + public sealed class ServiceHealthSection : Collection { + public ServiceHealthSection(); + public ServiceHealthSection(string title); + public string BackgroundColor { get; set; } + public string ForegroundColor { get; set; } + public string Title { get; set; } + public ServiceHealthElementCollection CreateElementsCollection(); + } + public sealed class ServiceHealthSectionCollection : Collection { + public ServiceHealthSectionCollection(); + public ServiceHealthSection CreateSection(string title); + public ServiceHealthSection CreateSection(string title, string backgroundColor); + public ServiceHealthSection CreateSection(string title, string backgroundColor, string foregroundColor); + } +} +namespace System.Windows.Forms { +    public class AccessibleObject : StandardOleMarshalObject, IAccessible, IReflect, UnsafeNativeMethods.IEnumVariant, UnsafeNativeMethods.IExpandCollapseProvider, UnsafeNativeMethods.IGridItemProvider, UnsafeNativeMethods.IGridProvider, UnsafeNativeMethods.IOleWindow, UnsafeNativeMethods.IRawElementProviderSimple, UnsafeNativeMethods.ITableItemProvider, UnsafeNativeMethods.ITableProvider, UnsafeNativeMethods.IToggleProvider, UnsafeNativeMethods.IValueProvider { +        public bool RaiseAutomationNotification(AutomationNotificationKind notificationKind, AutomationNotificationProcessing notificationProcessing, string notificationText); +    } +    public class AccessibleObject { +        public virtual bool RaiseLiveRegionChanged(); +    } +      public class Label : Control, IAutomationLiveRegion { +        public AutomationLiveSetting LiveSetting { get; set; } +    } + public class ToolStripComboBox : ToolStripControlHost { + protected override AccessibleObject CreateAccessibilityInstance(); + } + public class ToolStripProgressBar : ToolStripControlHost { + protected override AccessibleObject CreateAccessibilityInstance(); + } + protected override AccessibleObject CreateAccessibilityInstance() { + protected override AccessibleObject CreateAccessibilityInstance(); + } + public class ToolStripStatusLabel : ToolStripLabel { } + public class ToolStripStatusLabel : ToolStripLabel, IAutomationLiveRegion { + protected override AccessibleObject CreateAccessibilityInstance(); + public AutomationLiveSetting LiveSetting { get; set; } + protected override void OnTextChanged(EventArgs e) { + } + public class Button : ButtonBase, IButtonControl { + protected override void RescaleConstantsForDpi(int deviceDpiOld, int deviceDpiNew); + } + public class CheckBox : ButtonBase { + protected override void RescaleConstantsForDpi(int deviceDpiOld, int deviceDpiNew); + } + public class RadioButton : ButtonBase { + protected override void RescaleConstantsForDpi(int deviceDpiOld, int deviceDpiNew); + } + public partial class Control { + public Size LogicalToDeviceUnits(Size value) + } + + public class PropertyGrid : ContainerControl, IComPropertyBrowser, UnsafeNativeMethods.IPropertyNotifySink { + protected override void RescaleConstantsForDpi(int deviceDpiOld, int deviceDpiNew); + } + public abstract class ScrollBar : Control { + protected override void RescaleConstantsForDpi(int deviceDpiOld, int deviceDpiNew) { + public bool ScaleScrollBarForDpiChange { get; set; } + } + public class SystemInformation { + public static int VerticalScrollBarArrowHeightForDpi(int dpi); + } +} +namespace System.Windows.Forms.Automation { +    public enum AutomationNotificationKind { +        ActionAborted = 3, +        ActionCompleted = 2, +        ItemAdded = 0, +        ItemRemoved = 1, +        Other = 4, +    } +    public enum AutomationNotificationProcessing { +        All = 2, +        CurrentThenMostRecent = 4, +        ImportantAll = 0, +        ImportantMostRecent = 1, +        MostRecent = 3, +    } + public enum AutomationLiveSetting { +        Assertive = 2, +        Off = 0, +        Polite = 1, +    } +    public interface IAutomationLiveRegion { +        AutomationLiveSetting LiveSetting { get; set; } +    } +} +namespace System.Windows.Automation.Peers { + public abstract class AutomationPeer: DispatcherObject { + virtual protected int GetSizeOfSetCore() + virtual protected int GetPositionInSetCore() + public int GetSizeOfSet() + public int GetPositionInSet() + } + public abstract class AutomationPeer: DispatcherObject { + virtual protected List GetControlledPeersCore() + public List GetControlledPeers() + private IRawElementProviderSimple[] GetControllerForProviderArray() + } + public abstract class AutomationPeer: DispatcherObject { + public static readonly DependencyProperty SelectionTextBrushProperty + public Brush SelectionTextBrush + private static Brush GetDefaultSelectionTextBrush() + } + public class GroupItemAutomationPeer : FrameworkElementAutomationPeer { + protected override List GetChildrenCore() + override protected void SetFocusCore() + protected override bool IsKeyboardFocusableCore() + override protected bool HasKeyboardFocusCore() + } +} +namespace System.Windows.Automation { + public static class AutomationProperties { + public static void SetPositionInSet(DependencyObject element, int value) + public static int GetPositionInSet(DependencyObject element) + public static void SetSizeOfSet(DependencyObject element, int value) + public static int GetSizeOfSet(DependencyObject element) + } + public sealed class AutomationElement { + public static readonly AutomationProperty SizeOfSetProperty + public static readonly AutomationProperty PositionInSetProperty + } + public sealed class AutomationElementIdentifiers { + public static readonly AutomationProperty SizeOfSetProperty + public static readonly AutomationProperty PositionInSetProperty + } +} + +``` diff --git a/releases/net48/dotnet48-changes.md b/releases/net48/dotnet48-changes.md new file mode 100644 index 000000000..002984911 --- /dev/null +++ b/releases/net48/dotnet48-changes.md @@ -0,0 +1,409 @@ +# .NET Framework 4.8 Release Notes + +.NET Framework release notes describe product improvements grouped by product area. Each change includes a Microsoft-internal VSTS bug ID, the primary binary that was updated and whether the change was a bug or a feature. + +## ASP.NET + +* Fix handling of InputAttributes and LabelAttributes for ASP.NET CheckBox control. [643614, System.Web.dll, Bug, Build:3646] +* Fixed a perf issue in HttpApplication instances pool in HttpApplicationFactory class. [639421, system.web.dll, Bug, Build:3673] +* Fixed NullReferenceException thrown from the page/control with only parameterized constructors with default values when targeting 4.7.2 [635479, System.Web.dll, Bug, Build:3673] +* Hardened ASP.NET application services against malicious JSON attacks [684132, System.Web.Extensions.dll, System.Web.dll, Bug, Build:3673] +* Fixed an issue with ValidationContext.MemberName when using custom DataAnnotation.ValidationAttribute. [563497, System.web.dll, Bug, Build:3694] +* Fixed ArgumentOutOfRangeException in MemoryCache when using change monitors with non-existent files east of GMT. [684136, System.Web.dll, Bug, Build:3694] +* Fix handling of multi-value HTTP headers that may affect multipart data processing. [684397, System.Web.dll, Bug, Build:3694] +* Fixed handling of multi-value HTTP headers that may affect multipart data processing. [726155, System.Web.dll, Bug, Build:3734] +* For client applications (winforms, WPF, or console apps, etc) the ASP.NET Client Application Services API’s have been hardened against potentially malicious JSON payloads. [727703, System.Web.dll, Bug, Build:3734] +* Fixed an issue introduced in ASP.NET 4.7, where the unexpected removal of a particular type of cache item can result in an orphaned *.delete file that prevents web applications from running. [750653, System.Web.dll, Bug, Build:3734] + +## BCL + +* Fixed deserialization of Collections which uses culture aware StringComparer. [566534, mscorlib.dll, Bug, Build:3621] +* Fixed System.Runtime.CompilerServices.RuntimeFeature.IsSupported to correctly account for application compatibility quirk settings for the Portable PDB feature introduced in .NET Framework 4.7.1. [571206, mscorlib.dll, Bug, Build:3621] +* Fixed the exception by parsing Japanese dates that have the year number exceeding the number of years in that date era. The behavior change will be noticed only if someone tries to parse a date containing some era and year while the year exceeds the last year in that era. [590659, mscorlib.dll, Bug, Build:3621] +* Fixed the serialization compatibility issue for CultureAwareComparer class. [621387, mscorlib.dll , Bug, Build:3632] +* Upgraded the System.IO.Compression zlib (inside clrcompression.dll) to the latest zlib version 1.2.11 [532490, clrcompression.dll, Bug, Build:3646] +* Fixed by reducing memory allocations in hashing with the CAPI classes (SHA256CryptoServiceProvider, et al) [548940, System.Core.dll, Bug, Build:3646] +* Fixed by reducing memory allocations in hashing with the CNG classes (SHA256Cng, et al) [548941, System.Core.dll, Bug, Build:3646] +* Fixed the issue of System.DateTime returning the wrong time after Windows processes a leap second, by following changes: +DateTime and DateTimeOffset will work with the leaps seconds reported by Windows 10, Version 1809 systems. DateTime.Now and DateTime.UtcNow will always be synchronized with the system time. +DateTime and DateTimeOffset will never report the leap second as value 60, instead, it’ll always report it as 59. +DateTime and DateTimeOffset operations will continue to work as it used to work, i.e. internally always handle the minutes as 60 seconds which make it compatible with the down levels platforms. [641206, mscorlib.dll, clr.dll, Bug, Build:3646] +* Fixed WCF de-serialization failure issue of CultureAwareComparer object. Fixed the issue where Applications using WCF to communicate with web services or applications using data contract serialization directly, were experiencing failures to deserialize the CultureAwareComparer object. [645084, mscorlib.dll, Bug, Build:3646] +* Reduced the impact of the "FIPS mode" bit being set in the OS [653796, mscorlib.dll;System.Core.dll, Bug, Build:3646] +* Changed default content encryption algorithm of EnvelopedCms to AES. [656518, System.Security.dll, Bug, Build:3646] +* Fixed GetECDsaPublicKey to work with brainpool curves. [586452, System.Core.dll, Bug, Build:3673] +* Reduced the number of object finalizations that occur as a result of using X509Certificate2 and related types. [654137, mscorlib.dll, System.dll, System.Security.dll, Bug, Build:3673] +* Fixed formatting of Japanese date with year 1 (as first year of any era), the date will be formatted using 元 character and not year number “1”. Example of the new formatted date behavior: 平成元年11月21日compared to old formatted date behavior 平成1年11月21日 [670097, mscorlib.dll, Bug, Build:3673] +* Fixed default settings used by RsaProtectedConfigurationProvider (use AES instead of 3DES, RSA is now using 2048bit key, OAEP is on by default), fixed encryption with OAEP so that it writes correct metadata. [549418, System.Configuration.dll, Bug, Build:3694] +* By default, elevated processes will not read HKCU for managed COM activation information. [691317, clr.dll, Bug, Build:3694] +* Add API to obtain certificate thumbprints with a caller-specified digest algorithm. [700365, mscorlib.dll, Feature, Build:3694] +* Fixed an IndexOutOfRangeException thrown when asynchronously reading a process output with less than a character's worth of bytes is read at the beginning of a line. [724219, System.dll, Bug, Build:3707] +* Mitigate compatibility breaks seen in some System.Data.SqlClient usage scenarios. [727701, System.Configuration.dll, Bug, Build:3707] +* Fixed a serialization exception that occurred when a huge amount of objects were serialized with BinaryFormatter. [761576, mscorlib.dll, Bug, Build:3734] +Added support for formatting the Japanese first year of era using Gannen 元 when the date pattern not having single quotes around 年. e.g. y年. [777279, mscorlib.dll, Bug, Build:3745] +* Changed the name of "Former Yugoslav Republic of Macedonia" to "North Macedonia" [802482, mscorlib.dll, Bug, Build:3761] + + +## ClickOnce + +* Fixed Clickonce UI dialogs on high Dpi machines with scale set to more than 100% for both new and existing applications which scale upto 300%. In the scenario where user wants to see legacy images, there is an opt out switch "Switch.System.Windows.Forms.UseLegacyImages" that can be set to "true" in dfsvc.exe.config file. [389534, Microsoft.Build.Tasks.v4.0.dll, Bug, Build:3621] +* Fixed Mage so it can properly update the identity of dependent assemblies in ClickOnce application manifests. [534286, Microsoft.Build.Tasks.v4.0.dll, Bug, Build:3621] +* Fixed ClickOnce dialogs (Splash screen, Install progress dialog, Maintenance dialog and Update dialog) have accessibility issues as mentioned in this bug. Fix is for realigning control indices and setting accessible names where it was missing. [541886, Microsoft.Build.Tasks.v4.0.dll, Bug, Build:3621] +* Fixed progress bar alignment from Right to Left in Splash Screen and Download progress dialog for ARA & HEB languages for ClickOnce UI. Fixed RTL layout in the ClickOnce dialogs. Individual controls are to be set in RTL layout as this property is not propagated. Set this property explicitly on progress bar control. [552893, Microsoft.Build.Tasks.v4.0.dll, Bug, Build:3621] + + +## CLR + +* Fixed LoadFrom(String, Byte[], AssemblyHashAlgorithm) works with SHA2 algorithms. [229901, mscorlib.dll, Bug, Build:3621] +* Reduced AsyncLocal memory overhead on value change. [470761, mscorlib.dll, Bug, Build:3621] +* Improved spin-waits in several synchronization primitives to perform better on Intel Skylake and more recent microarchitectures. [495945, mscorlib.dll, Bug, Build:3621] +* Fixed issues where incorrect values are sent to EventListeners. This includes incorrect activity ids on start and stop events and improper EventLevel values. [581072, mscorlib.dll, Bug, Build:3621] +* Fixed a potential crash with concurrent calls to a new dynamic method. [581154, mscorlib.dll, Bug, Build:3621] +* Fixed a possible deadlock when calling Dispose() on an EventSource. [597221, System.Core.dll, Bug, Build:3621] +* The ‘shadowCopyVerifyByTimestamp’ setting is now configurable for individual appdomains, as opposed to being a process wide setting. This helps in situations where you may not be the host process, but want to configure a new appdomain that verifys timestamps when shadow copying. [565570, clr.dll, Bug, Build:3632] +* Addressed the issue where the JIT compiler optimized away a call to the CompareExchange intrinsic operation under specific conditions [638227, clrjit.dll, Bug, Build:3646] +* CLR COM no longer returns E_INVALIDARG when marshalling a byref SafeArray from an Event Handler. [239541, WindowsBase.dll, Bug, Build:3673] +* Fixed a potential hang when a blocking GC is induced in low memory situations [374828, clr.dll, Bug, Build:3673] +* If you are using Server GC on a Skylake or later machine, you might notice that clr!SVR::t_join::join is taking a lot more CPU cycles. This is because clr!SVR::t_join::join uses the PAUSE instruction which takes a lot longer on Skylake+. This fix scales down the number of times it’s called when running on Skylake+ machine. [683269, clr.dll, Bug, Build:3673] +* Fixed an issue with the GC where frequent LOH under high memory pressure may result in premature OOM errors. [657730, clr.dll, Bug, Build:3694] +* Process corrupting exceptions in exception filter (like access violation) now result in aborting the current process. [110375, clr.dll, Bug, Build:3694] +* .NET now integrates with antimalware providers to scan assemblies loaded from byte arrays. [576558, clr.dll, Feature, Build:3694] +* Fixed an issue with missing Win32 resources in ReadyToRun images. [624174, crossgen.exe, Bug, Build:3694] +* Fixed an issue with ngen createpdb where passing in a long output folder could cause a crash. [627712, ngen.exe, Bug, Build:3694] +* Fixed a crossgen failure when compiling assemblies with no Win32 resources into ReadyToRun images. [722265, coreclr.dll, Bug, Build:3694] +* Fixed ability to handle process corrupted state exceptions stemming from Marshal.PtrToStructure on x86. [381677, clr.dll, Bug, Build:3707] +* Fixed intermittent access violation errors when Server GC interacts with type-forwarded value types implemented in mscorlib or other domain-neutral assemblies during garbage collection. [425626, clr.dll, Bug, Build:3707] +* Enabled a very obscure and uncommon usage pattern where FX Closure Walks are too expensive in the default domain. Introduced DeferFxClosureWalk (opt-in) switch that when set does the following things: 1) Disable DisableFxClosureWalk switch 2) When in LoaderOptimization.MultiHost, all assemblies are assumed sharable in the default domain and the closure walk is deferred as long as possible. This solution will provide good default domain performance and correctness. [485894, clr.dll, Bug, Build:3707] +* Fixed crashes that can occur when NGen'ed facade assemblies are loaded as multidomain-sharable. [602785, clr.dll, Bug, Build:3707] +* Improved Monitor’s lock acquisition performance and scalability under a perpetual lock convoy. [602844, clr.dll, Bug, Build:3707] +* Fixed an issue that previously caused Ngen to run out of memory every time it executed due to registry corruption. [702519, mscorsvc.dll / mscorsvw.exe, Bug, Build:3707] +* Triggering a System.Threading.ThreadAbortException when System.Diagnostics.Debugger.s_triggerThreadAbortExceptionForDebugger is set to true. [732816, mscorlib.dll, Bug, Build:3707] +* Fix a crash on COM interop and properly return the hresult for the OOM. [733492, clr.dll, Bug, Build:3707] +* Prevents applications from COM activating managed types whose GUIDs mismatch the declared CLSID in the registry" [752205, clr.dll, Bug, Build:3734] +* Fixed deadlocks that could occur when loading exception stack traces in out-of-memory conditions. [748860, diasymreader.dll, Bug, Build:3734] +* Improved scalability of System.Threading.Timer. Previously System.Threading.Timer had a single global queue that was protected by a single process-wide lock. This can become a scalability problem if Timers are used frequently on multi-CPU machine. This change splits into N per-processor Queues as well as other improvements that improve the performance in a high-scale environment. For compatibility reasons this new code is not activated by default at the present time. It needs to be activated by using .NET Config variable ScalableTimer. [735923, clr.dll, mscorlib.dll, Bug, Build:3734] +```xml + + ... + + + + +``` +* Added an opt-in config option to disable spin-waiting for a critical section when contended. The change can be opted into in an .exe.config file as follows: [754173, clr.dll, Bug, Build:3734] +```xml + + ... + + + + +``` +* Fixed the output from the "!u -gcinfo" command in the SOS Debugging Extension [740360, sos.dll, Bug, Build:3734] +* Customers who are profiling their .NET Framework application will no longer experience leaks on their ICorProfilerCallback9 COM object as ICorProfilerCallback9 COM object is never freed in the destructor of EEToProfInterfaceImpl instance. [742282, clr.dll, Bug, Build:3734] +* Updated ICorProfilerInfo4::GetILToNativeMapping2 to respect the rejitID field and return the appropriate mapping. [748879, clr.dll, Bug, Build:3734] +* Fixed storing of instances to the mark stack so that the subsequent code that follows can operate by popping the stack. [750816, clr.dll, clrgc.dll, Bug, Build:3734] +* Fixed an issue in the JIT with the compilation of methods that use explicit tailcalls. This feature is never used by C# programs but can impact some F# programs. If you are developing an F# application, you may see incorrect results or program crashes. A workaround is to disable tailcalls or use a debug build of your F# program. [754566, clrjit.dll, Bug, Build:3734] +* Fixed an issue that prevented call stacks from being displayed in the managed debugger during debugging of certain issues. [755544, clr.dll, Bug, Build:3761] +* Fixed an issue where Appdomain Resource Monitoring would not accurately report allocated bytes if it was enabled after process startup [824471, clr.dll, Bug, Build:3761] + + +## Networking + +* Fixed a memory leak issue in HttpWebRequest when communicating with a HTTPS server through a proxy. [484621, System.dll, Bug, Build:3621] +* Fixed HTTP Status line parsing to be more tolerant of missing status description text in HTTP responses. [534936, System.dll, Bug, Build:3621] +* Fixed a NetworkInformation.NetworkChange deadlock scenario when there is a lock around NetworkChanged listener and user’s callback. [554780, System.Net.NetworkInformation.dll, System.dll, netstandard.dll, Bug, Build:3621] +* Fixed a deadlock scenario when ServicePoint.ConnectionLimit is updated and requests are sent at the same time. [528650, System.dll, Bug, Build:3673] +* Fix a race condition that would sometimes cause all of the connections to a server to stop sending HTTP requests. [499777, System.dll, Bug, Build:3694] +* Added the ability via the config file to specify opt-in performance caching of default credentials for Windows authentication for HTTP and SMTP APIs. [514209, System.dll, Bug, Build:3694] +* Added retry timer for PAC file discovery after failure. [567511, System.dll, Bug, Build:3694] +* Fixed handling of 1xx interim responses. [711440, System.dll, Bug, Build:3734] +* Fixed domain spoofing vulnerability in .NET Framework and .NET Core which causes the meaning of a URI to change when International Domain Name encoding is applied by disallowing certain Unicode characters during the IDN encoding process - CVE-2019-0657 [694688, System.Private.Uri, Bug, Build:3745] + + +## SQL + +* Fixed the issue that SqlDataReader.ReadAsync() runs synchronously. Now the method runs asynchronously as expected. [594433, System.Data.dll, Bug, Build:3621] +* Fixed the issue while using SqlConnection.ConnectionString to set a null or empty connection string, an NRE exception will be thrown by the usage of the API in .Net Framework 4.7.2. [613944, System.Data.dll, Bug, Build:3621] +* Fixed the following issue relevant to SQL: while connecting to Azure SQL DB using .NET 4.7.2, using MultipleActiveResultSets=true in the connection string with System.Data.SqlClient.SqlConnection, async query operations sometimes lead to a bad TDS protocol request stream to be sent from the client, causing the Async Query APIs to fail connection string. [624283, System.Data.dll, Bug, Build:3632] +* Fixed a bug where SqlClient login may use an infinite timeout due to truncating a small millisecond timeout to zero when converting to seconds. [647908, System.Data.dll, Bug, Build:3646] +* This change provides an AppContext switch for making the default value of TransparentNetworkIPResolution false in SqlClient connection strings. [710778, System.Data.dll, Bug, Build:3694] + + +## WCF + +* Fixed an accessibility problem in WCF Trace Viewer that caused ComboBox controls to be themed incorrectly in High Contrast themes. [424922, SvcTraceViewer.exe, Bug, Build:3621] +* Fixed the race-condition that exists in AsyncResult that closes a WaitHandle before Set() is called. When this happens, the process crashes with an ObjectDisposedException. [552736, System.ServiceModel.Internals.dll, Bug, Build:3621] +* Fixed race-condition when aborting connections which caused ObjectDisposedException to be thrown in CleanupChannelCollections. [586151, mscorlib.dll, Bug, Build:3621] +* Fixed a high lock contention issue when a large number of threads calling WCF serialization logic [570201, System.Runtime.Serialization.dll, Bug, Build:3646] +* ServiceHealthBehavior is a new service behavior (IServiceBehavior) for WCF services that exposes a “?health” endpoint.  This new behavior allows one to monitor the internal state of their WCF service and obtain specific HTTP response codes during those times that listeners become faulted, throttle capacities are reached, etc.  One can extend this behavior to further scope the health of their WCF services to match their own custom business rules and needs. [620852, System.Servicemodel.dll, Feature, Build:3694] +* Fixed a System.AccessViolationException due to accessing disposed X509Certificate2 instance in a rare race condition. The fix is to defer the service certificate cleanup to GC. The impacted scenario is WCF NetTcp bindings using reliable sessions with certificate authentication. Customer can opt-in to the fix by adding the follow AppSetting to the config file. Without this AppSetting set to true, existing services won’t be affected by this code change. : + + + [695709, System.Servicemodel.dll, Bug, Build:3694] +* Fixed a race condition with IIS hosted net.tcp services when the portsharing service is restarted which resulted in the service being unavailable. [695877, System.ServiceModel.WasHosting.dll, Bug, Build:3694] +* Fixed broken WCF document links in the tracing log that were broken due to MSDN doc location change. [712450, System.ServiceModel.dll, Bug, Build:3707] +* Fixed a security vulnerability in SvcTraceViewer.exe associated with .stvproj file. [728568, System.ServiceModel.dll, Bug, Build:3707] +* Made some format changes and added lang attribute to WCF service Health page (like http://localhost:83/Service1?health) and WCF service metadata page (like http://localhost:83/Service1) to improve accessibility. [777308, System.ServiceModel.dll, Bug, Build:3745] + + +## Windows Forms + +* Maximize/Minimize button of new child Form are not scaled well on HDPI devices because of image property set to not to scale. On 100% dpi machines scaling it not required but on high dpi devices, when scaling set to more than 100%, the images set for Maximize/Minimize boxes need to be scaled. [515092, System.Windows.Forms.dll, Bug, Build:3621] +* Checkbox height is changed from square to rectangle when scaled. Padding and margins were scaled, thus adding to already scaled height of the checkbox as we were using item height to draw checkbox instead of checkbox height. Earlier these margins/paddings were constants and ignorable pixel sizes, and were not visible. [528418, System.Windows.Forms.dll, Bug, Build:3621] +* The new UIA behavior for CheckedListBox control has been introduced: the first checkbox item in the CheckedListBox control is now announced by Narrator when focus moves to the control without any selected item. This change is effective in applications that were recompiled to target .NET Framework 4.8. [533226, System.Windows.Forms.dll, Bug, Build:3621] +* The new behavior for disabled link labels has been introduced: link labels' enable/disable state is now provided correctly - disabled links have IsEnabled = false Accessibility Property and read by Narrator as 'Some Link, disabled'. This change is effective in applications that were recompiled to target .NET Framework 4.8. [537224, System.Windows.Forms.dll, Bug, Build:3621] +* The new behavior for link label with defined link area has been introduced: link area accessible name is now read by Narrator as full text of the parent link label. This change is effective in applications that were recompiled to target .NET Framework 4.8. [537934, System.Windows.Forms.dll, Bug, Build:3621] +* Improved accessibility for the DateTimePicker control. In order for the application to benefit from these changes, the application should be recompiled to target .NET Framework 4.8 or the application should explicitly opt-in into all accessibility app context switches in the app.config file. [543580, System.Windows.Forms.dll, Bug, Build:3621] +* An associated label name is now used as an accessible name for DateTimePicker control when AccessibleName property is not set. The default DateTimePicker's AccessibleRole is ComboBox now. These changes are effective in applications that were recompiled to target .Net Framework 4.8. [544791, System.Windows.Forms.dll, Bug, Build:3621] +* Fixed issues to add support for UIA live regions to WinForms. Added support for notifications about the Text property changes to the Label class (through UIA Live Regions). [545374, System.Windows.Forms.dll, Bug, Build:3621] +* Application Files' and 'Application Directory' label text is truncated on localized OSes. Developers will not be able to see the shortcut information for this control on the UI. This fix helps to resolve that issue and always show the full text of the label . [549024, System.Windows.Forms.dll, Bug, Build:3621] +* The new UIA behavior for numeric and domain up-down controls has been introduced: numeric and domain up-down controls without labels (custom UIA name) are announced by Narrator as 'spinners'. This change is effective in applications that were recompiled to target .NET Framework 4.8. [549543, System.Windows.Forms.dll, Bug, Build:3621] +* The new UIA behavior for CheckedListBox control has been introduced: an empty CheckedListBox control now has a focus rectangle drawn for a virtual first item when the control becomes focused. This change is effective in applications that were recompiled to target .NET Framework 4.8. [549558, System.Windows.Forms.dll, Bug, Build:3621] +* Improved ListView accessibility by enabling showing grey rectangle around the selected ListView item when parent ListView is out if focus. This change is effective in applications that were recompiled to target .NET Framework 4.8. [564762, System.Windows.Forms.dll, Bug, Build:3621] +* Fixed VisualStyle property in Winforms, is checking for supported values (by Winforms) and any value that goes outside of this range, Winforms throws an exception. Winforms also checks if the VisualStyle property set is supported by Winforms when it is using this property and does no-op if it is not supported. Underlying native method we use to set visual styles does not care what the value for visualstyle is being passed to it. Making this change will align Winforms code with windows and does not throw exception but still validate supported visual styles when using this property. Removing the validation condition while setting this property. [578093, System.Windows.Forms.dll, Bug, Build:3621] +* Fixed the DataGridView's Combobox expand/collapse state accessible for the customers who use assistive technologies. In order for the application to benefit from these changes, the application should be recompiled to target .NET Framework 4.8 or the application should explicitly opt-in into all accessibility app context switches in the app.config file. For example: + ``` + + + + + + + + + ``` + In order for an application that targets .NET Framework 4.8 to opt out from this change, use the following combination of switches: +. [574309, System.Windows.Forms.dll, Bug, Build:3621] +* Fixed and improved the stability of Live Regions feature by adding LiveSetting property setter check. This feature is available starting with Windows 10, version 1709. +In order for the application to benefit from these changes, the application should be recompiled to target .NET Framework 4.8 or the application should explicitly opt-in into all accessibility app context switches in the app.config file as seen in the example for Bug 574309. [583863, System.Windows.Forms.dll, Bug, Build:3621] +* Fixed Winforms application and controls, when enable for ""per-Monitor"" Dpi aware, they are not scaled according to the dpi of the monitor ( or device). Winforms app by default behave like ""System"" Dpi aware. This is causing Winforms applications/controls to be displayed ""blur"" as a result of windows scaling them and in some cases, controls are either not scaled or scaled out of proportionate. Made changes on control level to respond to DPI change event (assuming windows raise this event whenever there is a DPI change) and rescale controls according to the new DPI. [597091, System.Windows.Forms.dll, Bug, Build:3621] +* Fixed by adding support for UIA notification event to Label and GroupBox classes. This feature is available starting with Windows 10, version 1709. In order for the application to benefit from these changes, the application should be recompiled to target .NET Framework 4.8 or the application should explicitly opt-in into all accessibility app context switches in the app.config file as seen in the example for Bug 574309. [563596, Windows.UI.Xaml.Automation.Peers.dll, Windows.dll, Bug, Build:3621] +* Fixed by adding support for the live region feature to the ToolStripStatusLabel class. In order for the application to benefit from these changes, the application should be recompiled to target .NET Framework 4.8 or the application should explicitly opt-in into all accessibility app context switches in the app.config file as seen in the example for Bug 574309. [564300,Windows.UI.Xaml.Automation.Peers.dll, Windows.dll, Bug, Build:3621] +* Fixed by improving the accessibility of DataGridView and ListView to make sort direction available via UIA: added exposing sort order and sort column via ItemStatus property and column name. This change is effective in applications that were recompiled to target .NET Framework 4.8. [549288, System.Windows.Forms.dll, Bug, Build:3621] +* Fixed by making the forward and backward toolstrip navigation consistent. This feature is available starting with Windows 10, version 1709. In order for the application to benefit from these changes, the application should be recompiled to target .NET Framework 4.8 or the application should explicitly opt-in into all accessibility app context switches in the app.config file as seen in the example for Bug 574309. [544592, System.Windows.Forms.dll, Bug, Build:3621] +* Fixed the announcement of DataGridView Read-only TextBox cells by making accessible and clear: editable TextBoxes are announced as 'editable' and read-only TextBoxes are announced as 'read-only'. This change is effective in applications that were recompiled to target .NET Framework 4.8. [599936, System.Windows.Forms.dll, Bug, Build:3621] +* Added support for UIA notification event to ProgressBar class. The feature is available starting with Windows 10, version 1709. [581351, System.Windows.Forms.dll, Bug, Build:3632] +* Fixed an issue where read-only Status for DataGridView TextBox column is not announced by Narrator. This change is effective in applications that were recompiled to target .NET framework 4.8. [599936, System.Windows.Forms.dll, Bug, Build:3632] +* Fixed reliability issues in Graphics class when used in RDP sessions. [627739, System.Drawing.dll, Bug, Build:3632] +* Fixed the issue of Narrator not announcing the updated value of ComboBox in PropertyGrid. +Added support for UIA notification event to PropertyGrid. The feature is available starting with Windows 10, version 1709. Added screen reader announcement for PropertyGrid's ComboBox value changes. Added ComboBox's text field update in response of ComboBox selection changes. +In order for the application to benefit from these changes, the application should be recompiled to target .NET framework 4.8 or the application should explicitly opt-in into all accessibility app context switches in the app.config file. App.config file content is shown below (in 642548). [508369, System.Windows.Forms.dll, Bug, Build:3646] +* Fixed improper scaling of auto-sized controls when form is moved to secondary monitor with different DPI scaling. [515971, System.Windows.Forms.dll, Bug, Build:3646] +* Fixed improper scaling of the System-style control's font on a Font-scaled form, when Form is moved to a secondary monitor with different DPI scaling [519500, System.Windows.Forms.dll, Bug, Build:3646] +* Fixed Checkbox and RadioButton control truncation issues control property is set to "FlatStyle". [519530, System.Windows.Forms.dll, Bug, Build:3646] +* Fixed the improper scaling issue of auto-sized controls when form is moved to secondary monitor with different DPI scaling. All Controls (e.g. buttons) in the FlowLayout are placed into the first column with setting the AutoScroll property as True when DPI changed [525684, System.Windows.Forms.dll, Bug, Build:3646] +* Fixed the WinForms control tooltip's issue where it does not appear when moving keyboard focus to the control +A control's tooltip is displayed now when a user uses a keyboard to focus the control. +This change is effective in applications that have Switch.System.Windows.Forms.UseLegacyToolTipDisplay value and either Switch.UseLegacyAccessibilityFeatures.3 value is set to false or application is built to target .NET version 4.8. App.config file content is shown below (in 642548). [548792, System.Windows.Forms.dll, Bug, Build:3646] +* Fixed font scaling issue when DPI changes. Winforms application and controls, when enabled for """"per-Monitor"""" Dpi aware, they are not scaled according to the dpi of the monitor (or device). Winforms app by default behave like """"System"""" Dpi aware. This was causing Winforms applications/controls to be displayed """"blur"""" as a result of windows scaling them and in some cases, controls are either not scaled or scaled out of proportionate. +Made changes on control level to respond to DPI change event (assuming windows raise this event whenever there is a DPI change) and rescale controls according to the new DPI [597091, System.Windows.Forms.dll, Bug, Build:3646] +* Added support of Accessibility Invoke pattern to DataGridView Image cell with ability to invoke cell's default action. (in case Image cell is actually an image of a button) +In order for the application to benefit from these changes, the application should be recompiled to target .NET framework 4.8 or the application should explicitly opt-in into all accessibility app context switches in the app.config file. App.config file content is shown below (in 642548). [615721, System.Windows.Forms.dll, Bug, Build:3646] +* Fixed PropertyGrid control scaling issue in Winforms, when parent window DPI changed. PropertyGrid control in the .NET 4.8 runtime will now properly scale according to current running monitor DPI setting. Developer has to opt-in to this fix by either targeting to .NET 4.8 framework or using the .NET 4.8 opt-in config switch. [616661, System.Windows.Forms.dll, Bug, Build:3646] +* Fixed Checkbox and RadioButton controls when set to 'FlatStyle' not being scaled on high Dpi monitors. [638326, System.Windows.Forms.dll, Bug, Build:3646] +* Fixed DataGridView ComboBox accessible hierarchy. Introduced the support of ComboBox UIA notifications. The feature is available starting with Windows 10, version 1709. +In order for the application to benefit from these changes, the application should be recompiled to target .NET framework 4.8 or the application should explicitly opt-in into all accessibility app context switches in the app.config file. +In order for an application that targets .NET Framework 4.8 to opt out from this change, use the following combination of switches: . [642548, System.Windows.Forms.dll, Bug, Build:3646] +* Fixed RadioButton/ChecKBox controls truncation issue when control property is set to 'Flat/Popup style ' [645041, System.Windows.Forms.dll, Bug, Build:3646] +* Fixed Button control to scale according to monitor Dpi on which the control is being displayed. [656271, System.Windows.Forms.dll, Bug, Build:3646] +* Improved loading/rendering time for windows forms controls. [662839, System.Windows.Forms.dll, Bug, Build:3646] +* Fixed accessible hierarchy of WinForms DataGridView control to represent its currently editing control (inner cell TextBox or ComboBox) as a child of corresponding editing cell. Added support of UIA notifications to DataGridView control. [442899, System.Windows.Forms.Dll, Feature, Build:3673] +* A ToolStrip item's tooltip is displayed now when a user uses a keyboard to focus the ToolStrip item. +This change is effective in applications that have Switch.System.Windows.Forms.UseLegacyToolTipDisplay value and either Switch.UseLegacyAccessibilityFeatures.3 value is set to false or application is built to target .NET version 4.8. [549360, System.Windows.Forms.dll, Bug, Build:3673] +App.config file content example: +```xml + + ... + + + + + + +``` +* Fixed vulnerability that might lead to remote code execution. [598032, Winres.exe, Bug, Build:3673] +* Fixed DataGridView ComboBox accessible hierarchy. Introduced the support of ComboBox UIA notifications [642548, System.Windows.Forms.Dll, Bug, Build:3673] +* Fixed localizable UI Automation Provider name for DataGridView EditingPanel. +In order for the application to benefit from these changes, the application should be recompiled to target .NET framework 4.8 or the application should explicitly opt-in into all accessibility app context switches in the app.config file. [654115, System.Windows.Forms.Dll, Bug, Build:3673] +* Fixed DataGridView not sortable column announcement and providing item status to prevent exposing 'Not sorted' info and just be silent regarding the sorting status for such columns. +In order for the application to benefit from these changes, the application should be recompiled to target .NET framework 4.8 or the application should explicitly opt-in into all accessibility app context switches in the app.config file. +In order for an application that targets 4.8 to opt out from this change, use the following combination of switches: + [661319, System.Windows.Forms.Dll, Bug, Build:3673] +* Fixed ToolStrip and MenuStrip control accessible hierarchy of inner menu/tool items. Enabled support of UI Automation notifications for ToolStrip and MenuStrip controls. In order for the application to benefit from these changes, the application should be recompiled to target .NET framework 4.8 or the application should explicitly opt-in into all accessibility app context switches in the app.config file as seen in the example for Bug 549360. [497307, System.Windows.Forms.dll, Bug, Build:3694] +* The keyboard tooltips feature is "opt-in" now - it is no longer switched on implicitly when app targets .NET 4.8. "Switch.UseLegacyAccessibilityFeatures.3=false", which is a default value for .NET 4.8 apps, is still required by the feature. [686499, System.Windows.Forms.dll, Bug, Build:3694] +App.config file content example with enabled keyboard tooltips for apps targeting .NET 4.7.2 or older: + ``` + + ... + + + + + + App.config file content example with enabled keyboard tooltips for apps targeting .NET 4.8: + + + ... + + + + +* Added per monitor DPI awareness support to ToolStrip and ToolStrip Items. [378542, System.Windows.Forms.dll, Bug, Build:3707] +* Fixed accessibility information about ComboBox DataGridView cell, including expanded/collapsed state of this cell. [657355, System.Windows.Forms.dll, Bug, Build:3707] +* Fixed providing accessibility information about ComboBox selected item: item selection is announced and accessible info is presented even the DropDownList is not opened and user selects the items using arrow keys. In ordr=er for the application to benefit from these changes, the application should explicitly opt-in into all accessibility app context switches in the app.config file as seen in the example for Bug 549360. [703373, System.Windows.Forms.dll, Bug, Build:3707] +* Added per monitor DPI awareness support to the PropertyGrid. [719232, System.Windows.Forms.dll, Bug, Build:3707] +* Fixed a vulnerability in System.Windows.Froms.Clipboard APIs. This is a breaking change and is controlled by the following switch + ``` + + + + +[655431, System.Windows.Forms.dll, Bug, Build:3707] +* Added Scroll UIA pattern to ListBox items in order to make the control accessible. [742319, System.Windows.Forms.dll, Bug, Build:3734] +* Fixed ColorEditor, ContentAlignmentEditor, CursporEditor to respond to DPI changed messages and made changes in FontEditor to always open in the 'SystemAware' mode even when the application is in "per-monitor" mode. [746634, System.Windows.Forms.dll, System.Drawing.Design.dll, Bug, Build:3734] +* Fixed providing correct accessibility information and correct accessible hierarchy of PropertyGrid control. [526702, system.windows.forms.dll, Bug, Build:3734] +* The screen reader announcement of the WinForms' Menu and ToolStrip expandable subitems has been fixed to not read in items' and scan mode the hidden (collapsed) subitems until corresponding parent Menu item/ToolStrip DropDown item is expanded. In order for the application to benefit from these changes, the application should be recompiled to target .NET framework 4.8 or the application should explicitly opt-in into all accessibility app context switches in the app.config file. [560840, System.Windows.Forms.dll, Bug, Build:3734] +* Fixed UI Automation provided accessibility of WinForms DataGridView ComboBox to have appropriate and consistent screen reader announcement for ComboBox interactions. The feature is available starting with Windows 10, version 1709. In order for the application to benefit from these changes, the application should be recompiled to target .NET framework 4.8 or the application should explicitly opt-in into all accessibility app context switches in the app.config file. [732559, System.Windows.Forms.Dll, Bug, Build:3734] +In order for the application to benefit from these changes, the application should be recompiled to target .NET framework 4.8 or the application should explicitly opt-in into all accessibility app context switches in the app.config file. +* With the fix applied, SmartTags will work fine in VS on secondary monitor when PMA option is turned on. [754549, System.Windows.Forms.dll, Bug, Build:3761] +* With the fix applied, Menu control in WinForms designer can be edited using Narrator navigation - user is able to add Menu Strip items, MenuItem can be added as a child via navigation and ""Type Here"" placeholder for a new item can be announced. +In order for the application to benefit from these changes, the application should be recompiled to target .NET framework 4.8 or the application should explicitly opt-in into all accessibility app context switches in the app.config file as seen in the example for Bug 549360. [792793, System.Windows.Forms.dll, Bug, Build:3761] +* With the fix applied, Chart control meets high contrast standards. In high contrast regimen user is able to access information from Chart control's labels which colors are enough contrast now. +In order for the application to benefit from these changes, the application should be recompiled to target .NET framework 4.8 or the application should explicitly opt-in into all accessibility app context switches in the app.config file. [826994, System.Windows.Forms.dll, Bug, Build:3761] +* With the fix applied, Chart control shows the focus indicator and can be focused using mouse. User is able to access information from Chart control more effectively using assistive technologies. +In order for the application to benefit from these changes, the application should be recompiled to target .NET framework 4.8 or the application should explicitly opt-in into all accessibility app context switches in the app.config file. [827003, System.Windows.Forms.dll, Bug, Build:3761] +* Grid error dialog in the property browser (of VS) doesn't support PMA mode yet. Hence, Fixed it to show up as “SystemAware” only dialog when the process is in PMV2 mode. This behavior may change in the future release. [827142, System.Windows.Forms.dll, Bug, Build:3761] + + +## WPF + +* Fixed a memory leak arising when removing data items from their parent collections, when UIAutomation is present. [172291, PresentationFramework.dll, Bug, Build:3621] +* Fixed virtualizing ItemsControl hung during scrolling when Items collection contains duplicate value-typed objects. [360053, PresentationFramework.dll, Bug, Build:3621] +* Fixed WPF application can crash with NullReferenceException when changing a property used by a DataTrigger whose host element has been removed from the visual tree. The crash only occurs if the host element is garbage-collected during a small window of time during the property-change notification. [401484, PresentationFramework.dll, Bug, Build:3621] +* Fixed WPF app that has multiple top-level windows in different threads that crashes during a theme change. [404464, PresentationFramework.dll, Bug, Build:3621] +* Fixed WPF applications running on touch or stylus-enabled machines can sometimes hang at startup or during connection of a tablet or stylus device. [474688, PresentationFramework.dll, Bug, Build:3621] +* Fixed focus issues in WPF applications running in high contrast themes, it can be difficult to distinguish when a TextBox, PasswordBox, or RichTextBox has focus. [486957, PresentationFramework.dll, Bug, Build:3621] +* Fixed WPF applications using DocumentViewer controls may see issues with the rendering of text selection graphics after a theme change. This change addresses that issue. [494408, PresentationFramework.dll, Bug, Build:3621] +* In WPF applications running on touch or stylus-enabled machines that set the AppContext switch "Switch.System.Windows.Input.Stylus.EnablePointerSupport" to true, StylusPlugins would not be properly unhooked when element properties were changed prior to the presentation source being set to null. This change fixes this issue. [500125, PresentationFramework.dll, Bug, Build:3621] +* Fixed an issue that caused XAML Browser Applications (XBAP’s) targeting .NET 3.5 to sometimes load using .NET 4.x runtime incorrectly. [560029, PresentationHost_v0400.dll, Bug, Build:3621] +* Fixed an infinite loop arising during layout of a Grid in some cases when *-columns with MinSize constraints consume all the available space. [560609, PresentationFramework.dll, Bug, Build:3621] +* Fixed WPF applications running under high contrast themes, the border color of a disabled TextBox, RichTextBox, and PasswordBox was incorrect. This change addresses that issue. [527669, PresentationFramework.dll, Bug, Build:3621] +* Fixed WPF applications using non-adorner based text selection for TextBox and PasswordBox (Switch.System.Windows.Controls.Text.UseAdornerForTextboxSelectionRendering=false), developers may now set the SelectionTextBrush property in order to alter the rendering of the selected text. By default, this color changes with SystemColors.HighlightTextBrushKey. If non-adorner based text selection is not enabled, this property does nothing. [531137, PresentationFramework.dll, Bug, Build:3621] +* Fixed WPF application running in high contrast mode has difficult to see selection visuals on DataGridCells. This change addresses that issue. [545871, PresentationFramework.dll, Bug, Build:3621] +* Fixed WPF applications running on a touch or stylus-enabled machine, users might periodically see a crash in System.Windows.Window.GetWindowMinMax. This change addresses that issue. [546769, PresentationFramework.dll, Bug, Build:3621] +* Fixed a memory leak arising when sending bitmaps to the clipboard. [589759, PresentationCore.dll, Bug, Build:3621] +* Fixed WPF application running on a stylus or touch-enabled machine may see NullReferenceExceptions or InvalidCastExceptions under certain circumstances. This change addresses this issue. [577690, PresentationCore.dll, Bug, Build:3621] +* Fixed issue when non-Adorner-based text selection is enabled in .NET Framework 4.7.2 and above, the default SelectionOpacity of FlowDocumentReader, FlowDocumentScrollViewer, and SinglePageViewer will cause the selection to obscure the underlying text. This change addresses this issue by setting the default SelectionOpacity to the correct value. [568305, PresentationFramework.dll, Bug, Build:3621] +* Fixed WPF applications using non-adorner based text selection (AppContext flag "Switch.System.Windows.Controls.Text.UseAdornerForTextboxSelectionRendering=false"), editable ComboBoxes do not appropriately follow theme colors for text selection. [572332, PresentationFramework.dll, Bug, Build:3621] +* Fixed timing issues in the finalizer thread could potentially cause exceptions during AppDomain or process shutdown in certain .NET applications. This is generally seen in applications that do not correctly shut down Dispatchers running on worker threads prior to process or AppDomain shutdown. Such applications should take care to properly manage the lifetime of Dispatchers. This change adds an AppContext switch that can help alleviate (but not eliminate) some of the issues that may arise from these application design issues. To enable this, set the AppContext flag "Switch.MS.Internal.DoNotInvokeInWeakEventTableShutdownListener=true". [606492, WindowsBase.dll, Bug, Build:3621] +* Fixed crash issues and allows the replace to proceed.When replacing multiple characters with a single character (in a different language than replaced text) using IMEPad, WPF crashes. [595046, PresentationFramework.dll, Bug, Build:3621] +* Fixed WPF application that changes TreeView.IsEnabled and (at the same time) changes the underyling collection(s) can experience a spurious ElementNotAvailableException. [573999, PresentationFramework.dll, Bug, Build:3621] +* Addressed the issue of high CPU usage or hangs. This used to happen under certain conditions, where, WPF applications using WindowChromeWorker experience high CPU usage or hangs. . [437642, PresentationFramework.dll, Bug, Build:3632] +* Fixed a bug in the 4.7 algorithm for allocating sizes to *-rows in a Grid. In some cases (e.g. Grid with Height="Auto" containing empty rows), rows were arranged at the wrong position, possibly outside the Grid altogether. [590061, PresentationFramework.dll, Bug, Build:3632] +* Fixed a potential deadlock in WPF Packaging APIs when multiple threads were both creating and closing large packages simultaneously. [609850, PresentationCore.dll, WindowsBase.dll, Bug, Build:3632] +* Fixed incorrect result of pressing an arrow key when focus is on a Hyperlink within an item that is not the SelectedItem of the parent ItemsControl. [405208, PresentationFramework.dll, Bug, Build:3646] +* Fixed issue where internal class PriorityQueue can return items in the wrong order. [442569, PresentationCore.dll, Bug, Build:3646] +* Fixed usage of resources internal to theme files to avoid potential conflicts. [494194, System.Windows.Controls.Ribbon.dll, Bug, Build:3646] +* Fixed an issue where automation properties set on an editable RibbonComboBox are not properly announced by screen readers or other assistive technologies. [520147, PresentationCore.dll, Bug, Build:3646] +* GridViews with focusable Header rows will now not experience keyboard focus landing on the padding column in the header. [559546, PresentationFramework.dll, Bug, Build:3646] +* Fixed Binding's incorrect use of IList indexer when the source object declares a custom indexer with the same signature [585942, PresentationFramework.dll, Bug, Build:3646] +* Fixed the issues of certain bounding rectangles, not being drawn corrently. When WPF is run in Per-Monitor Aware mode, certain bounding rectangles around text are drawn incorrectly by Accessibility tools like Narrator. This fix addresses the problem. To opt-into this fix, the target framework version of the Application should be set to .NET 4.8. Alternatively, an AppContext switch - "Switch.UseLegacyAccessibilityFeatures.2" - can be overridden with the value "false" to enable the fix. [617457, PresentationFramework.dll, Bug, Build:3646] +* Fixed a hang arising during layout of a Grid when UseLayoutRounding=true, high DPI is in effect, grid *-column widths are determined from children with ColumnSpan > 1, and floating-point roundoff is unfavorable. [619978, PresentationFramework.dll, Bug, Build:3646] +* Fixed an issue where re-entrant calls during shutdown could cause various application faults in WPF applications running on a touch or stylus enabled machine. [633620, PresentationCore.dll, PresentationFramework.dll, Bug, Build:3646] +* Fixed a memory leak arising when the number of TextBoxes drops to 0. [645497, PresentationFramework.dll, Bug, Build:3646] +* Fixed the DeadLock issue faced during creation of Spellchecker while Finalizer is ending another Instance. Under certain circumstances, WPF applications using the spell-checker that use custom dictionaries could throw unexpected excpetions and crash [646599, PresentationFramework.dll, Bug, Build:3646] +* Addressed the issue where GroupItem headers containing an Expander were not announced correctly by screen readers [646633, PresentationFramework.dll, Bug, Build:3646] +* Fixed WPF issue of not creating correctly-size rendertarget for mixed-mode child windows. Under certain circumstances, per-monitor DPI aware applications that host WPF based controls or plugins were not rendering the WPF window fully [646801, wpfgfx_v0400.dll, Bug, Build:3646] +* Addressed the restore issue of Window.Left & Window.Top. When WPF applications are running in per-monitor aware mode, saving the value of Window.Left and Window.Top at application end, and restoring the values to a Window prior to creation upon the next application launch, was not restoring the application to the same screen position where it was at the time the application was closed. [646803, PresentationFramework.dll; PresentationCore.dll;WindowsBase.dll, Bug, Build:3646] +* Fixed the issue where HwndHost does not adapt child-HWND sizing correctly during DPI changes. When WPF is run in Per-Monitor Aware mode, controls hosted within HwndHost were not sized correctly after DPI changes (for e.g., when moving applications from one monitor to another). This fix ensures that controls hosted so are sized appropriately [646805, PresentationFramework.dll;PresentationCore.dll;WindowsBase.dll, Bug, Build:3646] +* Fixed the issue of WPF Windows not scaling correctly. WPF windows that are parented under native HWND’s, including Windows Forms (using ElementHost), will correctly react to DPI changes and scale themselves appropriately when the dpiAwareness element in the application manifest is updated to “PerMonitorV2” value. [478267, PresentationCore.dll,wpfgfx_v0400.dll, Feature, Build:3673] +* Fixed a race condition where an external process (e.g. anti-virus scanner or search indexer) could block access to temporary files. [519951, PresentationCore.dll, PresentationFramework.dll, System.Speech.dll, Bug, Build:3673] +* Automation properties set on TextBoxes within a DatePicker are now announced correctly by 3rd-party screen readers. [619245, PresentationCore.dll, Bug, Build:3673] +* Improved reliability of WPF under certain situations and prevents hangs.[629025, wpfgfx_v0400.dll, Bug, Build:3673] +* Fixed a regression involving bindings to properties of type DataView or RelatedView. In some cases the value gets GC'd prematurely, causing the bindings to sliently stop working. [636340, PresentationFramework-SystemData.dll, Bug, Build:3673] +* When WPF is run in Per-Monitor Aware mode, controls hosted within HwndHost are not sized correctly after DPI changes (for e.g., when moving applications from one monitor to another). This fix ensures that controls hosted so are sized appropriately. +On .NET Framework Versions 4.7.2 and older, applications must opt in to enable the fix by setting the AppContext switch +""Switch.System.Windows.DoNotUsePresentationDpiCapabilityTier2OrGreater"" to ""false"". This switch can be set either in the registry or in the application - see the documentation for AppContext (https://msdn.microsoft.com/en-us/library/system.appcontext(v=vs.110).aspx). [646805, PresentationFramework.dll;PresentationCore.dll;WindowsBase.dll, Bug, Build:3673] +* Fixed an issue arising when refreshing a grouped collection view. While the groups are being rebuilt, they pass through a transient state where the subgroups are empty but the cached value for count still reports non-empty. A re-entrant call to get an item at a given index during this time will get ArgumentOutOfRangeException, even though index < count. [656948, PresentationFramework.dll, Bug, Build:3673] +* Fixed a crash due to TaskCanceledException that can occur during shutdown of some WPF apps. Apps that continue to do work involving weak events or data binding after Application.Run() returns are known to be vulnerable to this crash. [668328,WindowsBase.dll, Bug, Build:3673] +* Added support for ControllerFor UIAutomation property [503411, PresentationCore.dll, UIAutomationTypes.dll, Feature, Build:3694] +* Fixed an issue where focus loops inside a WPF UserControl instead of breaking out of it under some hosting scenarios. [542626, PresentationCore.dll, PresentationFramework.dll, WindowFormsIntegration.dll, Bug, Build:3694] +* Fixed an issue where dragging from a WPF application and dropping into an application that fails causes a crash in WPF. [685894, PresentationFramework.dll, Bug, Build:3694] +* Fixed a crash when using "live sorting" and NewItemPlaceholderPosition.AtBeginning at the same time. [387603, PresentationFramework.dll, Bug, Build:3694] +* Added support for SizeOfSet and PositionInSet UIAutomation properties, this change also provides defaults for some controls. [488213, PresentationCore.dll, PresentationFramework.dll, System.Windows.Controls.Ribbon.dll, UIAutomationClient.dll, UIAutomationTypes.dll, Feature, Build:3694] +* Scrolling panels now honor the system setting for mouse wheel to "scroll by screen". [586801, PresentationFramework.dll, System.Windows.Controls.Ribbon.dll, Bug, Build:3694] +* Tooltips now show underneath controls when keyboard focused, Ctrl+Shift+F10 dismisses/reshows tooltips. [614397, PresentationFramework.dll, System.Windows.Controls.Ribbon.dll, Feature, Build:3694] +* Improved the performance of rebuilding the automation tree of an items control (ListBox, DataGrid, etc.) in which grouping is enabled. [104559, PresentationCore.dll, PresentationFramework.dll, Bug, Build:3707] +* Fixed the behavior of automation Grid pattern in a ListView. [401080, PresentationFramework.dll, Bug, Build:3707] +* Fixed the automation tree exposed for a plain ItemsControl (as opposed to a derived class like ListBox, DataGrid, etc.). [410007, PresentationCore.dll, PresentationFramework.dll, Bug, Build:3707] +* Fixed an infinite loop that can arise when setting the height of ListBox (or other ItemsControl) to zero. [448747, PresentationFramework.dll, Bug, Build:3707] +* Fixed a reliability problem to reduce crashes with rapid window size changes when running in Software Rendering mode. [691364, wpfgfx_v0400.dll, Bug, Build:3707] +* Fixed a crash arising when Visual Studio's diagnostic tools are enabled to debug an app that has a ResourceDictionary whose Source points to invalid XAML. [727642, PresentationFramework.dll, Bug, Build:3707] +* Fixed a security vulnerability when pasting in WPF textboxes and in WPFs Clipboard APIs [678471, PresentationCore.dll, Bug, Build: 3707] +* Fixed a security vulnerability when pasting in WPF RichTextbox and InkCanvas [678477, PresentationFramework.dll, Bug, Build: 3707] +* Improved the memory allocation and cleanup scheduling behavior of the weak-event pattern. To opt-in to these improvements, set AppContext switches to 'true': Switch.MS.Internal.EnableWeakEventMemoryImprovements and Switch.MS.Internal.EnableCleanupSchedulingImprovements. [759824, WindowsBase.dll, PresentationFramework.dll, Bug, Build:3734] +* Fixed context menus and popups that are sometimes dismissed unexpectedly when shown for the first-time on a non-primary High-DPI monitor [732853, PresentationFramework.dll, PresentationCore.dll, Bug, Build:3734] +* Fixed a crash due to ElementNotAvailableException arising when scrolling and expanding/collapsing nodes in a TreeView with VirtualizationMode=Recycling, that changes its IsEnabled property while expanding nodes. This crash only occurs when there is a "partial automation client" running (and no full automation client); The chief example is running the app over RDP to a Win10 machine. [705448, PresentationCore.dll, Bug, Build:3734] +* Fixed a crash in WPF when displaying specific Unicode characters (Unicode codepoint 0xFDFD 47 times or more in a row) [725381, PresentationCore.dll, Bug, Build:3734] +* Fixed the construction of automation for an ItemsControl to avoid calling the control's IsItemItsOwnContainerOverride method. This avoids crashes in cases where the override has bugs [755174, PresentationCore.dll, PresentationFramework.dll, Bug, Build:3734] +* Fixed an issue arising when removing an item from a grouped collection view. Any groups that become empty are themselves removed, raising CollectionChanged events before the parent groups' counts have been fully updated. An event handler that calls back into the collection view can get ArgumentOutOfRangeException. [765355, PresentationFramework.dll, Bug, Build:3734] +* In .NET 4.8 Preview, WPF programs that create many RenderTargets (e.g. RenderTargetBitmap) can leak GDI handles and memory eventually resulting in an OutOfMemoryException from System.Windows.Media.Composition.DUCE+Channel.SyncFlush(). This was due to a COM reference cycle keeping render targets alive in the WPF renderer. Fixed this issue. [756618, wpfgfx_v0400.dll, Bug, Build:3734] +* Added an AppContext switch 'Switch.System.Windows.Controls.ItemsControlDoesNotSupportAutomation' that guards the fix for the automation tree under a plain ItemsControl (previously disclosed Bug 410007).  This switch defaults to 'false' for apps that target .NET 4.8, or to 'true' for apps that target earlier versions.  [778689, PresentationCore.dll, WindowsBase.dll, Bug, Build:3745] +* Fixed an accessibility issue when replacing an item in a collection with another item that compares as equal. [774503, PresentationFramework.dll, Bug, Build:3761] +* Added an AppContext switch Switch.System.Windows.Automation.Peers.ItemAutomationPeerKeepsItsItemAlive that opts-out of part of an earlier memory leak fix (172291) by changing ItemAutomationPeer's reference to its item from weak to strong. This re-introduces some of the leaks, but can fix problems in custom automation implementations that tactically assume a strong reference. For example, a custom automation peer (for an ItemsControl) that implements its own logic for re-using its item peers is likely to have a problem when an item X in the underlying collection is replaced by a "separate-but-equal" item X' - a different object where Object.Equals(X, X') is true. [801226, PresentationFramework.dll, Bug, Build:3761] +* Fixed an issue involving bindings with DataContext explicitly on the binding path.  When DataContext changes to {DisconnectedItem}, the binding should not pass that value to user code like converters, property-change handlers, etc. [801039, PresentationFramework.dll, Bug, Build:3761] + + +## WorkFlow + +* We have modified the hashing algorithm used to generate XOML file checksums when building projects with XOML files. If this causes problems, the previous hashing algorithm can be used by specifying ""true"" for the following AppContext switch: Switch.System.Workflow.ComponentModel.UseLegacyHashForXomlFileChecksum. Note that this AppContext switch applies to the MSBuild process, so must be specified in the ""config path"" of the MSBuild.Exe that is used to perform the builds. [531054, System.Workflow.Runtime.dll, Bug, Build:3621] +* We have modified the hashing algorithm used to calculate keys to internal in-memory caches. If this causes problems, the previous hashing algorithm can be used by specifying ""true"" for the following AppContext switches: Switch.System.Workflow.Runtime.UseLegacyHashForWorkflowDefinitionDispenserCacheKey Switch.System.Workflow.Runtime.UseLegacyHashForSqlTrackingCacheKey. [532505, System.Workflow.Runtime.dll, Bug, Build:3621] +* Fixed default hashing algorithm that help debugging symbols has changed. If you encounter problems with breakpoints in the workflow designer not being hit when expected, you may have a mismatch of hashing algorithms between MSBuild and the project being debugged. The following AppContext switch can be specified for MSBuild.exe and the project being debugged to help alleviate the problem. Switch.System.Activities.UseLegacyHashForDebuggerSymbols If this switch has a value of ""true"", then the default hashing algorithm for pre-4.7.2 versions of .NET are used. If the value of the switch is ""false"", the newer default hashing algorithm is used. [537692, System.Workflow.Runtime.dll, Bug, Build:3621] +* Previously, under extreme usage conditions (high volume of connections to MSDTC), it was possible for a CriticalSection to be held by a single thread indefinitely, resulting in the need to restart the process. This problem has been resolved. In addition, some object caches that would help performance in multi-threaded scenarios were not taken advantage of correctly. This has been resolved. [540812, System.Workflow.Runtime.dll, Bug, Build:3621] +* Fixed an accessibility problem to enable connector label reading on workflow designer [604810, System.Activities.Presentation.dll, Bug, Build:3646] +* Fixed an accessibility problem to have more texts clearly visible on workflow designer. [613975, System.Activities.Presentation.dll, Bug, Build:3646] +* Fixed the StackOverflowException issue for larger nesting depth of XOML. Previosuly, if the object nesting depth in the XOML was large, there were possibilities to cause the process to encounter a StackOverflowException. These problems have been resolved. +The maximum object nesting depth can be adjusted (default being 300) with the following AppSetting specification in the process that creates and invokes the WorkflowCompiler class: + +Where n is the new maximum object nesting depth. +The possible issues like, random code execution during XOML deserialization (even when CheckTypes parameter is specified to the WorkflowCompiler), have been resolved [631082, System.Workflow.ComponentModel.dll, Bug, Build:3646] +* Fixed an accessibility problem that the warning icons on workflow activity designer is not accessible [407415, System.Activities.Presentation.dll, Bug, Build:3673] +* Fixed an accessibility problem to enable connector label reading on workflow designer [604810, System.Activities.Presentation.dll, Bug, Build:3673] +* Fixed a problem with Transaction.Current and remoting operations. + In some .NET Remoting scenarios, when using TransactionScopeAsyncFlowOption.Enabled, it was possible to have Transaction.Current reset to null after a remoting call. Sometimes this was due to the remoting lease lifetime expiring while the remoting call was outstanding (pre 4.7.2). And sometimes this occurred when the remoting call did not leave the caller's AppDomain (with 4.7.2). +``This is now fixed for the latter case (remoting in the same AppDomain). +For the former case (lease lifetime expires), a new AppSetting for the configuration file has been introduced to allow the user to specify the lease lifetime of the object used for keeping track of Transaction.Current in the call context. The user should set this to the number of minutes of the longest expected remoting call. +The AppSetting looks like this: +The value specifies the lease lifetime for the object, in minutes.`` [672774, System.Transactions.dll, Bug, Build:3673] +* Fixed an accessibility problem to have navigation information for ExpandAll/CollapseAll ToggleButtons on workflow designer. [682170, System.Activities.Presentation.dll, Bug, Build:3673] +* Previously Visual Studio builds of C# projects would create 3 temporary files and not clean them. With this change, the files are only created for C# projects that contain XAML files and utilize the XamlAppDef build action and those files are deleted with the Clean task. [392996, System.Workflow.Runtime.dll, Bug, Build:3694] +* Prevented vulnerabilities based on misuse of serialized ActivitySurrogateSelector.ObjectSurrogates. [726199, System.Workflow.ComponentModel.dll, Bug, Build:3707] +* Fixed a vulnerability in the WorkflowMarkupSerializer that allowed "random" code to be executed with certain XOML constructs. +If users experience application compatibility problems, there are couple of "opt-out" < appSettings> values that allow users to modify the behavior introduced by this change: +```xml + +``` +Setting this value to "true" completely disables the type checking that is done during deserialization. It takes precedence over the value below. +```xml + +``` +The type checker has a list of hard-coded types that are disallowed by default. Setting this value to "true" allows those hard-coded types. The user can specify a list of unauthorized types on their own by adding the following to the app.config file: +```xml + + ​ + ​ +
​ + ​ + ​ + + + ​ + ​ + + + ​ + ​ + +``` +In the above example, the type System.ActivitiesPresentation.WorkflowDesigner in the System.Activities.Presentation assembly is unauthorized because its "Authorized" value is "false". [735532, System.Workflow.ComponentModel.dll, Bug, Build:3745] \ No newline at end of file diff --git a/releases/net48/dotnet48-known-issues.md b/releases/net48/dotnet48-known-issues.md new file mode 100644 index 000000000..ca14a34e2 --- /dev/null +++ b/releases/net48/dotnet48-known-issues.md @@ -0,0 +1,11 @@ +.NET Framework 4.8 Known Issues +================================= + +This document lists the known issues that you may experience after you install the Microsoft .NET Framework 4.8 + +## Product issues for the .NET Framework 4.8 +- [776516 - ASP.NET - InvalidOperationException in ASP.Net-RecycleLimitMonitor-AlertProxyMonitors](https://github.com/NKarnam15/dotnet/blob/user/nkarnam15/net48_new/releases/net48/KnownIssues/776516-InvalidOperationException%20in%20System_Web_ni!System.Web.Hosting.RecycleLimitMonitor%2BRecycleLimitMonitorSingleton.AlertProxyMonitors.md) + +- [780675 - WPF - Per-Monitor DPI-aware WPF applications position mouse cursor incorrectly when dragging between monitors](https://github.com/NKarnam15/dotnet/blob/user/nkarnam15/net48_new/releases/net48/KnownIssues/wpf-pma-window-drag.md) + + From b5e4824a086ba89fc6311315a22805263b35c96c Mon Sep 17 00:00:00 2001 From: Namrata Karnam <43251581+NKarnam15@users.noreply.github.com> Date: Thu, 18 Apr 2019 11:09:37 -0700 Subject: [PATCH 761/872] .NET 4.8 RTM Updates (#1012) --- releases/net48/dotnet48-changes.md | 15 +++++++-------- releases/net48/dotnet48-known-issues.md | 4 ++-- 2 files changed, 9 insertions(+), 10 deletions(-) diff --git a/releases/net48/dotnet48-changes.md b/releases/net48/dotnet48-changes.md index 002984911..c778d772b 100644 --- a/releases/net48/dotnet48-changes.md +++ b/releases/net48/dotnet48-changes.md @@ -143,7 +143,7 @@ Added support for formatting the Japanese first year of era using Gannen 元 whe [695709, System.Servicemodel.dll, Bug, Build:3694] * Fixed a race condition with IIS hosted net.tcp services when the portsharing service is restarted which resulted in the service being unavailable. [695877, System.ServiceModel.WasHosting.dll, Bug, Build:3694] * Fixed broken WCF document links in the tracing log that were broken due to MSDN doc location change. [712450, System.ServiceModel.dll, Bug, Build:3707] -* Fixed a security vulnerability in SvcTraceViewer.exe associated with .stvproj file. [728568, System.ServiceModel.dll, Bug, Build:3707] +* Fixed a security vulnerability in SvcTraceViewer.exe associated with .stvproj file. *Microsoft would like to thank 9sg Security Team for their responsible disclosure of a remote information vulnerability in the .NET Framework. [728568, System.ServiceModel.dll, Bug, Build:3707] * Made some format changes and added lang attribute to WCF service Health page (like http://localhost:83/Service1?health) and WCF service metadata page (like http://localhost:83/Service1) to improve accessibility. [777308, System.ServiceModel.dll, Bug, Build:3745] @@ -253,14 +253,13 @@ App.config file content example with enabled keyboard tooltips for apps targetin * Fixed accessibility information about ComboBox DataGridView cell, including expanded/collapsed state of this cell. [657355, System.Windows.Forms.dll, Bug, Build:3707] * Fixed providing accessibility information about ComboBox selected item: item selection is announced and accessible info is presented even the DropDownList is not opened and user selects the items using arrow keys. In ordr=er for the application to benefit from these changes, the application should explicitly opt-in into all accessibility app context switches in the app.config file as seen in the example for Bug 549360. [703373, System.Windows.Forms.dll, Bug, Build:3707] * Added per monitor DPI awareness support to the PropertyGrid. [719232, System.Windows.Forms.dll, Bug, Build:3707] -* Fixed a vulnerability in System.Windows.Froms.Clipboard APIs. This is a breaking change and is controlled by the following switch - ``` - +* Fixed a vulnerability in System.Windows.Froms.Clipboard APIs. This is a breaking change and is controlled by the following switch +``` + - - -[655431, System.Windows.Forms.dll, Bug, Build:3707] -* Added Scroll UIA pattern to ListBox items in order to make the control accessible. [742319, System.Windows.Forms.dll, Bug, Build:3734] + +[655431, System.Windows.Forms.dll, Bug, Build:3707] +Added Scroll UIA pattern to ListBox items in order to make the control accessible. [742319, System.Windows.Forms.dll, Bug, Build:3734] * Fixed ColorEditor, ContentAlignmentEditor, CursporEditor to respond to DPI changed messages and made changes in FontEditor to always open in the 'SystemAware' mode even when the application is in "per-monitor" mode. [746634, System.Windows.Forms.dll, System.Drawing.Design.dll, Bug, Build:3734] * Fixed providing correct accessibility information and correct accessible hierarchy of PropertyGrid control. [526702, system.windows.forms.dll, Bug, Build:3734] * The screen reader announcement of the WinForms' Menu and ToolStrip expandable subitems has been fixed to not read in items' and scan mode the hidden (collapsed) subitems until corresponding parent Menu item/ToolStrip DropDown item is expanded. In order for the application to benefit from these changes, the application should be recompiled to target .NET framework 4.8 or the application should explicitly opt-in into all accessibility app context switches in the app.config file. [560840, System.Windows.Forms.dll, Bug, Build:3734] diff --git a/releases/net48/dotnet48-known-issues.md b/releases/net48/dotnet48-known-issues.md index ca14a34e2..67e849c2d 100644 --- a/releases/net48/dotnet48-known-issues.md +++ b/releases/net48/dotnet48-known-issues.md @@ -4,8 +4,8 @@ This document lists the known issues that you may experience after you install the Microsoft .NET Framework 4.8 ## Product issues for the .NET Framework 4.8 -- [776516 - ASP.NET - InvalidOperationException in ASP.Net-RecycleLimitMonitor-AlertProxyMonitors](https://github.com/NKarnam15/dotnet/blob/user/nkarnam15/net48_new/releases/net48/KnownIssues/776516-InvalidOperationException%20in%20System_Web_ni!System.Web.Hosting.RecycleLimitMonitor%2BRecycleLimitMonitorSingleton.AlertProxyMonitors.md) +- [776516 - ASP.NET - InvalidOperationException in ASP.Net-RecycleLimitMonitor-AlertProxyMonitors](https://github.com/Microsoft/dotnet/blob/master/releases/net48/KnownIssues/776516-InvalidOperationException%20in%20System_Web_ni!System.Web.Hosting.RecycleLimitMonitor%2BRecycleLimitMonitorSingleton.AlertProxyMonitors.md) -- [780675 - WPF - Per-Monitor DPI-aware WPF applications position mouse cursor incorrectly when dragging between monitors](https://github.com/NKarnam15/dotnet/blob/user/nkarnam15/net48_new/releases/net48/KnownIssues/wpf-pma-window-drag.md) +- [780675 - WPF - Per-Monitor DPI-aware WPF applications position mouse cursor incorrectly when dragging between monitors](https://github.com/Microsoft/dotnet/blob/master/releases/net48/KnownIssues/wpf-pma-window-drag.md) From a5b96d52e60c778bd04995a1d80d380ba00d71bc Mon Sep 17 00:00:00 2001 From: Ron Petrusha Date: Thu, 18 Apr 2019 11:50:17 -0700 Subject: [PATCH 762/872] New readme, migraton fixes from dotnet/docs#11915 (#1013) --- Documentation/compatibility/README.md | 4 +- ...ionContext.MemberName is null sometimes.md | 2 +- ...ttributes for WebForms CheckBox control.md | 2 +- ...from HttpRequest.GetAttributeFromHeader.md | 40 ------------------- ...from-httprequest.getattributefromheader.md | 6 +-- 5 files changed, 8 insertions(+), 46 deletions(-) delete mode 100644 Documentation/compatibility/aspnet-Invalid results from HttpRequest.GetAttributeFromHeader.md diff --git a/Documentation/compatibility/README.md b/Documentation/compatibility/README.md index 3f1f11f13..4d3565e1b 100644 --- a/Documentation/compatibility/README.md +++ b/Documentation/compatibility/README.md @@ -24,8 +24,10 @@ Please help us improve the [.NET Framework Application Compatibility documents]( - [Accessibility improvements in WPF](wpf-accessibility-improvements-48.md) - [Add SelectionTextBrush public property to TextBox/PasswordBox non-adorner selection](wpf-SelectionTextBrush-property-for-non-adorner-selection.md) - [ASP.NET Fix handling of InputAttributes and LabelAttributes for WebForms CheckBox control](aspnet-fix-handling-input-and-label-attributes-for-webforms-checkbox-control.md) +- [ASP.NET Fix handling of InputAttributes and LabelAttributes for WebForms CheckBox control](aspnet-Fix handling Input and Label attributes for WebForms CheckBox control.md) - [ASP.NET Incorrect multipart handling may result in lost form data.](aspnet-invalid-results-from-httprequest.getattributefromheader.md) - [ASP.NET ValidationContext.MemberName is not NULL when using custom DataAnnotations.ValidationAttribute](aspnet-asp.net-validationcontext.membername-is-null-sometimes.md) +- [ASP.NET ValidationContext.MemberName is not NULL when using custom DataAnnotations.ValidationAttribute](aspnet-ASP.NET ValidationContext.MemberName is null sometimes.md) - [Data Binding improvement for KeyedCollection](wpf-databinding-should-use-key-not-indexer.md) - [Fixed a hang when ListBox contains duplicate value-types](wpf-hang-listbox-duplicate-valuetypes.md) - [HwndHost now correctly resizes child-HWND during DPI changes](wpf-HwndHost-child-hwnd-correct-size-during-DPI-changes.md) @@ -129,7 +131,7 @@ Please help us improve the [.NET Framework Application Compatibility documents]( - [Application.FilterMessage no longer throws for re-entrant implementations of IMessageFilter.PreFilterMessage](application_filtermessage-no-longer-throws-for-re-entrant-implementations-of-imessagefilter_prefiltermessage.md) - [Calls to System.Windows.Input.PenContext.Disable on touch-enabled systems may throw an ArgumentException](wpf-pencontext-disable-method-calls-on-touch-enabled-systems-may-throw-argumentexception.md) - [Change in path separator character in FullName property of ZipArchiveEntry objects](change-in-path-separator-character-in-zip-files.md) -- [Contract.Invariant or Contract.Requires do not consider String.IsNullOrEmpty to be pure](code-contracts-and-string-isnullorempty-compiler-warning.md) +- [Contract.Invariant or Contract.Requires\ do not consider String.IsNullOrEmpty to be pure](code-contracts-and-string-isnullorempty-compiler-warning.md) - [Item-scrolling a flat list with items of different pixel-height](item-scrolling-a-flat-list-with-items-of-different-pixel-height.md) - [ObjectDisposedException thrown by WPF spellchecker](objectdisposedexception-thrown-by-wpf-spellchecker.md) - [WCF binding with the TransportWithMessageCredential security mode](wcf-binding-with-the-transportwithmessagecredential-security-mode.md) diff --git a/Documentation/compatibility/aspnet-ASP.NET ValidationContext.MemberName is null sometimes.md b/Documentation/compatibility/aspnet-ASP.NET ValidationContext.MemberName is null sometimes.md index ff27485d1..0e88d7258 100644 --- a/Documentation/compatibility/aspnet-ASP.NET ValidationContext.MemberName is null sometimes.md +++ b/Documentation/compatibility/aspnet-ASP.NET ValidationContext.MemberName is null sometimes.md @@ -21,7 +21,7 @@ The default behavior of the - - ... - - ... - - -``` - -### Affected APIs -`System.Web.HttpRequest.Form` -`System.Web.HttpRequest.Files` -`System.Web.HttpRequest.Encoding` - -### Category -ASP.NET - - - - diff --git a/Documentation/compatibility/aspnet-invalid-results-from-httprequest.getattributefromheader.md b/Documentation/compatibility/aspnet-invalid-results-from-httprequest.getattributefromheader.md index 6e26304c5..6d23d9b10 100644 --- a/Documentation/compatibility/aspnet-invalid-results-from-httprequest.getattributefromheader.md +++ b/Documentation/compatibility/aspnet-invalid-results-from-httprequest.getattributefromheader.md @@ -25,9 +25,9 @@ This behavior can also be explicitly controlled with an `appSetting`: ``` ### Affected APIs -* `System.Web.HttpRequest.Form` -* `System.Web.HttpRequest.Files` -* `System.Web.HttpRequest.ContentEncoding` +* `P:System.Web.HttpRequest.Form` +* `P:System.Web.HttpRequest.Files` +* `P:System.Web.HttpRequest.ContentEncoding` ### Category ASP.NET From 534df1d4bd9a29e0f6d7ddda4f18eeffc05beef7 Mon Sep 17 00:00:00 2001 From: Namrata Karnam <43251581+NKarnam15@users.noreply.github.com> Date: Thu, 18 Apr 2019 12:23:58 -0700 Subject: [PATCH 763/872] .NET 4.8 RTM Updates (#1014) --- releases/net48/dotnet48-changes.md | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/releases/net48/dotnet48-changes.md b/releases/net48/dotnet48-changes.md index c778d772b..bb54f803c 100644 --- a/releases/net48/dotnet48-changes.md +++ b/releases/net48/dotnet48-changes.md @@ -253,13 +253,8 @@ App.config file content example with enabled keyboard tooltips for apps targetin * Fixed accessibility information about ComboBox DataGridView cell, including expanded/collapsed state of this cell. [657355, System.Windows.Forms.dll, Bug, Build:3707] * Fixed providing accessibility information about ComboBox selected item: item selection is announced and accessible info is presented even the DropDownList is not opened and user selects the items using arrow keys. In ordr=er for the application to benefit from these changes, the application should explicitly opt-in into all accessibility app context switches in the app.config file as seen in the example for Bug 549360. [703373, System.Windows.Forms.dll, Bug, Build:3707] * Added per monitor DPI awareness support to the PropertyGrid. [719232, System.Windows.Forms.dll, Bug, Build:3707] -* Fixed a vulnerability in System.Windows.Froms.Clipboard APIs. This is a breaking change and is controlled by the following switch -``` - - - -[655431, System.Windows.Forms.dll, Bug, Build:3707] -Added Scroll UIA pattern to ListBox items in order to make the control accessible. [742319, System.Windows.Forms.dll, Bug, Build:3734] +* Fixed a vulnerability in System.Windows.Forms.Clipboard APIs. [655431, System.Windows.Forms.dll, Bug, Build:3707] +* Added Scroll UIA pattern to ListBox items in order to make the control accessible. [742319, System.Windows.Forms.dll, Bug, Build:3734] * Fixed ColorEditor, ContentAlignmentEditor, CursporEditor to respond to DPI changed messages and made changes in FontEditor to always open in the 'SystemAware' mode even when the application is in "per-monitor" mode. [746634, System.Windows.Forms.dll, System.Drawing.Design.dll, Bug, Build:3734] * Fixed providing correct accessibility information and correct accessible hierarchy of PropertyGrid control. [526702, system.windows.forms.dll, Bug, Build:3734] * The screen reader announcement of the WinForms' Menu and ToolStrip expandable subitems has been fixed to not read in items' and scan mode the hidden (collapsed) subitems until corresponding parent Menu item/ToolStrip DropDown item is expanded. In order for the application to benefit from these changes, the application should be recompiled to target .NET framework 4.8 or the application should explicitly opt-in into all accessibility app context switches in the app.config file. [560840, System.Windows.Forms.dll, Bug, Build:3734] From b448e9985ba4ce172fc80342459113a24799c21f Mon Sep 17 00:00:00 2001 From: Joe Amenta Date: Fri, 19 Apr 2019 11:18:40 -0400 Subject: [PATCH 764/872] Add missing bullet point markdown. (#1017) * Add missing bullet point markdown. * Update dotnet48-changes.md --- releases/net48/dotnet48-changes.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/releases/net48/dotnet48-changes.md b/releases/net48/dotnet48-changes.md index bb54f803c..9a7da4eae 100644 --- a/releases/net48/dotnet48-changes.md +++ b/releases/net48/dotnet48-changes.md @@ -40,7 +40,7 @@ DateTime and DateTimeOffset operations will continue to work as it used to work, * Fixed an IndexOutOfRangeException thrown when asynchronously reading a process output with less than a character's worth of bytes is read at the beginning of a line. [724219, System.dll, Bug, Build:3707] * Mitigate compatibility breaks seen in some System.Data.SqlClient usage scenarios. [727701, System.Configuration.dll, Bug, Build:3707] * Fixed a serialization exception that occurred when a huge amount of objects were serialized with BinaryFormatter. [761576, mscorlib.dll, Bug, Build:3734] -Added support for formatting the Japanese first year of era using Gannen 元 when the date pattern not having single quotes around 年. e.g. y年. [777279, mscorlib.dll, Bug, Build:3745] +* Added support for formatting the Japanese first year of era using Gannen 元 when the date pattern does not have single quotes around 年 (e.g., y年). [777279, mscorlib.dll, Bug, Build:3745] * Changed the name of "Former Yugoslav Republic of Macedonia" to "North Macedonia" [802482, mscorlib.dll, Bug, Build:3761] @@ -400,4 +400,4 @@ The type checker has a list of hard-coded types that are disallowed by default. ​ ``` -In the above example, the type System.ActivitiesPresentation.WorkflowDesigner in the System.Activities.Presentation assembly is unauthorized because its "Authorized" value is "false". [735532, System.Workflow.ComponentModel.dll, Bug, Build:3745] \ No newline at end of file +In the above example, the type System.ActivitiesPresentation.WorkflowDesigner in the System.Activities.Presentation assembly is unauthorized because its "Authorized" value is "false". [735532, System.Workflow.ComponentModel.dll, Bug, Build:3745] From 70b788833748c0183debcd1dc8e635985e768ccf Mon Sep 17 00:00:00 2001 From: Ron Petrusha Date: Sat, 20 Apr 2019 08:50:39 -0700 Subject: [PATCH 765/872] Incorporated changes from dotnet/docs#11947 (#1020) --- .../cryptographicexception-not-thrown-in-fips-mode.md | 4 ++-- .../wpf-grid-row-size-allocation-with-collapsed-element.md | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Documentation/compatibility/cryptographicexception-not-thrown-in-fips-mode.md b/Documentation/compatibility/cryptographicexception-not-thrown-in-fips-mode.md index 8b72b8adc..0bfc8f926 100644 --- a/Documentation/compatibility/cryptographicexception-not-thrown-in-fips-mode.md +++ b/Documentation/compatibility/cryptographicexception-not-thrown-in-fips-mode.md @@ -20,7 +20,7 @@ Applications that target .NET Framework 4.8 and later versions automatically swi ### Recommended Action -If this behavior is undesirable, you can opt out of it and restore the previous behavior so that a is thrown in FIPS mode by adding the following [AppContextSwitchOverrides](~/docs/framework/configure-apps/file-schema/runtime/appcontextswitchoverrides-element.md) configuration setting to the [``](~/docs/framework/configure-apps/file-schema/runtime/runtime-element.md) section of your application configuration file: +If this behavior is undesirable, you can opt out of it and restore the previous behavior so that a is thrown in FIPS mode by adding the following [AppContextSwitchOverrides](~/docs/framework/configure-apps/file-schema/runtime/appcontextswitchoverrides-element.md) configuration setting to the [\](~/docs/framework/configure-apps/file-schema/runtime/runtime-element.md) section of your application configuration file: ```xml @@ -28,7 +28,7 @@ If this behavior is undesirable, you can opt out of it and restore the previous ``` -If your application targets .NET Framework 4.7.2 or earlier, you can also opt in to this change by adding the following [AppContextSwitchOverrides](~/docs/framework/configure-apps/file-schema/runtime/appcontextswitchoverrides-element.md) configuration setting to the [``](~/docs/framework/configure-apps/file-schema/runtime/runtime-element.md) section of your application configuration file: +If your application targets .NET Framework 4.7.2 or earlier, you can also opt in to this change by adding the following [AppContextSwitchOverrides](~/docs/framework/configure-apps/file-schema/runtime/appcontextswitchoverrides-element.md) configuration setting to the [\](~/docs/framework/configure-apps/file-schema/runtime/runtime-element.md) section of your application configuration file: ```xml diff --git a/Documentation/compatibility/wpf-grid-row-size-allocation-with-collapsed-element.md b/Documentation/compatibility/wpf-grid-row-size-allocation-with-collapsed-element.md index 004383970..4e07060e0 100644 --- a/Documentation/compatibility/wpf-grid-row-size-allocation-with-collapsed-element.md +++ b/Documentation/compatibility/wpf-grid-row-size-allocation-with-collapsed-element.md @@ -10,7 +10,7 @@ Major NotPlanned ### Change Description -Fixed a bug in the [algorithm for allocating sizes to *-rows](https://github.com/Microsoft/dotnet/blob/master/Documentation/compatibility/wpf-grid-allocation-of-space-to-star-columns.md)) in a introduced in .NET Framework 4.7. In some cases, such as a Grid with `Height="Auto"` containing empty rows, rows were arranged at the wrong position, possibly outside the Grid altogether. +Fixed a bug in the [algorithm for allocating sizes to *-rows](https://github.com/Microsoft/dotnet/blob/master/Documentation/compatibility/wpf-grid-allocation-of-space-to-star-columns.md) in a introduced in .NET Framework 4.7. In some cases, such as a Grid with `Height="Auto"` containing empty rows, rows were arranged at the wrong position, possibly outside the Grid altogether. - [ ] Quirked - [ ] Build-time break From dae4294a19b3cc32ff7b556c3330d5e8899f8635 Mon Sep 17 00:00:00 2001 From: Malte Rosenbjerg Date: Thu, 25 Apr 2019 17:50:07 +0200 Subject: [PATCH 766/872] Update dotnet-developer-projects.md (#1024) --- dotnet-developer-projects.md | 1 + 1 file changed, 1 insertion(+) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 7f6d04a2e..871326bd0 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -72,6 +72,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [DotVVM](https://github.com/riganti/dotvvm) - MVVM framework for people who don't like to write JavaScript, with OWIN and ASP.NET Core support and a free extension for Visual Studio 2015 and 2017. * [Nancy](https://github.com/NancyFx/Nancy) - A lightweight, low-ceremony, framework for building HTTP based services on .NET and Mono. * [NemerleWeb](https://github.com/NemerleWeb/NemerleWeb) - Web MVVM library for .Net. It uses reactive data model which allows creating rich internet applications. + * [RedHttpServer](https://github.com/rosenbjerg/Red) - HTTP web server framework built on ASP.NET Core and Kestrel, but with an API inspired by the simplicity of express.js. * [ServiceStack](https://servicestack.net) - Comprehensive and lightning fast message-based framework including ORM, caching, authentication, templating, SPA integrations, etc. ## Static Site Generators From e3c754f19e575fd446187a650941c38fde4ba96b Mon Sep 17 00:00:00 2001 From: Ron Petrusha Date: Thu, 25 Apr 2019 15:09:34 -0700 Subject: [PATCH 767/872] Corrected typo in title. (#1025) * Corrected typo in title. * Update dotnet472-known-issues.md --- ...umn with the TextBox column Readonly property set as true.md | 2 +- releases/net472/dotnet472-known-issues.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/releases/net472/KnownIssues/599936 - Narrator does not annouce the ReadOnly Status for DataGridView TextBox column with the TextBox column Readonly property set as true.md b/releases/net472/KnownIssues/599936 - Narrator does not annouce the ReadOnly Status for DataGridView TextBox column with the TextBox column Readonly property set as true.md index a5365335a..1c101d426 100644 --- a/releases/net472/KnownIssues/599936 - Narrator does not annouce the ReadOnly Status for DataGridView TextBox column with the TextBox column Readonly property set as true.md +++ b/releases/net472/KnownIssues/599936 - Narrator does not annouce the ReadOnly Status for DataGridView TextBox column with the TextBox column Readonly property set as true.md @@ -1,4 +1,4 @@ - # Narrator does not annouce the ReadOnly Status for DataGridView TextBox column with the TextBox column Readonly property set as true + # Narrator does not announce the ReadOnly Status for DataGridView TextBox column with the TextBox column Readonly property set as true ## Symptoms Narrator does not announce the value of the ReadOnly property of the System.Windows.Forms.DataGridViewTextBoxColumn. This is the case regardless of the value of the ReadOnly property. This could cause confusion for Narrator users when editing content in a DataGridViewTextBoxColumn. diff --git a/releases/net472/dotnet472-known-issues.md b/releases/net472/dotnet472-known-issues.md index d973d2d51..241bd45a6 100644 --- a/releases/net472/dotnet472-known-issues.md +++ b/releases/net472/dotnet472-known-issues.md @@ -9,7 +9,7 @@ This document lists the known issues that you may experience after you install t - [593963 - WPF - WPF Exceptions during AppDomain or process shutdown](https://github.com/Microsoft/dotnet/blob/master/releases/net472/KnownIssues/593963%20-%20WPF%20Exceptions%20during%20AppDomain%20or%20process%20shutdown.md) - [560016 - XBAP - Applications targeting .NET 2.0,3.5 select wrong runtime version](https://github.com/Microsoft/dotnet/blob/master/releases/net472/KnownIssues/560016-XBAP%20Applications%20targeting%20.NET%202.0%2C3.5%20select%20wrong%20runtime%20version.md) - [593963 - WPF Exceptions during AppDomain or process shutdown](https://github.com/Microsoft/dotnet/blob/master/releases/net472/KnownIssues/593963%20-%20WPF%20Exceptions%20during%20AppDomain%20or%20process%20shutdown.md) -- [599936 - WinForms - Narrator does not annouce the ReadOnly Status for DataGridView TextBox column with the TextBox column Readonly property set as true](https://github.com/Microsoft/dotnet/blob/master/releases/net472/KnownIssues/599936%20-%20Narrator%20does%20not%20annouce%20the%20ReadOnly%20Status%20for%20DataGridView%20TextBox%20column%20with%20the%20TextBox%20column%20Readonly%20property%20set%20as%20true.md) +- [599936 - WinForms - Narrator does not announce the ReadOnly Status for DataGridView TextBox column with the TextBox column Readonly property set as true](https://github.com/Microsoft/dotnet/blob/master/releases/net472/KnownIssues/599936%20-%20Narrator%20does%20not%20annouce%20the%20ReadOnly%20Status%20for%20DataGridView%20TextBox%20column%20with%20the%20TextBox%20column%20Readonly%20property%20set%20as%20true.md) - [611802 - SQL - SQLConnection.ConnectionString throws NullReferenceException](https://github.com/Microsoft/dotnet/blob/master/releases/net472/KnownIssues/611802%20-%20SQLConnection.ConnectionString%20throws%20NullReferenceException%20.md) - [613745 - BCL - Single-name references are removed by the SDK when targeting 4.7.2](https://github.com/Microsoft/dotnet/blob/master/releases/net472/KnownIssues/613745%20-%20Single-name%20references%20are%20removed%20by%20the%20SDK%20when%20targeting%204.7.2.md) - [663475 - Setup - Applications that rely on TLS 1.2 strong encryption experience connectivity failures after a Windows upgrade](https://support.microsoft.com/help/4458166) From 4037f09028062bc073262e7abb6f5e8ca824ed33 Mon Sep 17 00:00:00 2001 From: Mikhail Lipin Date: Fri, 26 Apr 2019 01:21:25 +0300 Subject: [PATCH 768/872] Updating the compatibility doc for .NET 4.8 to include info about the fix for bug 763329 (#1021) * Adding NET 4.8 WinForms Accessibility changes compatibility document. * Updating recomended action wording as per review comment: "opt in into these changes" instead "benefit from these changes". Co-Authored-By: M-Lipin * Adding the link to UI automation notification events. * Updating LinkLabel section header. Co-Authored-By: M-Lipin * Updating ProgressBar section header. Co-Authored-By: M-Lipin * Fixed wording and spelling for PropertyGrid section text. Co-Authored-By: M-Lipin * Updating PropertyGrid section wording. Co-Authored-By: M-Lipin * Updating PropertyGrid section header. Co-Authored-By: M-Lipin * Updating ToolStrip section header. Co-Authored-By: M-Lipin * Updating CheckedListBox section spelling. Co-Authored-By: M-Lipin * Updating the Change Description section. Co-Authored-By: M-Lipin * Updating the Change Description section - spelling. Co-Authored-By: M-Lipin * Updating recomended action word capitalization. Co-Authored-By: M-Lipin * Updating CheckedListBox section wording. Co-Authored-By: M-Lipin * Updating ComboBox section punctuation and articles. Co-Authored-By: M-Lipin * Updating LinkLabel section articles. Co-Authored-By: M-Lipin * Adding articles to ProgressBar section. Co-Authored-By: M-Lipin * Updating articles and punctation in PropertyGrid section. Co-Authored-By: M-Lipin * Updating articles and punctation in ToolStrip section. Co-Authored-By: M-Lipin * Updating punctation in ToolStrip section. Co-Authored-By: M-Lipin * Adding accessibility bug links related to ToolTip fix and NotSupportedException in 4.8 fix. Co-Authored-By: M-Lipin * Adding note about enabling keyboard ToolTip. Co-Authored-By: M-Lipin * Adding keyboard ToolTip section. Co-Authored-By: M-Lipin * Introducing minor updates. * Adding notes about UI automation in design time, high contrast themes. * Update Documentation/compatibility/winforms-accessibility-changes-48.md Co-Authored-By: M-Lipin * Adding the note about enabling keyboard ToolTip feature. * Update winforms-accessibility-changes-48.md * Updating the compatibility doc for .NET 4.8 to include info about the fix for bug 763329. --- .../compatibility/winforms-accessibility-changes-48.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/Documentation/compatibility/winforms-accessibility-changes-48.md b/Documentation/compatibility/winforms-accessibility-changes-48.md index ed9c0259e..f3cdb5ef1 100644 --- a/Documentation/compatibility/winforms-accessibility-changes-48.md +++ b/Documentation/compatibility/winforms-accessibility-changes-48.md @@ -91,6 +91,10 @@ For an overview of UI automation, see the [UI Automation Overview](https://docs. __Invoking controls' ToolTips with a keyboard__ - Control tooltip can now be invoked by focusing the control with keyboard. This feature needs to be enabled explicitly for the application (see section __"How to opt in or out of these changes"__) + +__Showing controls' ToolTips in multiple monitors__ +- ToolTip appearance in multi-monitor environments with different DPI scales is correct now and adapted to not truncate the begginnig of text in case the ToolTip text is too long. + ### Affected APIs @@ -115,6 +119,9 @@ Windows Forms 548792 686499 +763329 + + --> From 75a354919a845a9f76aa024b5da2cb4042f87e51 Mon Sep 17 00:00:00 2001 From: Koundinya Veluri Date: Fri, 26 Apr 2019 11:53:53 -0700 Subject: [PATCH 769/872] Add docs for some threading changes (#1019) * Add docs for some threading changes None of these changes are expected to have compat impact in the default mode * Address feedback * Fix ref parameters --- Documentation/compatibility/README.md | 3 ++ .../clr_critical_section_spin_wait_removal.md | 43 ++++++++++++++++ ...ock_acquisition_scalability_improvement.md | 50 +++++++++++++++++++ ...ading_timer_lock_contention_improvement.md | 31 ++++++++++++ 4 files changed, 127 insertions(+) create mode 100644 Documentation/compatibility/clr_critical_section_spin_wait_removal.md create mode 100644 Documentation/compatibility/system_threading_monitor_lock_acquisition_scalability_improvement.md create mode 100644 Documentation/compatibility/system_threading_timer_lock_contention_improvement.md diff --git a/Documentation/compatibility/README.md b/Documentation/compatibility/README.md index 4d3565e1b..7ecf8a659 100644 --- a/Documentation/compatibility/README.md +++ b/Documentation/compatibility/README.md @@ -39,6 +39,9 @@ Please help us improve the [.NET Framework Application Compatibility documents]( - [Workflow XAML checksums for symbols changed from SHA1 to SHA256](workflow-xaml-checksums-for-symbols-changed-from-sha1-to-sha256.md) - [Workflow XOML definition and SqlTrackingService cache keys changed from MD5 to SHA256](workflow-xoml-definition-and-sqltrackingservice-caches-changed-from-md5-to-sha256.md) - [Workflow XOML file checksums changed from MD5 to SHA256](workflow-xoml-file-checksums-changed-from-md5-to-sha256.md) +- [System.Threading.Monitor lock acquision scalability improvement](system_threading_monitor_lock_acquisition_scalability_improvement.md) +- [System.Threading.Timer lock contention improvement](system_threading_timer_lock_contention_improvement.md) +- [CLR critical section spin-wait removal](clr_critical_section_spin_wait_removal.md) ## .NET Framework 4.7.2 diff --git a/Documentation/compatibility/clr_critical_section_spin_wait_removal.md b/Documentation/compatibility/clr_critical_section_spin_wait_removal.md new file mode 100644 index 000000000..77ff31a34 --- /dev/null +++ b/Documentation/compatibility/clr_critical_section_spin_wait_removal.md @@ -0,0 +1,43 @@ +## CLR critical section spin-wait removal + +### Scope + +Transparent + +### Version Introduced + +4.8 + +### Source Analyzer Status + +NotPlanned + +### Change Description + +By default, when a thread cannot acquire a critical section, it spin-waits for a while before blocking the thread unless it can acquire the critical section. This behavior can lead to poor scalability. + +Starting with applications running under .NET Framework 4.8, it is possible to disable the spin-waiting. This is an opt-in behavior; spin-waiting when a critical section cannot be acquired is the default behavior on all versions of the .NET Framework. + +- [ ] Quirked +- [ ] Build-time break + +### Recommended Action + +You can disable the default behavior of spin-waiting when a critical section cannot be acquired, in one of the following ways: + +By setting the following environment variable before starting the process: + `COMPlus_Crst_DisableSpinWait=1` + +By including the runtime configuration option in .exe.config. Example: + ```xml + + + + + + + ``` + +### Affected APIs + +None diff --git a/Documentation/compatibility/system_threading_monitor_lock_acquisition_scalability_improvement.md b/Documentation/compatibility/system_threading_monitor_lock_acquisition_scalability_improvement.md new file mode 100644 index 000000000..bfcd7dca3 --- /dev/null +++ b/Documentation/compatibility/system_threading_monitor_lock_acquisition_scalability_improvement.md @@ -0,0 +1,50 @@ +## System.Threading.Monitor lock acquision scalability improvement + +### Scope + +Transparent + +### Version Introduced + +4.8 + +### Source Analyzer Status + +NotPlanned + +### Change Description + +In applications running on .NET Framework 4.7.2 and earlier versions, when a thread, `T`, cannot acquire a lock, and other threads are also waiting to acquire it, thread `T` performs a spin-wait that may make it more difficult for other threads to acquire the lock. This behavior can cause a positive feedback loop that leads to a perpetual lock convoy. + +Starting with applications running on the .NET Framework 4.8, a thread attempting to acquire a lock when there is a waiter present skips the portion of spin-waiting that makes it more difficult for other threads to acquire the lock. + +- [ ] Quirked +- [ ] Build-time break + +### Recommended Action + +For applications running on the .NET Framework 4.8, the spin-waiting behavior described above can be reverted to the behavior in .NET Framework 4.7.2 in one of the following ways: + +By setting the following environment variable before starting the process: + `COMPlus_Monitor_SpinWithoutSleepWhenWaiterIsPresent=1` + +By including the runtime configuration option in .exe.config. Example: + ```xml + + + + + + + ``` + +### Affected APIs + +* `M:System.Threading.Monitor.Enter(System.Object)` +* `M:System.Threading.Monitor.Enter(System.Object,System.Boolean)` +* `M:System.Threading.Monitor.TryEnter(System.Object) +* `M:System.Threading.Monitor.TryEnter(System.Object,System.Boolean@) +* `M:System.Threading.Monitor.TryEnter(System.Object,System.Int32) +* `M:System.Threading.Monitor.TryEnter(System.Object,System.Int32,System.Boolean@) +* `M:System.Threading.Monitor.TryEnter(System.Object,System.TimeSpan) +* `M:System.Threading.Monitor.TryEnter(System.Object,System.TimeSpan,System.Boolean@) diff --git a/Documentation/compatibility/system_threading_timer_lock_contention_improvement.md b/Documentation/compatibility/system_threading_timer_lock_contention_improvement.md new file mode 100644 index 000000000..1db8f533b --- /dev/null +++ b/Documentation/compatibility/system_threading_timer_lock_contention_improvement.md @@ -0,0 +1,31 @@ +## System.Threading.Timer lock contention improvement + +### Scope + +Transparent + +### Version Introduced + +4.8 + +### Source Analyzer Status + +NotPlanned + +### Change Description + +Timers use a lock, and multiple timers can contend with one another for a lock, which can result in excessive CPU usage. + +For apps that run under .NET Framework 4.8, an opt-in configuration section may reduce the impact of timers contending for a lock. This change is especially important for high-performance applications. + +- [ ] Quirked +- [ ] Build-time break + +### Recommended Action + +Applications running on .NET Framework 4.8 can opt into this change by setting the following [`AppContext` switch](https://docs.microsoft.com/en-us/dotnet/api/system.appcontext?view=netframework-4.7.2#appcontext-for-library-consumers): + `Switch.System.Threading.UseNetCoreTimer=true` + +### Affected APIs + +* `T:System.Threading.Timer` From dacee4df5f200d8948c06daf6ad1c9a9449fdaa4 Mon Sep 17 00:00:00 2001 From: Miguel Pena Garcia <32345992+miguep@users.noreply.github.com> Date: Mon, 29 Apr 2019 09:21:22 -0700 Subject: [PATCH 770/872] Adding documentation for WPF's Binding issue (#1023) * Adding documentation for WPF's Binding issue * Apply suggestions from code review Addressing some feedback Co-Authored-By: miguep <32345992+miguep@users.noreply.github.com> * Adding link to 4.8 Known issues document for WPF binding issue --- .../KnownIssues/wpf-binding-issue.md | 55 +++++++++++++++++++ releases/net48/dotnet48-known-issues.md | 2 + 2 files changed, 57 insertions(+) create mode 100644 Documentation/KnownIssues/wpf-binding-issue.md diff --git a/Documentation/KnownIssues/wpf-binding-issue.md b/Documentation/KnownIssues/wpf-binding-issue.md new file mode 100644 index 000000000..3912f6899 --- /dev/null +++ b/Documentation/KnownIssues/wpf-binding-issue.md @@ -0,0 +1,55 @@ +# WPF Binding stops working after an item container leaves the visual tree + +## Symptoms +This issue affects bindings whose path contains an explicit use of the `DataContext` +property of an element that belongs to the subtree generated for an item within an +`System.Windows.Controls.ItemsControl`. When the element leaves the visual tree, +the binding stops working; any subsequent changes to other properties mentioned in +the path are ignored. + +The visible symptoms depend on how the binding is used. For example, an app +may want to share a `System.Windows.Controls.ContextMenu` among the +item containers within an `System.Windows.Controls.ItemsControl`, and have the +content and behavior of the menu depend on the item container for which it is +displayed. This can be implemented by declaring the menu as a resource and binding its +`DataContext` to that of its `PlacementTarget`: + +```xml + + + ... other content ... + + +``` + +Then refer to the resource in the appropriate data template: + +```xml + + + ... other content .... + + +``` + +When the user right-clicks the `StackPanel` for a particular data item, the shared context menu +is displayed, its `PlacementTarget` is changed to be the `StackPanel`, the binding sets its +`DataContext` to the data item, and the menu's content and behavior can depend on the data item. + +The issue arises if the app removes the item container from the visual tree while the menu +is visible. (There are many ways this can happen: removing the data item from the underlying +collection, replacing the `ItemsSource`, scrolling enough to re-virtualize the data item, etc.) +When this happens, the binding stops working, and any subsequent changes to the `PlacementTarget` +property are ignored. The visible symptom is that right-clicking a different data item +will bring up the menu and reset its `PlacementTarget`, but its content and behavior are +still attached to the original item rather than to the newly-chosen one. + +## Cause +When an item container leaves the visual tree, its `DataContext` is changed to `{DisconnectedItem}`. +The binding recognizes this sentinel value and suppresses the normal data transfer, but +mistakenly leaves itself in a state where it ignores subsequent changes to other properties +along the path (such as `PlacementTarget` in the example). + +## Resolution +A hotfix for this issue is planned for .Net Framework 4.8. This page will be updated with a link to the hotfix when it becomes available. diff --git a/releases/net48/dotnet48-known-issues.md b/releases/net48/dotnet48-known-issues.md index 67e849c2d..127442bc3 100644 --- a/releases/net48/dotnet48-known-issues.md +++ b/releases/net48/dotnet48-known-issues.md @@ -8,4 +8,6 @@ This document lists the known issues that you may experience after you install t - [780675 - WPF - Per-Monitor DPI-aware WPF applications position mouse cursor incorrectly when dragging between monitors](https://github.com/Microsoft/dotnet/blob/master/releases/net48/KnownIssues/wpf-pma-window-drag.md) +- [850536 - WPF - Binding stops working after an item container leaves the visual tree](https://github.com/Microsoft/dotnet/blob/master/releases/net48/KnownIssues/wpf-binding-issue.md) + From 0b6fbfed91d159ee6c8644b3009d730a85735f7a Mon Sep 17 00:00:00 2001 From: Ron Petrusha Date: Mon, 29 Apr 2019 12:24:12 -0700 Subject: [PATCH 771/872] Compat doc: GetECDsaPublicKey correctly handles brainpool curves (#1018) (#1028) * Create GetECDsaPublicKey-correctly-handles-brainpool-curves.md * Update Documentation/compatibility/GetECDsaPublicKey-correctly-handles-brainpool-curves.md Co-Authored-By: krwq * Update Documentation/compatibility/GetECDsaPublicKey-correctly-handles-brainpool-curves.md Co-Authored-By: krwq * Update GetECDsaPublicKey-correctly-handles-brainpool-curves.md --- ...cKey-correctly-handles-brainpool-curves.md | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 Documentation/compatibility/GetECDsaPublicKey-correctly-handles-brainpool-curves.md diff --git a/Documentation/compatibility/GetECDsaPublicKey-correctly-handles-brainpool-curves.md b/Documentation/compatibility/GetECDsaPublicKey-correctly-handles-brainpool-curves.md new file mode 100644 index 000000000..48780326e --- /dev/null +++ b/Documentation/compatibility/GetECDsaPublicKey-correctly-handles-brainpool-curves.md @@ -0,0 +1,29 @@ +## ECDsaCertificateExtensions.GetECDsaPublicKey correctly handles Brainpool curves + +### Scope +Edge case + +### Version Introduced +4.8 + +### Source Analyzer Status +NotPlanned + +### Change Description +Starting with .NET Framework 4.8, the method correctly handles all named curves supported by the OS, including the Brainpool elliptic curves. + +### Recommended Action +If you encounter compatibility issues with this change on the .NET Framework 4.8 or a later version, you can opt-out of it by adding the following line to the \ section of the app.config file: + +```xml + + + +``` + +### Affected APIs + +* `M:System.Security.Cryptography.X509Certificates.ECDsaCertificateExtensions.GetECDsaPublicKey(System.Security.Cryptography.X509Certificates.X509Certificate2)` + +### Category +Security From 4835ea5b9cc2fb2b21cbb8185a03562e41b3f1bd Mon Sep 17 00:00:00 2001 From: Ron Petrusha Date: Mon, 29 Apr 2019 12:42:00 -0700 Subject: [PATCH 772/872] Miscellaneous corrections and new index (#1029) * Corrected scope, generated new index * Miscellaneous corrections, regenerate index * Removed duplicate topics, regenerated index --- ...cKey-correctly-handles-brainpool-curves.md | 2 +- Documentation/compatibility/README.md | 9 +++-- ...ionContext.MemberName is null sometimes.md | 34 ------------------- ...ttributes for WebForms CheckBox control.md | 34 ------------------- ...ioncontext.membername-is-null-sometimes.md | 2 +- ...ttributes-for-webforms-checkbox-control.md | 2 +- .../clr_critical_section_spin_wait_removal.md | 1 - ...ock_acquisition_scalability_improvement.md | 1 - ...ading_timer_lock_contention_improvement.md | 1 - 9 files changed, 7 insertions(+), 79 deletions(-) delete mode 100644 Documentation/compatibility/aspnet-ASP.NET ValidationContext.MemberName is null sometimes.md delete mode 100644 Documentation/compatibility/aspnet-Fix handling Input and Label attributes for WebForms CheckBox control.md diff --git a/Documentation/compatibility/GetECDsaPublicKey-correctly-handles-brainpool-curves.md b/Documentation/compatibility/GetECDsaPublicKey-correctly-handles-brainpool-curves.md index 48780326e..5f1b0e3a8 100644 --- a/Documentation/compatibility/GetECDsaPublicKey-correctly-handles-brainpool-curves.md +++ b/Documentation/compatibility/GetECDsaPublicKey-correctly-handles-brainpool-curves.md @@ -1,7 +1,7 @@ ## ECDsaCertificateExtensions.GetECDsaPublicKey correctly handles Brainpool curves ### Scope -Edge case +Edge ### Version Introduced 4.8 diff --git a/Documentation/compatibility/README.md b/Documentation/compatibility/README.md index 7ecf8a659..ee63eb520 100644 --- a/Documentation/compatibility/README.md +++ b/Documentation/compatibility/README.md @@ -24,11 +24,11 @@ Please help us improve the [.NET Framework Application Compatibility documents]( - [Accessibility improvements in WPF](wpf-accessibility-improvements-48.md) - [Add SelectionTextBrush public property to TextBox/PasswordBox non-adorner selection](wpf-SelectionTextBrush-property-for-non-adorner-selection.md) - [ASP.NET Fix handling of InputAttributes and LabelAttributes for WebForms CheckBox control](aspnet-fix-handling-input-and-label-attributes-for-webforms-checkbox-control.md) -- [ASP.NET Fix handling of InputAttributes and LabelAttributes for WebForms CheckBox control](aspnet-Fix handling Input and Label attributes for WebForms CheckBox control.md) - [ASP.NET Incorrect multipart handling may result in lost form data.](aspnet-invalid-results-from-httprequest.getattributefromheader.md) - [ASP.NET ValidationContext.MemberName is not NULL when using custom DataAnnotations.ValidationAttribute](aspnet-asp.net-validationcontext.membername-is-null-sometimes.md) -- [ASP.NET ValidationContext.MemberName is not NULL when using custom DataAnnotations.ValidationAttribute](aspnet-ASP.NET ValidationContext.MemberName is null sometimes.md) +- [CLR critical section spin-wait removal](clr_critical_section_spin_wait_removal.md) - [Data Binding improvement for KeyedCollection](wpf-databinding-should-use-key-not-indexer.md) +- [ECDsaCertificateExtensions.GetECDsaPublicKey correctly handles Brainpool curves](GetECDsaPublicKey-correctly-handles-brainpool-curves.md) - [Fixed a hang when ListBox contains duplicate value-types](wpf-hang-listbox-duplicate-valuetypes.md) - [HwndHost now correctly resizes child-HWND during DPI changes](wpf-HwndHost-child-hwnd-correct-size-during-DPI-changes.md) - [Improvements to Grid star-rows space allocating algorithm](wpf-grid-row-size-allocation-with-collapsed-element.md) @@ -36,12 +36,11 @@ Please help us improve the [.NET Framework Application Compatibility documents]( - [Managed cryptography classes do not throw a CryptographyException in FIPS mode](cryptographicexception-not-thrown-in-fips-mode.md) - [Performance improvement in Automation tree for grouping ItemsControls](wpf-performace-improvement-grouping-automation.md) - [svcTraceViewer ComboBox high contrast change](wcf-accessbility-combobox-high-contrast-issue-in-svcTraceViewer-tool.md) +- [System.Threading.Monitor lock acquision scalability improvement](system_threading_monitor_lock_acquisition_scalability_improvement.md) +- [System.Threading.Timer lock contention improvement](system_threading_timer_lock_contention_improvement.md) - [Workflow XAML checksums for symbols changed from SHA1 to SHA256](workflow-xaml-checksums-for-symbols-changed-from-sha1-to-sha256.md) - [Workflow XOML definition and SqlTrackingService cache keys changed from MD5 to SHA256](workflow-xoml-definition-and-sqltrackingservice-caches-changed-from-md5-to-sha256.md) - [Workflow XOML file checksums changed from MD5 to SHA256](workflow-xoml-file-checksums-changed-from-md5-to-sha256.md) -- [System.Threading.Monitor lock acquision scalability improvement](system_threading_monitor_lock_acquisition_scalability_improvement.md) -- [System.Threading.Timer lock contention improvement](system_threading_timer_lock_contention_improvement.md) -- [CLR critical section spin-wait removal](clr_critical_section_spin_wait_removal.md) ## .NET Framework 4.7.2 diff --git a/Documentation/compatibility/aspnet-ASP.NET ValidationContext.MemberName is null sometimes.md b/Documentation/compatibility/aspnet-ASP.NET ValidationContext.MemberName is null sometimes.md deleted file mode 100644 index 0e88d7258..000000000 --- a/Documentation/compatibility/aspnet-ASP.NET ValidationContext.MemberName is null sometimes.md +++ /dev/null @@ -1,34 +0,0 @@ -## ASP.NET ValidationContext.MemberName is not NULL when using custom DataAnnotations.ValidationAttribute - -### Version Introduced -4.8 - -### Change Description -In .NET Framework 4.7.2 and earlier versions, when using a custom , the property returns `null`. In .NET Framework 4.8, it returns the member name. - - -### Recommended Action -The default behavior of the property remains the same. To retrieve a valid value from the `ValidationContext.MemberName` property, add the following setting to your app config file: - -```xml - - - ... - - ... - - -``` - -### Affected APIs -* `P:System.ComponentModel.DataAnnotations.ValidationContext.MemberName` - -### Category -ASP.NET - - - - diff --git a/Documentation/compatibility/aspnet-Fix handling Input and Label attributes for WebForms CheckBox control.md b/Documentation/compatibility/aspnet-Fix handling Input and Label attributes for WebForms CheckBox control.md deleted file mode 100644 index 3c0eeb3dd..000000000 --- a/Documentation/compatibility/aspnet-Fix handling Input and Label attributes for WebForms CheckBox control.md +++ /dev/null @@ -1,34 +0,0 @@ -## ASP.NET Fix handling of InputAttributes and LabelAttributes for WebForms CheckBox control - -### Version Introduced -4.8 - -### Change Description -For applications that target .NET Framework 4.7.2 and earlier versions, and that are programmatically added to a WebForms control are lost -after postback. For applications that target .NET Framework 4.8 or later versions, they are preserved after postback. - -### Recommended Action -For the correct behavior for restoring attributes on postback, set the `targetFrameworkVersion` to 4.8 or higher. For example: - -```xml - - - - - -``` - -Setting it lower, or not at all, preserves the old incorrect behavior. - -### Affected APIs -* System.Web.UI.WebControls.CheckBox - -### Category -ASP.NET - - - - diff --git a/Documentation/compatibility/aspnet-asp.net-validationcontext.membername-is-null-sometimes.md b/Documentation/compatibility/aspnet-asp.net-validationcontext.membername-is-null-sometimes.md index 43da41d50..0e88d7258 100644 --- a/Documentation/compatibility/aspnet-asp.net-validationcontext.membername-is-null-sometimes.md +++ b/Documentation/compatibility/aspnet-asp.net-validationcontext.membername-is-null-sometimes.md @@ -21,7 +21,7 @@ The default behavior of the Date: Tue, 30 Apr 2019 08:33:37 -0700 Subject: [PATCH 773/872] Update README.md (#1030) --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 899780239..6752f8314 100644 --- a/README.md +++ b/README.md @@ -52,11 +52,11 @@ There are many projects that you can use and contribute to, some of which are li Here is a short list of projects to check out: +* [.NET for Apache Spark](https://github.com/dotnet/spark) * [Orleans](https://github.com/dotnet/orleans) * [Exceptionless](https://github.com/exceptionless/Exceptionless) * [Glimpse](https://github.com/Glimpse/Glimpse) * [JSON.NET](https://github.com/JamesNK/Newtonsoft.Json) -* [Mobius: C# API for Apache Spark](https://github.com/Microsoft/Mobius) * [MonoGame](https://github.com/MonoGame/MonoGame) * [MVVM Cross](https://github.com/MvvmCross/MvvmCross) * [ReactiveUI](https://github.com/reactiveui/ReactiveUI) From 0941dbe3dba5b99079e5d7d1a3bbb28793403ad7 Mon Sep 17 00:00:00 2001 From: csrowell Date: Wed, 1 May 2019 19:04:05 -0500 Subject: [PATCH 774/872] typo fixes (#1031) * typo fixes Removed duplicate note and made typo fixes to the other note. * Update releases/net48/dotnet48-changes.md Co-Authored-By: csrowell --- releases/net48/dotnet48-changes.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/releases/net48/dotnet48-changes.md b/releases/net48/dotnet48-changes.md index 9a7da4eae..e4b6dab56 100644 --- a/releases/net48/dotnet48-changes.md +++ b/releases/net48/dotnet48-changes.md @@ -177,7 +177,6 @@ DateTime and DateTimeOffset operations will continue to work as it used to work, . [574309, System.Windows.Forms.dll, Bug, Build:3621] * Fixed and improved the stability of Live Regions feature by adding LiveSetting property setter check. This feature is available starting with Windows 10, version 1709. In order for the application to benefit from these changes, the application should be recompiled to target .NET Framework 4.8 or the application should explicitly opt-in into all accessibility app context switches in the app.config file as seen in the example for Bug 574309. [583863, System.Windows.Forms.dll, Bug, Build:3621] -* Fixed Winforms application and controls, when enable for ""per-Monitor"" Dpi aware, they are not scaled according to the dpi of the monitor ( or device). Winforms app by default behave like ""System"" Dpi aware. This is causing Winforms applications/controls to be displayed ""blur"" as a result of windows scaling them and in some cases, controls are either not scaled or scaled out of proportionate. Made changes on control level to respond to DPI change event (assuming windows raise this event whenever there is a DPI change) and rescale controls according to the new DPI. [597091, System.Windows.Forms.dll, Bug, Build:3621] * Fixed by adding support for UIA notification event to Label and GroupBox classes. This feature is available starting with Windows 10, version 1709. In order for the application to benefit from these changes, the application should be recompiled to target .NET Framework 4.8 or the application should explicitly opt-in into all accessibility app context switches in the app.config file as seen in the example for Bug 574309. [563596, Windows.UI.Xaml.Automation.Peers.dll, Windows.dll, Bug, Build:3621] * Fixed by adding support for the live region feature to the ToolStripStatusLabel class. In order for the application to benefit from these changes, the application should be recompiled to target .NET Framework 4.8 or the application should explicitly opt-in into all accessibility app context switches in the app.config file as seen in the example for Bug 574309. [564300,Windows.UI.Xaml.Automation.Peers.dll, Windows.dll, Bug, Build:3621] * Fixed by improving the accessibility of DataGridView and ListView to make sort direction available via UIA: added exposing sort order and sort column via ItemStatus property and column name. This change is effective in applications that were recompiled to target .NET Framework 4.8. [549288, System.Windows.Forms.dll, Bug, Build:3621] @@ -196,7 +195,7 @@ In order for the application to benefit from these changes, the application shou * Fixed the WinForms control tooltip's issue where it does not appear when moving keyboard focus to the control A control's tooltip is displayed now when a user uses a keyboard to focus the control. This change is effective in applications that have Switch.System.Windows.Forms.UseLegacyToolTipDisplay value and either Switch.UseLegacyAccessibilityFeatures.3 value is set to false or application is built to target .NET version 4.8. App.config file content is shown below (in 642548). [548792, System.Windows.Forms.dll, Bug, Build:3646] -* Fixed font scaling issue when DPI changes. Winforms application and controls, when enabled for """"per-Monitor"""" Dpi aware, they are not scaled according to the dpi of the monitor (or device). Winforms app by default behave like """"System"""" Dpi aware. This was causing Winforms applications/controls to be displayed """"blur"""" as a result of windows scaling them and in some cases, controls are either not scaled or scaled out of proportionate. +* Fixed font scaling issue when DPI changes. Winforms applications and controls, when enabled for "per-Monitor" Dpi awareness, are not scaled according to the DPI of the monitor (or device). Winforms apps, by default, behave like "System" DPI aware. This was causing Winforms applications/controls to be displayed blurry as a result of windows scaling them, and in some cases controls are either not scaled or scaled out of proportion. Made changes on control level to respond to DPI change event (assuming windows raise this event whenever there is a DPI change) and rescale controls according to the new DPI [597091, System.Windows.Forms.dll, Bug, Build:3646] * Added support of Accessibility Invoke pattern to DataGridView Image cell with ability to invoke cell's default action. (in case Image cell is actually an image of a button) In order for the application to benefit from these changes, the application should be recompiled to target .NET framework 4.8 or the application should explicitly opt-in into all accessibility app context switches in the app.config file. App.config file content is shown below (in 642548). [615721, System.Windows.Forms.dll, Bug, Build:3646] From ae8c4b61715a756bd099dad595776d860ec7b424 Mon Sep 17 00:00:00 2001 From: Stuart Lang Date: Sun, 5 May 2019 23:38:10 +0100 Subject: [PATCH 775/872] Update ReferenceAssemblies release notes for 1.0.0-preview.1 --- releases/reference-assemblies/README.md | 33 ++++++------------------- 1 file changed, 7 insertions(+), 26 deletions(-) diff --git a/releases/reference-assemblies/README.md b/releases/reference-assemblies/README.md index a665c3930..4ea0ed025 100644 --- a/releases/reference-assemblies/README.md +++ b/releases/reference-assemblies/README.md @@ -14,28 +14,9 @@ Early preview. ## Usage -At the moment, packages are located on a non-default package feed. Until packages are moved to the default package feed, a change in your project's `NuGet.Config` file is needed. Add the following line to `` section: - -```xml - -``` - -Sample `NuGet.Config` file: - -```xml - - - - - - -``` - -Make the following changes based on the type of project you are using. - ### .NET Core project -This sample uses a multi-targeting ClassLibrary project, that can be created using `dotnet new classlib`. Add or modify NuGet.config file as described above. +This sample uses a multi-targeting ClassLibrary project, that can be created using `dotnet new classlib`. Change `TargetFramework` property to `TargetFrameworks` and add a new .NET Framework target, like in the following example: @@ -46,8 +27,8 @@ Change `TargetFramework` property to `TargetFrameworks` and add a new .NET Frame Add Package reference: ```xml - - + + ``` @@ -69,7 +50,7 @@ Add the `TargetFramework` property and a `PackageReference` like in the followin net472 - + @@ -101,10 +82,10 @@ msbuild ## Package location -https://dotnet.myget.org/feed/roslyn-tools/package/nuget/Microsoft.NETFramework.ReferenceAssemblies +https://www.nuget.org/packages/Microsoft.NETFramework.ReferenceAssemblies ## Latest release -Version: 1.0.0-alpha-5 +Version: 1.0.0-preview.1 -Date: Tue, 04 Dec 2018 00:13:27 GMT +Date: Sun, 05 May 2019 23:37:33 GMT From 6998cc60b985ab58cb3b17d5b48a0152410d9e81 Mon Sep 17 00:00:00 2001 From: Ron Petrusha Date: Mon, 6 May 2019 11:15:44 -0700 Subject: [PATCH 776/872] Added change from dotnet/docs#12202 (#1033) --- Documentation/compatibility/ASPNET-accessibility-improvement.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Documentation/compatibility/ASPNET-accessibility-improvement.md b/Documentation/compatibility/ASPNET-accessibility-improvement.md index 64d6c025e..b4734f939 100644 --- a/Documentation/compatibility/ASPNET-accessibility-improvement.md +++ b/Documentation/compatibility/ASPNET-accessibility-improvement.md @@ -27,7 +27,7 @@ Starting with the .NET Framework 4.7.1, ASP.NET has improved how ASP.NET Web Con ### Recommended Action -**How to opt in or out of these changes** +**How to opt in or out of these changes** In order for the Visual Studio Designer to benefit from these changes, it must run on the .NET Framework 4.7.1 or later. The web application can benefit from these changes in either of the following ways: From edaab6cd2fd92f98c30044d7e6412c49feddf251 Mon Sep 17 00:00:00 2001 From: Ron Petrusha Date: Tue, 28 May 2019 12:47:38 -0700 Subject: [PATCH 777/872] Addressed policheck warnings (#1048) --- Documentation/compatibility/README.md | 4 ++-- ...-listbox-in-a-virtualizingstackpanel-can-cause-a-hang.md | 6 +++--- .../compatibility/wpf-hang-when-resizing-a-grid.md | 2 +- .../compatibility/wpf-pointer-based-touch-stack.md | 2 +- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/Documentation/compatibility/README.md b/Documentation/compatibility/README.md index ee63eb520..ae40551c7 100644 --- a/Documentation/compatibility/README.md +++ b/Documentation/compatibility/README.md @@ -91,7 +91,7 @@ Please help us improve the [.NET Framework Application Compatibility documents]( - [Default value of ServicePointManager.SecurityProtocol is SecurityProtocolType.System.Default](servicepointmanager.securityprotocol-defaults-to-securityprotocoltype.systemdefault.md) - [Incorrect code generation when passing and comparing UInt16 values](incorrect-code-generation-when-passing-and-comparing-uint16-values.md) - [NullReferenceException in exception handling code from ImageSourceConverter.ConvertFrom](wpf-nullreferenceexception-in-exception-handling-code-from-imagesourceconverter_convertfrom.md) -- [Resizing a Grid can hang](wpf-hang-when-resizing-a-grid.md) +- [Resizing a Grid can cause an application to become unresponsive](wpf-hang-when-resizing-a-grid.md) - [Serialization of control characters with DataContractJsonSerializer is now compatible with ECMAScript V6 and V8](serialization-of-control-characters-with-datacontractjsonserializer-is-now-compatible-with-ecmascript-v6-and-v8.md) - [SslStream supports TLS Alerts](sslstream-support-for-tls-alerts.md) - [Throttle concurrent requests per session](throttle-concurrent-requests-per-session.md) @@ -256,7 +256,7 @@ Please help us improve the [.NET Framework Application Compatibility documents]( - [PreviewLostKeyboardFocus is called repeatedly if its handler shows a Windows Forms message box](previewlostkeyboardfocus-is-called-repeatedly-if-its-handler-shows-a-message-box.md) - [Profiling ASP.Net MVC4 apps can lead to Fatal Execution Engine Error](profiling-asp_net-mvc4-apps-can-lead-to-fatal-execution-engine-error.md) - [Right clicking on a WPF DataGrid row header changes the DataGrid selection](right-clicking-on-a-wpf-datagrid-row-header-changes-the-datagrid-selection.md) -- [Scrolling a WPF TreeView or grouped ListBox in a VirtualizingStackPanel can cause a hang](scrolling-a-wpf-treeview-or-grouped-listbox-in-a-virtualizingstackpanel-can-cause-a-hang.md) +- [Scrolling a WPF TreeView or grouped ListBox in a VirtualizingStackPanel can result in an unresponsive application](scrolling-a-wpf-treeview-or-grouped-listbox-in-a-virtualizingstackpanel-can-cause-a-hang.md) - [Sharing session state with Asp.Net StateServer requires all servers in the web farm to use the same .NET Framework version](sharing-session-state-with-asp_net-stateserver-requires-all-servers-in-the-web-farm-to-use-the-same-_net-framework-version.md) - [SoapFormatter cannot deserialize Hashtable and similar ordered collection objects](soapformatter-cannot-deserialize-hashtable-and-similar-ordered-collection-objects.md) - [Some .NET APIs cause first chance (handled) EntryPointNotFoundExceptions](some-_net-apis-cause-first-chance-(handled)-entrypointnotfoundexceptions.md) diff --git a/Documentation/compatibility/scrolling-a-wpf-treeview-or-grouped-listbox-in-a-virtualizingstackpanel-can-cause-a-hang.md b/Documentation/compatibility/scrolling-a-wpf-treeview-or-grouped-listbox-in-a-virtualizingstackpanel-can-cause-a-hang.md index b97de07f3..1fd71792c 100644 --- a/Documentation/compatibility/scrolling-a-wpf-treeview-or-grouped-listbox-in-a-virtualizingstackpanel-can-cause-a-hang.md +++ b/Documentation/compatibility/scrolling-a-wpf-treeview-or-grouped-listbox-in-a-virtualizingstackpanel-can-cause-a-hang.md @@ -1,4 +1,4 @@ -## Scrolling a WPF TreeView or grouped ListBox in a VirtualizingStackPanel can cause a hang +## Scrolling a WPF TreeView or grouped ListBox in a VirtualizingStackPanel can cause an application to become unresponsive ### Scope Major @@ -14,9 +14,9 @@ Planned ### Change Description -In the .NET Framework v4.5, scrolling a WPF +In .NET Framework 4.5, scrolling a WPF in a virtualized -stack panel can cause hangs if there are margins in the viewport (between the +stack panel can cause an application to become unresponsive if there are margins in the viewport (between the items in the , for example, or on an ItemsPresenter element). Additionally, in some cases, different sized items in the view can cause instability even if there are no diff --git a/Documentation/compatibility/wpf-hang-when-resizing-a-grid.md b/Documentation/compatibility/wpf-hang-when-resizing-a-grid.md index 9ccf3ed7c..728070328 100644 --- a/Documentation/compatibility/wpf-hang-when-resizing-a-grid.md +++ b/Documentation/compatibility/wpf-hang-when-resizing-a-grid.md @@ -1,4 +1,4 @@ -## Resizing a Grid can hang +## Resizing a Grid can cause an application to become unresponsive ### Scope Edge diff --git a/Documentation/compatibility/wpf-pointer-based-touch-stack.md b/Documentation/compatibility/wpf-pointer-based-touch-stack.md index 9f7efaf64..b10db0870 100644 --- a/Documentation/compatibility/wpf-pointer-based-touch-stack.md +++ b/Documentation/compatibility/wpf-pointer-based-touch-stack.md @@ -20,7 +20,7 @@ Current Known Issues With optional WM_POINTER based touch/stylus stack: - Drag/Drop will not show appropriate feedback for touch input - This does not affect stylus input - Drag/Drop can no longer be initiated on touch/stylus events - - This can potentially hang the application until mouse input is detected. + - This can potentially cause the application to stop responding until mouse input is detected. - Instead, developers should initiate drag and drop from mouse events. - [X] Quirked From 9154948cf24ac968037893c0831f81aef087e01c Mon Sep 17 00:00:00 2001 From: Ron Petrusha Date: Wed, 29 May 2019 17:08:55 -0700 Subject: [PATCH 778/872] Addressed Policheck issues #2 (#1049) --- .../compatibility/wpf-hang-listbox-duplicate-valuetypes.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Documentation/compatibility/wpf-hang-listbox-duplicate-valuetypes.md b/Documentation/compatibility/wpf-hang-listbox-duplicate-valuetypes.md index e87de1555..6533345f3 100644 --- a/Documentation/compatibility/wpf-hang-listbox-duplicate-valuetypes.md +++ b/Documentation/compatibility/wpf-hang-listbox-duplicate-valuetypes.md @@ -1,4 +1,4 @@ -## Fixed a hang when ListBox contains duplicate value-types +## Fixed problem of unresponsiveness when ListBox contains duplicate value-types ### Scope Major @@ -10,7 +10,7 @@ Major NotPlanned ### Change Description -Fixed a problem where a virtualizing can hang during scrolling when its Items collection contains duplicate value-typed objects. +Fixed a problem where a virtualizing can become unresponsive during scrolling when its collection contains duplicate value-typed objects. - [ ] Quirked - [ ] Build-time break From 5a00d49f061cf3d9a38806794e2261fab0960bcc Mon Sep 17 00:00:00 2001 From: Ron Petrusha Date: Fri, 31 May 2019 18:29:35 -0700 Subject: [PATCH 779/872] Incorporated changes from dotnet/docs#12618 (#1050) --- ...t-versioning-changes-in-net-framework-4-6-and-later.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Documentation/compatibility/product-versioning-changes-in-net-framework-4-6-and-later.md b/Documentation/compatibility/product-versioning-changes-in-net-framework-4-6-and-later.md index fa8c87835..8f6c2c3ac 100644 --- a/Documentation/compatibility/product-versioning-changes-in-net-framework-4-6-and-later.md +++ b/Documentation/compatibility/product-versioning-changes-in-net-framework-4-6-and-later.md @@ -15,14 +15,14 @@ Product versioning has changed from the previous releases of the .NET Framework, The following are the detailed changes: -- The value of the `Version` entry in the `HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full` key has changed to `4.6.xxxxx` for the .NET Framework 4.6 and its point releases, and to `4.7.xxxxx` for the .NET Framework 4.7 and 4.7.1. In the .NET Framework 4.5, 4.5.1, and 4.5.2, it had the format `4.5.xxxxx`. +- The value of the `Version` entry in the `HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full` key has changed to `4.6.xxxxx` for the .NET Framework 4.6 and its point releases, to `4.7.xxxxx` for the .NET Framework 4.7 and its point releases, and to `4.8.xxxxx` for .NET Framework 4.8. In the .NET Framework 4.5, 4.5.1, and 4.5.2, it had the format `4.5.xxxxx`. -- The file and product versioning for .NET Framework files has changed from the earlier versioning scheme of 4.0.30319.x to 4.6.X.0 for the .NET Framework 4.6 and its point releases, and to 4.7.X.0 for the .NET Framework 4.7 and 4.7.1. You can see these new values when you view the file's Properties after right-clicking on a file. +- The file and product versioning for .NET Framework files has changed from the earlier versioning scheme of 4.0.30319.x to 4.6.X.0 for the .NET Framework 4.6 and its point releases, and to 4.7.X.0 for the .NET Framework 4.7 and its point releases, and to 4.8.X.0 for .NET Framework 4.8. You can see these new values when you view the file's Properties after right-clicking on a file. -- The and attributes for managed assemblies have Version values in the form 4.6.X.0 for the .NET Framework 4.6 and its point releases, and 4.7.X.0 for the .NET Framework 4.7 and 4.7.1. +- The and attributes for managed assemblies have Version values in the form 4.6.X.0 for the .NET Framework 4.6 and its point releases, 4.7.X.0 for the .NET Framework 4.7 and its point releases, and 4.8.X.0 for .NET Framework 4.8. -- In the .NET Framework 4.6, 4.6.1, 4.6.2, 4.7, and 4.7.1, the property returns the fixed version string `4.0.30319.42000`. In the .NET Framework 4, 4.5, 4.5.1, and 4.5.2, it returns version strings in the format `4.0.30319.xxxxx` (for example, "4.0.30319.18010"). Note that we do not recommend application code taking any new dependency on the Environment.Version property. +- In the .NET Framework 4.6 and later versions, the property returns the fixed version string `4.0.30319.42000`. In the .NET Framework 4, 4.5, 4.5.1, and 4.5.2, it returns version strings in the format `4.0.30319.xxxxx`, where `xxxxx` is less than 42000 (for example, "4.0.30319.18010"). Note that we do not recommend application code taking any new dependency on the Environment.Version property. For more information, see [How to: Determine which .NET Framework Versions Are Installed](~/docs/framework/migration-guide/how-to-determine-which-versions-are-installed.md). From a2541b6920fc962d98ae4f0e5a4cf9428bb24322 Mon Sep 17 00:00:00 2001 From: tagcode Date: Mon, 10 Jun 2019 18:10:59 +0300 Subject: [PATCH 780/872] Lexical.Localization (#1056) * Lexical.Localization * . --- dotnet-developer-projects.md | 1 + 1 file changed, 1 insertion(+) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 871326bd0..1a121e2a4 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -154,6 +154,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [Kentor.AuthServices](https://github.com/KentorIT/authservices) - A SAML2 Service Provider for .NET. * [Language-ext](https://github.com/louthy/language-ext) - C# 6.0+ functional language extensions. Make C# more like F# and other functional languages * [leveldb-sharp](https://github.com/meebey/leveldb-sharp) - cross-platform C# binding for LevelDB + * [Lexical.Localization](http://lexical.fi/Localization/index.html) - Localization class library for .NET. * [LibGit2Sharp](https://github.com/libgit2/libgit2sharp) - C# language bindings for the [LibGit2](https://github.com/libgit2/libgit2) implementation of Git. * [LINQ Extensions](https://github.com/TommasoScalici/LINQExtensions) - LINQ extensions for .NET is a collection of useful extensions methods that extends LINQ's capability. There are methods for combinatorics and sequence analysis, generation and manipulation. * [Localization.SqlLocalizer]( https://github.com/damienbod/AspNet5Localization) - SQL Localizer for ASP.NET Core, dotnet From fc183e75b3bf7b814358e63f8ef9fbc8065061cb Mon Sep 17 00:00:00 2001 From: Steve Molloy Date: Thu, 20 Jun 2019 13:08:24 -0700 Subject: [PATCH 781/872] Update 776516-InvalidOperationException in System_Web_ni!System.Web.Hosting.RecycleLimitMonitor+RecycleLimitMonitorSingleton.AlertProxyMonitors.md --- ...itMonitor+RecycleLimitMonitorSingleton.AlertProxyMonitors.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/releases/net48/KnownIssues/776516-InvalidOperationException in System_Web_ni!System.Web.Hosting.RecycleLimitMonitor+RecycleLimitMonitorSingleton.AlertProxyMonitors.md b/releases/net48/KnownIssues/776516-InvalidOperationException in System_Web_ni!System.Web.Hosting.RecycleLimitMonitor+RecycleLimitMonitorSingleton.AlertProxyMonitors.md index 985c1e1da..95280851d 100644 --- a/releases/net48/KnownIssues/776516-InvalidOperationException in System_Web_ni!System.Web.Hosting.RecycleLimitMonitor+RecycleLimitMonitorSingleton.AlertProxyMonitors.md +++ b/releases/net48/KnownIssues/776516-InvalidOperationException in System_Web_ni!System.Web.Hosting.RecycleLimitMonitor+RecycleLimitMonitorSingleton.AlertProxyMonitors.md @@ -17,4 +17,4 @@ web app domain lifetimes tend to last the entire length of the process lifetime, extremely minimal. More private bytes consumption and/or more AppDomain recycling increases the odds of hitting this exception condition. ## Resolution -A hotfix for this issue is planned for .Net 4.8. This page will be updated with a link to the hotfix when it becomes available. +A hotfix for this issue is available for .Net 4.8. https://support.microsoft.com/en-us/help/4502560/cumulative-update-for-net-framework-june-18-2019 From f109118b9b334a51ecb6f2c15991329150efe33c Mon Sep 17 00:00:00 2001 From: Ron Petrusha Date: Wed, 26 Jun 2019 15:06:28 +0000 Subject: [PATCH 782/872] Corrected typo (#1067) --- .../workflow-xoml-file-checksums-changed-from-md5-to-sha256.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Documentation/compatibility/workflow-xoml-file-checksums-changed-from-md5-to-sha256.md b/Documentation/compatibility/workflow-xoml-file-checksums-changed-from-md5-to-sha256.md index e04eae5fc..f0da34b60 100644 --- a/Documentation/compatibility/workflow-xoml-file-checksums-changed-from-md5-to-sha256.md +++ b/Documentation/compatibility/workflow-xoml-file-checksums-changed-from-md5-to-sha256.md @@ -15,7 +15,7 @@ when workflow projects containing XOML files build, a checksum of the contents o generated as a value. In the .NET Framework 4.7.2 and earlier versions, this checksum hashing used the MD5 algorithm, which caused issues on FIPS-enabled systems. Starting with the .NET Framework 4.8, -the algorithm used is SHA256. To be compatibile with the WorkflowMarkupSourceAttribute.MD5Digest, +the algorithm used is SHA256. To be compatible with the WorkflowMarkupSourceAttribute.MD5Digest, only the first 16 bytes of the generated checksum are used. This may cause problems during debugging. You may need to re-build your project. From b1d0b788c31c8a46cbd0cd692c3b46db61036bdb Mon Sep 17 00:00:00 2001 From: Devendar Reddy Adulla Date: Tue, 9 Jul 2019 08:26:26 -0700 Subject: [PATCH 783/872] High DPI changes in .NET 4.8 - Remaining documentation (#1071) * .NET 4.8 high DPi improvements documentation. * Update Documentation/compatibility/winforms-hdpi-changes-48.md Co-Authored-By: Ron Petrusha * Update Documentation/compatibility/winforms-hdpi-changes-48.md Co-Authored-By: Ron Petrusha * Update Documentation/compatibility/winforms-hdpi-changes-48.md Co-Authored-By: Ron Petrusha * Update Documentation/compatibility/winforms-hdpi-changes-48.md Co-Authored-By: Ron Petrusha * Update Documentation/compatibility/winforms-hdpi-changes-48.md Co-Authored-By: Ron Petrusha * Update Documentation/compatibility/winforms-hdpi-changes-48.md Co-Authored-By: Ron Petrusha * Update Documentation/compatibility/winforms-hdpi-changes-48.md Co-Authored-By: Ron Petrusha * Update Documentation/compatibility/winforms-hdpi-changes-48.md Co-Authored-By: Ron Petrusha * Update Documentation/compatibility/winforms-hdpi-changes-48.md Co-Authored-By: Ron Petrusha * Update Documentation/compatibility/winforms-hdpi-changes-48.md Co-Authored-By: Ron Petrusha * Update Documentation/compatibility/winforms-hdpi-changes-48.md Co-Authored-By: Olia Gavrysh <31997351+OliaG@users.noreply.github.com> * Update Documentation/compatibility/winforms-hdpi-changes-48.md Co-Authored-By: Olia Gavrysh <31997351+OliaG@users.noreply.github.com> * Update Documentation/compatibility/winforms-hdpi-changes-48.md Co-Authored-By: Olia Gavrysh <31997351+OliaG@users.noreply.github.com> * Update Documentation/compatibility/winforms-hdpi-changes-48.md Co-Authored-By: Olia Gavrysh <31997351+OliaG@users.noreply.github.com> * Update Documentation/compatibility/winforms-hdpi-changes-48.md Co-Authored-By: Ron Petrusha * Update Documentation/compatibility/winforms-hdpi-changes-48.md Co-Authored-By: Ron Petrusha * Update Documentation/compatibility/winforms-hdpi-changes-48.md Co-Authored-By: Ron Petrusha * Update Documentation/compatibility/winforms-hdpi-changes-48.md Co-Authored-By: Ron Petrusha * Update Documentation/compatibility/winforms-hdpi-changes-48.md Co-Authored-By: Ron Petrusha * Update Documentation/compatibility/winforms-hdpi-changes-48.md Co-Authored-By: Ron Petrusha * Update Documentation/compatibility/winforms-hdpi-changes-48.md Co-Authored-By: Olia Gavrysh <31997351+OliaG@users.noreply.github.com> * Minor changes --- .../compatibility/winforms-hdpi-changes-48.md | 84 +++++++++++++++++++ 1 file changed, 84 insertions(+) create mode 100644 Documentation/compatibility/winforms-hdpi-changes-48.md diff --git a/Documentation/compatibility/winforms-hdpi-changes-48.md b/Documentation/compatibility/winforms-hdpi-changes-48.md new file mode 100644 index 000000000..fce9613da --- /dev/null +++ b/Documentation/compatibility/winforms-hdpi-changes-48.md @@ -0,0 +1,84 @@ +## High DPI (HDPI) improvements in Windows Forms controls for .NET 4.8 + +### Scope +Major + +### Version Introduced +4.8 + +### Source Analyzer Status +NotPlanned + +### Change Description +The Windows Forms Framework is continuing to improve the scaling and rendering of its controls to better support Windows Forms customers on high resolution devices. As a result of these improvemeents, Windows Forms applications are able to better handle DPI changes that occur, for example, when moving the application from one monitor to another monitor that has different DPI settings. These include the following changes: +- Changes to improve the scaling of controls when the DPI of the application changes. +- Changes to improve the scaling of Toolstrip menus, buttons, and glyphs when the DPI of the application changes. +- Changes to improve the scaling of and controls when setting different styles on them, and the DPI of the application changes. +- Changes to improve the scaling of font-based controls when the DPI of the application changes. +- Changes to improve the scaling of the control when the DPI of the application changes. + +- [x] Quirked +- [ ] Build-time break + +### Recommended Action +__How to opt in or out of these changes__ + +In order for the application to benefit from these changes, it must run on the .NET Framework 4.8. The application can opt in to these changes in either of the following ways: +- It is recompiled to target the .NET Framework 4.8. These high DPI improvement changes are enabled by default on Windows Forms applications that target the .NET Framework 4.8. +- It targets the .NET Framework 4.7.2 or earlier versions and opts in to this new behaviour by adding the following [Windows Forms Configuration Section](https://docs.microsoft.com/en-us/dotnet/framework/configure-apps/file-schema/winforms/) to the app config file and then adding the required flag to opt-in specific feature improvements. + +```xml + + + + + + + + ... + + + +``` +- High DPI improvements in each major category has its own opt-in setting. Applications can set the required setting by following instructions found at [High DPI support in Windows Forms](~/docs/framework/winforms/high-dpi-support-in-windows-forms.md) and the [Windows Forms add configuration element](~/docs/framework/configure-apps/file-schema/winforms/windows-forms-add-configuration-element.md) . + +Note that many of these improvements are enabled only on Windows 10, and your application must be enabled to run in Windows 10 compatible mode. You can set this in the application manifest file as defined in [High DPI support in Windows Forms](~/docs/framework/winforms/high-dpi-support-in-windows-forms.md). + +__Opting out +Applications that target the .NET Framework 4.8 and want to preserve the legacy high dpi behavior can do so by explicitly setting the switches described below to `true`. + +__Improved PropertyGrid scaling when DPI changes.__ +- Improved scaling of the PropertyGrid control and its child controls when the DPI of the application is changed (for example, when the application moves from one monitor to another with different DPI settings). All changes made for this improvement are controlled by the `DisableDpiChangedHighDpiImprovements` switch. + +__Improved scaling of Toolstrip Menus/Buttons/Glyphs when the DPI of the application changed__ +All changes in this area are controlled by the `ToolStrip.DisableHighDpiImprovements` & `DisableDpiChangedHighDpiImprovements` switches. + +__Improved scaling of RadioButton and CheckBox when application DPI changes__ +- Improved the scaling of the RadioButton and CheckBox, when setting different styles on them and the DPI of the application changes. All changes made for this improvement are quirked under the `DisableDpiChangedHighDpiImprovements` switch. + +__Improved scaling of Button control when application DPI changed__ +All changes made in this area are controlled by the `DisableDpiChangedHighDpiImprovements` switch. + +__Improved scaling of Font based controls when application DPI changes__ +All changes made in this area are controlled by the `DisableDpiChangedHighDpiImprovements` switch. + +### Affected APIs +- Not detectable via API analysis. + +### Category +Windows Forms + + + + + From 695b627213865c3440f2dbb0aef94f7935841d2d Mon Sep 17 00:00:00 2001 From: Ron Petrusha Date: Tue, 9 Jul 2019 16:13:16 +0000 Subject: [PATCH 784/872] Generated new readme, renamed files to remove italicization (#1075) * Updated readme * renamed file, regenerated readme * another filename change --- Documentation/compatibility/README.md | 9 +++++---- ...t-return-different-values-beginning-in-dotnet-4-5.md} | 0 ...row-now-when-dotnet-cannot-handle-the-certificate.md} | 0 3 files changed, 5 insertions(+), 4 deletions(-) rename Documentation/compatibility/{glyphrun_computeinkboundingbox()-and-formattedtext_extent-return-different-values-beginning-in-_net-4_5.md => glyphrun-computeinkboundingbox-and-formattedtext-extent-return-different-values-beginning-in-dotnet-4-5.md} (100%) rename Documentation/compatibility/{x509certificate2_tostring(bool)-does-not-throw-now-when-_net-cannot-handle-the-certificate.md => x509certificate2_tostring(bool)-does-not-throw-now-when-dotnet-cannot-handle-the-certificate.md} (100%) diff --git a/Documentation/compatibility/README.md b/Documentation/compatibility/README.md index ae40551c7..9762e954e 100644 --- a/Documentation/compatibility/README.md +++ b/Documentation/compatibility/README.md @@ -29,7 +29,8 @@ Please help us improve the [.NET Framework Application Compatibility documents]( - [CLR critical section spin-wait removal](clr_critical_section_spin_wait_removal.md) - [Data Binding improvement for KeyedCollection](wpf-databinding-should-use-key-not-indexer.md) - [ECDsaCertificateExtensions.GetECDsaPublicKey correctly handles Brainpool curves](GetECDsaPublicKey-correctly-handles-brainpool-curves.md) -- [Fixed a hang when ListBox contains duplicate value-types](wpf-hang-listbox-duplicate-valuetypes.md) +- [Fixed problem of unresponsiveness when ListBox contains duplicate value-types](wpf-hang-listbox-duplicate-valuetypes.md) +- [High DPI (HDPI) improvements in Windows Forms controls for .NET 4.8](winforms-hdpi-changes-48.md) - [HwndHost now correctly resizes child-HWND during DPI changes](wpf-HwndHost-child-hwnd-correct-size-during-DPI-changes.md) - [Improvements to Grid star-rows space allocating algorithm](wpf-grid-row-size-allocation-with-collapsed-element.md) - [Keyboard navigation improvement in ListBox with Hyperlinks](wpf-keyboard-navigation-listbox-hyperlink.md) @@ -169,7 +170,7 @@ Please help us improve the [.NET Framework Application Compatibility documents]( - [WPF layout rounding of margins has changed](wpf-layout-rounding-of-margins-has-changed.md) - [WPF spell checking in text-enabled controls will not work in Windows 10 for languages not in the OS's input language list](wpf-spell-checking-in-text-enabled-controls-will-not-work-in-windows-10-for-languages-not-in-the-input-language-list.md) - [WPF windows are rendered without clipping when extending outside a single monitor](wpf-windows-are-rendered-without-clipping-when-extending-outside-a-single-monitor.md) -- [X509Certificate2.ToString(Boolean) does not throw now when .NET cannot handle the certificate](x509certificate2_tostring(bool)-does-not-throw-now-when-_net-cannot-handle-the-certificate.md) +- [X509Certificate2.ToString(Boolean) does not throw now when .NET cannot handle the certificate](x509certificate2_tostring(bool)-does-not-throw-now-when-dotnet-cannot-handle-the-certificate.md) - [XmlWriter throws on invalid surrogate pairs](xmlwriter-throws-on-invalid-surrogate-pairs.md) - [XSD Schema validation now correctly detects violations of unique constraints if compound keys are used and one key is empty](xsd-schema-validation-now-correctly-detects-violations-of-unique-constraints-if-compound-keys-are-used-and-one-key-is-empty.md) @@ -227,7 +228,7 @@ Please help us improve the [.NET Framework Application Compatibility documents]( - [Exceptions during unobserved processing in System.Threading.Tasks.Task no longer propagate on finalizer thread](exceptions-during-unobserved-processing-in-system_threading_tasks_task-no-longer-propagate-on-finalizer-thread.md) - [FlowDocument may show an extra line of text](flowdocument-may-show-an-extra-line-of-text.md) - [Foreach iterator variable is now scoped within the iteration, so closure capturing semantics are different (in C#5)](foreach-iterator-variable-is-now-scoped-within-the-iteration.md) -- [GlyphRun.ComputeInkBoundingBox() and FormattedText.Extent return different values beginning in .NET Framework 4.5](glyphrun_computeinkboundingbox()-and-formattedtext_extent-return-different-values-beginning-in-_net-4_5.md) +- [GlyphRun.ComputeInkBoundingBox() and FormattedText.Extent return different values beginning in .NET Framework 4.5](glyphrun-computeinkboundingbox-and-formattedtext-extent-return-different-values-beginning-in-dotnet-4-5.md) - [GridViews with AllowCustomPaging set to true may fire the PageIndexChanging event when leaving the final page of the view](gridviews-with-allowcustompaging-set-to-true-may-fire-the-pageindexchanging-event-when-leaving-the-final-page-of-the-view.md) - [HttpRequest.ContentEncoding property prohibits UTF7](httprequest_contentencoding-property-prohibits-utf7.md) - [HttpUtility.JavaScriptStringEncode escapes ampersand](httputility_javascriptstringencode-escapes-ampersand.md) @@ -256,7 +257,7 @@ Please help us improve the [.NET Framework Application Compatibility documents]( - [PreviewLostKeyboardFocus is called repeatedly if its handler shows a Windows Forms message box](previewlostkeyboardfocus-is-called-repeatedly-if-its-handler-shows-a-message-box.md) - [Profiling ASP.Net MVC4 apps can lead to Fatal Execution Engine Error](profiling-asp_net-mvc4-apps-can-lead-to-fatal-execution-engine-error.md) - [Right clicking on a WPF DataGrid row header changes the DataGrid selection](right-clicking-on-a-wpf-datagrid-row-header-changes-the-datagrid-selection.md) -- [Scrolling a WPF TreeView or grouped ListBox in a VirtualizingStackPanel can result in an unresponsive application](scrolling-a-wpf-treeview-or-grouped-listbox-in-a-virtualizingstackpanel-can-cause-a-hang.md) +- [Scrolling a WPF TreeView or grouped ListBox in a VirtualizingStackPanel can cause an application to become unresponsive](scrolling-a-wpf-treeview-or-grouped-listbox-in-a-virtualizingstackpanel-can-cause-a-hang.md) - [Sharing session state with Asp.Net StateServer requires all servers in the web farm to use the same .NET Framework version](sharing-session-state-with-asp_net-stateserver-requires-all-servers-in-the-web-farm-to-use-the-same-_net-framework-version.md) - [SoapFormatter cannot deserialize Hashtable and similar ordered collection objects](soapformatter-cannot-deserialize-hashtable-and-similar-ordered-collection-objects.md) - [Some .NET APIs cause first chance (handled) EntryPointNotFoundExceptions](some-_net-apis-cause-first-chance-(handled)-entrypointnotfoundexceptions.md) diff --git a/Documentation/compatibility/glyphrun_computeinkboundingbox()-and-formattedtext_extent-return-different-values-beginning-in-_net-4_5.md b/Documentation/compatibility/glyphrun-computeinkboundingbox-and-formattedtext-extent-return-different-values-beginning-in-dotnet-4-5.md similarity index 100% rename from Documentation/compatibility/glyphrun_computeinkboundingbox()-and-formattedtext_extent-return-different-values-beginning-in-_net-4_5.md rename to Documentation/compatibility/glyphrun-computeinkboundingbox-and-formattedtext-extent-return-different-values-beginning-in-dotnet-4-5.md diff --git a/Documentation/compatibility/x509certificate2_tostring(bool)-does-not-throw-now-when-_net-cannot-handle-the-certificate.md b/Documentation/compatibility/x509certificate2_tostring(bool)-does-not-throw-now-when-dotnet-cannot-handle-the-certificate.md similarity index 100% rename from Documentation/compatibility/x509certificate2_tostring(bool)-does-not-throw-now-when-_net-cannot-handle-the-certificate.md rename to Documentation/compatibility/x509certificate2_tostring(bool)-does-not-throw-now-when-dotnet-cannot-handle-the-certificate.md From 38880e8ef6ad1065b0753137f6f09fc163e0690d Mon Sep 17 00:00:00 2001 From: Ron Petrusha Date: Wed, 10 Jul 2019 17:05:33 +0000 Subject: [PATCH 785/872] Fixed broken xrefs from migration (#1076) --- ...net-asp.net-validationcontext.membername-is-null-sometimes.md | 1 + ...g-input-and-label-attributes-for-webforms-checkbox-control.md | 1 + ...et-invalid-results-from-httprequest.getattributefromheader.md | 1 + 3 files changed, 3 insertions(+) diff --git a/Documentation/compatibility/aspnet-asp.net-validationcontext.membername-is-null-sometimes.md b/Documentation/compatibility/aspnet-asp.net-validationcontext.membername-is-null-sometimes.md index 0e88d7258..bc6330aeb 100644 --- a/Documentation/compatibility/aspnet-asp.net-validationcontext.membername-is-null-sometimes.md +++ b/Documentation/compatibility/aspnet-asp.net-validationcontext.membername-is-null-sometimes.md @@ -21,6 +21,7 @@ The default behavior of the Date: Mon, 29 Jul 2019 21:38:44 +0000 Subject: [PATCH 786/872] Added missing descriptions (#1089) --- dotnet-developer-projects.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 1a121e2a4..e57a31dc5 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -50,7 +50,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [IdentityManager](https://github.com/IdentityManager/IdentityManager) - (No Longer Maintained) IdentityManager is a tool for developers and/or administrators to manage the identity information for users of their applications. * [IdentityServer](https://github.com/IdentityServer/IdentityServer3) * [NWebsec](https://github.com/NWebsec/NWebsec) - Security headers for ASP.NET applications. - * [SKGL - Serial Key Generating Library](https://github.com/SerialKeyManager/SKGL) + * [SKGL - Serial Key Generating Library](https://github.com/SerialKeyManager/SKGL) - A very simple licensing system that can be used to protect .NET Applications. ## Web CMS * [Composite C1](https://github.com/Orckestra/C1-CMS) - Web content management platform (CMS). @@ -119,7 +119,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [Cimbalino Toolkit](https://github.com/Cimbalino/Cimbalino-Toolkit) - A set of useful and powerful tools that will help you build your Windows Platform applications. * [Cinchoo ETL](https://github.com/Cinchoo/ChoETL) - ETL Framework for .NET (Parser / Writer for CSV, Flat, Xml, JSON, Key-Value formatted files). * [CodeJam](https://github.com/rsdn/CodeJam) - Set of handy reusable .NET components that can simplify your daily work and save your time when you copy and paste your favorite helper methods and classes from one project to another. - * [Coding4Fun Toolkit](https://github.com/Coding4FunProjects/Coding4FunToolkit) + * [Coding4Fun Toolkit](https://github.com/Coding4FunProjects/Coding4FunToolkit) - A set of controls, converters, and helper classes for Windows Runtime XAML applications. * [ColoredConsole](https://github.com/colored-console/colored-console) - Add some color to your console. * [ColorSharp](https://github.com/Litipk/ColorSharp) - Library to handle color spaces and light spectrums. * [ComparerExtensions](https://github.com/jehugaleahsa/comparerextensions) - Build IComparer and IEqualityComparer objects using natural language syntax. @@ -141,7 +141,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [ExtraLINQ](https://github.com/mariusschulz/ExtraLINQ) - Various extension methods for working with .NET collections. * [FeatureToggle](https://github.com/jason-roberts/FeatureToggle) - Simple, reliable feature toggles in .NET. * [FlatMapper](https://github.com/kappy/FlatMapper) - A library to import and export data from and to plain text files in a Linq compatible way. - * [FluentBootstrap](https://github.com/somedave/FluentBootstrap) + * [FluentBootstrap](https://github.com/somedave/FluentBootstrap) - Provides extensions, helper classes, model binding, and other goodies to help you use the Bootstrap CSS framework from .NET code. * [FluentConsole](https://github.com/ashmind/FluentConsole) - Alternative approach to colored console (`FluentConsole.Red.Text().Green.Text()`). * [FluentValidation](https://github.com/JeremySkinner/FluentValidation) - A small validation library for .NET that uses a fluent interface and lambda expressions for building validation rules. * [Flurl](https://github.com/tmenier/Flurl) - A fluent, portable, testable URL builder and HTTP client library. @@ -158,7 +158,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [LibGit2Sharp](https://github.com/libgit2/libgit2sharp) - C# language bindings for the [LibGit2](https://github.com/libgit2/libgit2) implementation of Git. * [LINQ Extensions](https://github.com/TommasoScalici/LINQExtensions) - LINQ extensions for .NET is a collection of useful extensions methods that extends LINQ's capability. There are methods for combinatorics and sequence analysis, generation and manipulation. * [Localization.SqlLocalizer]( https://github.com/damienbod/AspNet5Localization) - SQL Localizer for ASP.NET Core, dotnet - * [Lucene.Net](https://github.com/apache/lucene.net) + * [Lucene.Net](https://github.com/apache/lucene.net) - A .NET full-text search engine framework that is a C# port of the popular Apache Lucene project. * [MahApps.Metro.IconPacks](https://github.com/MahApps/MahApps.Metro.IconPacks) - Some awesome icons for `WPF` and `UWP` all together. The library contains controls to use icons from [Material Design](https://materialdesignicons.com/), [Material Design Icons Light](https://github.com/Templarian/MaterialDesignLight), [Font Awesome](http://fontawesome.io/icons/), [GitHub Octicons](https://octicons.github.com/), [Modern](http://modernuiicons.com/), [Entypo+](http://www.entypo.com/) and [Simple Icons](https://simpleicons.org/). * [Math.NET Numerics](https://github.com/mathnet/mathnet-numerics) - Provides methods and algorithms for numerical computations in science, engineering and every day use. * [Mathos Core Libary](https://github.com/MathosProject/Mathos-Project) - A library with algorithms for numerical calcultations in finance, statistics, pattern recognition, and more. @@ -271,7 +271,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [Quick Diagram Tool for C#](https://github.com/realvizu/QuickDiagram) - Code visualization tool for C#. * [scriptcs](https://github.com/scriptcs/scriptcs) - scriptcs makes it easy to write and execute C# with a simple text editor. * [Snoop WPF](https://github.com/cplotts/snoopwpf) - Snoop - The WPF Spy Utility - * [Sql Bulk Copy Sync](https://github.com/WCOMAB/SqlBulkSync) + * [Sql Bulk Copy Sync](https://github.com/WCOMAB/SqlBulkSync) - A lightweight, performant non-intrusive SQL Server data sync tool. * [Vagabond](https://github.com/nessos/Vagabond) - Automated dependency resolution and dynamic assembly compilation framework. * [Waf DotNetPad](https://jbe2277.github.io/dotnetpad) - The Waf DotNetPad is a simple and fast code editor that makes fun program with C# or Visual Basic. * [Weighted Selector](https://github.com/kinetiq/Ether.WeightedSelector/) - Easy to use (but high performance!) weighted selection implementation. @@ -344,7 +344,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [NMEA Parser](https://github.com/dotMorten/NmeaParser) - Library for handling NMEA message in Windows Desktop, Store, Phone and Xamarin (Android + iOS), coming from files, Bluetooth, serial port or any stream. * [Neyro.Data](https://github.com/neyromant/Neyro.Data) - Tiny, simple and fast ORM. * [SQL LocalDB Wrapper](https://github.com/martincostello/sqllocaldb) - SQL LocalDB Wrapper is an assembly providing interop with the SQL LocalDB native API from managed code using .NET APIs. - * [StackExchange.Redis](https://github.com/StackExchange/StackExchange.Redis) + * [StackExchange.Redis](https://github.com/StackExchange/StackExchange.Redis) - A high performance, general purpose redis client for .NET languages (C#, etc.). ## Games * [Duality](https://github.com/AdamsLair/duality) - An Open Source 2D Game Engine + Visual Editor written entirely in C#. From b63c7305f7335207935ab96f4129b7e8377c7ce0 Mon Sep 17 00:00:00 2001 From: Brock Allen Date: Mon, 29 Jul 2019 18:07:48 -0400 Subject: [PATCH 787/872] Update dotnet-developer-projects.md (#1090) Update link for IdentityServer4. --- dotnet-developer-projects.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index e57a31dc5..f6ae97926 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -48,7 +48,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C ## Security / Identity Management * [IdentityManager](https://github.com/IdentityManager/IdentityManager) - (No Longer Maintained) IdentityManager is a tool for developers and/or administrators to manage the identity information for users of their applications. - * [IdentityServer](https://github.com/IdentityServer/IdentityServer3) + * [IdentityServer](https://github.com/IdentityServer/IdentityServer4) - OpenID Connect and OAuth 2.0 Framework for ASP.NET Core. * [NWebsec](https://github.com/NWebsec/NWebsec) - Security headers for ASP.NET applications. * [SKGL - Serial Key Generating Library](https://github.com/SerialKeyManager/SKGL) - A very simple licensing system that can be used to protect .NET Applications. From 3583978d0a2b1d8414b8fa4760570104f7ce3b82 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20W=C3=A4scher?= Date: Mon, 5 Aug 2019 17:42:31 +0200 Subject: [PATCH 788/872] Add 3 dotnet tools (#1092) * Add Fusion++, RepoZ and dnSpy * Update dotnet-developer-projects.md Co-Authored-By: Ron Petrusha * Update dotnet-developer-projects.md Co-Authored-By: Ron Petrusha * Update dotnet-developer-projects.md Co-Authored-By: Ron Petrusha --- dotnet-developer-projects.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index f6ae97926..7564f0e3d 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -249,12 +249,14 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [CInject](https://github.com/punitganshani/CodeInject) - A tool to inject your C#/VB.NET code into existing .NET assemblies and executables * [CppSharp](https://github.com/mono/CppSharp) - C/C++ bindings generation for .NET. * [Crawler-Lib Build Tools](http://download.crawler-lib.net/BuildTools/) - [A PowerShell based toolbox](http://www.crawler-lib.net/build-tools) for automating the software build process, autmated testing and integration. + * [dnSpy](https://github.com/0xd4d/dnSpy) - A .NET decompiler, debugger, and assembly editor that lets you edit and debug assemblies even if you don't have their source code. * [FAKE](http://fsharp.github.io/FAKE/) - Build automation system with capabilities which are similar to make and rake. * [FlubuCore](https://github.com/flubu-core/flubu.core) - A cross platform build and deployment automation system for building projects and executing deployment scripts using C# code. * [Fody](https://github.com/Fody/Fody) - Extensible tool for weaving .NET assemblies. * [FsEye](https://github.com/swensensoftware/fseye) - A visual object tree inspector for the F# Interactive. * [FsharpLint](https://github.com/fsprojects/FSharpLint) - Lint tool for F#. * [FsPickler](https://github.com/nessos/FsPickler) - Serialization library that facilitates the distribution of .NET objects. + * [Fusion++](https://github.com/awaescher/Fusion) - A modern alternative to the Microsoft Assembly Binding Log Viewer (FUSLOGVW.exe). * [GitLink](https://github.com/GitTools/GitLink) - Command-line tool to make .NET open source accessible without the need for a symbols server * [GitVersion](https://github.com/GitTools/GitVersion) - Use convention to derive a SemVer product version from a GitFlow based repository. * [Glimpse](https://github.com/Glimpse/Glimpse) - Providing real time diagnostics & insights to the fingertips of hundreds of thousands of developers daily. @@ -269,6 +271,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [Polly](https://github.com/App-vNext/Polly) - A resilience and transient-fault-handling library that allows developers to express policies such as Retry, Circuit Breaker, Timeout, Bulkhead Isolation, and Fallback in a fluent and thread-safe manner. * [Protobuf-net](https://github.com/mgravell/protobuf-net) - A .NET implementation of protobuf, allowing you to serialize your .NET objects efficiently and easily. * [Quick Diagram Tool for C#](https://github.com/realvizu/QuickDiagram) - Code visualization tool for C#. + * [RepoZ](https://github.com/awaescher/RepoZ) - A zero-conf git repository hub for Windows and macOS with Windows Explorer and CLI enhancements. * [scriptcs](https://github.com/scriptcs/scriptcs) - scriptcs makes it easy to write and execute C# with a simple text editor. * [Snoop WPF](https://github.com/cplotts/snoopwpf) - Snoop - The WPF Spy Utility * [Sql Bulk Copy Sync](https://github.com/WCOMAB/SqlBulkSync) - A lightweight, performant non-intrusive SQL Server data sync tool. From 525598448f2bf157f2ba751d647ed07b1b1e5467 Mon Sep 17 00:00:00 2001 From: padmasrid <38444564+padmasrid@users.noreply.github.com> Date: Fri, 9 Aug 2019 15:50:11 -0700 Subject: [PATCH 789/872] Added Note to README.md (#1094) * updated readme * updated readme --- releases/net48/README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/releases/net48/README.md b/releases/net48/README.md index 43a6d4381..0f0253466 100644 --- a/releases/net48/README.md +++ b/releases/net48/README.md @@ -22,3 +22,5 @@ You can learn about the changes made in the .NET Framework 4.8. - [WPF](dotnet48-changes.md#wpf) - [Workflow](dotnet48-changes.md#workflow) +NOTE: .NET Framework 4.8 will be available on Windows Update, Windows Server Update Services (WSUS) and Microsoft Update Catalog soon. However, if you have a business requirement to temporarily block the automatic installation through Windows Update in your managed environment, you can refer to [KB4516563](https://support.microsoft.com/en-us/help/4516563) for guidance. + From e100ea8f0a52f7a940b7b5113c02c3491b0f3ca9 Mon Sep 17 00:00:00 2001 From: padmasrid <38444564+padmasrid@users.noreply.github.com> Date: Tue, 13 Aug 2019 14:02:35 -0700 Subject: [PATCH 790/872] .NET 4.8 WU Updates (#1095) * updated readme * updated readme * .NET 4.8 WU updates * Update releases/net48/README.md Co-Authored-By: Ron Petrusha * Update releases/net48/KnownIssues/wpf-pma-window-drag.md Co-Authored-By: Ron Petrusha * Update releases/net48/dotnet48-changes.md Co-Authored-By: Ron Petrusha * Update releases/net48/dotnet48-changes.md Co-Authored-By: Ron Petrusha * Update releases/net48/dotnet48-changes.md Co-Authored-By: Ron Petrusha * Update releases/net48/dotnet48-changes.md Co-Authored-By: Ron Petrusha --- releases/net48/KnownIssues/wpf-pma-window-drag.md | 3 +++ releases/net48/README.md | 3 ++- releases/net48/dotnet48-changes.md | 8 ++++++++ releases/net48/dotnet48-known-issues.md | 2 +- 4 files changed, 14 insertions(+), 2 deletions(-) diff --git a/releases/net48/KnownIssues/wpf-pma-window-drag.md b/releases/net48/KnownIssues/wpf-pma-window-drag.md index b68e59cac..35d6fb0fa 100644 --- a/releases/net48/KnownIssues/wpf-pma-window-drag.md +++ b/releases/net48/KnownIssues/wpf-pma-window-drag.md @@ -5,3 +5,6 @@ A user running a WPF application that enables the Per-Monitor DPI awareness feat ## Cause This issue is caused by a calculation error when resizing and placing the window after switching DPI. + +## Resolution +This issue is being tracked at https://github.com/dotnet/wpf/issues/967. diff --git a/releases/net48/README.md b/releases/net48/README.md index 0f0253466..64895f95c 100644 --- a/releases/net48/README.md +++ b/releases/net48/README.md @@ -4,6 +4,7 @@ You can learn about the changes made in the .NET Framework 4.8. - [Download](http://go.microsoft.com/fwlink/?LinkId=2085155) - [.NET Framework 4.8 RTM Announcement blog post](https://go.microsoft.com/fwlink/?linkid=2054306) +- [.NET Framework 4.8 Windows Update Release Blog Post](https://go.microsoft.com/fwlink/?linkid=2100817) - [Release notes](dotnet48-changes.md) - [Application compatibility](https://go.microsoft.com/fwlink/?linkid=2053971) - [API changes](dotnet48-api-changes.md) @@ -22,5 +23,5 @@ You can learn about the changes made in the .NET Framework 4.8. - [WPF](dotnet48-changes.md#wpf) - [Workflow](dotnet48-changes.md#workflow) -NOTE: .NET Framework 4.8 will be available on Windows Update, Windows Server Update Services (WSUS) and Microsoft Update Catalog soon. However, if you have a business requirement to temporarily block the automatic installation through Windows Update in your managed environment, you can refer to [KB4516563](https://support.microsoft.com/en-us/help/4516563) for guidance. +NOTE: .NET Framework 4.8 will be available on Windows Update, Windows Server Update Services (WSUS), and Microsoft Update Catalog soon. However, if you have a business requirement to temporarily block the automatic installation through Windows Update in your managed environment, you can refer to [KB4516563](https://support.microsoft.com/en-us/help/4516563) for guidance. diff --git a/releases/net48/dotnet48-changes.md b/releases/net48/dotnet48-changes.md index e4b6dab56..eb316080c 100644 --- a/releases/net48/dotnet48-changes.md +++ b/releases/net48/dotnet48-changes.md @@ -14,6 +14,7 @@ * Fixed handling of multi-value HTTP headers that may affect multipart data processing. [726155, System.Web.dll, Bug, Build:3734] * For client applications (winforms, WPF, or console apps, etc) the ASP.NET Client Application Services API’s have been hardened against potentially malicious JSON payloads. [727703, System.Web.dll, Bug, Build:3734] * Fixed an issue introduced in ASP.NET 4.7, where the unexpected removal of a particular type of cache item can result in an orphaned *.delete file that prevents web applications from running. [750653, System.Web.dll, Bug, Build:3734] +* Fixed System.Web.Caching initialization bug when using ASP.NET cache on machines without IIS. [889110, System.Web.dll, Bug, Build 3928] ## BCL @@ -267,6 +268,10 @@ In order for the application to benefit from these changes, the application shou * With the fix applied, Chart control shows the focus indicator and can be focused using mouse. User is able to access information from Chart control more effectively using assistive technologies. In order for the application to benefit from these changes, the application should be recompiled to target .NET framework 4.8 or the application should explicitly opt-in into all accessibility app context switches in the app.config file. [827003, System.Windows.Forms.dll, Bug, Build:3761] * Grid error dialog in the property browser (of VS) doesn't support PMA mode yet. Hence, Fixed it to show up as “SystemAware” only dialog when the process is in PMV2 mode. This behavior may change in the future release. [827142, System.Windows.Forms.dll, Bug, Build:3761] +* Fixed the ability to select ComboBox edit field text using mouse down + move. [853381, System.Windows.Forms.dll, Bug, Build 3928] +* Fixed the issue with interaction between a WPF user control and the hosting WinForms app when processing keyboard input. [899206, WindowsFormsIntegration.dll, Bug, Build 3928] +* Fixed the issue with Narrator/NVDA announcing of PropertyGrid’s ComboBox expanding and collapsing action. [792617, System.Windows.Forms.dll, Bug, Build 3928] +* Fixed the issue with rendering “…” button of PropertyGrid control in HC mode to draw button background and dots contrasted. [792780, System.Windows.Forms.dll, Bug, Build 3928] ## WPF @@ -346,6 +351,9 @@ On .NET Framework Versions 4.7.2 and older, applications must opt in to enable t * Fixed an accessibility issue when replacing an item in a collection with another item that compares as equal. [774503, PresentationFramework.dll, Bug, Build:3761] * Added an AppContext switch Switch.System.Windows.Automation.Peers.ItemAutomationPeerKeepsItsItemAlive that opts-out of part of an earlier memory leak fix (172291) by changing ItemAutomationPeer's reference to its item from weak to strong. This re-introduces some of the leaks, but can fix problems in custom automation implementations that tactically assume a strong reference. For example, a custom automation peer (for an ItemsControl) that implements its own logic for re-using its item peers is likely to have a problem when an item X in the underlying collection is replaced by a "separate-but-equal" item X' - a different object where Object.Equals(X, X') is true. [801226, PresentationFramework.dll, Bug, Build:3761] * Fixed an issue involving bindings with DataContext explicitly on the binding path.  When DataContext changes to {DisconnectedItem}, the binding should not pass that value to user code like converters, property-change handlers, etc. [801039, PresentationFramework.dll, Bug, Build:3761] +* Fixed a handle leak during creation of a Window in WPF applications that are manifested for Per Monitor DPI V2 Awareness. This leak could lead to extraneous GC.Collect calls that can impact performance in Window creation scenarios. [845699, PresentationFramework.dll, Bug, Build 3928] +* Fixed a regression caused by the bug fix involving bindings with DataContext explicitly on the binding path. [850536, PresentationFramework.dll, Bug, Build 3928] +* Fixed a crash due to an ArgumentNullException when loading a DataGrid containing a ComboBox while automation is active. This might occur, for example, when navigating Visual Studio to the Text Editor\C#\Code Style\Naming page in Tools\Options. [801039, PresentationFramework.dll, Bug, Build 3928] ## WorkFlow diff --git a/releases/net48/dotnet48-known-issues.md b/releases/net48/dotnet48-known-issues.md index 127442bc3..446473175 100644 --- a/releases/net48/dotnet48-known-issues.md +++ b/releases/net48/dotnet48-known-issues.md @@ -8,6 +8,6 @@ This document lists the known issues that you may experience after you install t - [780675 - WPF - Per-Monitor DPI-aware WPF applications position mouse cursor incorrectly when dragging between monitors](https://github.com/Microsoft/dotnet/blob/master/releases/net48/KnownIssues/wpf-pma-window-drag.md) -- [850536 - WPF - Binding stops working after an item container leaves the visual tree](https://github.com/Microsoft/dotnet/blob/master/releases/net48/KnownIssues/wpf-binding-issue.md) + From 44f9697b14a780b2ad2758cadf2f6e71cd685f8f Mon Sep 17 00:00:00 2001 From: Ron Petrusha Date: Tue, 20 Aug 2019 22:12:38 +0000 Subject: [PATCH 791/872] Removed en-us from URLs (#1098) --- ...ificate-validation-for-Net.Tcp-certificate-authentication.md | 2 +- Documentation/compatibility/interop-event-handlers-safearray.md | 2 +- ...m-isselected-binding-issue-with-observablecollection_move.md | 2 +- .../system_threading_timer_lock_contention_improvement.md | 2 +- .../compatibility/winforms-accessibility-changes-48.md | 2 +- Documentation/compatibility/winforms-hdpi-changes-48.md | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/Documentation/compatibility/WCF-Improved-WCF-chain-trust-certificate-validation-for-Net.Tcp-certificate-authentication.md b/Documentation/compatibility/WCF-Improved-WCF-chain-trust-certificate-validation-for-Net.Tcp-certificate-authentication.md index 5c36dbd82..3445258b5 100644 --- a/Documentation/compatibility/WCF-Improved-WCF-chain-trust-certificate-validation-for-Net.Tcp-certificate-authentication.md +++ b/Documentation/compatibility/WCF-Improved-WCF-chain-trust-certificate-validation-for-Net.Tcp-certificate-authentication.md @@ -10,7 +10,7 @@ Minor NotPlanned ### Change Description -.NET Framework 4.7.2 improves chain trust certificate validation when using certificate authentication with transport security with WCF. With this improvement, client certificates that are used to authenticate to a server must be configured for client authentication. Similarly server certificates that are for the authenticating a server must be configured for server authentication. With this change, if the root certificate is disabled, the certificate chain validation fails. The same change was also made to .NET Framework 3.5 and later versions via Windows security roll-up. You can find more information [here](https://support.microsoft.com/en-us/help/4055269/security-only-update-for-net-framework-3-5-1-4-5-2-4-6-4-6-1-4-6-2-4-7). +.NET Framework 4.7.2 improves chain trust certificate validation when using certificate authentication with transport security with WCF. With this improvement, client certificates that are used to authenticate to a server must be configured for client authentication. Similarly server certificates that are for the authenticating a server must be configured for server authentication. With this change, if the root certificate is disabled, the certificate chain validation fails. The same change was also made to .NET Framework 3.5 and later versions via Windows security roll-up. You can find more information [here](https://support.microsoft.com/help/4055269/security-only-update-for-net-framework-3-5-1-4-5-2-4-6-4-6-1-4-6-2-4-7). This change is on by default and can be turned off by a configuration setting. diff --git a/Documentation/compatibility/interop-event-handlers-safearray.md b/Documentation/compatibility/interop-event-handlers-safearray.md index b8afffd72..db356a1e2 100644 --- a/Documentation/compatibility/interop-event-handlers-safearray.md +++ b/Documentation/compatibility/interop-event-handlers-safearray.md @@ -10,7 +10,7 @@ Minor NotPlanned ### Change Description -In the .NET Framework 4.7.2 and earlier versions, a ByRef [SafeArray](https://docs.microsoft.com/en-us/windows/desktop/api/oaidl/ns-oaidl-safearray) parameter on a COM event would fail to marshal back to native code. With this change the [SafeArray](https://docs.microsoft.com/en-us/windows/desktop/api/oaidl/ns-oaidl-safearray) is now marshalled successfully. +In the .NET Framework 4.7.2 and earlier versions, a ByRef [SafeArray](https://docs.microsoft.com/windows/desktop/api/oaidl/ns-oaidl-safearray) parameter on a COM event would fail to marshal back to native code. With this change the [SafeArray](https://docs.microsoft.com/windows/desktop/api/oaidl/ns-oaidl-safearray) is now marshalled successfully. - [ x ] Quirked - [ ] Build-time break diff --git a/Documentation/compatibility/listboxitem-isselected-binding-issue-with-observablecollection_move.md b/Documentation/compatibility/listboxitem-isselected-binding-issue-with-observablecollection_move.md index 79d69c686..e23970549 100644 --- a/Documentation/compatibility/listboxitem-isselected-binding-issue-with-observablecollection_move.md +++ b/Documentation/compatibility/listboxitem-isselected-binding-issue-with-observablecollection_move.md @@ -43,6 +43,6 @@ Framework. ### Category Windows Presentation Foundation (WPF) -[More information](https://social.msdn.microsoft.com/Forums/en-US/afcbc8b3-a2f2-41e4-b402-2efc9eab1ffe/listboxitem-isselected-binding-issue-with-observablecollectionlttgtmove?forum=wpf) +[More information](https://social.msdn.microsoft.com/Forums/afcbc8b3-a2f2-41e4-b402-2efc9eab1ffe/listboxitem-isselected-binding-issue-with-observablecollectionlttgtmove?forum=wpf) diff --git a/Documentation/compatibility/system_threading_timer_lock_contention_improvement.md b/Documentation/compatibility/system_threading_timer_lock_contention_improvement.md index 9e57384e2..3b2fdb074 100644 --- a/Documentation/compatibility/system_threading_timer_lock_contention_improvement.md +++ b/Documentation/compatibility/system_threading_timer_lock_contention_improvement.md @@ -22,7 +22,7 @@ For apps that run under .NET Framework 4.8, an opt-in configuration section may ### Recommended Action -Applications running on .NET Framework 4.8 can opt into this change by setting the following [`AppContext` switch](https://docs.microsoft.com/en-us/dotnet/api/system.appcontext?view=netframework-4.7.2#appcontext-for-library-consumers): +Applications running on .NET Framework 4.8 can opt into this change by setting the following [`AppContext` switch](https://docs.microsoft.com/dotnet/api/system.appcontext?view=netframework-4.7.2#appcontext-for-library-consumers): `Switch.System.Threading.UseNetCoreTimer=true` ### Affected APIs diff --git a/Documentation/compatibility/winforms-accessibility-changes-48.md b/Documentation/compatibility/winforms-accessibility-changes-48.md index f3cdb5ef1..ac3a22613 100644 --- a/Documentation/compatibility/winforms-accessibility-changes-48.md +++ b/Documentation/compatibility/winforms-accessibility-changes-48.md @@ -71,7 +71,7 @@ __Improved LinkLabel Accessibility support__ __Improved ProgressBar Accessibility support__ - Enabled UI Automation support for the control with the ability to use UI Automation notifications and other UI Automation features. Developers are now able to use UI Automation notifications which Narrator can announce to indicate progress. -For an overview of UI automation events overview, including UI automation notification events, see the [UI Automation Events Overview](https://docs.microsoft.com/en-us/windows/desktop/WinAuto/uiauto-eventsoverview). +For an overview of UI automation events overview, including UI automation notification events, see the [UI Automation Events Overview](https://docs.microsoft.com/windows/desktop/WinAuto/uiauto-eventsoverview). __Improved PropertyGrid Accessibility support__ - Enabled UI Automation support for the control, with the ability to use UI Automation notifications and other UI Automation features. diff --git a/Documentation/compatibility/winforms-hdpi-changes-48.md b/Documentation/compatibility/winforms-hdpi-changes-48.md index fce9613da..a7a28443b 100644 --- a/Documentation/compatibility/winforms-hdpi-changes-48.md +++ b/Documentation/compatibility/winforms-hdpi-changes-48.md @@ -25,7 +25,7 @@ __How to opt in or out of these changes__ In order for the application to benefit from these changes, it must run on the .NET Framework 4.8. The application can opt in to these changes in either of the following ways: - It is recompiled to target the .NET Framework 4.8. These high DPI improvement changes are enabled by default on Windows Forms applications that target the .NET Framework 4.8. -- It targets the .NET Framework 4.7.2 or earlier versions and opts in to this new behaviour by adding the following [Windows Forms Configuration Section](https://docs.microsoft.com/en-us/dotnet/framework/configure-apps/file-schema/winforms/) to the app config file and then adding the required flag to opt-in specific feature improvements. +- It targets the .NET Framework 4.7.2 or earlier versions and opts in to this new behaviour by adding the following [Windows Forms Configuration Section](https://docs.microsoft.com/dotnet/framework/configure-apps/file-schema/winforms/) to the app config file and then adding the required flag to opt-in specific feature improvements. ```xml From 33f411aa54e2ef58cbf11957133e028d9f978e79 Mon Sep 17 00:00:00 2001 From: Tom McDonald Date: Fri, 23 Aug 2019 08:19:14 -0700 Subject: [PATCH 792/872] Add UWP6.2.9 release notes (#1100) --- releases/UWP/net-native2.2/README.md | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/releases/UWP/net-native2.2/README.md b/releases/UWP/net-native2.2/README.md index 0ce522630..cfad18130 100644 --- a/releases/UWP/net-native2.2/README.md +++ b/releases/UWP/net-native2.2/README.md @@ -4,6 +4,21 @@ You can see what was included in each .NET Native 2.2 ([Microsoft.NETCore.Univer When using Visual Studio, these packages require Visual Studio 2019 or Visual Studio 2017 Version 15.9. +### UWP 6.2.9 (August 23rd, 2019) + +- Reduce optimizer maximum thread count for Store compilations to increase ingestion reliability +- Fix issue in the analysis engine related to unsafe patterns that could lead to NullReferenceException (https://github.com/dotnet/core/issues/2614) +- Fix gatekeeper errors due to bad System.Private.Uri AssemblyVersion +- Fix "Invalid IL" warning from some unsafe code patterns +- Fix type system issue regarding parameter constraints on methods (https://github.com/SixLabors/ImageSharp/issues/828) +- Fix interop compilation failure for gRPC Authentication package (https://github.com/grpc/grpc/issues/18188) +- Fix intop code generation failure for System.IO.ISoreafeItemHandleAccess.Create (https://developercommunity.visualstudio.com/content/problem/310750/release-compile-fails-due-to-errors-in-mcg-generat.html) +- Adjust garbage collection timing during interop to eliminate memory increase in UWP app when navigating between pages +- Fix issue leading to Access Violation in the garbage collector caused by ARM32 volatile registers not being populated correctly +- Fix reference assemblies for WCF so they have the expected public key (https://github.com/dotnet/wcf/issues/3743) +- Fix signing issue leading to ARM64 debugging failures on ARM64 WCOS +- Fix issue causing Visual Studio 2017 hangs during debugging sessions + ### UWP 6.2.8 (March 13th, 2019) - Fixes package publishing issues From c58a1d1a4dd064069bb3a9b2987da2eea4259ae5 Mon Sep 17 00:00:00 2001 From: Tom McDonald Date: Tue, 27 Aug 2019 12:31:13 -0700 Subject: [PATCH 793/872] Remove ARM64 debugging as it was intended for VS Dev16.3 readme (#1102) --- releases/UWP/net-native2.2/README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/releases/UWP/net-native2.2/README.md b/releases/UWP/net-native2.2/README.md index cfad18130..ead99355a 100644 --- a/releases/UWP/net-native2.2/README.md +++ b/releases/UWP/net-native2.2/README.md @@ -16,7 +16,6 @@ When using Visual Studio, these packages require Visual Studio 2019 or Visual St - Adjust garbage collection timing during interop to eliminate memory increase in UWP app when navigating between pages - Fix issue leading to Access Violation in the garbage collector caused by ARM32 volatile registers not being populated correctly - Fix reference assemblies for WCF so they have the expected public key (https://github.com/dotnet/wcf/issues/3743) -- Fix signing issue leading to ARM64 debugging failures on ARM64 WCOS - Fix issue causing Visual Studio 2017 hangs during debugging sessions ### UWP 6.2.8 (March 13th, 2019) From 54f6a00a796e7eb92c5044060dc0ff32ff04d46e Mon Sep 17 00:00:00 2001 From: Jordan Rowles Date: Tue, 3 Sep 2019 16:56:48 +0100 Subject: [PATCH 794/872] Update dotnet-developer-projects.md (#1103) * Update dotnet-developer-projects.md * Update dotnet-developer-projects.md Co-Authored-By: Ron Petrusha --- dotnet-developer-projects.md | 1 + 1 file changed, 1 insertion(+) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 7564f0e3d..3973b391c 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -113,6 +113,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [Automatonymous](https://github.com/MassTransit/Automatonymous) - An asynchronous state machine engine with messaging support. * [Bing.RestClient](https://github.com/AdvancedREI/Bing.RestClient) - Access the Bing REST APIs from a unified client. * [BoxKite.Twitter](https://github.com/NickHodge/BoxKite.Twitter/) - Twitter .NET Client Library for the 1.1 Twitter API, incorporating REST API, User streaming and Search Streaming. Uses Reactive Extensions (Rx). + * [CarbonIntensityUK](https://github.com/jordansrowles/CarbonIntensityUK) - Asynchronous wrapper around the [Carbon Intensity API](https://api.carbonintensity.org.uk/) provided by the National Grid ESO. * [Castle.LoggingFacility.MsLogging](https://github.com/volosoft/castle-logging-ms-adapter) - An adapter library for Castle logging facility to support Microsoft.Extensions.Logging integration. * [Castle Windsor ASP.NET Core / Microsoft.Extensions.DependencyInjection Adapter](https://github.com/volosoft/castle-windsor-ms-adapter) - This library is a Castle Windsor adapter for the Microsoft.Extensions.DependencyInjection NuGet package. * [Cecil](https://github.com/jbevain/cecil) - A popular library to read, modify and write .NET binaries. From befbb710333317294ada1ad89e3e1914bf234ecb Mon Sep 17 00:00:00 2001 From: tagcode Date: Tue, 3 Sep 2019 19:00:49 +0300 Subject: [PATCH 795/872] . (#1104) --- dotnet-developer-projects.md | 1 + 1 file changed, 1 insertion(+) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 3973b391c..9dc280eb6 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -155,6 +155,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [Kentor.AuthServices](https://github.com/KentorIT/authservices) - A SAML2 Service Provider for .NET. * [Language-ext](https://github.com/louthy/language-ext) - C# 6.0+ functional language extensions. Make C# more like F# and other functional languages * [leveldb-sharp](https://github.com/meebey/leveldb-sharp) - cross-platform C# binding for LevelDB + * [Lexical.FileProvider](http://lexical.fi/FileProvider/index.html) - Various IFileProvider implementations and utilities. * [Lexical.Localization](http://lexical.fi/Localization/index.html) - Localization class library for .NET. * [LibGit2Sharp](https://github.com/libgit2/libgit2sharp) - C# language bindings for the [LibGit2](https://github.com/libgit2/libgit2) implementation of Git. * [LINQ Extensions](https://github.com/TommasoScalici/LINQExtensions) - LINQ extensions for .NET is a collection of useful extensions methods that extends LINQ's capability. There are methods for combinatorics and sequence analysis, generation and manipulation. From 90c04358f39da35094220856dec275bc20216861 Mon Sep 17 00:00:00 2001 From: Niclas Kristek Date: Wed, 4 Sep 2019 23:24:48 +0200 Subject: [PATCH 796/872] Add a link to the Smaragd repository (#1106) * Add a link to the Smaragd repository * Change description of Smaragd to the one suggested Co-Authored-By: Ron Petrusha --- dotnet-developer-projects.md | 1 + 1 file changed, 1 insertion(+) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 9dc280eb6..dbcce0e2a 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -243,6 +243,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [Radical](https://github.com/RadicalFx/radical) - An infrastructure framework whose primary role is to help in the development of composite WPF/Silverlight/WP/WinRT applications based on the Model View ViewModel pattern. * [ReactiveUI](https://github.com/reactiveui/ReactiveUI) - An MVVM framework that integrates with the Reactive Extensions for .NET to create elegant, testable User Interfaces that run on any mobile or desktop platform. * [Simple Mvvm Toolkit](https://github.com/SimpleMvvm) - Provides a simple framework and set of tools for getting up to speed quickly with applications based on the MVVM design pattern. + * [Smaragd](https://github.com/nkristek/Smaragd) - A platform-independent, lightweight library for developing .NET applications using the MVVM architecture. * [Win Application Framework (WAF)](https://github.com/jbe2277/waf) - A lightweight Framework that helps you to create well structured XAML Applications. It supports you in applying a Layered Architecture and the Model-View-ViewModel pattern. ## Tools From 7cdf34dec038c4da4d14735a34ab259704ec4a1e Mon Sep 17 00:00:00 2001 From: crydotsnake <39345336+crydotsnake@users.noreply.github.com> Date: Fri, 4 Oct 2019 17:02:50 +0200 Subject: [PATCH 797/872] Update Datum in LICENSE (#1118) --- LICENSE | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/LICENSE b/LICENSE index a70e8cf66..b73b4a129 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ The MIT License (MIT) -Copyright (c) 2018 Microsoft +Copyright (c) 2019 Microsoft Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal From cdabff80c1ecc0a1706c5125680ed7b6466646a5 Mon Sep 17 00:00:00 2001 From: ajanyan <31389762+ajanyan@users.noreply.github.com> Date: Sat, 5 Oct 2019 04:12:21 +0530 Subject: [PATCH 798/872] Improved readability (#1119) --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 6752f8314..e8f069b0c 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ This repository is a starting point to learn about and engage in .NET and .NET open source projects. -This repo is not an official .NET Framework support location, however, we will respond to issues filed here as best we can. Please file .NET Core product issues at [dotnet/core](https://github.com/dotnet/core/issues) and ASP.NET Core product issues at [aspnet/home](https://github.com/aspnet/home/issues). +This repository is not an official .NET Framework support location, however, we will respond to issues filed here as best we can. Please file .NET Core product issues at [dotnet/core](https://github.com/dotnet/core/issues) and ASP.NET Core product issues at [aspnet/home](https://github.com/aspnet/home/issues). You can try out an early access release of the .NET Framework at the [.NET Framework Early Access](https://github.com/microsoft/dotnet-framework-early-access) website. From 40d159c81ebf1d3e3ca6361970986be23237ec88 Mon Sep 17 00:00:00 2001 From: Hyeonguk Ryu Date: Sat, 19 Oct 2019 22:36:02 +0900 Subject: [PATCH 799/872] Change from HTTP to HTTPS --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index e8f069b0c..6954bef19 100644 --- a/README.md +++ b/README.md @@ -66,10 +66,10 @@ There are additional templates available for `dotnet new`. For more information, ## .NET Foundation Many .NET open source projects are part of the -[.NET Foundation](http://www.dotnetfoundation.org/projects). Microsoft has contributed many projects, including ASP.NET Core and +[.NET Foundation](https://www.dotnetfoundation.org/projects). Microsoft has contributed many projects, including ASP.NET Core and .NET Core. You may want to consider [joining the .NET Foundation](https://dotnetfoundation.org/get-involved). -Check out the [.NET Foundation Forums](http://forums.dotnetfoundation.org/) to see what others are talking about, or start a new discussion to ask a question or make a point. +Check out the [.NET Foundation Forums](https://forums.dotnetfoundation.org/) to see what others are talking about, or start a new discussion to ask a question or make a point. ## License From 44c1391dc897b89ba015391823ad197c701d86d3 Mon Sep 17 00:00:00 2001 From: Toni Kalajainen Date: Tue, 22 Oct 2019 15:30:06 +0300 Subject: [PATCH 800/872] +Lexical.FileSystem --- dotnet-developer-projects.md | 1 + 1 file changed, 1 insertion(+) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index dbcce0e2a..59925843f 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -156,6 +156,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [Language-ext](https://github.com/louthy/language-ext) - C# 6.0+ functional language extensions. Make C# more like F# and other functional languages * [leveldb-sharp](https://github.com/meebey/leveldb-sharp) - cross-platform C# binding for LevelDB * [Lexical.FileProvider](http://lexical.fi/FileProvider/index.html) - Various IFileProvider implementations and utilities. + * [Lexical.FileSystem](http://lexical.fi/FileSystem/index.html) - Virtual IFileSystem interfaces, and implementations. Adaptable with IFileProvider. * [Lexical.Localization](http://lexical.fi/Localization/index.html) - Localization class library for .NET. * [LibGit2Sharp](https://github.com/libgit2/libgit2sharp) - C# language bindings for the [LibGit2](https://github.com/libgit2/libgit2) implementation of Git. * [LINQ Extensions](https://github.com/TommasoScalici/LINQExtensions) - LINQ extensions for .NET is a collection of useful extensions methods that extends LINQ's capability. There are methods for combinatorics and sequence analysis, generation and manipulation. From 1d1de6d2ed37f6bf2c93839f8a5a36d416effda9 Mon Sep 17 00:00:00 2001 From: Igor Velikorossov Date: Tue, 5 Nov 2019 19:51:50 +1100 Subject: [PATCH 801/872] Update dotnet-developer-projects.md Add a link to Git Extensions project --- dotnet-developer-projects.md | 1 + 1 file changed, 1 insertion(+) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index dbcce0e2a..a4c66a9d5 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -259,6 +259,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [FsEye](https://github.com/swensensoftware/fseye) - A visual object tree inspector for the F# Interactive. * [FsharpLint](https://github.com/fsprojects/FSharpLint) - Lint tool for F#. * [FsPickler](https://github.com/nessos/FsPickler) - Serialization library that facilitates the distribution of .NET objects. + * [Git Extensions](https://github.com/gitextensions/gitextensions) - A feature packed and extensible Windows UI tool for managing git repositories, it also integrates with Windows Explorer and Microsoft Visual Studio (2015/2017/2019). * [Fusion++](https://github.com/awaescher/Fusion) - A modern alternative to the Microsoft Assembly Binding Log Viewer (FUSLOGVW.exe). * [GitLink](https://github.com/GitTools/GitLink) - Command-line tool to make .NET open source accessible without the need for a symbols server * [GitVersion](https://github.com/GitTools/GitVersion) - Use convention to derive a SemVer product version from a GitFlow based repository. From d89c548023093213123e0886ee13faa9fe5a37b2 Mon Sep 17 00:00:00 2001 From: Maxim Dobroselsky Date: Thu, 14 Nov 2019 20:26:10 +0300 Subject: [PATCH 802/872] Add DryWetMIDI to dotnet-developer-projects.md --- dotnet-developer-projects.md | 1 + 1 file changed, 1 insertion(+) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index f9c4498b2..a9807e8eb 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -135,6 +135,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [DnsClient](https://github.com/MichaCo/DnsClient.NET) - A high performant DNS query/lookup library - [Home](http://dnsclient.michaco.net) * [DotNetOpenAuth](https://github.com/DotNetOpenAuth) - Library that adds support for your site visitors to login with their OpenIDs by just dropping an ASP.NET control onto your page. * [DropboxRestAPI](https://github.com/saguiitay/DropboxRestAPI) - DropBox .Net Client Library. + * [DryWetMIDI](https://github.com/melanchall/drywetmidi) - .NET library to read, write, process MIDI files and to work with MIDI devices. * [DynamicData](https://github.com/RolandPheasant/DynamicData) - Brings the power of Rx to collections. * [Enums.NET](https://github.com/TylerBrinkley/Enums.NET) - High-performance type-safe .NET enum utility library. * [Excel-DNA](https://github.com/Excel-DNA/ExcelDna) - Create high-performance, easy to deploy Excel add-ins with .NET - [Home](http://excel-dna.net) From 2a88cfb4bc71f56c61424e5ca08cc9a0c8f2ee28 Mon Sep 17 00:00:00 2001 From: Maira Wenzel Date: Thu, 21 Nov 2019 20:00:33 -0800 Subject: [PATCH 803/872] fix doc bug --- .../compatibility/wpf-databinding-should-use-key-not-indexer.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Documentation/compatibility/wpf-databinding-should-use-key-not-indexer.md b/Documentation/compatibility/wpf-databinding-should-use-key-not-indexer.md index c140ed7f8..6fcafc963 100644 --- a/Documentation/compatibility/wpf-databinding-should-use-key-not-indexer.md +++ b/Documentation/compatibility/wpf-databinding-should-use-key-not-indexer.md @@ -16,7 +16,7 @@ Fixed [Binding's](xref:System.Windows.Data.Binding) incorrect use of IList index - [ ] Build-time break ### Recommended Action -In order for the application to benefit from this change, it must run on the .NET Framework 4.7.2 or later, and it must opt in to the change by adding the following [AppContext switch](https://docs.microsoft.com/dotnet/framework/configure-apps/file-schema/runtime/appcontextswitchoverrides-element) to the `` section of the app config file and setting it to `false`: +In order for an application that targets an older version to benefit from this change, it must run on the .NET Framework 4.8 or later, and it must opt in to the change by adding the following [AppContext switch](https://docs.microsoft.com/dotnet/framework/configure-apps/file-schema/runtime/appcontextswitchoverrides-element) to the `` section of the app config file and setting it to `false`: ```xml From a19239e6e1a3ea87b4d0fa5bcba6d7e34fff6b61 Mon Sep 17 00:00:00 2001 From: Badrish Chandramouli Date: Tue, 3 Dec 2019 16:33:10 -0800 Subject: [PATCH 804/872] Update dotnet-developer-projects.md Added references to two high-performance components from Microsoft Research: * FasterLog: A high-performance reliable concurrent messaging library * FASTER: A latch-free key-value store and caching library over a record-oriented log --- dotnet-developer-projects.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index f9c4498b2..db2697b59 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -94,6 +94,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [Brighter](https://github.com/iancooper/Paramore) - A Command Dispatcher and Command Processor library with support for Work or Task Queues over different MoM implementations such as RabbitMQ. * [CAP](https://github.com/dotnetcore/CAP) - An EventBus with local persistent message functionality for RabbitMQ or Kafka. * [EasyNetQ](https://github.com/mikehadlow/EasyNetQ) - An easy to use .NET API for RabbitMQ. + * [FasterLog](https://github.com/microsoft/FASTER/blob/master/docs/cs/FasterLog.md): A high-performance concurrent persistent log (messaging queue) library for .NET, supporting group commit, scans, and random reads over tiered/sharded local and cloud storage. * [Lime](https://github.com/takenet/lime-csharp) - A lightweight messaging library. * [MassTransit](https://github.com/MassTransit/MassTransit) - A distributed application framework for RabbitMQ and Azure Service Bus. * [NServiceBus](https://github.com/Particular/NServiceBus) - The most popular service bus for .NET. @@ -140,6 +141,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [Excel-DNA](https://github.com/Excel-DNA/ExcelDna) - Create high-performance, easy to deploy Excel add-ins with .NET - [Home](http://excel-dna.net) * [ExtCore](https://github.com/ExtCore/ExtCore) - Free, open source and cross-platform framework for creating modular and extendable web applications based on ASP.NET Core 1.1. * [ExtraLINQ](https://github.com/mariusschulz/ExtraLINQ) - Various extension methods for working with .NET collections. + * [FASTER](https://github.com/microsoft/FASTER): A high-performance concurrent, latch-free, persistent hash key-value store and caching library (over a record log) for .NET. * [FeatureToggle](https://github.com/jason-roberts/FeatureToggle) - Simple, reliable feature toggles in .NET. * [FlatMapper](https://github.com/kappy/FlatMapper) - A library to import and export data from and to plain text files in a Linq compatible way. * [FluentBootstrap](https://github.com/somedave/FluentBootstrap) - Provides extensions, helper classes, model binding, and other goodies to help you use the Bootstrap CSS framework from .NET code. From 1aa9fb767131ce406a29a53e778390c5fd9df43f Mon Sep 17 00:00:00 2001 From: Sabah Shariq Date: Fri, 10 Jan 2020 23:11:43 -0500 Subject: [PATCH 805/872] Fixed spelling correction (#1139) --- dotnet-developer-projects.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index f9c4498b2..e84ff8e9a 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -23,8 +23,8 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C ## Languages * [Boo](https://github.com/bamboo/boo) - A .NET language similar to Python but with static typing, and many meta-programming capabilities. - * [ClojureCLR](https://github.com/clojure/clojure-clr) - A .NET implemention of the [Clojure](http://clojure.org) programming language, built on the DLR. - * [Cobra](http://cobra-language.com/source/) - Clean, high-level syntax (Boo/Python-like). Static and dynamic binding. First class support for unit tests and contracts. Compiled performance with scripting conveniences. Lambdas and closures. Extensions and mixins + * [ClojureCLR](https://github.com/clojure/clojure-clr) - A .NET implementation of the [Clojure](http://clojure.org) programming language, built on the DLR. + * [Cobra](http://cobra-language.com/source/) - Clean, high-level syntax (Boo/Python-like). Static and dynamic binding. First class support for unit tests and contracts. Compiled performance with scripting conveniences. Lambdas and closures. Extensions and mixins. * [Dynamic Language Runtime](http://www.github.com/IronLanguages/main) - A toolkit for building dynamic languages for .NET. * [Eagle](https://eagle.to) - A .NET implementation of the [Tcl](https://www.tcl.tk) programming language, built on the CLR. * [Essence#](https://github.com/EssenceSharp/cSharp) - Essence# is a fully dynamic and highly polymorphic programming language which features pervasive message passing, pervasive dynamic and strong typing, pervasive and deep reflection and pervasive object orientation. @@ -164,14 +164,14 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [Lucene.Net](https://github.com/apache/lucene.net) - A .NET full-text search engine framework that is a C# port of the popular Apache Lucene project. * [MahApps.Metro.IconPacks](https://github.com/MahApps/MahApps.Metro.IconPacks) - Some awesome icons for `WPF` and `UWP` all together. The library contains controls to use icons from [Material Design](https://materialdesignicons.com/), [Material Design Icons Light](https://github.com/Templarian/MaterialDesignLight), [Font Awesome](http://fontawesome.io/icons/), [GitHub Octicons](https://octicons.github.com/), [Modern](http://modernuiicons.com/), [Entypo+](http://www.entypo.com/) and [Simple Icons](https://simpleicons.org/). * [Math.NET Numerics](https://github.com/mathnet/mathnet-numerics) - Provides methods and algorithms for numerical computations in science, engineering and every day use. - * [Mathos Core Libary](https://github.com/MathosProject/Mathos-Project) - A library with algorithms for numerical calcultations in finance, statistics, pattern recognition, and more. + * [Mathos Core Libary](https://github.com/MathosProject/Mathos-Project) - A library with algorithms for numerical calculations in finance, statistics, pattern recognition, and more. * [Mathos Parser](https://github.com/MathosProject/Mathos-Project) - A simple parser for mathematical expressions before and at runtime. * [Mjolnir](https://github.com/hudl/Mjolnir) - [Hystrix](https://github.com/Netflix/Hystrix)-inspired fault tolerance with circuit breakers and thread pools. * [MoreLINQ](https://morelinq.github.io/) - LINQ to Objects is missing a few desirable features. This project will enhance LINQ to Objects with extra methods, in a manner which keeps to the spirit of LINQ. * [NAudio](https://github.com/naudio/NAudio) - An open source .NET audio and MIDI library. * [NEST](https://github.com/elastic/elasticsearch-net) - The official .NET client library for Elasticsearch. * [NetTopologySuite](https://github.com/NetTopologySuite) - A .NET port of the JTS Topology Suite. - * [NHunspell](http://sourceforge.net/projects/nhunspell/) - Spell Checker, Hyphenation an Theasaurus. + * [NHunspell](http://sourceforge.net/projects/nhunspell/) - Spell Checker, Hyphenation and Thesaurus. * [NModbus4](https://github.com/NModbus4/NModbus4) - Implementation of the Modbus protocol. * [NodaTime](https://nodatime.org/) - A better date and time API for .NET. * [NPOI](https://github.com/tonyqus/npoi) - An Office file formats (xls, xlsx, docx) read/write library for .NET. @@ -252,7 +252,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [Cake](https://github.com/cake-build/cake) (C# Make) - A build automation system with C#/Roslyn driven build scripts. * [CInject](https://github.com/punitganshani/CodeInject) - A tool to inject your C#/VB.NET code into existing .NET assemblies and executables * [CppSharp](https://github.com/mono/CppSharp) - C/C++ bindings generation for .NET. - * [Crawler-Lib Build Tools](http://download.crawler-lib.net/BuildTools/) - [A PowerShell based toolbox](http://www.crawler-lib.net/build-tools) for automating the software build process, autmated testing and integration. + * [Crawler-Lib Build Tools](http://download.crawler-lib.net/BuildTools/) - [A PowerShell based toolbox](http://www.crawler-lib.net/build-tools) for automating the software build process, automated testing and integration. * [dnSpy](https://github.com/0xd4d/dnSpy) - A .NET decompiler, debugger, and assembly editor that lets you edit and debug assemblies even if you don't have their source code. * [FAKE](http://fsharp.github.io/FAKE/) - Build automation system with capabilities which are similar to make and rake. * [FlubuCore](https://github.com/flubu-core/flubu.core) - A cross platform build and deployment automation system for building projects and executing deployment scripts using C# code. @@ -313,14 +313,14 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C ## Dependency Injection * [Autofac](https://github.com/autofac/Autofac) - Autofac is an addictive Inversion of Control container for .NET 4.5, Silverlight 5, Windows Store apps, and Windows Phone 8 apps. * [Castle Windsor](https://github.com/castleproject/Windsor) - A mature Inversion of Control container available for .NET and Silverlight - * [DI Feature Tests](https://github.com/ashmind/net-feature-tests) - Tests that track commmon DI features among multiple containers + * [DI Feature Tests](https://github.com/ashmind/net-feature-tests) - Tests that track common DI features among multiple containers * [dI.Hook](https://github.com/punitganshani/dI.Hook) - DI container that allows invocation using AOP * [DryIoc](https://bitbucket.org/dadhi/dryioc) - DryIoc is small, fast, capable IoC Container for .NET * [fFastInjector](https://github.com/Grax32/fFastInjector/) - fFastInjector is a high-performing dependency injector, service locator, and/or IOC (inversion of control) container. * [Funq](https://funq.codeplex.com/) - A fast DI container you can understand. (No Recent Updates - Still on CodePlex - 4/2018) * [Grace](https://github.com/ipjohnson/Grace) - Grace is a feature rich Dependency Injection container in a portable class library * [Griffin](https://github.com/jgauffin/griffin.container) - Inversion of control container with (almost) zero configuration - * [HaveBox](https://bitbucket.org/Have/havebox/wiki/Home) - HaveBox is a very fast and lightweight IoC containter. The goal is to keep it fast and light, and at the same time easy to use. + * [HaveBox](https://bitbucket.org/Have/havebox/wiki/Home) - HaveBox is a very fast and lightweight IoC container. The goal is to keep it fast and light, and at the same time easy to use. * [Hiro](https://github.com/philiplaureano/Hiro) - An ultra-lightweight, inversion of control container compiler framework * [IfInjector](https://github.com/iamahern/IfInjector) - High performance mobile micro-IoC container. * [LightCore](https://peterbucher.kilnhg.com/Code/LightCore/Group/Default?nr=) - [A lightweight dependency injection container](http://lightcore.ch/en/default.aspx) that can be used as a service locator and despite its simplicity and ease boasts numerous features. From b9d66fce878df27fc749a99558db8bf7a6e6743f Mon Sep 17 00:00:00 2001 From: Lucian Bargaoanu Date: Wed, 22 Jan 2020 12:54:31 +0200 Subject: [PATCH 806/872] Add CoreIpc https://github.com/UiPath/CoreIpc --- dotnet-developer-projects.md | 1 + 1 file changed, 1 insertion(+) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index e84ff8e9a..5dcce753a 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -126,6 +126,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [ComparerExtensions](https://github.com/jehugaleahsa/comparerextensions) - Build IComparer and IEqualityComparer objects using natural language syntax. * [Comparers](https://github.com/StephenCleary/Comparers) - Fluent syntax for building comparers (and equality comparers) and implementing object comparison. * [CoordinateSharp](https://github.com/Tronald/CoordinateSharp) - Parse or convert geographic coordinate formats and calculate location based solar/lunar information. + * [CoreIpc](https://github.com/UiPath/coreipc) - WCF-like service model API for communication over named pipes. .NET standard and node.js clients. * [Cricket](https://github.com/fsprojects/Cricket) - Actor library. * [DalSoft.RestClient](https://restclient.dalsoft.io/) - An extensible, dynamic and fluent Rest Client. Create frictionless code whilst still using the HttpClient you already know. * [DateTimeExtensions](https://github.com/kappy/DateTimeExtensions) - Common Date Time operations on the form of extensions to System.DateTime, including holidays and working days calculations on several culture locales. From e98f9c4565f1e185d6ee6fbac4c6d2dedaa5d980 Mon Sep 17 00:00:00 2001 From: Chebotov Nickolay Date: Wed, 22 Jan 2020 14:07:23 +0300 Subject: [PATCH 807/872] Update dotnet-developer-projects.md Add [Unchase.FluentPerformanceMeter](https://github.com/unchase/Unchase.FluentPerformanceMeter). --- dotnet-developer-projects.md | 1 + 1 file changed, 1 insertion(+) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index e84ff8e9a..b236ae012 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -197,6 +197,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [TimeZoneConverter](https://github.com/mj1856/TimeZoneConverter) - Lightweight library to convert quickly between IANA, Windows, and Rails time zone names. * [TimeZoneNames](https://github.com/mj1856/TimeZoneNames) - Provides a complete source of localized time zone names and abbreviations. * [TomP2P.NET](https://github.com/tomp2p/TomP2P.NET) - A P2P-based high performance key-value pair storage library for .NET. (Not Updated in 3 Years - 4/2018) + * [Unchase.FluentPerformanceMeter](https://github.com/unchase/Unchase.FluentPerformanceMeter) - An open-source and cross-platform .Net Standard 2.0 library that is designed for the method's performance measurement. * [VkSharp](https://github.com/kasthack/vksharp) - VK client library. * [WampSharp](https://github.com/Code-Sharp/WampSharp) - A C# implementation of [The Web Application Messaging Protocol](http://wamp.ws) - a protocol that provides messaging patterns of Remote Procedure Calls and Publish/Subscribe over WebSockets. * [WebApiProxy](https://github.com/faniereynders/WebApiProxy) - An automatic proxy provider for RESTful services built on ASP.NET Web API. Includes JavaScript & C# client generation. From 2398fa352c94667350fb2c24c2da6132a335c0d1 Mon Sep 17 00:00:00 2001 From: infectormp Date: Thu, 23 Jan 2020 00:41:39 +0300 Subject: [PATCH 808/872] Add a link to the ScreenToGif repository (#1165) --- dotnet-consumer-projects.md | 1 + 1 file changed, 1 insertion(+) diff --git a/dotnet-consumer-projects.md b/dotnet-consumer-projects.md index 43b9808a6..ab4a169e5 100644 --- a/dotnet-consumer-projects.md +++ b/dotnet-consumer-projects.md @@ -24,6 +24,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [Waf Stopwatch](http://wafstopwatch.codeplex.com) - An advanced stopwatch with a lap recording feature. Additionally, it provides a Countdown with alert sound. * [Waf File Hash Generator](http://fhg.codeplex.com) - A simple tool to generate the hash values of one or more files. It supports: SHA512, SHA256, SHA1 and MD5 in hexadecimal or Base64 format. * [Zero Install](https://github.com/0install/0install-win) - [0install.de](http://0install.de/) - A decentralized cross-platform software-installation system. Run apps with a single click or control every detail. + * [ScreenToGif](https://github.com/NickeManarin/ScreenToGif) - Open source .NET tool allows you to record a selected area of your screen, live feed from your webcam or live drawings from a sketchboard. ## Administration * [OpenPetra](https://github.com/openpetra/openpetra) - [www.openpetra.org](https://www.openpetra.org) - An administration software for charities that can be used to manage personnel, supporters, book keeping, gift receipting, accounts payable, conferences etc. From 446a12b009abbca5ea30857c8d49e6ec2be05f61 Mon Sep 17 00:00:00 2001 From: Ivan Gavryliuk Date: Thu, 23 Jan 2020 15:18:39 +0000 Subject: [PATCH 809/872] Add Parquet.Net to the list of OSS libraries (#1155) * Add Parquet.Net to the list of OSS libraries * add in alphabetical order --- dotnet-developer-projects.md | 1 + 1 file changed, 1 insertion(+) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 483b20e2f..d31eec98a 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -181,6 +181,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [NPOI](https://github.com/tonyqus/npoi) - An Office file formats (xls, xlsx, docx) read/write library for .NET. * [OneDriveRestAPI](https://github.com/saguiitay/OneDriveRestAPI) - (No Updates in 3 Years) OneDrive .Net Client Library using the REST API. * [OsmSharp](https://github.com/OsmSharp) - Mapping & Routing library. + * [Parquet.Net](https://github.com/aloneguid/parquet-dotnet) - Fully managed implementation of [Apache Parquet Format](https://parquet.apache.org/). Used by [ML.NET](https://github.com/dotnet/machinelearning). * [PocketSharp](https://github.com/ceee/PocketSharp) - Library for the Pocket API. * [PortableRest](https://github.com/AdvancedREI/PortableRest) - Portable library for building cross-platform REST API Clients for .NET and Xamarin. * [RestSharp](https://github.com/restsharp/RestSharp) - Simple REST and HTTP API Client for .NET From 1894954f08f1a60a00f6bdb4ce1169193dff058e Mon Sep 17 00:00:00 2001 From: Stuart Lang Date: Sun, 2 Feb 2020 18:42:02 +0000 Subject: [PATCH 810/872] Update reference assemblies docs with 1.0.0 info --- releases/reference-assemblies/README.md | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/releases/reference-assemblies/README.md b/releases/reference-assemblies/README.md index 4ea0ed025..bdbfcc042 100644 --- a/releases/reference-assemblies/README.md +++ b/releases/reference-assemblies/README.md @@ -1,4 +1,4 @@ -# .NET Framework Targeting Pack Nuget Packages (Preview) +# .NET Framework Targeting Pack Nuget Packages These packages enable building .NET Framework projects on any machine with at least MSBuild or the .NET Core SDK installed. @@ -8,10 +8,6 @@ The following scenarios and benefits are enabled for .NET Framework projects: - Build libraries on any operating system supported by the .NET Core SDK. - Build Mono-based projects. -## Status - -Early preview. - ## Usage ### .NET Core project @@ -28,7 +24,7 @@ Add Package reference: ```xml - + ``` @@ -50,7 +46,7 @@ Add the `TargetFramework` property and a `PackageReference` like in the followin net472 - + @@ -86,6 +82,6 @@ https://www.nuget.org/packages/Microsoft.NETFramework.ReferenceAssemblies ## Latest release -Version: 1.0.0-preview.1 +Version: 1.0.0 Date: Sun, 05 May 2019 23:37:33 GMT From f4d05ba698e2ca80b2436404cf93c1c5784ce983 Mon Sep 17 00:00:00 2001 From: Namrata Karnam <43251581+nakarnam@users.noreply.github.com> Date: Wed, 18 Mar 2020 11:25:04 -0700 Subject: [PATCH 811/872] Update README.md (#1184) For UWP 6.2.10 Release --- releases/UWP/net-native2.2/README.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/releases/UWP/net-native2.2/README.md b/releases/UWP/net-native2.2/README.md index ead99355a..ce2cfb46c 100644 --- a/releases/UWP/net-native2.2/README.md +++ b/releases/UWP/net-native2.2/README.md @@ -4,6 +4,16 @@ You can see what was included in each .NET Native 2.2 ([Microsoft.NETCore.Univer When using Visual Studio, these packages require Visual Studio 2019 or Visual Studio 2017 Version 15.9. +### UWP 6.2.10 (March 18th, 2020) +- Fix for RhpCallFilterFunclet stack misalignment on ARM causing runtime failures +(https://github.com/dotnet/corert/pull/7744) +- Fix for compiler crashes seen for SixLabors.ImageSharp API when targeting x86 and trying to generate mixed floating point/vector code +- Fix for crashes seen when using System.IO.Directory.GetFiles and System.IO.DirectoryInfo.GetDirectories on ARM32 with UWP apps +(https://github.com/dotnet/runtime/issues/27943#issuecomment-529400749) +- Fix for crashes seen in rhbind.exe for some Unity apps +- Fix to avoid incorrectly leaking COM thread state when returning threads to the OS thread pool +- Fix for app crashes seen during garbage collection on ARM 32 due to heap corruption + ### UWP 6.2.9 (August 23rd, 2019) - Reduce optimizer maximum thread count for Store compilations to increase ingestion reliability From d5c2c67d6a8e2daad6cc48cb8fcdb63c4437f083 Mon Sep 17 00:00:00 2001 From: Devendar Reddy Adulla Date: Tue, 7 Apr 2020 10:21:54 -0700 Subject: [PATCH 812/872] Update 706819 - Winforms applications may have problems rendering UI on latest Operating Systems.md Updating known issue with released servicing fix. --- ...ay have problems rendering UI on latest Operating Systems.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/releases/net472/KnownIssues/706819 - Winforms applications may have problems rendering UI on latest Operating Systems.md b/releases/net472/KnownIssues/706819 - Winforms applications may have problems rendering UI on latest Operating Systems.md index a748aeff3..e4cd002fa 100644 --- a/releases/net472/KnownIssues/706819 - Winforms applications may have problems rendering UI on latest Operating Systems.md +++ b/releases/net472/KnownIssues/706819 - Winforms applications may have problems rendering UI on latest Operating Systems.md @@ -7,4 +7,4 @@ WinForms applications may have problems rendering the application UI and instead The issue is caused by a change in Windows 10 October 2018 Update that exposed a bug in .NET Framework 4.7.2. The Windows 10 October 2018 Update adds a new flag to VisualStyle state when the application UI launches a child dialog (i.e., a FileSaveDialog or PrintpreviewDialog) that causes .NET Framework to fail its VisualStyleState check and thus throw an exception while rendering the application UI. ## Resolution -A .NET 4.7.2 servicing fix for this will be released in near future and will also be included in the next version (4.8) of .NET Framework. This known issue will be updated with more details when that happens. +A .NET 4.7.2 servicing fix [KB4481031](https://support.microsoft.com/en-us/help/4481031/january-22-2019-kb4481031) for this issue has been released and is also included in the version (4.8) of .NET Framework. From 6094e65220f13753752bc19b639120213492a78d Mon Sep 17 00:00:00 2001 From: Chebotov Nickolay Date: Sun, 12 Jul 2020 19:57:10 +0300 Subject: [PATCH 813/872] Update dotnet-developer-projects.md (#1170) Add **Connected Services** section with: * [Unchase.Dynamics365.Connectedservice](https://github.com/unchase/Unchase.Dynamics365.Connectedservice) * [Unchase.Odata.Connectedservice](https://github.com/unchase/Unchase.Odata.Connectedservice) * [Unchase.OpenAPI.Connectedservice](https://github.com/unchase/Unchase.OpenAPI.Connectedservice) --- dotnet-developer-projects.md | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index d31eec98a..03c67dcb6 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -416,7 +416,12 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [ASP.NET Core & Mvc/Angular5 Startup Template](https://github.com/aspnetboilerplate/module-zero-core-template) - This is a template to create ASP.NET Core MVC / Angular based startup projects for [ASP.NET Boilerplate](https://github.com/aspnetboilerplate/aspnetboilerplate). This project also supports multi-tenancy. * [ASP.NET MVC Boilerplate](https://github.com/ASP-NET-MVC-Boilerplate/Templates) - Professional ASP.NET MVC templates for building secure, fast, robust and adaptable web applications or sites. It provides the minimum amount of code required on top of the default MVC template provided by Microsoft. * [EISK](https://github.com/eisk) - .NET Core project templates with simple use cases and framework for building scalable web applications, following architectural [best practices](https://docs.microsoft.com/en-us/dotnet/standard/modern-web-apps-azure-architecture/common-web-application-architectures) (DDD, Onion Architecture etc). [Project site](https://eisk.github.io). - + +## Connected Services + * [Unchase.Dynamics365.Connectedservice](https://github.com/unchase/Unchase.Dynamics365.Connectedservice) - A Visual Studio Connected Service for generating early-bound .NET Framework (or C++) classes that represent the entity data model used by Dynamics 365 for Customer Engagement. + * [Unchase.Odata.Connectedservice](https://github.com/unchase/Unchase.Odata.Connectedservice) - A Visual Studio Connected Service for generating API client code in C# or VB for OData web service. + * [Unchase.OpenAPI.Connectedservice](https://github.com/unchase/Unchase.OpenAPI.Connectedservice) - A Visual Studio Connected Service for generating API client code in C# or TypeScript. Also generates C# controllers for [OpenAPI](https://swagger.io/docs/specification/about/) services with [NSwag](https://github.com/RSuter/NSwag). + This list is just a starting point - also take a look at all the projects on [GitHub Trending C#](https://github.com/trending?l=csharp). [@quozd](http://twitter.com/quozd "@quozd on Twitter") hosts an [Awesome .NET!](https://github.com/quozd/awesome-dotnet) list. Also worth checking out. From 793f496591b8cc979e9d7b461666290ed4933547 Mon Sep 17 00:00:00 2001 From: Youssef Victor <31348972+Youssef1313@users.noreply.github.com> Date: Wed, 15 Jul 2020 04:00:23 +0200 Subject: [PATCH 814/872] Update links (#1206) --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 6954bef19..413e8eaa7 100644 --- a/README.md +++ b/README.md @@ -29,10 +29,10 @@ There are many projects that you can use and contribute to, some of which are li - [.NET Core (dotnet/core)](https://github.com/dotnet/core) - [.NET Core docs (dotnet/docs)](https://github.com/dotnet/docs) -- [ASP.NET Core (aspnet/home)](https://github.com/aspnet/home) -- [ASP.NET Core docs (aspnet/Docs)](https://github.com/aspnet/Docs) +- [ASP.NET Core (dotnet/aspnetcore)](https://github.com/dotnet/aspnetcore) +- [ASP.NET Core docs (dotnet/AspNetCore.Docs)](https://github.com/dotnet/AspNetCore.Docs) - [Roslyn Compiler Platform (dotnet/roslyn)](https://github.com/dotnet/roslyn) -- [EntityFramework (aspnet/entityframework)](https://github.com/aspnet/EntityFramework) +- [EntityFramework (dotnet/efcore)](https://github.com/dotnet/efcore) - [WPF (dotnet/wpf)](https://github.com/dotnet/wpf) - [Windows Forms (dotnet/winforms)](https://github.com/dotnet/winforms) @@ -67,7 +67,7 @@ There are additional templates available for `dotnet new`. For more information, Many .NET open source projects are part of the [.NET Foundation](https://www.dotnetfoundation.org/projects). Microsoft has contributed many projects, including ASP.NET Core and -.NET Core. You may want to consider [joining the .NET Foundation](https://dotnetfoundation.org/get-involved). +.NET Core. You may want to consider [joining the .NET Foundation](https://dotnetfoundation.org/community/). Check out the [.NET Foundation Forums](https://forums.dotnetfoundation.org/) to see what others are talking about, or start a new discussion to ask a question or make a point. From 82310c2f256c65e1a5a46f267e7fbfd5d9a3a8f5 Mon Sep 17 00:00:00 2001 From: kalaskarsanket <73312933+kalaskarsanket@users.noreply.github.com> Date: Wed, 18 Nov 2020 17:28:48 -0800 Subject: [PATCH 815/872] Update README.md Adding changes to be shipped for upcoming 6.2.11 release --- releases/UWP/net-native2.2/README.md | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/releases/UWP/net-native2.2/README.md b/releases/UWP/net-native2.2/README.md index ce2cfb46c..1987d916d 100644 --- a/releases/UWP/net-native2.2/README.md +++ b/releases/UWP/net-native2.2/README.md @@ -4,6 +4,17 @@ You can see what was included in each .NET Native 2.2 ([Microsoft.NETCore.Univer When using Visual Studio, these packages require Visual Studio 2019 or Visual Studio 2017 Version 15.9. +### UWP 6.2.11 (November 19th, 2020) +- .NET Native fix for call to `string.Replace` does not terminate and goes into an infinite loop +- Fix is to consume updated Telemetry files which is shipped in UWP 6.2.11 +- Fix denial of service (DoS) by cap the maximum length passed to the StringBuilder(int capacity) ctor +- Fix to avoid incorrectly leaking thread COM state to default thread pool by turning on AppContext switch by default. 6.2.10 had shipped the original fix but with this release the switch is enabled by default +- Fix for crashes seen in WireUpCoreRuntime on duplicate executables +- Fix ILT0005 error when building InMobiSDk. This Fix addresses an access violation in complier when building InMobiSDK resulting in ILT0005 error +- This build provides a workaround that resolves OOM issues for ARM64 compilation scenarios which has been validated by liquidtext. + + + ### UWP 6.2.10 (March 18th, 2020) - Fix for RhpCallFilterFunclet stack misalignment on ARM causing runtime failures (https://github.com/dotnet/corert/pull/7744) From 9540b4f1a58e06207b62e15b51a4e716a744fcce Mon Sep 17 00:00:00 2001 From: kalaskarsanket <73312933+kalaskarsanket@users.noreply.github.com> Date: Wed, 18 Nov 2020 19:52:33 -0800 Subject: [PATCH 816/872] Update README.md updated readme with 6.2.11 changes --- releases/UWP/net-native2.2/README.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/releases/UWP/net-native2.2/README.md b/releases/UWP/net-native2.2/README.md index 1987d916d..99b36a5c3 100644 --- a/releases/UWP/net-native2.2/README.md +++ b/releases/UWP/net-native2.2/README.md @@ -11,9 +11,7 @@ When using Visual Studio, these packages require Visual Studio 2019 or Visual St - Fix to avoid incorrectly leaking thread COM state to default thread pool by turning on AppContext switch by default. 6.2.10 had shipped the original fix but with this release the switch is enabled by default - Fix for crashes seen in WireUpCoreRuntime on duplicate executables - Fix ILT0005 error when building InMobiSDk. This Fix addresses an access violation in complier when building InMobiSDK resulting in ILT0005 error -- This build provides a workaround that resolves OOM issues for ARM64 compilation scenarios which has been validated by liquidtext. - - +- This build provides a workaround that resolves OOM issues for ARM64 compilation scenarios ### UWP 6.2.10 (March 18th, 2020) - Fix for RhpCallFilterFunclet stack misalignment on ARM causing runtime failures From 214c8c343587461f161198cdf5e9084abddde179 Mon Sep 17 00:00:00 2001 From: Immo Landwerth Date: Mon, 14 Dec 2020 15:08:49 -0800 Subject: [PATCH 817/872] Create ecosystem-issues.md --- docs/ecosystem-issues.md | 526 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 526 insertions(+) create mode 100644 docs/ecosystem-issues.md diff --git a/docs/ecosystem-issues.md b/docs/ecosystem-issues.md new file mode 100644 index 000000000..44549f1bd --- /dev/null +++ b/docs/ecosystem-issues.md @@ -0,0 +1,526 @@ +# Growing the .NET ecosystem + +**Immo Landwerth** + +*This document is an output of the planning process for .NET 6. It's written +from a Microsoft perspective and it's a collection of problem statements and +assertions based on how we perceive the .NET ecosystem. The sections at the end +contain next steps we'd like to take to validate or invalidate some of the +explicit (or implicit) hypotheses in this document. We're collaborating with the +.NET Foundation [working group on ecosystem +grow](https://github.com/dotnet-foundation/ecosystem-growth) and have presented +this document there as well*. + +Today, we're often (even weekly) approached by both customers and internal +partners to build libraries that already exist in the .NET ecosystem because +people feel they can't trust 3rd parties – and sometimes even 1st party when the +technology isn't part of .NET. This results in a negative cycle whereby adding +new 1st class libraries from Microsoft further underlines the notion that +quality and longevity is only provided by Microsoft, and it continues. + +In the .NET Core 3.1 timeframe, we started a maturity model which didn't go well +with the .NET Community, for a variety of reasons, but mostly due to the way we +collaborated & communicated with the community. We believe we can learn from +this experience and pick this idea up again. + +The overall goal is to enable .NET consumers to make trust decisions and to +encourage customers (external as well as internal) to trust libraries that +aren't built by Microsoft. This work will comprise of an user experience when +consuming libraries (such as when adding packages using the NuGet UI), a defined +set of practices (such as making source code and symbols available for debugging +as well as allowing to patch the code), a defined development process (how to +distribute releases, dealing with breaking changes and security issues), as well +as initiatives in order to grow the set of non-Microsoft controlled libraries. + +Getting critical adoption of this model in the .NET ecosystem will likely take +years, but the goal for .NET 6 is to create the vision, get buy-in from the .NET +Foundation and the open source community at large, as well as getting some of +the fundamentals in-place. + +## Grow the set of trusted libraries that aren't controlled by Microsoft + +### Why? + +There is a perception that other ecosystems (specifically Java, JavaScript, and +Python) have more technological diversity and thus an overall stronger open +source ecosystem. Historically, we've taught customers to expect all the +features to come from Microsoft. Since we can't build everything, especially not +at a pace at which other OSS ecosystems evolve, the set of trusted libraries for +.NET must grow beyond just Microsoft. + +### Summary + +We need to normalize the practice that application developers can depend on +libraries that aren't controlled by Microsoft. + +This requires that we make it easier for customers to evaluate quality and for +package authors to deliver a consistent quality. This is tackled by other +objectives in this document. + +This also requires a culture shift at Microsoft. Today, we're usually reactive +when it comes to library & framework investments. By the time we know there is a +need for a library (say, a new serialization protocol) we routinely research +existing options but usually end up rolling our own, because nothing fits the +bill as-is and we either don't have the time or we believe we wouldn't be able +to successfully influence the design of the existing library. This results in a +perception where Microsoft "sucks the air" out of the OSS ecosystem because our +solutions are usually more promoted and often tightly integrated into the +platform, thus rendering existing solutions less attractive. Several maintainers +have cited this as a reason that they gave up or avoid building libraries that +seem foundational. See [this section](#feedback-critical-opinions-on-the-microsoft-oss-ecosystem) with +pointers to blog posts. + +To avoid this, we need to start engaging with owners of existing libraries and +work with them to increase their quality (this implies documentation of +processes, patterns, and availability of tools which is tackled by another +objective in this document). We're doing this quite successfully with gRPC, +OpenTelemetry, and Apache Arrow/Spark already, but it should become a general +practice. We should even consider an ongoing work item to actively investigate +widely used libraries and help them raise the quality or tighten their +integration into the .NET developer experience. There is a separate objective in +this document that describes the need for product extension points that enable +that for 3rd parties. + +We also need to change our approach when we create net-new technologies for +which there is no ecosystem yet, as is the case for GPIO-based IOT libraries for +.NET Core. Instead of us building everything, we should create new projects in +such a way that we're not the sole maintainer and actively seek out and invite +external contributors to take part in long term ownership and maintenance. This +also includes our naming patterns. For example, it has become the norm that we +name packages and namespaces with Microsoft, which isn't very friendly for +creating multi-vendor projects. + +One challenge that exists in the .NET OSS ecosystem is that most successful +libraries are developed by a single person as a hobby. While this often results +in highly rated libraries (because they are labors of love) it creates a high +risk for maintainer burnout and thus uncertainty for support and longevity. This +is also reflected by the projects we see in the .NET Foundation as well as for +members of the board -- virtually nobody has the luxury of being paid by a +company to do this as part of their job. + +When you look at other foundations, such as the Linux Foundation or the Apache +Foundation, you see a very different picture: most maintainers aren't doing this +as a hobby, they are employees and work on this as part of their job. This is +also captured in the book [Working in Public: The Making and Maintenance of Open +Source Software](https://www.amazon.com/dp/0578675862). + +While there are exceptions in the .NET ecosystem (Samsung or Unity) it very much +is not the norm. Microsoft should take a more active role to work with the .NET +Foundation and help found a program where company-sponsored "maintainerships" +are being created, that is, they sponsor one or more employees who help maintain +a given library as part of their job. The goal is to create libraries that are +co-owned by employees from various companies, akin to how the Apache Foundation +works. This would be an alternative to monetary sponsorships which don't provide +a dependable income and hence do little to reduce the maintainers' stress +because it still demands balancing OSS commitments with their jobs and personal +lives. Perhaps Microsoft should also lobby for making the .NET Foundation more +similar to Apache who apparently make a concerted effort to ensure that project +committee membership is diverse so that the withdrawal of interest by a single +party would not jeopardize the project. + +Another challenge is around support. There seems to be a perception that +Microsoft produced code is always supported and anybody's else code isn't. We +often hear the need for support as a reason why non-Microsoft libraries aren't +chosen but it's unclear whether that means having an option for paid support or +whether it's simply lack of confidence that the library will be around tomorrow. +We should do customer development in this space and use the results to inform +whether there is a need for paid support for non-Microsoft libraries. If there +is, we should work with the .NET Foundation to define how this model would work +so that companies can offer support for libraries that they don't control. This +would include Microsoft but also other companies (such as Red Hat, Samsung or +whoever else wants to offer paid support). + +### End to End Scenarios + +* We need to define joint-ownership mechanics for libraries. We should try this + in the context of the IOT libraries (and potentially other customer asks, such + as additional collections we'll likely never add to the BCL). + +* We need to do customer development with existing OSS maintainers to understand + if maintainerships are a good plan to address maintainer burn out and ensure + project longevity. + +* We need to do customer development to understand the consumer's concerns + around support. + +### Engineering Needs + +* We should use telemetry, customer, and partner input to select a set of + non-Microsoft owned libraries that we can help make better. This includes + offering API reviews, as well as contributing fixes and features. The goal is + to make this a continuous effort so that we spread our expertise outside of + Microsoft and normalize the practice that we help make .NET better, no matter + who owns the code. + +### Customer Cohorts + +* OSS library maintainers + +* Internal partners at Microsoft, enterprise customers, and ISVs who consume + OSS libraries and have concerns around quality and support + +## 3rd party experiences can be as good as 1st party experiences + +### Why? + +In order to level the playing field and make it possible that the .NET platform +can promote and bet on non-Microsoft controlled technologies, we need the +ability to provide a curated discovery & acquisition experience for optional +components that is used by both 1st party as well as 3rd parties. + +### Summary + +At Microsoft we strive to deliver end-to-end experiences, for example, building +a Windows Forms application requires a shared framework, a set of project and +item templates, tooling in Visual Studio, and documentation. We deliver all of +this as part of the core product as this makes the experience seamless. + +With .NET 6 and the support for the mobile workloads we're moving to a model +where part of .NET is optional. This ensures the core product can be small and +snappy to install while still supporting the full breadth of .NET. + +However, this work itself doesn't guarantee that 3rd parties can also provide +optional components that customers can easily discover and install, thus +potentially still having a clear boundary between "this is from Microsoft" and +"this is 3rd party". + +At the same time, we don't want to provide an open registry like nuget.org as +the primary mechanism to discover and extend the core product because this will +result in a lot of noise. We still want a curated experience. The only +difference is that the curated set can be comprised of Microsoft and +non-Microsoft provided functionality. + +### End to End Scenarios + +* .NET developers have a single-entry point for discovering and acquiring + additional workloads. This entry point will be use works for all 1st party + provided components, such as ASP.NET Core, EF Core, and Xamarin. + +* The experience presents Microsoft provided components as peers to + non-Microsoft provided components. This aids discovery of related technologies + and ensures customers can choose the best tool for the job. + +* The set of available components is curated. This list needs to be owned by + some party, but it doesn't have to be just Microsoft (but we should have a + say, too). For example, there could be a .NET Foundation working group that + can decide which technologies are important enough to be a part of that core + product. This requires defining a bar that components need to pass to be + considered for addition, which includes relevance, quality, and project + health. + +### Engineering Needs + +* Move built-in components such as ASP.NET Core and EF to the optional workload + model to level the playing fields and ensure expressiveness of extension + points. + +* Provide extension points for all parts of the product that need to be extended + by optional components, such as templates, shared frameworks, and tooling. + +### Customer Cohorts + +* Providers of web frameworks such as Nancy and Giraffe + +* Providers of OR mappers such as NHibernate, Dapper, LLBLGen + +* Providers of unit test frameworks such as xUnit and NUnit + +* Providers of application models such as Uno + +* Providers of cloud integrations such as Pulumi and Farmer + +## Developers can make trust decisions about packages and binaries they consume + +### Why? + +Our library ecosystem is entirely revolving around NuGet packages which contain +binaries. It is essential that customers can have the confidence that using +pre-built code doesn't corner them. This includes the ability to reproduce them +if necessary but also includes installing packages will not result in build or +runtime errors due to incompatibilities that NuGet didn't surface early enough. + +### Summary + +.NET's ecosystem uses binaries as the primary exchange mechanism. This solves +various problems, especially shielding the consumer from having to replicate the +build environment. It's also what enables the multi-language ecosystem. All in +all, binaries have worked very well for .NET, especially because the underlying +format is rich and self-describing. + +.NET uses Authenticode signing for binaries and packages. The .NET Foundation +has made it easier for member projects to get a code signing certificate and +actively pushes its projects to do so. On top, the official NuGet gallery signs +packages to indicate they came from nuget.org. + +However, one largely unsolved problem is the link between source code and +binaries. While a significant portion of packages on nuget.org are open source +and often link to the GitHub repo, there is no way to ensure that the source +code being pointed too actually matches the binaries submitted to nuget.org. +Which could either be by choice of the uploader or because the uploader used a +compromised tool chain that injects code that wasn't part of the source code. + +In other words, just because you can trust the source code doesn't mean you can +trust the binaries. And while nuget.org scans packages for virus and malware, +there is no way to detect all possible malware. For all you know, someone, or +something, [injected a bit coin +miner](https://www.theregister.com/2018/11/26/npm_repo_bitcoin_stealer/). + +There also less malicious trust issues with consuming NuGet packages: the +package manager UI will offer packages that might not install or are not +relevant for the consuming project. It's frustrating and erodes trust when +customers try to use them only to see NuGet fail to install the package or +(worse) seeing the app crash at runtime. In many cases this isn't a bug in the +package, it's a missing feature on the NuGet side to use the package information +to communicate to the customer what will and will not work. + +A closely related issue is that finding a package that is compatible with a +project can be a challenge to developers in the .NET ecosystem. + +### End to End Scenarios + +* Package consumers know whether a given package offers sources for debugging. + +* Package consumers know whether a given package can be reproduced from sources. + +* Package consumers will understand whether a given package will work before + trying to install them. They should clearly be able understand what platforms + are supported by viewing a NuGet package's details instead of having to guess + & check by installing the package or downloading the package to ensure there + is an available asset for their platform. + +* Package consumers can evaluate packages by popularity, quality, and + maintenance. + +### Engineering Needs + +* We need to create a validation tool that can check whether a given binary can + be reproduced. + +* The validation tool needs to be integrated into the NuGet.org ingestion + pipeline so that it can serve the results in searches and the package pages. + +* We need to improve the NuGet gallery and the NuGet package management UI to + service information regarding compatibility, relevance to the consuming + project type, popularity, and quality metrics, such as how well it is + maintained. + +### Customer Cohorts + +* Package consumers who wish to manually check results on their own. + +* Package authors, as we need them to enable support for debugging and + reproducibility. + +* NuGet.org, to validate packages on upload and present the status as part of + overall package/project health. + +* Internal partner Terrapin, which is an effort to secure Azure Ring 0 and Ring + 1 services. + +## Developers have access to guidance & tools that supports them in building cross-platform packages + +### Why? + +With .NET Core & Xamarin we have made cross-platform a mainstream requirement +for library authors. However, we lack comprehensive tooling and guidance to +ensure that library developers fall into the pit of success, which results in +packages that don't work well which in turn hurts our ecosystem. This is +especially problematic for emerging platforms where adoption isn't high enough +to warrant special attention by library authors. + +### Summary + +We have pushed the envelope with what NuGet can do since we did .NET Core 1.0. +However, we have solved many of the hard problems only for the platform layer, +rather than focusing on problems library authors have day to day. In the +dotnet/runtime repo we use custom tooling to build packages, which other repos, +and more importantly, our customers don't use. This makes it very hard to build +packages that, for example, contain native code or packages that need to build +different binaries for different operating systems or CPU architecture. +Specifically, the ability to multi-target for a runtime identifier (RID) isn't +well supported at all. + +Furthermore, the tooling we provide as part of the SDK has close to zero +validation that multi-targeted packages are well-formed. For example, a package +that multi-targets for .NET Core 3.1 and .NET Standard 2.0 needs to ensure that +code compiled against the .NET Standard 2.0 binary can run against the binary +that is produced for .NET Core 3.1. In the dotnet/runtime repo we have tooling +that ensures that this is the case, but this can't easily be used by our +customers. We have seen this issue in the wild, even with 1st parties, for +example, the Azure AD libraries. + +And while there are several well-established patterns for building +cross-platform packages using the bait & switch approach, our guidance for +building cross-platform packages is still very rudimentary. Especially with .NET +5 and the advent of operating system specific framework names we need to provide +more prescriptive guidance. + +### End to End Scenarios + +* Multi-targeting for all operating systems and CPU architectures needs to be + supported in the same way that multi-targeting for different frameworks is. + +* Packages are automatically validated to ensure that consumers don't + experience compatibility issues because provided assets aren't compatible with + different multi-targeted versions of themselves. + +### Engineering Needs + +* We need to integrate RID targeting into the multi-targeting experience + +* We need to extract and productize API compatibility tooling (such as our + APICompat) and make it part of the package multi-targeting experience + +* We need have guidance for how to multi-target across frameworks, operating + systems, and architectures + +* We need to have guidance for how to deploy & wrap native code + +### Customer Cohorts + +* NuGet package authors + +* NuGet package consumers + +## Package consumers can patch their dependencies + +### Why? + +Using binaries as the primary exchange vehicle in conjunction with +package/assembly identity makes it harder for people to experiment and patch +dependencies. Other ecosystems don't suffer from this to the same degree because +they are either source based or have specific features to address that. + +### Summary + +From the very start, .NET had a notion of identity (via strong naming and the +GAC). In spirit, NuGet is a continuation of this idea. Identity is important to +enable sharing. However, it also has problems when only one party can produce +the artifact under that identity. With strong naming, this was originally by +design. In .NET Core, we have pretty much neutered this constraint and for .NET +Framework we provide public signing to work this around (to a degree). + +In case of NuGet packages this problem is harder to solve. The central nuget.org +registry requires that only the party owning a given package can provide new +versions. However, this is mightily inconvenient when you want to modify +packages locally, for example, to experiment with an OSS contribution or when +you want to patch an issue you're having with a package. + +In source-based ecosystems this problem isn't as big because sources are +inherently patchable. + +We should make it easier for application developers to convert a package +dependency to source dependency that they can control and patch. In some cases, +it might be desirable to make the patched version available (publicly or +internally). + +However, this generally requires a new package ID which now means that all +consumers would need to rebuild all their dependencies to use the new ID. A +better option would be to allow application authors to redirect package ID (and +version) to a different ID (and version). This also solves the problem where a +package author no longer maintains a package or doesn't want to support the +package for a specific operating system or framework. Someone else can provide +the package and application authors can replace the canonical one with the +forked one. + +Other ecosystems (specifically Java and NPM) have the ability for private +dependencies, where a given package dependency is considered an implementation +detail and doesn't become a direct dependency of the consumer. This would allow, +for example, the Azure SDK to depend on JSON.NET without constraining if and +which version of JSON.NET the application can use (Java calls this shading). To +be reliable, shading would need to enforce that shaded dependencies cannot leak +into the public APIs. + +### End to End Scenarios + +* Package consumers can replace a package reference with a version that they + built themselves. + +* Package consumer can replace a package with one that has a different ID and + version. + +### Engineering Needs + +* NuGet and runtime need to support shaded dependencies. + +* NuGet needs to support redirecting a package ID in the graph. Non-shaded + dependencies can only be replaced at the application level while shaded + dependencies could be replaced at the level that shades them. + +### Customer Cohorts + +* Package consumers + +## Feedback: Critical opinions on the Microsoft OSS ecosystem + +Here is a list of blog posts that have criticized Microsoft for not playing well +with the OSS ecosystem: + +* [The New Rules for Playing in Microsoft's Open Source + Sandbox](https://aaronstannard.com/new-rules-dotnet-oss/), by Aaron Stannard + +* [How to Build Sustainable Open Source Software +Projects](https://aaronstannard.com/next-decade-dotnet/), by Aaron Stannard + +* [The Next Decade of .NET Open + Source](https://aaronstannard.com/next-decade-dotnet/), by Aaron Stannard + +* [The Day AppGet + Died](https://medium.com/@keivan/the-day-appget-died-e9a5c96c8b22), by Keivan + Beigi + +* [Why we terminated our partnership with + Microsoft](https://paulstovell.com/re-next-decade-of-open-source/), by Paul + Stovell + +## Action: Customer Development + +In order support these objectives, we need to collect more customer data. +Specifically, we should research the following: + +* **Quantitative competitive analysis of OSS ecosystems**. We should consider + ordering market research that compares the perceptions of various open source + ecosystems, such as .NET, JS/NPM, and Java. This would help us to gain more + insight into how the market views .NET and how that compares to other + ecosystems. Right now, such insights are anecdotal since the sample size are + too small. + +* **How businesses select which technologies and libraries to depend on**. There + is lots of anecdotal evidence that Microsoft customers prefer to use + technologies built by & supported by Microsoft. Sometimes, the same customers + also use other ecosystems, such as Java and NPM, where this isn't an option. + We need to understand what they are looking for in each of these ecosystems + and how they think of this double standard. This data will be used to inform + how we proceed from the maturity model. + +* **What is important to library developers**. There is an inherent assumption + that library developers want to be consumed by as many consumers as possible. + First, this might not actually be true in all cases but even if it is, it + doesn't necessarily mean that library authors greatly care to be attractive + for business. For instance, would library developers appreciate a maturity + model that prescribes specific practices and quality gates, or would they + ignore it? Are there any concerns that are specific to library authors + depending on other libraries (compared to app developers depending on + libraries)? + +## Action: Technical Insights + +* **Shading in Java.** We need to understand how shading in Java works. + Specifically, what does it enable, what is the resulting user experience for + the library producer & consumer, is there validation that prevents shaded + dependencies from leaking, how does it handle conflicts & how well, do package + managers have a direct understanding of shading, and are there are any known + issues with this feature. + +* **Side-by-side loading in Java.** Another feature of Python and JS is the + ability to load multiple versions of a component if its major version has + changed. For example, LibA is used by B and C, B requires LibA v1.0 and C + requires LibA v2.0 and there are breaking changes between v1 and v2. (Using + semver, it is assumed there are breaking changes across major versions). A + quote from a dev working on Azure SDK for JS: "JavaScript uses many + dependencies that are non-Microsoft owned as this is easy to do (libraries + follow semantic versioning, side-by-side versioning is possible and can be + configured via package.json and so it is typical and expected in our + ecosystem)". Both Python and JS aren't compiled language so doing this + relatively simple. It would be interesting to see how side-by-side loading + works in Java and whether this is tied to shading. From cadcf3de421c9eabc1eb2f538bf26d9be3c65a91 Mon Sep 17 00:00:00 2001 From: bitbonk Date: Tue, 22 Dec 2020 09:05:40 +0100 Subject: [PATCH 818/872] Fix typo --- docs/ecosystem-issues.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/ecosystem-issues.md b/docs/ecosystem-issues.md index 44549f1bd..ac02254cb 100644 --- a/docs/ecosystem-issues.md +++ b/docs/ecosystem-issues.md @@ -25,7 +25,7 @@ this experience and pick this idea up again. The overall goal is to enable .NET consumers to make trust decisions and to encourage customers (external as well as internal) to trust libraries that -aren't built by Microsoft. This work will comprise of an user experience when +aren't built by Microsoft. This work will comprise of a user experience when consuming libraries (such as when adding packages using the NuGet UI), a defined set of practices (such as making source code and symbols available for debugging as well as allowing to patch the code), a defined development process (how to From d784655b9553736431407106dca6aa071cb77828 Mon Sep 17 00:00:00 2001 From: Immo Landwerth Date: Thu, 14 Jan 2021 18:45:12 -0800 Subject: [PATCH 819/872] Update issue templates --- .../ISSUE_TEMPLATE/donotfilenewissues-md.md | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 .github/ISSUE_TEMPLATE/donotfilenewissues-md.md diff --git a/.github/ISSUE_TEMPLATE/donotfilenewissues-md.md b/.github/ISSUE_TEMPLATE/donotfilenewissues-md.md new file mode 100644 index 000000000..5294b54db --- /dev/null +++ b/.github/ISSUE_TEMPLATE/donotfilenewissues-md.md @@ -0,0 +1,18 @@ +--- +name: DoNotFileNewIssues.md +about: Discourage filing new issue +title: '' +labels: '' +assignees: '' + +--- + +Please do not file any issues here. + +For .NET Core related issue, please check this file to file the issue in the appropriate repo: + +https://github.com/dotnet/core/blob/master/Documentation/core-repos.md + +For .NET Framework issues, please use the developer community: + +https://developercommunity.visualstudio.com/spaces/61/index.html From 87a8daeef4c5d4586d658ef2c51565ca500caf4d Mon Sep 17 00:00:00 2001 From: Immo Landwerth Date: Thu, 14 Jan 2021 18:46:34 -0800 Subject: [PATCH 820/872] Delete donotfilenewissues-md.md --- .../ISSUE_TEMPLATE/donotfilenewissues-md.md | 18 ------------------ 1 file changed, 18 deletions(-) delete mode 100644 .github/ISSUE_TEMPLATE/donotfilenewissues-md.md diff --git a/.github/ISSUE_TEMPLATE/donotfilenewissues-md.md b/.github/ISSUE_TEMPLATE/donotfilenewissues-md.md deleted file mode 100644 index 5294b54db..000000000 --- a/.github/ISSUE_TEMPLATE/donotfilenewissues-md.md +++ /dev/null @@ -1,18 +0,0 @@ ---- -name: DoNotFileNewIssues.md -about: Discourage filing new issue -title: '' -labels: '' -assignees: '' - ---- - -Please do not file any issues here. - -For .NET Core related issue, please check this file to file the issue in the appropriate repo: - -https://github.com/dotnet/core/blob/master/Documentation/core-repos.md - -For .NET Framework issues, please use the developer community: - -https://developercommunity.visualstudio.com/spaces/61/index.html From 0c7d5af6905bdf07985346545997063d65f55a60 Mon Sep 17 00:00:00 2001 From: Immo Landwerth Date: Thu, 14 Jan 2021 18:47:00 -0800 Subject: [PATCH 821/872] Create ISSUE_TEMPLATE.md --- .github/ISSUE_TEMPLATE.md | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 .github/ISSUE_TEMPLATE.md diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md new file mode 100644 index 000000000..3a76dfd93 --- /dev/null +++ b/.github/ISSUE_TEMPLATE.md @@ -0,0 +1,9 @@ +Please do not file any issues here. + +For .NET Core related issue, please check this file to file the issue in the appropriate repo: + +https://github.com/dotnet/core/blob/master/Documentation/core-repos.md + +For .NET Framework issues, please use the developer community: + +https://developercommunity.visualstudio.com/spaces/61/index.html From 9959c6a706f33f52b4decb4ddebe27001b6eda92 Mon Sep 17 00:00:00 2001 From: kalaskarsanket <73312933+kalaskarsanket@users.noreply.github.com> Date: Tue, 9 Feb 2021 13:59:26 -0800 Subject: [PATCH 822/872] Update README.md Adding release notes for 6.2.12 release. --- releases/UWP/net-native2.2/README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/releases/UWP/net-native2.2/README.md b/releases/UWP/net-native2.2/README.md index 99b36a5c3..631dfa1a2 100644 --- a/releases/UWP/net-native2.2/README.md +++ b/releases/UWP/net-native2.2/README.md @@ -4,6 +4,10 @@ You can see what was included in each .NET Native 2.2 ([Microsoft.NETCore.Univer When using Visual Studio, these packages require Visual Studio 2019 or Visual Studio 2017 Version 15.9. +### UWP 6.2.12 (February 9th, 2021) +- Error code RHBIND : error RHB0002: Failed to write PDB. Fix for build failures with RHBIN error when building Xamarian and SyncFusion UWP projects. This is an opt-in fix and requires customer to setting the msbuild property NoLinkerSymbols. +- Fix to execution engine exception when loading InAppUI in Xamarian. + ### UWP 6.2.11 (November 19th, 2020) - .NET Native fix for call to `string.Replace` does not terminate and goes into an infinite loop - Fix is to consume updated Telemetry files which is shipped in UWP 6.2.11 From f4648d6b7a9ec77dbd3b6bc7d2bc7b0529b070eb Mon Sep 17 00:00:00 2001 From: Ramtin Jokar Date: Thu, 25 Mar 2021 22:59:15 +0430 Subject: [PATCH 823/872] fix typo (#1298) --- releases/UWP/net-native2.2/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/releases/UWP/net-native2.2/README.md b/releases/UWP/net-native2.2/README.md index 631dfa1a2..09ab4e0c3 100644 --- a/releases/UWP/net-native2.2/README.md +++ b/releases/UWP/net-native2.2/README.md @@ -5,8 +5,8 @@ You can see what was included in each .NET Native 2.2 ([Microsoft.NETCore.Univer When using Visual Studio, these packages require Visual Studio 2019 or Visual Studio 2017 Version 15.9. ### UWP 6.2.12 (February 9th, 2021) -- Error code RHBIND : error RHB0002: Failed to write PDB. Fix for build failures with RHBIN error when building Xamarian and SyncFusion UWP projects. This is an opt-in fix and requires customer to setting the msbuild property NoLinkerSymbols. -- Fix to execution engine exception when loading InAppUI in Xamarian. +- Error code RHBIND : error RHB0002: Failed to write PDB. Fix for build failures with RHBIN error when building Xamarin and SyncFusion UWP projects. This is an opt-in fix and requires customer to setting the msbuild property NoLinkerSymbols. +- Fix to execution engine exception when loading InAppUI in Xamarin. ### UWP 6.2.11 (November 19th, 2020) - .NET Native fix for call to `string.Replace` does not terminate and goes into an infinite loop From 3bebc350c9382f291b8578aee06acacd8fb59505 Mon Sep 17 00:00:00 2001 From: Nikola Milosavljevic Date: Mon, 14 Jun 2021 08:57:58 -0700 Subject: [PATCH 824/872] Update README.md --- releases/reference-assemblies/README.md | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/releases/reference-assemblies/README.md b/releases/reference-assemblies/README.md index bdbfcc042..9a091c1ec 100644 --- a/releases/reference-assemblies/README.md +++ b/releases/reference-assemblies/README.md @@ -82,6 +82,20 @@ https://www.nuget.org/packages/Microsoft.NETFramework.ReferenceAssemblies ## Latest release -Version: 1.0.0 +Version: 1.0.2 -Date: Sun, 05 May 2019 23:37:33 GMT +Date: May 6th, 2021 + +## Changelog + +### 1.0.2 + +Fixes naming issue with System.Configuration.dll in 2.0 and 3.5 packages. Incorrect capitalization (System.configuration.dll) was causing build issues on Linux. + +### 1.0.1 + +Adds .NET 3.5 package. + +### 1.0.0 + +Initial release From 7c867debf52fa68e1270e073082edd84ceb5c290 Mon Sep 17 00:00:00 2001 From: Nikola Milosavljevic Date: Mon, 14 Jun 2021 12:57:35 -0700 Subject: [PATCH 825/872] Update releases/reference-assemblies/README.md Co-authored-by: Maira Wenzel --- releases/reference-assemblies/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/releases/reference-assemblies/README.md b/releases/reference-assemblies/README.md index 9a091c1ec..cdf2a8e44 100644 --- a/releases/reference-assemblies/README.md +++ b/releases/reference-assemblies/README.md @@ -94,7 +94,7 @@ Fixes naming issue with System.Configuration.dll in 2.0 and 3.5 packages. Incorr ### 1.0.1 -Adds .NET 3.5 package. +Adds .NET Framework 3.5 package. ### 1.0.0 From aa6ca6c4670ba0fcc3352ee2b6c1531d13b2f48b Mon Sep 17 00:00:00 2001 From: Maira Wenzel Date: Tue, 27 Jul 2021 15:33:56 -0700 Subject: [PATCH 826/872] Update ISSUE_TEMPLATE.md --- .github/ISSUE_TEMPLATE.md | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md index 3a76dfd93..afa3dd1b8 100644 --- a/.github/ISSUE_TEMPLATE.md +++ b/.github/ISSUE_TEMPLATE.md @@ -1,9 +1,5 @@ -Please do not file any issues here. +DO NOT FILE ISSUES IN THIS REPO. -For .NET Core related issue, please check this file to file the issue in the appropriate repo: +Check the following document to find the appropriate repo or location to file a new issue: -https://github.com/dotnet/core/blob/master/Documentation/core-repos.md - -For .NET Framework issues, please use the developer community: - -https://developercommunity.visualstudio.com/spaces/61/index.html +https://github.com/dotnet/core/blob/main/Documentation/core-repos.md From 7fde23f3182bcb1359628c0a6b8902aae4953a9d Mon Sep 17 00:00:00 2001 From: Joseph Musser Date: Fri, 20 Aug 2021 14:57:25 -0400 Subject: [PATCH 827/872] Fix URL (#1284) --- docs/ecosystem-issues.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/ecosystem-issues.md b/docs/ecosystem-issues.md index ac02254cb..c9526d88d 100644 --- a/docs/ecosystem-issues.md +++ b/docs/ecosystem-issues.md @@ -460,7 +460,7 @@ with the OSS ecosystem: Sandbox](https://aaronstannard.com/new-rules-dotnet-oss/), by Aaron Stannard * [How to Build Sustainable Open Source Software -Projects](https://aaronstannard.com/next-decade-dotnet/), by Aaron Stannard +Projects](https://aaronstannard.com/sustainable-open-source-software/), by Aaron Stannard * [The Next Decade of .NET Open Source](https://aaronstannard.com/next-decade-dotnet/), by Aaron Stannard From 160ce0682b92edb087c804e3016f258382935728 Mon Sep 17 00:00:00 2001 From: Shohei YOSHIDA Date: Thu, 7 Oct 2021 02:38:42 +0900 Subject: [PATCH 828/872] Escape backslash for reading this document on github (#1326) --- .../change-in-path-separator-character-in-zip-files.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Documentation/compatibility/change-in-path-separator-character-in-zip-files.md b/Documentation/compatibility/change-in-path-separator-character-in-zip-files.md index bf2c38975..b810b9caf 100644 --- a/Documentation/compatibility/change-in-path-separator-character-in-zip-files.md +++ b/Documentation/compatibility/change-in-path-separator-character-in-zip-files.md @@ -12,7 +12,7 @@ Planned ### Change Description For apps that target the .NET Framework 4.6.1 and later versions, the path separator character has changed from a backslash ("\\") to a forward slash ("/") in the property of objects created by overloads of the method. The change brings the .NET implementation into conformity with section 4.4.17.1 of the [.ZIP File Format Specification](https://pkware.cachefly.net/webdocs/casestudies/APPNOTE.TXT) and allows .ZIP archives to be decompressed on non-Windows systems.
-Decompressing a zip file created by an app that targets a previous version of the .NET Framework on non-Windows operating systems such as the Macintosh fails to preserve the directory structure. For example, on the Macintosh, it creates a set of files whose filename concatenates the directory path, along with any backslash ("\") characters, and the filename. As a result, the directory structure of decompressed files is not preserved. +Decompressing a zip file created by an app that targets a previous version of the .NET Framework on non-Windows operating systems such as the Macintosh fails to preserve the directory structure. For example, on the Macintosh, it creates a set of files whose filename concatenates the directory path, along with any backslash ("\\") characters, and the filename. As a result, the directory structure of decompressed files is not preserved. - [X] Quirked From 0c29507b73378288dee7de3487ec439dfabe1305 Mon Sep 17 00:00:00 2001 From: kalaskarsanket <73312933+kalaskarsanket@users.noreply.github.com> Date: Wed, 13 Oct 2021 10:27:01 -0700 Subject: [PATCH 829/872] .NET Native 2.2 (UWP 6.2.13) release --- releases/UWP/net-native2.2/README.md | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/releases/UWP/net-native2.2/README.md b/releases/UWP/net-native2.2/README.md index 09ab4e0c3..0e1802270 100644 --- a/releases/UWP/net-native2.2/README.md +++ b/releases/UWP/net-native2.2/README.md @@ -4,8 +4,13 @@ You can see what was included in each .NET Native 2.2 ([Microsoft.NETCore.Univer When using Visual Studio, these packages require Visual Studio 2019 or Visual Studio 2017 Version 15.9. +### UWP 6.2.13 (October 13th, 2021) +- Fix data serialization on .NET Native +- Update clrcompression zlib from 1.2 to 1.2.11 +- Fix F5 inner dev-loop performance issue by generating System.Private.Corelib Ready-To-Run image + ### UWP 6.2.12 (February 9th, 2021) -- Error code RHBIND : error RHB0002: Failed to write PDB. Fix for build failures with RHBIN error when building Xamarin and SyncFusion UWP projects. This is an opt-in fix and requires customer to setting the msbuild property NoLinkerSymbols. +- Error code RHBIND : error RHB0002: Failed to write PDB. Fix for build failures with RHBIN error when building Xamarin and SyncFusion UWP projects. This is an opt-in fix and requires customer to setting the msbuild property NoLinkerSymbols - Fix to execution engine exception when loading InAppUI in Xamarin. ### UWP 6.2.11 (November 19th, 2020) From 3fff62438dd7ded3d2a0cf37ffe1448145dc2fa9 Mon Sep 17 00:00:00 2001 From: kalaskarsanket <73312933+kalaskarsanket@users.noreply.github.com> Date: Wed, 13 Oct 2021 10:37:39 -0700 Subject: [PATCH 830/872] correcting zlib ver --- releases/UWP/net-native2.2/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/releases/UWP/net-native2.2/README.md b/releases/UWP/net-native2.2/README.md index 0e1802270..a309db5a1 100644 --- a/releases/UWP/net-native2.2/README.md +++ b/releases/UWP/net-native2.2/README.md @@ -6,7 +6,7 @@ When using Visual Studio, these packages require Visual Studio 2019 or Visual St ### UWP 6.2.13 (October 13th, 2021) - Fix data serialization on .NET Native -- Update clrcompression zlib from 1.2 to 1.2.11 +- Update clrcompression zlib from 1.2.8 to 1.2.11 - Fix F5 inner dev-loop performance issue by generating System.Private.Corelib Ready-To-Run image ### UWP 6.2.12 (February 9th, 2021) From 30a815248bb64a9554c8e8761364831fe58e7f29 Mon Sep 17 00:00:00 2001 From: DotNetDeveloperLevel80 <85624726+DotNetDeveloperLevel80@users.noreply.github.com> Date: Mon, 6 Dec 2021 02:02:00 +0200 Subject: [PATCH 831/872] Update dotnet-developer-projects.md (#1325) --- dotnet-developer-projects.md | 1 + 1 file changed, 1 insertion(+) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 03c67dcb6..a5094aae3 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -112,6 +112,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [ASP.NET MVC Boilerplate Framework](https://github.com/ASP-NET-MVC-Boilerplate/Framework) - ASP.NET MVC Extensions and Helper NuGet packages. * [AsyncCollections](https://github.com/HellBrick/AsyncCollections) - A set of lock-free thread-safe collections designed to be used asynchronously. * [Automatonymous](https://github.com/MassTransit/Automatonymous) - An asynchronous state machine engine with messaging support. + * [Barcodes](https://github.com/gehtsoft-usa/Gehtsoft.Barcodes) - Cross-platform C# library for generation of different types of barcodes and QR codes. * [Bing.RestClient](https://github.com/AdvancedREI/Bing.RestClient) - Access the Bing REST APIs from a unified client. * [BoxKite.Twitter](https://github.com/NickHodge/BoxKite.Twitter/) - Twitter .NET Client Library for the 1.1 Twitter API, incorporating REST API, User streaming and Search Streaming. Uses Reactive Extensions (Rx). * [CarbonIntensityUK](https://github.com/jordansrowles/CarbonIntensityUK) - Asynchronous wrapper around the [Carbon Intensity API](https://api.carbonintensity.org.uk/) provided by the National Grid ESO. From c99dc8a2d897be1ddf23cbe44f22f6775ca7a6c3 Mon Sep 17 00:00:00 2001 From: Baltermia <54800864+speyck@users.noreply.github.com> Date: Mon, 31 Jan 2022 05:04:12 +0100 Subject: [PATCH 832/872] Fix link to boo language repository (#1338) --- dotnet-developer-projects.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index a5094aae3..833c773d4 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -22,7 +22,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [Orleans](http://dotnet.github.io/orleans/) - Orleans is a framework that provides a straightforward approach to building distributed high-scale computing applications, without the need to learn and apply complex concurrency or other scaling patterns. It was created by Microsoft Research and designed for use in the cloud. Orleans is a mature but fast evolving platform that has been battle tested since 2011 by several Microsoft product groups, such as Halo, Gears of War, Skype, Azure, Xbox, as well as by a growing number of other companies using it in Azure, AWS, GCP, and on premises. ## Languages - * [Boo](https://github.com/bamboo/boo) - A .NET language similar to Python but with static typing, and many meta-programming capabilities. + * [Boo](https://github.com/boo-lang/boo) - A .NET language similar to Python but with static typing, and many meta-programming capabilities. * [ClojureCLR](https://github.com/clojure/clojure-clr) - A .NET implementation of the [Clojure](http://clojure.org) programming language, built on the DLR. * [Cobra](http://cobra-language.com/source/) - Clean, high-level syntax (Boo/Python-like). Static and dynamic binding. First class support for unit tests and contracts. Compiled performance with scripting conveniences. Lambdas and closures. Extensions and mixins. * [Dynamic Language Runtime](http://www.github.com/IronLanguages/main) - A toolkit for building dynamic languages for .NET. From b8170b726cdea764c2a4a2af1586451e60da0a4d Mon Sep 17 00:00:00 2001 From: Bruno Garcia Date: Fri, 11 Mar 2022 03:23:02 +0100 Subject: [PATCH 833/872] Sentry free for oss (#1281) --- dotnet-free-oss-services.md | 1 + 1 file changed, 1 insertion(+) diff --git a/dotnet-free-oss-services.md b/dotnet-free-oss-services.md index 4f7d03731..93582ff3b 100644 --- a/dotnet-free-oss-services.md +++ b/dotnet-free-oss-services.md @@ -43,6 +43,7 @@ Please sort projects alphabetically and provide a one-line description. Where po ## Analytics and Error Reporting * [Bugsnag](https://bugsnag.com/blog/bugsnag-loves-open-source) - Cross platform error reporting. +* [Sentry](https://sentry.io/for/open-source/) - Cross platform error reporting. ## Cloud Resources and Services From a182b95bd0b4d5487612a3df75e49480990600d4 Mon Sep 17 00:00:00 2001 From: Tom Date: Mon, 13 Jun 2022 15:09:00 -0400 Subject: [PATCH 834/872] Update .NET native 2.2. readme for 6.2.14 --- releases/UWP/net-native2.2/README.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/releases/UWP/net-native2.2/README.md b/releases/UWP/net-native2.2/README.md index a309db5a1..01241f7bd 100644 --- a/releases/UWP/net-native2.2/README.md +++ b/releases/UWP/net-native2.2/README.md @@ -4,6 +4,13 @@ You can see what was included in each .NET Native 2.2 ([Microsoft.NETCore.Univer When using Visual Studio, these packages require Visual Studio 2019 or Visual Studio 2017 Version 15.9. +### UWP 6.2.14 (June 13th, 2022) +- Address Brotli Library Buffer Overflow Vulnerability (https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/CVE-2020-8927) +- Opt-in fix to generate PDB's out of process. This is an alternate to `NoLinkerSymbols` which generates .NET native symbols and addresses the error `Error code RHBIND : error RHB0002: Failed to write PDB. Fix for build failures with RHBIN error when building Xamarin and SyncFusion UWP projects.` To enable the change, add `true` to the appropriate property groups in the application csproj file. +- Fix `ILT0014: Failed to compile interop source code. See the build log for error details.` +- Fix ARM64 application crash when calling methods with more than 8 arguments in finally block +- Fix ARM64 compilation issues when targeting latest Windows SDK breaks + ### UWP 6.2.13 (October 13th, 2021) - Fix data serialization on .NET Native - Update clrcompression zlib from 1.2.8 to 1.2.11 From f3cf2da6a32a68c8e161850a4bd0283b497dd39d Mon Sep 17 00:00:00 2001 From: "microsoft-github-policy-service[bot]" <77245923+microsoft-github-policy-service[bot]@users.noreply.github.com> Date: Mon, 13 Jun 2022 16:44:49 -0700 Subject: [PATCH 835/872] Microsoft mandatory file (#1347) Co-authored-by: microsoft-github-policy-service[bot] <77245923+microsoft-github-policy-service[bot]@users.noreply.github.com> --- SECURITY.md | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 SECURITY.md diff --git a/SECURITY.md b/SECURITY.md new file mode 100644 index 000000000..869fdfe2b --- /dev/null +++ b/SECURITY.md @@ -0,0 +1,41 @@ + + +## Security + +Microsoft takes the security of our software products and services seriously, which includes all source code repositories managed through our GitHub organizations, which include [Microsoft](https://github.com/Microsoft), [Azure](https://github.com/Azure), [DotNet](https://github.com/dotnet), [AspNet](https://github.com/aspnet), [Xamarin](https://github.com/xamarin), and [our GitHub organizations](https://opensource.microsoft.com/). + +If you believe you have found a security vulnerability in any Microsoft-owned repository that meets [Microsoft's definition of a security vulnerability](https://aka.ms/opensource/security/definition), please report it to us as described below. + +## Reporting Security Issues + +**Please do not report security vulnerabilities through public GitHub issues.** + +Instead, please report them to the Microsoft Security Response Center (MSRC) at [https://msrc.microsoft.com/create-report](https://aka.ms/opensource/security/create-report). + +If you prefer to submit without logging in, send email to [secure@microsoft.com](mailto:secure@microsoft.com). If possible, encrypt your message with our PGP key; please download it from the [Microsoft Security Response Center PGP Key page](https://aka.ms/opensource/security/pgpkey). + +You should receive a response within 24 hours. If for some reason you do not, please follow up via email to ensure we received your original message. Additional information can be found at [microsoft.com/msrc](https://aka.ms/opensource/security/msrc). + +Please include the requested information listed below (as much as you can provide) to help us better understand the nature and scope of the possible issue: + + * Type of issue (e.g. buffer overflow, SQL injection, cross-site scripting, etc.) + * Full paths of source file(s) related to the manifestation of the issue + * The location of the affected source code (tag/branch/commit or direct URL) + * Any special configuration required to reproduce the issue + * Step-by-step instructions to reproduce the issue + * Proof-of-concept or exploit code (if possible) + * Impact of the issue, including how an attacker might exploit the issue + +This information will help us triage your report more quickly. + +If you are reporting for a bug bounty, more complete reports can contribute to a higher bounty award. Please visit our [Microsoft Bug Bounty Program](https://aka.ms/opensource/security/bounty) page for more details about our active programs. + +## Preferred Languages + +We prefer all communications to be in English. + +## Policy + +Microsoft follows the principle of [Coordinated Vulnerability Disclosure](https://aka.ms/opensource/security/cvd). + + From 509d3721d8748a8391797e8085641e027904967c Mon Sep 17 00:00:00 2001 From: Tara Overfield Date: Tue, 9 Aug 2022 10:03:11 -0700 Subject: [PATCH 836/872] Announcing .NET Framework 4.8.1 --- .../4.x WCF optional components.md | 11 ++++++++ releases/net481/README.md | 16 ++++++++++++ releases/net481/dotnet481-changes.md | 25 +++++++++++++++++++ releases/net481/dotnet481-known-issues.md | 7 ++++++ 4 files changed, 59 insertions(+) create mode 100644 releases/net481/KnownIssues/4.x WCF optional components.md create mode 100644 releases/net481/README.md create mode 100644 releases/net481/dotnet481-changes.md create mode 100644 releases/net481/dotnet481-known-issues.md diff --git a/releases/net481/KnownIssues/4.x WCF optional components.md b/releases/net481/KnownIssues/4.x WCF optional components.md new file mode 100644 index 000000000..dbb25d17a --- /dev/null +++ b/releases/net481/KnownIssues/4.x WCF optional components.md @@ -0,0 +1,11 @@ +# 4.x WCF optional components + +## Symptoms +The .NET Framework 4.x WCF optional components on Windows 11 ARM64 client machines will fail to be enabled either through the dism command or add/remove program UI. + +## Workaround +No workaround available + +## Resolution + A resolution to this issue will be included in an upcoming release +**Note**: Message Queuing (MSMQ) Activation will remain disabled because MSMQ is not available on Windows 11 for ARM64 client machines \ No newline at end of file diff --git a/releases/net481/README.md b/releases/net481/README.md new file mode 100644 index 000000000..98d84138d --- /dev/null +++ b/releases/net481/README.md @@ -0,0 +1,16 @@ +# .NET Framework 4.8.1 Release Notes + +You can learn about the changes made in the .NET Framework 4.8.1. + +- [Download](http://go.microsoft.com/fwlink/?LinkId=2203304) +- [.NET Framework 4.8 RTM Announcement blog post](https://devblogs.microsoft.com/dotnet/announcing-dotnet-framework-481) +- [Release Notes](dotnet481-changes.md) +- [Application compatibility](https://github.com/Microsoft/dotnet/blob/master/Documentation/compatibility/README.md#net-framework-481) +- [Known issues](dotnet481-known-issues.md) + +## Release Notes by Product Area + +- [Native support for Arm64](dotnet48-changes.md#native-support-for-Arm64) +- [Accessible Tooltips](dotnet48-changes.md#windows-forms) +- [Windows Forms – Accessibility Improvements](dotnet48-changes.md#windows-forms) + diff --git a/releases/net481/dotnet481-changes.md b/releases/net481/dotnet481-changes.md new file mode 100644 index 000000000..b7e5c8d75 --- /dev/null +++ b/releases/net481/dotnet481-changes.md @@ -0,0 +1,25 @@ +# .NET Framework 4.8.1 Release Notes + +.NET Framework release notes describe product improvements grouped by product area. + +## Native support for Arm64 + +* Add native Arm64 support to the .NET Framework family to leverage the benefits of running workloads natively on Arm64 for better performance when compared to running x64 code emulated on Arm64. + +## Accessible Tooltips + +* tooltips now comply with the guidelines set forth in the [WCAG2.1 content on Hover or Focus](https://www.w3.org/WAI/WCAG21/Understanding/content-on-hover-or-focus.html) guidance. The requirements for tooltips require the following: +- Tooltips must display either via mouse hover or by keyboard navigation to the control. +- Tooltips should be **dismissable**. That is, a simple keyboard command like the ESC key should dismiss the tooltip. +- Tooltips should be **hoverable**. Users should be able to place their mouse cursor over the tooltip. This enables scenarios like using magnifier to be able to read the tooltip for low-vision users. +- Tooltips should be **persistent**. Tooltips should not automatically disappear after a certain time has elapsed. Rather, the tooltips should be dismissed by the user moving their mouse to another control, or by dismissing the tooltip as described above. + +## Windows Forms + +* Added support for the UIA Text Pattern to enable assistive technology to traverse the content of a TextBox or similar text-based control letter by letter. +* Fixed high contrast issues in several controls and have changed the contrast ratio of selection rectangles to be darker and more visible. +* Fixed several DataGridView issues: +- Updated the scrollbar names for consistency. +- Fixed an issue where Narrator was unable to focus on empty DataGridView cells. +- Enabled developers to set the localized control type property for Custom DataGridView cells. +- Updated the link color for DataGridViewLink cells to have better contrast with the background. \ No newline at end of file diff --git a/releases/net481/dotnet481-known-issues.md b/releases/net481/dotnet481-known-issues.md new file mode 100644 index 000000000..714392e5e --- /dev/null +++ b/releases/net481/dotnet481-known-issues.md @@ -0,0 +1,7 @@ +.NET Framework 4.8.1 Known Issues +================================= + +This document lists the known issues that you may experience after you install the Microsoft .NET Framework 4.8.1 + +## Product issues for the .NET Framework 4.8.1 +- [ASP.NET - 4.x WCF optional components](https://github.com/Microsoft/dotnet/blob/master/releases/net48/KnownIssues/4.x-WCF-optional-components.md) From 78e5a9e3e1fb82e86795bf0ccc6ad854d549c0f3 Mon Sep 17 00:00:00 2001 From: Tara Overfield Date: Tue, 9 Aug 2022 10:05:01 -0700 Subject: [PATCH 837/872] Announcing .NET Framework 4.8.1 --- Documentation/compatibility/README.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Documentation/compatibility/README.md b/Documentation/compatibility/README.md index 9762e954e..ee144fc6f 100644 --- a/Documentation/compatibility/README.md +++ b/Documentation/compatibility/README.md @@ -4,6 +4,7 @@ The following documents provide information on .NET Framework application compat Please help us improve the [.NET Framework Application Compatibility documents](https://github.com/Microsoft/dotnet/tree/master/Documentation/compatibility). In particular, better titles will improve the index below, both in content and the sort. +- [.NET Framework 4.8.1](#net-framework-481) - [.NET Framework 4.8](#net-framework-48) - [.NET Framework 4.7.2](#net-framework-472) - [.NET Framework 4.7.1](#net-framework-471) @@ -15,6 +16,10 @@ Please help us improve the [.NET Framework Application Compatibility documents]( - [.NET Framework 4.5.1](#net-framework-451) - [.NET Framework 4.5](#net-framework-45) +## .NET Framework 4.8.1 + +No breaking changes or other changes in behavior which is expected to impact application compatibility are included as a part of .NET Framework 4.8.1 + ## .NET Framework 4.8 - [.NET COM successfully marshals ByRef SafeArray parameters on events](interop-event-handlers-safearray.md) From 4a94d5696d3443171b1859e47b454aa6672e0247 Mon Sep 17 00:00:00 2001 From: Tara Overfield Date: Tue, 9 Aug 2022 10:07:41 -0700 Subject: [PATCH 838/872] Announcing .NET Framework 4.8.1 --- Documentation/KnownIssues/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/Documentation/KnownIssues/README.md b/Documentation/KnownIssues/README.md index 09f2c10c3..f9c60efec 100644 --- a/Documentation/KnownIssues/README.md +++ b/Documentation/KnownIssues/README.md @@ -2,6 +2,7 @@ The following links provide the known issues about the various .NET Framework versions at the time of their release. They describe the underlying issue and how to resolve them. +- [.NET Framework 4.8.1](https://github.com/Microsoft/dotnet/blob/master/releases/net481/dotnet481-known-issues.md) - [.NET Framework 4.8](http://go.microsoft.com/fwlink/?LinkId=2086606) - [.NET Framework 4.7.2](http://go.microsoft.com/fwlink/?LinkId=863257) - [.NET Framework 4.7.1](http://go.microsoft.com/fwlink/?LinkId=852101) From a8356f0ed0dd532cf340bb0bc6dd5f01cad9c10e Mon Sep 17 00:00:00 2001 From: Tara Overfield Date: Tue, 9 Aug 2022 10:09:35 -0700 Subject: [PATCH 839/872] Announcing .NET Framework 4.8.1 --- releases/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/releases/README.md b/releases/README.md index 773025579..ed94c8a3a 100644 --- a/releases/README.md +++ b/releases/README.md @@ -8,6 +8,7 @@ To get up-to-date with the latest versions of .NET Framework and Visual Studio, You can see what was included in each .NET Framework release. Some releases are now unsupported, as called out. +- [.NET Framework 4.8.1](net481/README.md) - [.NET Framework 4.8](net48/README.md) - [.NET Framework 4.7.2](net472/README.md) - [.NET Framework 4.7.1](net471/README.md) From 440de9d66db44dfeff888e29a982e213d7976325 Mon Sep 17 00:00:00 2001 From: Tara Overfield Date: Tue, 9 Aug 2022 11:09:25 -0700 Subject: [PATCH 840/872] Update README.md --- releases/net481/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/releases/net481/README.md b/releases/net481/README.md index 98d84138d..9b3c9f352 100644 --- a/releases/net481/README.md +++ b/releases/net481/README.md @@ -2,7 +2,7 @@ You can learn about the changes made in the .NET Framework 4.8.1. -- [Download](http://go.microsoft.com/fwlink/?LinkId=2203304) +- [Download](https://go.microsoft.com/fwlink/?LinkId=2203304) - [.NET Framework 4.8 RTM Announcement blog post](https://devblogs.microsoft.com/dotnet/announcing-dotnet-framework-481) - [Release Notes](dotnet481-changes.md) - [Application compatibility](https://github.com/Microsoft/dotnet/blob/master/Documentation/compatibility/README.md#net-framework-481) From 1166bd0f135f88cb23fbaa01f2cd96e93f3b86a9 Mon Sep 17 00:00:00 2001 From: Chet Husk Date: Tue, 9 Aug 2022 14:04:44 -0500 Subject: [PATCH 841/872] Update links to 4.8.1 sections --- releases/net481/README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/releases/net481/README.md b/releases/net481/README.md index 9b3c9f352..42949defc 100644 --- a/releases/net481/README.md +++ b/releases/net481/README.md @@ -10,7 +10,7 @@ You can learn about the changes made in the .NET Framework 4.8.1. ## Release Notes by Product Area -- [Native support for Arm64](dotnet48-changes.md#native-support-for-Arm64) -- [Accessible Tooltips](dotnet48-changes.md#windows-forms) -- [Windows Forms – Accessibility Improvements](dotnet48-changes.md#windows-forms) +- [Native support for Arm64](dotnet481-changes.md#native-support-for-Arm64) +- [Accessible Tooltips](dotnet481-changes.md#windows-forms) +- [Windows Forms – Accessibility Improvements](dotnet481-changes.md#windows-forms) From 2091f33bae9b059d62b6ce096d02ce71b1d23cd8 Mon Sep 17 00:00:00 2001 From: Genevieve Warren <24882762+gewarren@users.noreply.github.com> Date: Tue, 9 Aug 2022 14:35:25 -0700 Subject: [PATCH 842/872] Fix bookmark --- releases/net481/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/releases/net481/README.md b/releases/net481/README.md index 42949defc..48f7f667b 100644 --- a/releases/net481/README.md +++ b/releases/net481/README.md @@ -11,6 +11,6 @@ You can learn about the changes made in the .NET Framework 4.8.1. ## Release Notes by Product Area - [Native support for Arm64](dotnet481-changes.md#native-support-for-Arm64) -- [Accessible Tooltips](dotnet481-changes.md#windows-forms) +- [Accessible Tooltips](dotnet481-changes.md#accessible-tooltips) - [Windows Forms – Accessibility Improvements](dotnet481-changes.md#windows-forms) From 76d553192a4f27d8e8f7ab00b5d7a60c0d979fc8 Mon Sep 17 00:00:00 2001 From: Tara Overfield Date: Tue, 9 Aug 2022 18:06:13 -0700 Subject: [PATCH 843/872] Update dotnet481-known-issues.md --- releases/net481/dotnet481-known-issues.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/releases/net481/dotnet481-known-issues.md b/releases/net481/dotnet481-known-issues.md index 714392e5e..fd00d8452 100644 --- a/releases/net481/dotnet481-known-issues.md +++ b/releases/net481/dotnet481-known-issues.md @@ -4,4 +4,4 @@ This document lists the known issues that you may experience after you install the Microsoft .NET Framework 4.8.1 ## Product issues for the .NET Framework 4.8.1 -- [ASP.NET - 4.x WCF optional components](https://github.com/Microsoft/dotnet/blob/master/releases/net48/KnownIssues/4.x-WCF-optional-components.md) +- [ASP.NET - 4.x WCF optional components](https://github.com/microsoft/dotnet/blob/master/releases/net481/KnownIssues/4.x%20WCF%20optional%20components.md) From dc41a83b45979c8bc6375c454f4305c198d65ef1 Mon Sep 17 00:00:00 2001 From: Tara Overfield Date: Tue, 9 Aug 2022 18:07:17 -0700 Subject: [PATCH 844/872] Update 4.x WCF optional components.md --- releases/net481/KnownIssues/4.x WCF optional components.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/releases/net481/KnownIssues/4.x WCF optional components.md b/releases/net481/KnownIssues/4.x WCF optional components.md index dbb25d17a..e13354ffe 100644 --- a/releases/net481/KnownIssues/4.x WCF optional components.md +++ b/releases/net481/KnownIssues/4.x WCF optional components.md @@ -8,4 +8,5 @@ No workaround available ## Resolution A resolution to this issue will be included in an upcoming release -**Note**: Message Queuing (MSMQ) Activation will remain disabled because MSMQ is not available on Windows 11 for ARM64 client machines \ No newline at end of file + +**Note**: Message Queuing (MSMQ) Activation will remain disabled because MSMQ is not available on Windows 11 for ARM64 client machines From 9dc8690a3a93e778b4039c60aa2830fd6a389bb6 Mon Sep 17 00:00:00 2001 From: Nikola Milosavljevic Date: Mon, 22 Aug 2022 16:39:24 -0700 Subject: [PATCH 845/872] Update README.md Update changelog with 1.0.3 information. --- releases/reference-assemblies/README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/releases/reference-assemblies/README.md b/releases/reference-assemblies/README.md index cdf2a8e44..a85f36a62 100644 --- a/releases/reference-assemblies/README.md +++ b/releases/reference-assemblies/README.md @@ -88,6 +88,10 @@ Date: May 6th, 2021 ## Changelog +### 1.0.3 + +Adds .NET Framework 4.8.1 package. + ### 1.0.2 Fixes naming issue with System.Configuration.dll in 2.0 and 3.5 packages. Incorrect capitalization (System.configuration.dll) was causing build issues on Linux. From dbf66da0376a0b10f10be2b4f368c7bd429f9271 Mon Sep 17 00:00:00 2001 From: Genevieve Warren <24882762+gewarren@users.noreply.github.com> Date: Mon, 12 Jun 2023 18:24:26 -0700 Subject: [PATCH 846/872] Update version in link (#1387) --- releases/net481/README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/releases/net481/README.md b/releases/net481/README.md index 48f7f667b..db30036e3 100644 --- a/releases/net481/README.md +++ b/releases/net481/README.md @@ -3,14 +3,14 @@ You can learn about the changes made in the .NET Framework 4.8.1. - [Download](https://go.microsoft.com/fwlink/?LinkId=2203304) -- [.NET Framework 4.8 RTM Announcement blog post](https://devblogs.microsoft.com/dotnet/announcing-dotnet-framework-481) -- [Release Notes](dotnet481-changes.md) +- [.NET Framework 4.8.1 RTM announcement blog post](https://devblogs.microsoft.com/dotnet/announcing-dotnet-framework-481) +- [Release notes](dotnet481-changes.md) - [Application compatibility](https://github.com/Microsoft/dotnet/blob/master/Documentation/compatibility/README.md#net-framework-481) - [Known issues](dotnet481-known-issues.md) ## Release Notes by Product Area - [Native support for Arm64](dotnet481-changes.md#native-support-for-Arm64) -- [Accessible Tooltips](dotnet481-changes.md#accessible-tooltips) -- [Windows Forms – Accessibility Improvements](dotnet481-changes.md#windows-forms) +- [Accessible tooltips](dotnet481-changes.md#accessible-tooltips) +- [Windows Forms – accessibility improvements](dotnet481-changes.md#windows-forms) From 9a8f0ba5abc1cbd679c34c7b36baa157e3df5ed6 Mon Sep 17 00:00:00 2001 From: Angelo Pirola Date: Tue, 13 Jun 2023 04:22:39 +0200 Subject: [PATCH 847/872] Update dotnet-developer-projects.md (#1386) --- dotnet-developer-projects.md | 1 + 1 file changed, 1 insertion(+) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 833c773d4..a5dc279d0 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -129,6 +129,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [Comparers](https://github.com/StephenCleary/Comparers) - Fluent syntax for building comparers (and equality comparers) and implementing object comparison. * [CoordinateSharp](https://github.com/Tronald/CoordinateSharp) - Parse or convert geographic coordinate formats and calculate location based solar/lunar information. * [CoreIpc](https://github.com/UiPath/coreipc) - WCF-like service model API for communication over named pipes. .NET standard and node.js clients. + * [CustomLibrary.EFCore](https://github.com/AngeloDotNet/CustomLibrary.EFCore) - Library of generic and transactional CRUD operations with Entity Framework Core 6.x for SQL Server, MySQL, Postgres, SQLite databases * [Cricket](https://github.com/fsprojects/Cricket) - Actor library. * [DalSoft.RestClient](https://restclient.dalsoft.io/) - An extensible, dynamic and fluent Rest Client. Create frictionless code whilst still using the HttpClient you already know. * [DateTimeExtensions](https://github.com/kappy/DateTimeExtensions) - Common Date Time operations on the form of extensions to System.DateTime, including holidays and working days calculations on several culture locales. From 4b6f5bd33899bd85d8ad6b2cc0e2f94b2dcc858b Mon Sep 17 00:00:00 2001 From: drraghavendra <64250165+drraghavendra@users.noreply.github.com> Date: Tue, 13 Jun 2023 07:53:36 +0530 Subject: [PATCH 848/872] Add Serilog - A flexible and extensible logging library for .NET applications. (#1385) --- dotnet-developer-projects.md | 1 + 1 file changed, 1 insertion(+) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index a5dc279d0..ebe172c4c 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -187,6 +187,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [PocketSharp](https://github.com/ceee/PocketSharp) - Library for the Pocket API. * [PortableRest](https://github.com/AdvancedREI/PortableRest) - Portable library for building cross-platform REST API Clients for .NET and Xamarin. * [RestSharp](https://github.com/restsharp/RestSharp) - Simple REST and HTTP API Client for .NET + * [Serilog](https://github.com/serilog/serilog) A flexible and extensible logging library for .NET applications. * [SharpCompress](https://github.com/adamhathcock/sharpcompress) - SharpCompress is a fully managed cross-platform C# library to deal with many compression types and formats: Zip, GZip, RAR, TAR, 7Zip, etc. * [SharpMap](https://github.com/SharpMap) - An easy-to-use mapping library for use in web and desktop applications * [SharpSnmpLib](https://docs.sharpsnmp.com/en/latest/) - An easy-to-use SNMP library for use on all platforms (.NET/Mono/Xamarin) From 20a8d9e7e0b975fd61f184dceed16c4053c73618 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20W=C4=99glarz?= Date: Tue, 13 Jun 2023 04:25:31 +0200 Subject: [PATCH 849/872] Update dotnet-developer-projects.md (#1382) --- dotnet-developer-projects.md | 1 + 1 file changed, 1 insertion(+) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index ebe172c4c..d7a4e0c4a 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -286,6 +286,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [Protobuf-net](https://github.com/mgravell/protobuf-net) - A .NET implementation of protobuf, allowing you to serialize your .NET objects efficiently and easily. * [Quick Diagram Tool for C#](https://github.com/realvizu/QuickDiagram) - Code visualization tool for C#. * [RepoZ](https://github.com/awaescher/RepoZ) - A zero-conf git repository hub for Windows and macOS with Windows Explorer and CLI enhancements. + * [RobiniaDocs](https://github.com/NeuroXiq/RobiniaDocs) - RobiniaDocs is a simple documentation hosting platform for .NET Core projects. * [scriptcs](https://github.com/scriptcs/scriptcs) - scriptcs makes it easy to write and execute C# with a simple text editor. * [Snoop WPF](https://github.com/cplotts/snoopwpf) - Snoop - The WPF Spy Utility * [Sql Bulk Copy Sync](https://github.com/WCOMAB/SqlBulkSync) - A lightweight, performant non-intrusive SQL Server data sync tool. From cd0a7aa18c669fa5cce2d05c40e0fbd83e1c9f31 Mon Sep 17 00:00:00 2001 From: James Montemagno Date: Mon, 12 Jun 2023 19:26:22 -0700 Subject: [PATCH 850/872] Update readme with updated .net repos (#1375) --- README.md | 37 ++++++++++++++++++++++--------------- 1 file changed, 22 insertions(+), 15 deletions(-) diff --git a/README.md b/README.md index 413e8eaa7..bb2e295c9 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,8 @@ # .NET Home -This repository is a starting point to learn about and engage in .NET and .NET open source projects. +This repository is a starting point to learn about and engage in [.NET](https://dot.net) and .NET open source projects. -This repository is not an official .NET Framework support location, however, we will respond to issues filed here as best we can. Please file .NET Core product issues at [dotnet/core](https://github.com/dotnet/core/issues) and ASP.NET Core product issues at [aspnet/home](https://github.com/aspnet/home/issues). - -You can try out an early access release of the .NET Framework at the [.NET Framework Early Access](https://github.com/microsoft/dotnet-framework-early-access) website. +This repository is not an official .NET or .NET Framework support location, however, we will respond to issues filed here as best we can. Please file .NET product issues at main project repos below. ## In this repository @@ -18,23 +16,32 @@ Please contribute to this repository via [pull requests](https://github.com/Micr ## Finding .NET Open Source Projects -Here are some excellent community-maintained lists of projects: +Here are some excellent community-maintained lists of projects & libraries: -- [Awesome .NET!](https://github.com/quozd/awesome-dotnet) -- [ASP.NET Core Library and Framework Support](https://github.com/jpsingleton/ANCLAFS) +- [Awesome .NET](https://github.com/quozd/awesome-dotnet) +- [Awesome .NET MAUI](https://github.com/jsuarezruiz/awesome-dotnet-maui) +- [Awesome Blazor](https://github.com/AdrienTorris/awesome-blazor) There are many projects that you can use and contribute to, some of which are listed below. Please do contribute to these projects! -### .NET Core +### .NET -- [.NET Core (dotnet/core)](https://github.com/dotnet/core) -- [.NET Core docs (dotnet/docs)](https://github.com/dotnet/docs) +- [.NET (dotnet/core)](https://github.com/dotnet/core) +- [.NET MAUI (dotnet/maui)](https://github.com/dotnet/maui) - [ASP.NET Core (dotnet/aspnetcore)](https://github.com/dotnet/aspnetcore) -- [ASP.NET Core docs (dotnet/AspNetCore.Docs)](https://github.com/dotnet/AspNetCore.Docs) +- [C# (dotnet/csharplang)](https://github.com/dotnet/csharplang) +- [Entity Framework Core (dotnet/efcore)](https://github.com/dotnet/efcore) +- [F# (dotnet/fsharp)](https://github.com/dotnet/fsharp) +- [ML.NET dotnet/machinelearning)](https://github.com/dotnet/machinelearning) - [Roslyn Compiler Platform (dotnet/roslyn)](https://github.com/dotnet/roslyn) -- [EntityFramework (dotnet/efcore)](https://github.com/dotnet/efcore) -- [WPF (dotnet/wpf)](https://github.com/dotnet/wpf) - [Windows Forms (dotnet/winforms)](https://github.com/dotnet/winforms) +- [WPF (dotnet/wpf)](https://github.com/dotnet/wpf) + +### .NET Docs +- [.NET docs (dotnet/docs)](https://github.com/dotnet/docs) +- [.NET MAUI docs (dotnet/docs-maui)](https://github.com/dotnet/docs-maui) +- [ASP.NET Core docs (dotnet/AspNetCore.Docs)](https://github.com/dotnet/AspNetCore.Docs) +- [Entity Framework docs (dotnet/EntityFramework.Docs)](https://github.com/dotnet/EntityFramework.Docs) ### .NET Framework @@ -43,9 +50,9 @@ There are many projects that you can use and contribute to, some of which are li ### Xamarin -- [Xamarin iOS + macOS (xamarin-macios)](https://github.com/xamarin/xamarin-macios) +- [Xamarin iOS + macOS (xamarin/xamarin-macios)](https://github.com/xamarin/xamarin-macios) - [Xamarin Android (xamarin/xamarin-android)](https://github.com/xamarin/xamarin-android) -- [Xamarin Forms (xamarin/Xamarin.Forms)](https://github.com/xamarin/Xamarin.Forms) +- [Xamarin.Forms (xamarin/Xamarin.Forms)](https://github.com/xamarin/Xamarin.Forms) - [Mono Project](https://github.com/mono/) ### Community From 69cc21448324f4691615547822fc22cb3c348f15 Mon Sep 17 00:00:00 2001 From: Scott Arbeit Date: Mon, 12 Jun 2023 19:28:23 -0700 Subject: [PATCH 851/872] Update dotnet-developer-projects.md (#1374) --- dotnet-developer-projects.md | 1 + 1 file changed, 1 insertion(+) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index d7a4e0c4a..6f13d0b1b 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -274,6 +274,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [GitLink](https://github.com/GitTools/GitLink) - Command-line tool to make .NET open source accessible without the need for a symbols server * [GitVersion](https://github.com/GitTools/GitVersion) - Use convention to derive a SemVer product version from a GitFlow based repository. * [Glimpse](https://github.com/Glimpse/Glimpse) - Providing real time diagnostics & insights to the fingertips of hundreds of thousands of developers daily. + * [Grace Version Control System](https://github.com/scottarbeit/grace) - A new, modern, cloud-native version control system written using F# and Dapr * [ILSpy](https://github.com/icsharpcode/ILSpy) - ILSpy is the open-source .NET assembly browser and decompiler. * [Mini Profiler](https://github.com/MiniProfiler/dotnet) - A simple but effective mini-profiler for .NET. * [Node.js Tools For Visual Studio](https://github.com/Microsoft/nodejstools) - Plugin that turns Visual Studio into a Node.js IDE From 2a4e5a4e63c8c35b8a64ec8b1fb4ca8d4f4eb68c Mon Sep 17 00:00:00 2001 From: Hiroshi Yoshioka <40815708+hyoshioka0128@users.noreply.github.com> Date: Tue, 13 Jun 2023 11:28:48 +0900 Subject: [PATCH 852/872] =?UTF-8?q?Typo=20"resouce"=E2=86=92"resource"=20(?= =?UTF-8?q?#1368)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- releases/UWP/net-native2.2/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/releases/UWP/net-native2.2/README.md b/releases/UWP/net-native2.2/README.md index 01241f7bd..d70ddb4aa 100644 --- a/releases/UWP/net-native2.2/README.md +++ b/releases/UWP/net-native2.2/README.md @@ -62,7 +62,7 @@ When using Visual Studio, these packages require Visual Studio 2019 or Visual St - Addresses top customer issues with 6.1 and 6.2 Preview. - Addresses some issues when used with ReactiveUI 4.1. It is still recommended that projects wishing to use this package add ShortcutGenericAnalysis flag set to true to the projects. - Fix metadata reader issue leading to build failure when using Microsoft.ML.Net (https://github.com/XamlBrewer/UWP-MachineLearning-Sample/pull/1#issuecomment-469988557) -- Fix crashes during resouce loading for some locales (https://developercommunity.visualstudio.com/content/problem/386760/net-native-22-uwp-project-build-fail.html) +- Fix crashes during resource loading for some locales (https://developercommunity.visualstudio.com/content/problem/386760/net-native-22-uwp-project-build-fail.html) - Fix crashes caused by improper escaping for application assets with spaces in path (https://github.com/Microsoft/dotnet/issues/930) - Add PackageConflictPreferredPackages property to avoid build breaks with certain package graphs - Fix issues related to Store upload failures (Error 1201) From 4f354e538038f5de03b2c77c64e527541f443789 Mon Sep 17 00:00:00 2001 From: theolivenbaum Date: Tue, 13 Jun 2023 04:36:57 +0200 Subject: [PATCH 853/872] add catalyst nlp library to the list (#1168) --- dotnet-developer-projects.md | 1 + 1 file changed, 1 insertion(+) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 6f13d0b1b..8953eb4cd 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -218,6 +218,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C ## Data Mine/Data Extraction/Machine Learning/AI * [AForge.NET](http://www.aforgenet.com/) - a C# framework designed for developers and researchers in the fields of Computer Vision and Artificial Intelligence - image processing, neural networks, genetic algorithms, machine learning, robotics. * [Accord.NET Framework](https://github.com/accord-net/framework) - The Accord.NET Framework is a .NET machine learning framework combined with audio and image processing libraries completely written in C#. + * [Catalyst](https://github.com/curiosity-ai/catalyst) - pure C# Natural Language Processing library built for speed. Inspired by spaCy's design, it brings pre-trained models, out-of-the box support for training word and document embeddings, and flexible entity recognition models. * [Nepy](https://github.com/tonyqus/nepy) - A collection of NLP parsers for .NET. (Not Updated in 3 Years - 4/2018) * [SharpNLP](http://sharpnlp.codeplex.com) - SharpNLP is a collection of natural language processing tools written in C#. (No Recent Updates - Still On Codeplex - 4/2018) * [Toxy](https://github.com/tonyqus/toxy) - An data/text extraction framework for .NET, similar to Tika in Java. (Not Updated in 2 Years - 4/2018) From 19024e9ecfe46e50059d44ae74186c6a65fac0ad Mon Sep 17 00:00:00 2001 From: Tamim Khan Date: Tue, 13 Jun 2023 03:41:03 +0100 Subject: [PATCH 854/872] Add Charming library to the list (#1204) --- dotnet-developer-projects.md | 1 + 1 file changed, 1 insertion(+) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 8953eb4cd..6a011b05b 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -119,6 +119,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [Castle.LoggingFacility.MsLogging](https://github.com/volosoft/castle-logging-ms-adapter) - An adapter library for Castle logging facility to support Microsoft.Extensions.Logging integration. * [Castle Windsor ASP.NET Core / Microsoft.Extensions.DependencyInjection Adapter](https://github.com/volosoft/castle-windsor-ms-adapter) - This library is a Castle Windsor adapter for the Microsoft.Extensions.DependencyInjection NuGet package. * [Cecil](https://github.com/jbevain/cecil) - A popular library to read, modify and write .NET binaries. + * [Charming](https://github.com/tzkhan/Charming) - A small, lightweight library that lets you generate ARM templates using C#. * [Cimbalino Toolkit](https://github.com/Cimbalino/Cimbalino-Toolkit) - A set of useful and powerful tools that will help you build your Windows Platform applications. * [Cinchoo ETL](https://github.com/Cinchoo/ChoETL) - ETL Framework for .NET (Parser / Writer for CSV, Flat, Xml, JSON, Key-Value formatted files). * [CodeJam](https://github.com/rsdn/CodeJam) - Set of handy reusable .NET components that can simplify your daily work and save your time when you copy and paste your favorite helper methods and classes from one project to another. From 4f1480db19d3ade8ad1ec16d368557f51537110f Mon Sep 17 00:00:00 2001 From: Huei Feng <695979933@qq.com> Date: Tue, 13 Jun 2023 10:42:40 +0800 Subject: [PATCH 855/872] Added Magicodes.IE to .NET Open Source Developer Projects (#1207) --- dotnet-developer-projects.md | 1 + 1 file changed, 1 insertion(+) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 6a011b05b..b47594f67 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -169,6 +169,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [LINQ Extensions](https://github.com/TommasoScalici/LINQExtensions) - LINQ extensions for .NET is a collection of useful extensions methods that extends LINQ's capability. There are methods for combinatorics and sequence analysis, generation and manipulation. * [Localization.SqlLocalizer]( https://github.com/damienbod/AspNet5Localization) - SQL Localizer for ASP.NET Core, dotnet * [Lucene.Net](https://github.com/apache/lucene.net) - A .NET full-text search engine framework that is a C# port of the popular Apache Lucene project. + * [Magicodes.IE](https://github.com/dotnetcore/Magicodes.IE) - An import and export general library, support Dto import and export and dynamic export, support Excel, Csv, Word, Pdf and Html. * [MahApps.Metro.IconPacks](https://github.com/MahApps/MahApps.Metro.IconPacks) - Some awesome icons for `WPF` and `UWP` all together. The library contains controls to use icons from [Material Design](https://materialdesignicons.com/), [Material Design Icons Light](https://github.com/Templarian/MaterialDesignLight), [Font Awesome](http://fontawesome.io/icons/), [GitHub Octicons](https://octicons.github.com/), [Modern](http://modernuiicons.com/), [Entypo+](http://www.entypo.com/) and [Simple Icons](https://simpleicons.org/). * [Math.NET Numerics](https://github.com/mathnet/mathnet-numerics) - Provides methods and algorithms for numerical computations in science, engineering and every day use. * [Mathos Core Libary](https://github.com/MathosProject/Mathos-Project) - A library with algorithms for numerical calculations in finance, statistics, pattern recognition, and more. From fe0e5e8cbd1ad1bd764aec45575b5b74373c0110 Mon Sep 17 00:00:00 2001 From: Petr Onderka Date: Tue, 13 Jun 2023 05:06:29 +0200 Subject: [PATCH 856/872] Clarify link to Int16.MaxValue (#1265) --- Documentation/compatibility/long-path-support.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Documentation/compatibility/long-path-support.md b/Documentation/compatibility/long-path-support.md index 6afeb6ea3..2a0e943cf 100644 --- a/Documentation/compatibility/long-path-support.md +++ b/Documentation/compatibility/long-path-support.md @@ -21,7 +21,7 @@ because a path exceeded 260 characters will now throw a only under the following conditions: -- The length of the path is greater than (32,767) characters. +- The length of the path is greater than (32,767) characters. - The operating system returns `COR_E_PATHTOOLONG` or its equivalent. For apps that target the .NET Framework 4.6.1 and earlier versions, the runtime From 32e73a1d517a70ca06b3e0d1c951057b7d19b4a7 Mon Sep 17 00:00:00 2001 From: Thomas Ardal Date: Tue, 13 Jun 2023 05:08:11 +0200 Subject: [PATCH 857/872] Added elmah.io to Analytics and Error Reporting (#1340) --- dotnet-free-oss-services.md | 1 + 1 file changed, 1 insertion(+) diff --git a/dotnet-free-oss-services.md b/dotnet-free-oss-services.md index 93582ff3b..dab52b6b9 100644 --- a/dotnet-free-oss-services.md +++ b/dotnet-free-oss-services.md @@ -43,6 +43,7 @@ Please sort projects alphabetically and provide a one-line description. Where po ## Analytics and Error Reporting * [Bugsnag](https://bugsnag.com/blog/bugsnag-loves-open-source) - Cross platform error reporting. +* [elmah.io](https://elmah.io/sponsorship/opensource/) - Error logging and uptime monitoring for .NET. * [Sentry](https://sentry.io/for/open-source/) - Cross platform error reporting. ## Cloud Resources and Services From a9f621b2d536e164ce37666ab4ffa2e2def5716e Mon Sep 17 00:00:00 2001 From: harborsiem Date: Tue, 13 Jun 2023 05:08:29 +0200 Subject: [PATCH 858/872] Windows Ribbon added to dotnet-developer-projects.md (#1294) --- dotnet-developer-projects.md | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index b47594f67..8921a5239 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -20,7 +20,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [Enterprise Web Library (EWL)](https://github.com/enduracode/enterprise-web-library) - An extremely opinionated platform for web applications that trades off performance, scalability, and development flexibility for an ease of maintenance you won't find anywhere else. [Enterprise Web Library site](http://www.enterpriseweblibrary.org/). * [KonfDB](https://github.com/punitganshani/konfdb) - Configuration Management as a Service for cross-platform, multi-tenant enterprise/hobby applications. * [Orleans](http://dotnet.github.io/orleans/) - Orleans is a framework that provides a straightforward approach to building distributed high-scale computing applications, without the need to learn and apply complex concurrency or other scaling patterns. It was created by Microsoft Research and designed for use in the cloud. Orleans is a mature but fast evolving platform that has been battle tested since 2011 by several Microsoft product groups, such as Halo, Gears of War, Skype, Azure, Xbox, as well as by a growing number of other companies using it in Azure, AWS, GCP, and on premises. - + ## Languages * [Boo](https://github.com/boo-lang/boo) - A .NET language similar to Python but with static typing, and many meta-programming capabilities. * [ClojureCLR](https://github.com/clojure/clojure-clr) - A .NET implementation of the [Clojure](http://clojure.org) programming language, built on the DLR. @@ -42,7 +42,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C ## Tutorials * [Docker with .NET Core](https://github.com/mindems/Docker.NET) - A tutorial trilogy designed to get you up and running quickly. - + ## Quality Assurance * [C# Coding Guidelines](https://github.com/dennisdoomen/CSharpGuidelines) - A set of coding guidelines for C# 3.0, 4.0 and 5.0 that extend StyleCop and can be forked and adapted for internal use. @@ -100,7 +100,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [NServiceBus](https://github.com/Particular/NServiceBus) - The most popular service bus for .NET. * [RestBus](https://github.com/tenor/RestBus) - Easy Asynchronous Messaging and Queueing for .NET. * [Rebus](https://github.com/rebus-org/Rebus) - Rebus is a lean service bus implementation for .NET. - + ## Libraries * [Albedo](https://github.com/ploeh/Albedo) - A .NET library targeted at making Reflection programming more consistent, using a common set of abstractions and utilities. * [Algorithmia](https://github.com/SolutionsDesign/Algorithmia) - Algorithms and Data structures @@ -224,7 +224,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [Nepy](https://github.com/tonyqus/nepy) - A collection of NLP parsers for .NET. (Not Updated in 3 Years - 4/2018) * [SharpNLP](http://sharpnlp.codeplex.com) - SharpNLP is a collection of natural language processing tools written in C#. (No Recent Updates - Still On Codeplex - 4/2018) * [Toxy](https://github.com/tonyqus/toxy) - An data/text extraction framework for .NET, similar to Tika in Java. (Not Updated in 2 Years - 4/2018) - + ## Graphics & Server-side Image Processing * [.NET Image Processor](https://github.com/elkdanger/image-processor) - Extensible, chainable image processing library (GDI+ based). * [DynamicImage](https://github.com/tgjones/dynamic-image) - WPF-based server-side image rendering system - lots of visual effects implemented as high-performance shaders. Has URL api, several plugins available. @@ -244,7 +244,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [log4net](http://logging.apache.org/log4net/) - A tool to help the programmer output log statements to a variety of output targets. * [LogMaster4Net](https://github.com/kerryjiang/LogMaster4Net) - It is a central log server which can organize your logs in different applications in the same place but have same log behaviors (loggers, appenders, levels and rules) like in the independent applications before. * [NLog](https://github.com/NLog/NLog) - NLog is a free logging platform for .NET with rich log routing and management capabilities. - + ## Model-View-ViewModel (MVVM) Frameworks * [Caliburn Micro](https://github.com/Caliburn-Micro/Caliburn.Micro) - A small, yet powerful framework, designed for building applications across all XAML platforms. * [Catel.MVVM](https://github.com/catel/catel) - Catel is an application development platform with the focus on MVVM. @@ -374,7 +374,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [OpenRA](https://github.com/OpenRA/OpenRA) - An open-source implementation of the Command & Conquer: Red Alert engine using .NET/Mono and OpenGL. * [WaveEngine](https://github.com/waveengine) - A powerful component based game engine for desktop and mobile platforms using C#. * [Xenko](https://github.com/xenko3d/xenko) - Xenko is a versatile and engaging game engine. - + ## UI and Control libraries * [AdonisUI](https://github.com/benruehl/adonis-ui) - Lightweight UI toolkit for WPF applications offering classic but enhanced Windows visuals. * [Callisto](https://github.com/timheuer/callisto) - UI Control Toolkit for WinRT apps. @@ -385,7 +385,8 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [Mono XWT](https://github.com/mono/xwt) - A cross-platform UI toolkit for creating desktop apps * [Neutronium](https://github.com/NeutroniumCore/Neutronium) - Neutronium is a library to create .NET desktop applications using HTML, CSS and javascript. It uses the MVVM pattern exactly the same way as WPF applications. * [UWP Community Toolkit](https://github.com/Microsoft/UWPCommunityToolkit) - The UWP Community Toolkit is a collection of helper functions, custom controls, and app services. It simplifies and demonstrates common developer tasks building UWP apps for Windows 10. - + * [Windows Ribbon](https://github.com/harborsiem/WindowsRibbon) - Windows Ribbon for WinForms is a .NET wrapper for Microsoft Windows Ribbon and a toolkit for design and preview. + ## Windows Services * [King.Service](https://github.com/jefking/King.Service) - Task scheduling for Azure and Windows * [TopShelf](https://github.com/Topshelf/Topshelf) - An easy service hosting framework for building Windows services using .NET. @@ -398,7 +399,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C ## Deployment * [DropkicK](https://github.com/chucknorris/dropkick/) - A fluent deployment library for Windows applications * [RoundHouse](https://github.com/chucknorris/roundhouse) - RoundhousE is a Database Migration Utility for .NET using sql files and versioning based on source control - + ## Service Bus * [King.Service.ServiceBus](https://github.com/jefking/King.Service.ServiceBus) - Task scheduling for Azure and Windows Servers: Service Bus. * [Warewolf Easy Service Bus](https://github.com/Warewolf-ESB/Warewolf-ESB) - An open source easy to use service bus, built on numerous .Net technologies including WF (Windows Workflow Foundation), SignalR and WPF. @@ -408,7 +409,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [CacheManager](https://github.com/MichaCo/CacheManager) - A configurable abstraction layer for caching. It supports various caches, like redis and memcached, and provides many advanced features, like layered cache, synchronization, serialization etc. * [Dache](https://github.com/ironyx/dache) - An open source distributed caching service, built on .NET 4.0 and using TCP sockets for communication. * [Orleans](https://github.com/dotnet/orleans) - Framework that provides a straight-forward approach to building distributed high-scale computing applications using virtual actor model. - + ## Windows Workflow * [Core WF](https://github.com/dmetzgar/corewf) - WF runtime ported to work on .NET Core. * [Orleans.Activities](https://github.com/OrleansContrib/Orleans.Activities) - WF over [Microsoft Orleans](https://github.com/dotnet/orleans) framework. @@ -419,7 +420,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C ## Remote Desktop * [Myrtille](https://github.com/cedrozor/myrtille) - A native HTML4/5 Remote Desktop Protocol client, HTTP gateway written in C# for .NET - + ## Project Templates * [ASP.NET Core & Mvc/Angular5 Startup Template](https://github.com/aspnetboilerplate/module-zero-core-template) - This is a template to create ASP.NET Core MVC / Angular based startup projects for [ASP.NET Boilerplate](https://github.com/aspnetboilerplate/aspnetboilerplate). This project also supports multi-tenancy. * [ASP.NET MVC Boilerplate](https://github.com/ASP-NET-MVC-Boilerplate/Templates) - Professional ASP.NET MVC templates for building secure, fast, robust and adaptable web applications or sites. It provides the minimum amount of code required on top of the default MVC template provided by Microsoft. From dc2dcccd6ba2c54998b2078036fb699fa55da757 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Labaere?= Date: Tue, 13 Jun 2023 05:08:50 +0200 Subject: [PATCH 859/872] Add NFluent to the .NET Open Source Developer Projects (#1310) --- dotnet-developer-projects.md | 1 + 1 file changed, 1 insertion(+) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 8921a5239..3e6f06fe5 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -311,6 +311,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [Http.ClientHelpers](https://github.com/PureKrome/HttpClient.Helpers) - library to help mock & test `System.Net.Http.HttpClient`. * [moq](https://github.com/Moq/moq4) - The most popular and friendly mocking framework for .NET * [NBuilder](https://github.com/nbuilder/nbuilder) - A rapid test object generator. + * [NFluent](https://github.com/tpierrain/NFluent) - The most fluent .NET assertion lib ever. * [NSpec](https://github.com/nspec/NSpec) - .NET BDD testing framework of the xSpec (context/specification) flavor, heavily inspired by RSpec and Mocha. * [NSubstitute](https://github.com/nsubstitute/NSubstitute) - A friendly substitute for .NET mocking frameworks. * [NUnit](https://github.com/nunit/nunit) - NUnit is a unit-testing framework for all .NET languages. From a49687efb8a2d5aaf1b6a17e2cb91f0f4179bd93 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=96=E4=BA=96=E4=BC=8D?= Date: Tue, 13 Jun 2023 11:09:16 +0800 Subject: [PATCH 860/872] Update dotnet-developer-projects.md (#1339) --- dotnet-developer-projects.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 3e6f06fe5..801765777 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -34,9 +34,12 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [IronRuby](https://github.com/IronLanguages/main/tree/master/Languages/Ruby) - A .NET implementation of the [Ruby](https://www.ruby-lang.org) programming language, built on the DLR. [IronRuby Site](http://ironruby.net). * [IronScheme](https://github.com/leppie/IronScheme) - A R6RS conforming Scheme-like implementation based on the Microsoft DLR. * [Irony](https://github.com/IronyProject/) - a development kit for implementing languages on .NET platform + * [Jint](https://github.com/sebastienros/jint) - a Javascript interpreter for .NET which can run on any modern .NET platform as it supports .NET Standard 2.0 and .NET 4.6.1 targets (and up). + * [Mond](https://github.com/Rohansi/Mond) - A scripting language for .NET Core * [MoonSharp](https://github.com/xanathar/moonsharp/) - A Lua interpreter and remote debugger, written entirely in C#, easily embeddable in any application running on .NET 3.5+ and Mono. * [Nemerle](https://github.com/rsdn/nemerle) - A high-level statically-typed programming language which offers functional, object-oriented and imperative features and has a simple C# like syntax and a powerful meta-programming system. * [NiL.JS](https://github.com/nilproject/NiL.JS) - A .NET implementation of the ECMAScript language and runtime. + * [P](https://github.com/p-org/P) - a state machine based programming language for modeling and specifying complex distributed systems. * [Phalanger](https://github.com/DEVSENSE/Phalanger) - full-featured PHP runtime & compiler for .NET/Mono frameworks. Phalanger is modern open-source implementation of PHP, compatible with the vast array of existing PHP code. * [Roslyn (.NET Compiler Platform)](https://github.com/dotnet/roslyn) - Open-source C# and Visual Basic compilers with rich code analysis APIs. @@ -167,6 +170,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [Lexical.Localization](http://lexical.fi/Localization/index.html) - Localization class library for .NET. * [LibGit2Sharp](https://github.com/libgit2/libgit2sharp) - C# language bindings for the [LibGit2](https://github.com/libgit2/libgit2) implementation of Git. * [LINQ Extensions](https://github.com/TommasoScalici/LINQExtensions) - LINQ extensions for .NET is a collection of useful extensions methods that extends LINQ's capability. There are methods for combinatorics and sequence analysis, generation and manipulation. + * [LiteDB](https://github.com/mbdavid/LiteDB) - a small, fast and lightweight .NET NoSQL embedded document database. * [Localization.SqlLocalizer]( https://github.com/damienbod/AspNet5Localization) - SQL Localizer for ASP.NET Core, dotnet * [Lucene.Net](https://github.com/apache/lucene.net) - A .NET full-text search engine framework that is a C# port of the popular Apache Lucene project. * [Magicodes.IE](https://github.com/dotnetcore/Magicodes.IE) - An import and export general library, support Dto import and export and dynamic export, support Excel, Csv, Word, Pdf and Html. From 3859a5c34ac7b5ffedfbd12a99d62fc61d323c7e Mon Sep 17 00:00:00 2001 From: SRV Date: Tue, 13 Jun 2023 18:55:03 +0300 Subject: [PATCH 861/872] Add .NEXT library to the list (#1179) Co-authored-by: Rich Lander --- dotnet-developer-projects.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 801765777..f7f89ca23 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -105,6 +105,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [Rebus](https://github.com/rebus-org/Rebus) - Rebus is a lean service bus implementation for .NET. ## Libraries + * [.NEXT](https://github.com/dotnet/dotNext) - A set of libraries providing async-friendly synchronization primitives, metaprogramming, specialized buffer types, I/O extension for writing high-performance code. * [Albedo](https://github.com/ploeh/Albedo) - A .NET library targeted at making Reflection programming more consistent, using a common set of abstractions and utilities. * [Algorithmia](https://github.com/SolutionsDesign/Algorithmia) - Algorithms and Data structures * [AngleSharp](https://github.com/FlorianRappl/AngleSharp) - Ultimate angle brackets parser library. It parses HTML5, MathML, SVG and CSS to construct a DOM based on the official W3C specification. @@ -410,6 +411,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [Warewolf Easy Service Bus](https://github.com/Warewolf-ESB/Warewolf-ESB) - An open source easy to use service bus, built on numerous .Net technologies including WF (Windows Workflow Foundation), SignalR and WPF. ## Distributed Caching and Computing + * [.NEXT Raft](https://github.com/dotnet/dotNext/tree/master/src/cluster) - Raft implementation for .NET and ASP.NET Core that allows to build clustered microservices powered by distributed consensus and replication * [CacheAdapter](https://bitbucket.org/glav/cacheadapter) - a .Net library allows developers to use unified-implemented cahce provider * [CacheManager](https://github.com/MichaCo/CacheManager) - A configurable abstraction layer for caching. It supports various caches, like redis and memcached, and provides many advanced features, like layered cache, synchronization, serialization etc. * [Dache](https://github.com/ironyx/dache) - An open source distributed caching service, built on .NET 4.0 and using TCP sockets for communication. From 2c7e48897b2d4918cb323e9a9c9767ddb2612429 Mon Sep 17 00:00:00 2001 From: Brett Lopez <99683002+brettlpz@users.noreply.github.com> Date: Tue, 27 Jun 2023 10:50:25 -0700 Subject: [PATCH 862/872] Update README.md (#1389) --- releases/net481/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/releases/net481/README.md b/releases/net481/README.md index db30036e3..6745258ea 100644 --- a/releases/net481/README.md +++ b/releases/net481/README.md @@ -4,6 +4,7 @@ You can learn about the changes made in the .NET Framework 4.8.1. - [Download](https://go.microsoft.com/fwlink/?LinkId=2203304) - [.NET Framework 4.8.1 RTM announcement blog post](https://devblogs.microsoft.com/dotnet/announcing-dotnet-framework-481) +- [.NET Framework 4.8.1 RTM availability on Windows Update and Catalog announcement blog post](https://devblogs.microsoft.com/dotnet/upcoming-availability-of-net-framework-4-8-1-on-windows-update-and-catalog/) - [Release notes](dotnet481-changes.md) - [Application compatibility](https://github.com/Microsoft/dotnet/blob/master/Documentation/compatibility/README.md#net-framework-481) - [Known issues](dotnet481-known-issues.md) From b5f52bf00618f7ccd62b04a5a2fa94b71241a88a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mustafa=20Ate=C5=9F=20Uzun?= Date: Mon, 21 Aug 2023 08:57:45 +0300 Subject: [PATCH 863/872] fix: typo libary -> library (#1401) --- dotnet-developer-projects.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index f7f89ca23..52c5c78d9 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -177,7 +177,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [Magicodes.IE](https://github.com/dotnetcore/Magicodes.IE) - An import and export general library, support Dto import and export and dynamic export, support Excel, Csv, Word, Pdf and Html. * [MahApps.Metro.IconPacks](https://github.com/MahApps/MahApps.Metro.IconPacks) - Some awesome icons for `WPF` and `UWP` all together. The library contains controls to use icons from [Material Design](https://materialdesignicons.com/), [Material Design Icons Light](https://github.com/Templarian/MaterialDesignLight), [Font Awesome](http://fontawesome.io/icons/), [GitHub Octicons](https://octicons.github.com/), [Modern](http://modernuiicons.com/), [Entypo+](http://www.entypo.com/) and [Simple Icons](https://simpleicons.org/). * [Math.NET Numerics](https://github.com/mathnet/mathnet-numerics) - Provides methods and algorithms for numerical computations in science, engineering and every day use. - * [Mathos Core Libary](https://github.com/MathosProject/Mathos-Project) - A library with algorithms for numerical calculations in finance, statistics, pattern recognition, and more. + * [Mathos Core Library](https://github.com/MathosProject/Mathos-Project) - A library with algorithms for numerical calculations in finance, statistics, pattern recognition, and more. * [Mathos Parser](https://github.com/MathosProject/Mathos-Project) - A simple parser for mathematical expressions before and at runtime. * [Mjolnir](https://github.com/hudl/Mjolnir) - [Hystrix](https://github.com/Netflix/Hystrix)-inspired fault tolerance with circuit breakers and thread pools. * [MoreLINQ](https://morelinq.github.io/) - LINQ to Objects is missing a few desirable features. This project will enhance LINQ to Objects with extra methods, in a manner which keeps to the spirit of LINQ. From da7294d6e716f74f151eff46554947da8fc5689f Mon Sep 17 00:00:00 2001 From: Angelo Pirola Date: Wed, 4 Oct 2023 19:56:15 +0200 Subject: [PATCH 864/872] Update dotnet-developer-projects.md (#1404) --- dotnet-developer-projects.md | 1 + 1 file changed, 1 insertion(+) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 52c5c78d9..7cdfa43ba 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -135,6 +135,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [CoordinateSharp](https://github.com/Tronald/CoordinateSharp) - Parse or convert geographic coordinate formats and calculate location based solar/lunar information. * [CoreIpc](https://github.com/UiPath/coreipc) - WCF-like service model API for communication over named pipes. .NET standard and node.js clients. * [CustomLibrary.EFCore](https://github.com/AngeloDotNet/CustomLibrary.EFCore) - Library of generic and transactional CRUD operations with Entity Framework Core 6.x for SQL Server, MySQL, Postgres, SQLite databases + * [CustomLibrary.ProblemDetails](https://github.com/AngeloDotNet/CustomLibrary.ProblemDetails) - Free and open source collection of tools related to managing problems (exceptions) that can be generated by applications for .NET 6 and later LTS releases. * [Cricket](https://github.com/fsprojects/Cricket) - Actor library. * [DalSoft.RestClient](https://restclient.dalsoft.io/) - An extensible, dynamic and fluent Rest Client. Create frictionless code whilst still using the HttpClient you already know. * [DateTimeExtensions](https://github.com/kappy/DateTimeExtensions) - Common Date Time operations on the form of extensions to System.DateTime, including holidays and working days calculations on several culture locales. From e5444746521d21ca474d2ad54e9c52b098c907fd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mustafa=20Ate=C5=9F=20Uzun?= Date: Wed, 4 Oct 2023 20:56:38 +0300 Subject: [PATCH 865/872] Update dotnet-developer-projects.md (#1402) Co-authored-by: Maira Wenzel --- dotnet-developer-projects.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 7cdfa43ba..7e8a05906 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -413,7 +413,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C ## Distributed Caching and Computing * [.NEXT Raft](https://github.com/dotnet/dotNext/tree/master/src/cluster) - Raft implementation for .NET and ASP.NET Core that allows to build clustered microservices powered by distributed consensus and replication - * [CacheAdapter](https://bitbucket.org/glav/cacheadapter) - a .Net library allows developers to use unified-implemented cahce provider + * [CacheAdapter](https://bitbucket.org/glav/cacheadapter) - a .NET library that allows developers to use unified-implemented cache provider * [CacheManager](https://github.com/MichaCo/CacheManager) - A configurable abstraction layer for caching. It supports various caches, like redis and memcached, and provides many advanced features, like layered cache, synchronization, serialization etc. * [Dache](https://github.com/ironyx/dache) - An open source distributed caching service, built on .NET 4.0 and using TCP sockets for communication. * [Orleans](https://github.com/dotnet/orleans) - Framework that provides a straight-forward approach to building distributed high-scale computing applications using virtual actor model. From 57d0c22987ec483a56c28fd38b31c5acaa9d898d Mon Sep 17 00:00:00 2001 From: stidsborg Date: Wed, 4 Oct 2023 19:57:53 +0200 Subject: [PATCH 866/872] Update dotnet-developer-projects.md (#1394) --- dotnet-developer-projects.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 7e8a05906..7748d90d4 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -418,6 +418,10 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C * [Dache](https://github.com/ironyx/dache) - An open source distributed caching service, built on .NET 4.0 and using TCP sockets for communication. * [Orleans](https://github.com/dotnet/orleans) - Framework that provides a straight-forward approach to building distributed high-scale computing applications using virtual actor model. +## Workflow-as-code + * [Azure Durable Functions](https://github.com/Azure/azure-functions-durable-extension) - An Azure service which allows stateful functions in a serverless compute environment. + * [Cleipnir.Flows](https://github.com/stidsborg/Cleipnir.Flows) - An open-source workflow-as-code framework tailored for ASP.NET. + ## Windows Workflow * [Core WF](https://github.com/dmetzgar/corewf) - WF runtime ported to work on .NET Core. * [Orleans.Activities](https://github.com/OrleansContrib/Orleans.Activities) - WF over [Microsoft Orleans](https://github.com/dotnet/orleans) framework. From 866289466cd54d7ec1d50ce63af0bf9a5ec71990 Mon Sep 17 00:00:00 2001 From: Apollo9999 Date: Wed, 18 Oct 2023 00:07:58 +0530 Subject: [PATCH 867/872] Add Avalonia to the .NET Open Source Developer Projects A cross-platform UI framework that supports XAML and .NET (#1384) Co-authored-by: Maira Wenzel --- dotnet-developer-projects.md | 1 + dotnet-free-oss-services.md | 8 ++++++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/dotnet-developer-projects.md b/dotnet-developer-projects.md index 7748d90d4..5b5504f83 100644 --- a/dotnet-developer-projects.md +++ b/dotnet-developer-projects.md @@ -15,6 +15,7 @@ Please sort projects alphabetically and provide a one-line description. GitHub/C ## Platforms * [Akka.NET](http://github.com/akkadotnet) - Akka.NET is a toolkit and runtime for building highly concurrent, distributed, and fault tolerant event-driven applications on .NET & Mono. This community-driven port brings C# & F# developers the capabilities of the original Akka framework in Java/Scala. [[Project Site]](http://getakka.net/) + * [Avalonia](https://github.com/AvaloniaUI/Avalonia) - A cross-platform UI framework that supports XAML and .NET for building desktop applications. * [Castle Project](https://github.com/castleproject) - Umbrella project for ActiveRecord, DynamicProxy, MonoRail, Windsor * [Catel](https://github.com/catel/catel) - Application platform with IoC, logging, reflection and much more that serves as a base for applications that must be ready for future growth. * [Enterprise Web Library (EWL)](https://github.com/enduracode/enterprise-web-library) - An extremely opinionated platform for web applications that trades off performance, scalability, and development flexibility for an ease of maintenance you won't find anywhere else. [Enterprise Web Library site](http://www.enterpriseweblibrary.org/). diff --git a/dotnet-free-oss-services.md b/dotnet-free-oss-services.md index dab52b6b9..5c82b10a7 100644 --- a/dotnet-free-oss-services.md +++ b/dotnet-free-oss-services.md @@ -35,6 +35,7 @@ Please sort projects alphabetically and provide a one-line description. Where po * [Coverity Scan](https://scan.coverity.com) - Static analysis service to identify defects in C# code. * [dotCover](https://www.jetbrains.com/buy/opensource/?product=dotCover) - Code coverage tool integrated with Visual Studio. * [.Net Reflector](http://reflectorblog.red-gate.com/2013/07/open-source) - Browse, analyse and decompile IL code. +* [Sonarqube](https://www.sonarsource.com/open-source-editions/)-static code analysis tools out there. It is an open-source platform for continuous inspection of code quality and performs automatic reviews via static code analysis ## Package Management @@ -43,8 +44,11 @@ Please sort projects alphabetically and provide a one-line description. Where po ## Analytics and Error Reporting * [Bugsnag](https://bugsnag.com/blog/bugsnag-loves-open-source) - Cross platform error reporting. -* [elmah.io](https://elmah.io/sponsorship/opensource/) - Error logging and uptime monitoring for .NET. -* [Sentry](https://sentry.io/for/open-source/) - Cross platform error reporting. +* [countly](https://countly.com) - comprehensive product analytics platform needed to build outstanding and innovative products and the most privacy-conscious solution for mobile, + desktop, and web applications for all users. +* [elmah](https://elmah.io) - Error logging and uptime monitoring for .NET. +* [Sentry](https://sentry.io/welcome/) - Cross platform error reporting. + ## Cloud Resources and Services From ce5c6128392724b2c1a8db449e8f28ef8ba79e00 Mon Sep 17 00:00:00 2001 From: Apollo9999 Date: Fri, 17 Nov 2023 03:52:41 +0530 Subject: [PATCH 868/872] Raygun Cross platform error reporting tool updated in readme file (#1409) --- dotnet-free-oss-services.md | 1 + 1 file changed, 1 insertion(+) diff --git a/dotnet-free-oss-services.md b/dotnet-free-oss-services.md index 5c82b10a7..f96f81da1 100644 --- a/dotnet-free-oss-services.md +++ b/dotnet-free-oss-services.md @@ -47,6 +47,7 @@ Please sort projects alphabetically and provide a one-line description. Where po * [countly](https://countly.com) - comprehensive product analytics platform needed to build outstanding and innovative products and the most privacy-conscious solution for mobile, desktop, and web applications for all users. * [elmah](https://elmah.io) - Error logging and uptime monitoring for .NET. +* [raygun.com](https://raygun.com/platform/crash-reporting)-Error Monitoring & Crash Reporting for .NET. * [Sentry](https://sentry.io/welcome/) - Cross platform error reporting. From 76e951ce4c5859f160122e7a80744fdba59810d0 Mon Sep 17 00:00:00 2001 From: Sebastian Szvetecz Date: Sat, 24 Feb 2024 04:45:30 +0100 Subject: [PATCH 869/872] Added missing bracket to README.md (#1430) --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index bb2e295c9..6520d665e 100644 --- a/README.md +++ b/README.md @@ -32,7 +32,7 @@ There are many projects that you can use and contribute to, some of which are li - [C# (dotnet/csharplang)](https://github.com/dotnet/csharplang) - [Entity Framework Core (dotnet/efcore)](https://github.com/dotnet/efcore) - [F# (dotnet/fsharp)](https://github.com/dotnet/fsharp) -- [ML.NET dotnet/machinelearning)](https://github.com/dotnet/machinelearning) +- [ML.NET (dotnet/machinelearning)](https://github.com/dotnet/machinelearning) - [Roslyn Compiler Platform (dotnet/roslyn)](https://github.com/dotnet/roslyn) - [Windows Forms (dotnet/winforms)](https://github.com/dotnet/winforms) - [WPF (dotnet/wpf)](https://github.com/dotnet/wpf) From 0c422b06bbdae946b8d055b32c80465d329de0ed Mon Sep 17 00:00:00 2001 From: Meir017-msft <121931056+Meir017-msft@users.noreply.github.com> Date: Thu, 16 May 2024 10:05:06 +0300 Subject: [PATCH 870/872] Add aspire repos links (#1437) Co-authored-by: Maira Wenzel --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 6520d665e..8dcf0443f 100644 --- a/README.md +++ b/README.md @@ -27,6 +27,7 @@ There are many projects that you can use and contribute to, some of which are li ### .NET - [.NET (dotnet/core)](https://github.com/dotnet/core) +- [.NET Aspire (dotnet/aspire)](https://github.com/dotnet/aspire) - [.NET MAUI (dotnet/maui)](https://github.com/dotnet/maui) - [ASP.NET Core (dotnet/aspnetcore)](https://github.com/dotnet/aspnetcore) - [C# (dotnet/csharplang)](https://github.com/dotnet/csharplang) @@ -39,6 +40,7 @@ There are many projects that you can use and contribute to, some of which are li ### .NET Docs - [.NET docs (dotnet/docs)](https://github.com/dotnet/docs) +- [.NET Aspire docs (dotnet/docs-aspire)](https://github.com/dotnet/docs-aspire) - [.NET MAUI docs (dotnet/docs-maui)](https://github.com/dotnet/docs-maui) - [ASP.NET Core docs (dotnet/AspNetCore.Docs)](https://github.com/dotnet/AspNetCore.Docs) - [Entity Framework docs (dotnet/EntityFramework.Docs)](https://github.com/dotnet/EntityFramework.Docs) From 5a5b0e475315c7c8c090bcd942daf4249c758882 Mon Sep 17 00:00:00 2001 From: Rich Lander Date: Wed, 17 Jul 2024 15:17:36 -0700 Subject: [PATCH 871/872] Update support information (#1443) --- releases/README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/releases/README.md b/releases/README.md index ed94c8a3a..0b4f037e0 100644 --- a/releases/README.md +++ b/releases/README.md @@ -14,9 +14,9 @@ You can see what was included in each .NET Framework release. Some releases are - [.NET Framework 4.7.1](net471/README.md) - [.NET Framework 4.7](net47/README.md) - [.NET Framework 4.6.2](net462/README.md) -- [.NET Framework 4.6.1](net461/README.md) -- [.NET Framework 4.6](net46/README.md) -- [.NET Framework 4.5.2](net452/README.md) +- [.NET Framework 4.6.1](net461/README.md) (unsupported) +- [.NET Framework 4.6](net46/README.md) (unsupported) +- [.NET Framework 4.5.2](net452/README.md) (unsupported) - [.NET Framework 4.5.1](net451/README.md) (unsupported) - [.NET Framework 4.5](https://blogs.msdn.microsoft.com/dotnet/2012/08/15/announcing-the-release-of-net-framework-4-5-rtm-product-and-source-code/) (unsupported) - [.NET Framework 4.0.3](https://blogs.msdn.microsoft.com/dotnet/2012/03/05/update-4-0-3-for-the-microsoft-net-framework-4/) (unsupported) From c69c1ed838fb92c646679451401362851deed2de Mon Sep 17 00:00:00 2001 From: Maira Wenzel Date: Thu, 19 Dec 2024 17:57:19 -0800 Subject: [PATCH 872/872] Fix issue templates (#1464) --- .github/ISSUE_TEMPLATE.md | 5 ---- .github/ISSUE_TEMPLATE/config.yml | 38 +++++++++++++++++++++++++++++++ 2 files changed, 38 insertions(+), 5 deletions(-) delete mode 100644 .github/ISSUE_TEMPLATE.md create mode 100644 .github/ISSUE_TEMPLATE/config.yml diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md deleted file mode 100644 index afa3dd1b8..000000000 --- a/.github/ISSUE_TEMPLATE.md +++ /dev/null @@ -1,5 +0,0 @@ -DO NOT FILE ISSUES IN THIS REPO. - -Check the following document to find the appropriate repo or location to file a new issue: - -https://github.com/dotnet/core/blob/main/Documentation/core-repos.md diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml new file mode 100644 index 000000000..83b3b1e60 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -0,0 +1,38 @@ +blank_issues_enabled: false +contact_links: + - name: Issue with .NET Framework + url: https://developercommunity.visualstudio.com/dotnet + about: Please open issues relating to the .NET Framework (rather than .NET Core or .NET 5+) in Developer Community + - name: Issue with ASP.NET Core + url: https://github.com/dotnet/aspnetcore/issues/new/choose + about: Please open issues relating to ASP.NET Core in dotnet/aspnetcore. + - name: Issue with .NET runtime or core .NET libraries + url: https://github.com/dotnet/runtime/issues/new/choose + about: Please open issues with the .NET runtime or core .NET libraries in dotnet/runtime. + - name: Issue with .NET SDK + url: https://github.com/dotnet/sdk/issues/new/choose + about: Please open issues relating to the .NET SDK in dotnet/sdk. + - name: Issue with .NET Aspire + url: https://github.com/dotnet/aspire/issues/new/choose + about: Please open issues relating to .NET Aspire in dotnet/aspire. + - name: Issue with Entity Framework + url: https://github.com/dotnet/efcore/issues/new/choose + about: Please open issues relating to Entity Framework in dotnet/efcore. + - name: Issue with .NET MAUI + url: https://github.com/dotnet/maui/issues/new/choose + about: Please open issues relating to .NET MAUI in dotnet/maui. + - name: Issue with Roslyn compiler + url: https://github.com/dotnet/roslyn/issues/new/choose + about: Please open issues relating to the Roslyn .NET compiler in dotnet/roslyn. + - name: Issue with Windows Forms + url: https://github.com/dotnet/winforms/issues/new/choose + about: Please open issues relating to Windows Forms in dotnet/winforms. + - name: Issue with WPF + url: https://github.com/dotnet/wpf/issues/new/choose + about: Please open issues relating to WPF in dotnet/wpf. + - name: Issue with release notes or package deprecation + url: https://github.com/dotnet/core/issues/new/choose + about: Please open issues relating to release notes in dotnet/core. + - name: Issue with .NET website + url: https://github.com/dotnet/website-feedback/issues/new/choose + about: Please open issues relating to the website in dotnet/website-feedback.

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,X0spf2cb=A7|G7!m9)jwUzCY;pbloF(Um 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ądr4#1_N6}~fG{D-q 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,X0spf2cb=A7|G7!m9)jwUzCY;pbloF(Um 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ądr4#1_N6}~fG{D-q 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