Skip to content

Commit 42b1ff0

Browse files
authored
Merge pull request #197 from FritzAndFriends/v0.8.0
V0.8.0 release
2 parents 5cb4658 + 722f332 commit 42b1ff0

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

56 files changed

+1293
-197
lines changed

BlazorMeetsWebForms.sln

Lines changed: 41 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,9 @@ Global
4848
Release|Any CPU = Release|Any CPU
4949
Release|x64 = Release|x64
5050
Release|x86 = Release|x86
51+
WebForms|Any CPU = WebForms|Any CPU
52+
WebForms|x64 = WebForms|x64
53+
WebForms|x86 = WebForms|x86
5154
EndGlobalSection
5255
GlobalSection(ProjectConfigurationPlatforms) = postSolution
5356
{7E35A14A-C0EF-4705-B892-F1704ECC6B31}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
@@ -62,6 +65,11 @@ Global
6265
{7E35A14A-C0EF-4705-B892-F1704ECC6B31}.Release|x64.Build.0 = Release|Any CPU
6366
{7E35A14A-C0EF-4705-B892-F1704ECC6B31}.Release|x86.ActiveCfg = Release|Any CPU
6467
{7E35A14A-C0EF-4705-B892-F1704ECC6B31}.Release|x86.Build.0 = Release|Any CPU
68+
{7E35A14A-C0EF-4705-B892-F1704ECC6B31}.WebForms|Any CPU.ActiveCfg = WebForms|Any CPU
69+
{7E35A14A-C0EF-4705-B892-F1704ECC6B31}.WebForms|x64.ActiveCfg = WebForms|Any CPU
70+
{7E35A14A-C0EF-4705-B892-F1704ECC6B31}.WebForms|x64.Build.0 = WebForms|Any CPU
71+
{7E35A14A-C0EF-4705-B892-F1704ECC6B31}.WebForms|x86.ActiveCfg = WebForms|Any CPU
72+
{7E35A14A-C0EF-4705-B892-F1704ECC6B31}.WebForms|x86.Build.0 = WebForms|Any CPU
6573
{70EC4DF2-FE9B-49F4-B385-040E45BC7764}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
6674
{70EC4DF2-FE9B-49F4-B385-040E45BC7764}.Debug|Any CPU.Build.0 = Debug|Any CPU
6775
{70EC4DF2-FE9B-49F4-B385-040E45BC7764}.Debug|x64.ActiveCfg = Debug|Any CPU
@@ -74,6 +82,11 @@ Global
7482
{70EC4DF2-FE9B-49F4-B385-040E45BC7764}.Release|x64.Build.0 = Release|Any CPU
7583
{70EC4DF2-FE9B-49F4-B385-040E45BC7764}.Release|x86.ActiveCfg = Release|Any CPU
7684
{70EC4DF2-FE9B-49F4-B385-040E45BC7764}.Release|x86.Build.0 = Release|Any CPU
85+
{70EC4DF2-FE9B-49F4-B385-040E45BC7764}.WebForms|Any CPU.ActiveCfg = WebForms|Any CPU
86+
{70EC4DF2-FE9B-49F4-B385-040E45BC7764}.WebForms|x64.ActiveCfg = WebForms|Any CPU
87+
{70EC4DF2-FE9B-49F4-B385-040E45BC7764}.WebForms|x64.Build.0 = WebForms|Any CPU
88+
{70EC4DF2-FE9B-49F4-B385-040E45BC7764}.WebForms|x86.ActiveCfg = WebForms|Any CPU
89+
{70EC4DF2-FE9B-49F4-B385-040E45BC7764}.WebForms|x86.Build.0 = WebForms|Any CPU
7790
{6C602B37-5FC9-43FF-A3D8-C92B42D62F0D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
7891
{6C602B37-5FC9-43FF-A3D8-C92B42D62F0D}.Debug|Any CPU.Build.0 = Debug|Any CPU
7992
{6C602B37-5FC9-43FF-A3D8-C92B42D62F0D}.Debug|x64.ActiveCfg = Debug|Any CPU
@@ -86,6 +99,12 @@ Global
8699
{6C602B37-5FC9-43FF-A3D8-C92B42D62F0D}.Release|x64.Build.0 = Release|Any CPU
87100
{6C602B37-5FC9-43FF-A3D8-C92B42D62F0D}.Release|x86.ActiveCfg = Release|Any CPU
88101
{6C602B37-5FC9-43FF-A3D8-C92B42D62F0D}.Release|x86.Build.0 = Release|Any CPU
102+
{6C602B37-5FC9-43FF-A3D8-C92B42D62F0D}.WebForms|Any CPU.ActiveCfg = WebForms|Any CPU
103+
{6C602B37-5FC9-43FF-A3D8-C92B42D62F0D}.WebForms|Any CPU.Build.0 = WebForms|Any CPU
104+
{6C602B37-5FC9-43FF-A3D8-C92B42D62F0D}.WebForms|x64.ActiveCfg = WebForms|Any CPU
105+
{6C602B37-5FC9-43FF-A3D8-C92B42D62F0D}.WebForms|x64.Build.0 = WebForms|Any CPU
106+
{6C602B37-5FC9-43FF-A3D8-C92B42D62F0D}.WebForms|x86.ActiveCfg = WebForms|Any CPU
107+
{6C602B37-5FC9-43FF-A3D8-C92B42D62F0D}.WebForms|x86.Build.0 = WebForms|Any CPU
89108
{7218D3E2-38BD-429D-9D84-15E688BDC4A1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
90109
{7218D3E2-38BD-429D-9D84-15E688BDC4A1}.Debug|Any CPU.Build.0 = Debug|Any CPU
91110
{7218D3E2-38BD-429D-9D84-15E688BDC4A1}.Debug|x64.ActiveCfg = Debug|Any CPU
@@ -98,6 +117,11 @@ Global
98117
{7218D3E2-38BD-429D-9D84-15E688BDC4A1}.Release|x64.Build.0 = Release|Any CPU
99118
{7218D3E2-38BD-429D-9D84-15E688BDC4A1}.Release|x86.ActiveCfg = Release|Any CPU
100119
{7218D3E2-38BD-429D-9D84-15E688BDC4A1}.Release|x86.Build.0 = Release|Any CPU
120+
{7218D3E2-38BD-429D-9D84-15E688BDC4A1}.WebForms|Any CPU.ActiveCfg = WebForms|Any CPU
121+
{7218D3E2-38BD-429D-9D84-15E688BDC4A1}.WebForms|x64.ActiveCfg = WebForms|Any CPU
122+
{7218D3E2-38BD-429D-9D84-15E688BDC4A1}.WebForms|x64.Build.0 = WebForms|Any CPU
123+
{7218D3E2-38BD-429D-9D84-15E688BDC4A1}.WebForms|x86.ActiveCfg = WebForms|Any CPU
124+
{7218D3E2-38BD-429D-9D84-15E688BDC4A1}.WebForms|x86.Build.0 = WebForms|Any CPU
101125
{1669CD22-5CCE-4D96-A02B-31D81B5EFB2B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
102126
{1669CD22-5CCE-4D96-A02B-31D81B5EFB2B}.Debug|Any CPU.Build.0 = Debug|Any CPU
103127
{1669CD22-5CCE-4D96-A02B-31D81B5EFB2B}.Debug|x64.ActiveCfg = Debug|Any CPU
@@ -110,6 +134,11 @@ Global
110134
{1669CD22-5CCE-4D96-A02B-31D81B5EFB2B}.Release|x64.Build.0 = Release|Any CPU
111135
{1669CD22-5CCE-4D96-A02B-31D81B5EFB2B}.Release|x86.ActiveCfg = Release|Any CPU
112136
{1669CD22-5CCE-4D96-A02B-31D81B5EFB2B}.Release|x86.Build.0 = Release|Any CPU
137+
{1669CD22-5CCE-4D96-A02B-31D81B5EFB2B}.WebForms|Any CPU.ActiveCfg = WebForms|Any CPU
138+
{1669CD22-5CCE-4D96-A02B-31D81B5EFB2B}.WebForms|x64.ActiveCfg = WebForms|Any CPU
139+
{1669CD22-5CCE-4D96-A02B-31D81B5EFB2B}.WebForms|x64.Build.0 = WebForms|Any CPU
140+
{1669CD22-5CCE-4D96-A02B-31D81B5EFB2B}.WebForms|x86.ActiveCfg = WebForms|Any CPU
141+
{1669CD22-5CCE-4D96-A02B-31D81B5EFB2B}.WebForms|x86.Build.0 = WebForms|Any CPU
113142
{CA277C6F-A3DD-4FAF-9B7C-56E7B844CEF7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
114143
{CA277C6F-A3DD-4FAF-9B7C-56E7B844CEF7}.Debug|Any CPU.Build.0 = Debug|Any CPU
115144
{CA277C6F-A3DD-4FAF-9B7C-56E7B844CEF7}.Debug|x64.ActiveCfg = Debug|Any CPU
@@ -122,6 +151,12 @@ Global
122151
{CA277C6F-A3DD-4FAF-9B7C-56E7B844CEF7}.Release|x64.Build.0 = Release|Any CPU
123152
{CA277C6F-A3DD-4FAF-9B7C-56E7B844CEF7}.Release|x86.ActiveCfg = Release|Any CPU
124153
{CA277C6F-A3DD-4FAF-9B7C-56E7B844CEF7}.Release|x86.Build.0 = Release|Any CPU
154+
{CA277C6F-A3DD-4FAF-9B7C-56E7B844CEF7}.WebForms|Any CPU.ActiveCfg = WebForms|Any CPU
155+
{CA277C6F-A3DD-4FAF-9B7C-56E7B844CEF7}.WebForms|Any CPU.Build.0 = WebForms|Any CPU
156+
{CA277C6F-A3DD-4FAF-9B7C-56E7B844CEF7}.WebForms|x64.ActiveCfg = WebForms|Any CPU
157+
{CA277C6F-A3DD-4FAF-9B7C-56E7B844CEF7}.WebForms|x64.Build.0 = WebForms|Any CPU
158+
{CA277C6F-A3DD-4FAF-9B7C-56E7B844CEF7}.WebForms|x86.ActiveCfg = WebForms|Any CPU
159+
{CA277C6F-A3DD-4FAF-9B7C-56E7B844CEF7}.WebForms|x86.Build.0 = WebForms|Any CPU
125160
{4D12295E-B0C6-434B-9F22-3156BDE7E85E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
126161
{4D12295E-B0C6-434B-9F22-3156BDE7E85E}.Debug|Any CPU.Build.0 = Debug|Any CPU
127162
{4D12295E-B0C6-434B-9F22-3156BDE7E85E}.Debug|x64.ActiveCfg = Debug|Any CPU
@@ -134,6 +169,11 @@ Global
134169
{4D12295E-B0C6-434B-9F22-3156BDE7E85E}.Release|x64.Build.0 = Release|Any CPU
135170
{4D12295E-B0C6-434B-9F22-3156BDE7E85E}.Release|x86.ActiveCfg = Release|Any CPU
136171
{4D12295E-B0C6-434B-9F22-3156BDE7E85E}.Release|x86.Build.0 = Release|Any CPU
172+
{4D12295E-B0C6-434B-9F22-3156BDE7E85E}.WebForms|Any CPU.ActiveCfg = WebForms|Any CPU
173+
{4D12295E-B0C6-434B-9F22-3156BDE7E85E}.WebForms|x64.ActiveCfg = WebForms|Any CPU
174+
{4D12295E-B0C6-434B-9F22-3156BDE7E85E}.WebForms|x64.Build.0 = WebForms|Any CPU
175+
{4D12295E-B0C6-434B-9F22-3156BDE7E85E}.WebForms|x86.ActiveCfg = WebForms|Any CPU
176+
{4D12295E-B0C6-434B-9F22-3156BDE7E85E}.WebForms|x86.Build.0 = WebForms|Any CPU
137177
EndGlobalSection
138178
GlobalSection(SolutionProperties) = preSolution
139179
HideSolutionNode = FALSE
@@ -149,4 +189,4 @@ Global
149189
GlobalSection(ExtensibilityGlobals) = postSolution
150190
SolutionGuid = {E288F9FB-039F-4718-8AEB-85F89B29EB4E}
151191
EndGlobalSection
152-
EndGlobal
192+
EndGlobal

CONTRIBUTING.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,10 @@ Tell us how you are currently using the web forms framework so that we can build
7171
1. Send a pull request with your desired scenario as a unit test in `src/BlazorWebFormsComponents.Test`
7272
1. [Report an issue](https://github.com/FritzAndFriends/BlazorWebFormsComponents/Issues) with the details of a bug that you have found. Be sure to tag it as a `Bug` so that we can triage and track it
7373

74+
### Write some Web Forms sample code
75+
76+
Demonstrate how an existing control is being used in the `BeforeWebForms` project. The content of this sample project will be compiled and uploaded to the https://beforewebforms.azurewebsites.net location.
77+
7478
### Write code for a component
7579

7680
All code for a component should have an assigned issue that matches it. This way we can prevent contributors from working on the same feature at the same time.

README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@ A collection of Blazor components that emulate the web forms components of the s
66

77
[![Nuget](https://img.shields.io/nuget/v/Fritz.BlazorWebFormsComponents?color=violet)](https://www.nuget.org/packages/Fritz.BlazorWebFormsComponents/) [![Nuget (with prereleases)](https://img.shields.io/nuget/vpre/Fritz.BlazorWebFormsComponents)](https://www.nuget.org/packages/Fritz.BlazorWebFormsComponents/) [![Live Sample](https://img.shields.io/badge/-Live%20Sample-purple)](https://blazorwebformscomponents.azurewebsites.net)
88

9+
[Live Samples running on Azure](https://blazorwebformscomponents.azurewebsites.net)
10+
911
## Approach + Considerations
1012

1113
We believe that Web Forms applications that have been well maintained and provide value should have a path forward to the new user-interface frameworks with minimal changes. This is not an application converted nor is it a patch that can be applied to your project that magically makes it work with ASP<span></span>.NET Core. This repository contains a library and series of strategies that will allow you to re-use much of your markup, much of your business code and help shorten your application re-write process.

docs/DataControls/ListView.md

Lines changed: 109 additions & 78 deletions
Original file line numberDiff line numberDiff line change
@@ -1,85 +1,116 @@
1+
# ListView
2+
13
The ListView component is meant to emulate the asp:ListView control in markup and is defined in the [System.Web.UI.WebControls.ListView class](https://docs.microsoft.com/en-us/dotnet/api/system.web.ui.webcontrols.listview?view=netframework-4.8)
24

5+
[Usage Notes](#usage-notes) | [Web Forms Syntax](#web-forms-declarative-syntax) | [Blazor Syntax](#blazor-syntax)
6+
7+
## Features supported in Blazor
8+
- Alternating Item Templates
9+
- Alternating Item Styles
10+
- Empty Data Template
11+
- Empty Item Template
12+
- Grouping
13+
- Item Templates
14+
- Item Styles
15+
- Model Binding
16+
- OnSelect Method
17+
- LayoutTemplate
18+
- DataBinder within the ItemTemplate and AlternatingItemTemplate
19+
20+
##### [Back to top](#listview)
21+
22+
## Usage Notes
23+
24+
- LayoutTemplate requires a `Context` attribute that defines the placeholder for the items
25+
26+
##### [Back to top](#listview)
27+
328
## Web Forms Declarative Syntax
429

530
```html
6-
<asp:ListView
7-
ConvertEmptyStringToNull="True|False"
8-
DataKeyNames="string"
9-
DataMember="string"
10-
DataSource="string"
11-
DataSourceID="string"
12-
EditIndex="integer"
13-
Enabled="True|False"
14-
EnableTheming="True|False"
15-
EnableViewState="True|False"
16-
GroupPlaceholderID="string"
17-
GroupItemCount="integer"
18-
ID="string"
19-
InsertItemPosition="None|FirstItem|LastItem"
20-
ItemPlaceholderID="string"
21-
OnDataBinding="DataBinding event handler"
22-
OnDataBound="DataBound event handler"
23-
OnDisposed="Disposed event handler"
24-
OnInit="Init event handler"
25-
OnItemCanceling="ItemCanceling event handler"
26-
OnItemCommand="ItemCommand event handler"
27-
OnItemCreated="ItemCreated event handler"
28-
OnItemDataBound="ItemDataBound event handler"
29-
OnItemDeleted="ItemDeleted event handler"
30-
OnItemDeleting="ItemDeleting event handler"
31-
OnItemEditing="ItemEditing event handler"
32-
OnItemInserted="ItemInserted event handler"
33-
OnItemInserting="ItemInserting event handler"
34-
OnItemUpdated="ItemUpdated event handler"
35-
OnItemUpdating="ItemUpdating event handler"
36-
OnLayoutCreated="LayoutCreated event handler"
37-
OnLoad="Load event handler"
38-
OnPagePropertiesChanged="PagePropertiesChanged event handler"
39-
OnPagePropertiesChanging="PagePropertiesChanging event handler"
40-
OnPreRender="PreRender event handler"
41-
OnSelectedIndexChanged="SelectedIndexChanged event handler"
42-
OnSelectedIndexChanging="SelectedIndexChanging event handler"
43-
OnSorted="Sorted event handler"
44-
OnSorting="Sorting event handler"
45-
OnUnload="Unload event handler"
46-
runat="server"
47-
SelectedIndex="integer"
48-
SkinID="string"
49-
Style="string"
50-
Visible="True|False">
51-
<AlternatingItemTemplate>
52-
<!-- child controls -->
53-
</AlternatingItemTemplate>
54-
<EditItemTemplate>
55-
<!-- child controls -->
56-
</EditItemTemplate>
57-
<EmptyDataTemplate>
58-
<!-- child controls -->
59-
</EmptyDataTemplate>
60-
<EmptyItemTemplate>
61-
<!-- child controls -->
62-
</EmptyItemTemplate>
63-
<GroupSeparatorTemplate>
64-
<!-- child controls -->
65-
</GroupSeparatorTemplate>
66-
<GroupTemplate>
67-
<!-- child controls -->
68-
</GroupTemplate>
69-
<InsertItemTemplate>
70-
<!-- child controls -->
71-
</InsertItemTemplate>
72-
<ItemSeparatorTemplate>
73-
<!-- child controls -->
74-
</ItemSeparatorTemplate>
75-
<ItemTemplate>
76-
<!-- child controls -->
77-
</ItemTemplate>
78-
<LayoutTemplate>
79-
<!-- child controls -->
80-
</LayoutTemplate>
81-
<SelectedItemTemplate>
82-
<!-- child controls -->
83-
</SelectedItemTemplate>
31+
<asp:ListView
32+
ConvertEmptyStringToNull="True|False"
33+
DataKeyNames="string"
34+
DataMember="string"
35+
DataSource="string"
36+
DataSourceID="string"
37+
EditIndex="integer"
38+
Enabled="True|False"
39+
EnableTheming="True|False"
40+
EnableViewState="True|False"
41+
GroupPlaceholderID="string"
42+
GroupItemCount="integer"
43+
ID="string"
44+
InsertItemPosition="None|FirstItem|LastItem"
45+
ItemPlaceholderID="string"
46+
OnDataBinding="DataBinding event handler"
47+
OnDataBound="DataBound event handler"
48+
OnDisposed="Disposed event handler"
49+
OnInit="Init event handler"
50+
OnItemCanceling="ItemCanceling event handler"
51+
OnItemCommand="ItemCommand event handler"
52+
OnItemCreated="ItemCreated event handler"
53+
OnItemDataBound="ItemDataBound event handler"
54+
OnItemDeleted="ItemDeleted event handler"
55+
OnItemDeleting="ItemDeleting event handler"
56+
OnItemEditing="ItemEditing event handler"
57+
OnItemInserted="ItemInserted event handler"
58+
OnItemInserting="ItemInserting event handler"
59+
OnItemUpdated="ItemUpdated event handler"
60+
OnItemUpdating="ItemUpdating event handler"
61+
OnLayoutCreated="LayoutCreated event handler"
62+
OnLoad="Load event handler"
63+
OnPagePropertiesChanged="PagePropertiesChanged event handler"
64+
OnPagePropertiesChanging="PagePropertiesChanging event handler"
65+
OnPreRender="PreRender event handler"
66+
OnSelectedIndexChanged="SelectedIndexChanged event handler"
67+
OnSelectedIndexChanging="SelectedIndexChanging event handler"
68+
OnSorted="Sorted event handler"
69+
OnSorting="Sorting event handler"
70+
OnUnload="Unload event handler"
71+
runat="server"
72+
SelectedIndex="integer"
73+
SkinID="string"
74+
Style="string"
75+
Visible="True|False">
76+
<AlternatingItemTemplate>
77+
<!-- child controls -->
78+
</AlternatingItemTemplate>
79+
<EditItemTemplate>
80+
<!-- child controls -->
81+
</EditItemTemplate>
82+
<EmptyDataTemplate>
83+
<!-- child controls -->
84+
</EmptyDataTemplate>
85+
<EmptyItemTemplate>
86+
<!-- child controls -->
87+
</EmptyItemTemplate>
88+
<GroupSeparatorTemplate>
89+
<!-- child controls -->
90+
</GroupSeparatorTemplate>
91+
<GroupTemplate>
92+
<!-- child controls -->
93+
</GroupTemplate>
94+
<InsertItemTemplate>
95+
<!-- child controls -->
96+
</InsertItemTemplate>
97+
<ItemSeparatorTemplate>
98+
<!-- child controls -->
99+
</ItemSeparatorTemplate>
100+
<ItemTemplate>
101+
<!-- child controls -->
102+
</ItemTemplate>
103+
<LayoutTemplate>
104+
<!-- child controls -->
105+
</LayoutTemplate>
106+
<SelectedItemTemplate>
107+
<!-- child controls -->
108+
</SelectedItemTemplate>
84109
</asp:ListView>
85110
```
111+
112+
##### [Back to top](#listview)
113+
114+
## Blazor Syntax
115+
116+
##### [Back to top](#listview)

docs/EditorControls/Button.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@ It may seem strange that we have a Button component when there already is an HTM
55
- OnClick event handler
66
- OnClientClick JavaScript pointer
77
- OnCommand event handler with event bubbling
8+
- Button Style attributes and CssClass formatting
9+
- CausesValidation will control whether Form validation is triggered on click
810

911
## WebForms Syntax
1012

docs/Migration/NET-Standard.md

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
.NET Standard is the definition of a contract, a series of APIs, that all .NET frameworks must implement to be considered a .NET framework. .NET Framework, .NET Core, Xamarin, and Mono all implement various .NET Standard versions (or specifications) and this now becomes a vehicle for you to build your class libraries to be re-usable across various version of .NET.
22

3-
>> Needs links to the .NET Standard specifications and repository on GitHub
3+
[.NET Standard specifications](https://github.com/dotnet/standard) are managed in the open with definitions fore APIs and frameworks that .NET can be used with.
44

55
Class libraries can be built and target different version specifications of .NET Standard. You can target _ANY_ version of .NET Standard and gain compatibility across .NET Framework and .NET Core, but we recommend you target at least _.NET Standard 2.0_
66

7-
>> Add image showing compatibility table of .NET Standard
7+
![.NET Standard Version Table](../assets/netstandard-version-table.png)
88

99
## Implications
1010

@@ -15,18 +15,14 @@ For your existing Web Forms applications, unless you are executing unsafe code o
1515
1. Your business logic code is now isolated from your presentation code, and should be more testable. Write some unit tests to verify that your business logic is behaving properly.
1616
1. If you'd like to write a mobile application to work with your web application, you can re-use your .NET Standard project with the Xamarin frameworks.
1717

18-
## Sample 1: Update an existing class library
18+
## API Portability
1919

20-
The first sample demonstrates updating a simple class library to .NET Standard. In this model, we're assuming that you already have your business logic code properly separated from your user-interface and managed inside a class-library project that targets .NET Framework 4.5.
20+
Portability is not guaranteed when you migrate business logic to .NET Standard. APIs have been changed or even removed in some cases. You should test your libraries and application for portability and take direction for possible migration paths using the official [.NET Portability Analyzer](https://docs.microsoft.com/en-us/dotnet/standard/analyzers/portability-analyzer).
2121

22-
### Sample
22+
## Sample 1: Update an existing class library
2323

24-
This is a simple migration sample, demonstrating migrating a class-library from .NET Framework 4.5 to .NET Standard 2.0
24+
The first sample demonstrates updating a simple class library to .NET Standard. In this model, we're assuming that you already have your business logic code properly separated from your user-interface and managed inside a class-library project that targets .NET Framework 4.5. You can find it in [samples/netstandard-1](../samples/netstandard-1/README.md) folder.
2525

2626
## Sample 2: Refactoring Business Logic
2727

28-
The second sample shows how to take an existing ASP<span></span>.NET application and refactor our some business logic as a .NET Standard project.
29-
30-
### Sample
31-
32-
This sample shows how to refactor some business logic from our Web Forms application into a .NET Standard library that can eventually be re-used in the .NET Core / ASP<span></span>.NET Core / Server-side Blazor application.
28+
The second sample shows how to take an existing ASP<span></span>.NET application and refactor our some business logic as a .NET Standard project. You can find the source and directions for this sample in the samples/netstandard-2 (coming soon) folder.

0 commit comments

Comments
 (0)