Netcore 3.0 рдХреЗ рд▓рд┐рдП WPF рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рдкреЛрд░реНрдЯ рдХрд░рдирд╛

рдиреЗрдЯрдХреЛрд░ 3.0 рдХреА рдЖрдЧрд╛рдореА рд░рд┐рд▓реАрдЬ рдЖрдкрдХреЛ рдиреЗрдЯрдХреЛрд░ рдкрд░ wpf рдЪрд▓рд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИред рдПрдХ рд╕рд░рд▓ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП рдЕрдиреБрд╡рд╛рдж рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдПрдХ рд╕реЗ рджреЛ рджрд┐рди рд▓рдЧрддреЗ рд╣реИрдВред рдкреНрд░рддреНрдпреЗрдХ рдмрд╛рдж рд╡рд╛рд▓рд╛ рдПрдХ рдмрд╣реБрдд рддреЗрдЬ рд╣реИред







рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреА рддреИрдпрд╛рд░реА рдФрд░ рд░реВрдкрд╛рдВрддрд░рдг



рдкреЛрд░реНрдЯреЗрдмрд┐рд▓рд┐рдЯреА рдПрдирд╛рд▓рд╛рдЗрдЬрд░ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдФрд░ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░реА рдореЗрдВ рдкрд╣рд▓рд╛ рдХрджрдо рд╣реИред рдЖрдЙрдЯрдкреБрдЯ рдореЗрдВ, рд╣рдореЗрдВ рдПрдХ рдПрдХреНрд╕реЗрд▓ рдкреНрд▓реЗрдЯ рдорд┐рд▓рддреА рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рд╣рдорд╛рд░рд╛ рдХреЛрдб рдирдИ рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЛ рдХрд┐рддрдирд╛ рдкреВрд░рд╛ рдХрд░рддрд╛ рд╣реИред





рдкреБрд░рд╛рдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЛ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдХрдИ рдЪрд░рдгреЛрдВ рдореЗрдВ рдмрджрд▓ рджрд┐рдпрд╛ рдЧрдпрд╛ред


  1. Microsoft рдкреБрд░рд╛рдиреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯреНрд╕ рдХреЗ рд▓рд┐рдП .Net рдлреНрд░реЗрдорд╡рд░реНрдХ 4.7.3 рдореЗрдВ рдлреНрд░реЗрдорд╡рд░реНрдХ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдиреЗ рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХрд░рддрд╛ рд╣реИред
  2. рдкреБрд░рд╛рдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреА рд╕рдВрд░рдЪрдирд╛ рдХреЛ рдПрдХ рдирдП рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░реЗрдВред PackageReference рдХреЗ рд╕рд╛рде package.config рдХреЛ рдмрджрд▓реЗрдВред
  3. рддреАрд╕рд░рд╛, csproj рдлрд╝рд╛рдЗрд▓ рдХреА рд╕рдВрд░рдЪрдирд╛ рдХреЛ рдиреЗрдЯрдХреЛрд░ рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░реЗрдВред


рдореИрдВ рдПрдорд┐рд▓ рдпрдВрдЧрд┐рд░реЛрд╡ рдХреЛ рдзрдиреНрдпрд╡рд╛рдж рджреЗрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдЙрдиреНрд╣реЛрдВрдиреЗ рдиреЗрдЯрдХреЛрд░ рдХреЛ рдкреНрд░рд╡рд╛рд╕ рдкрд░ рдЕрдкрдиреА рд░рд┐рдкреЛрд░реНрдЯ рджреА, рдЬреЛ рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рдереАред рдЙрд╕рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдХрд╛ рд▓рд┐рдВрдХред



рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рд╣рдордиреЗ рдкрд╣рд▓реЗ рдЪрд░рдг рдХреЛ рдЫреЛрдбрд╝рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рд╣реИред рджреВрд╕рд░реЗ рдЪрд░рдг рдореЗрдВ 100 рд╕реЗ рдЕрдзрд┐рдХ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЛ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд┐рд╣рд┐рдд рд╣реИред рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдпрд╣рд╛рдВ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдкрдврд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ ред


рд╣рдо рд╕рдордЭ рдЧрдП рдХрд┐ рд╕реНрд╡рдЪрд╛рд▓рди рд╕реЗ рдмрдЪрд╛ рдирд╣реАрдВ рдЬрд╛ рд╕рдХрддрд╛ред рддреИрдпрд╛рд░ рд╕рдорд╛рдзрд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛: CsprojToVs2017 ред рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдирд╛рдо рдХреЛ рдЖрдкрдХреЛ рдкрд░реЗрд╢рд╛рди рди рдХрд░реЗрдВ: рдЙрдкрдпреЛрдЧрд┐рддрд╛ рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ 2019 рдХреЗ рд▓рд┐рдП рднреА рдкрд░рд┐рд╡рд░реНрддрд┐рдд рд╣реЛрддреА рд╣реИред



рдХреНрдпрд╛ рд╣реЛрдЧрд╛?


Csproj рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рдЖрдХрд╛рд░ рдШрдЯ рдЬрд╛рдПрдЧрд╛ред рдХрд┐рд╕ рдХрд╛рд░рдг рд╕реЗ? рд╕реЛрд░реНрд╕ рдХреЛрдб рд╡рд╛рд▓реА рд╕рднреА рдХрдиреЗрдХреНрдЯреЗрдб рдлрд╛рдЗрд▓реЗрдВ csproj рдЫреЛрдбрд╝ рджреЗрдВрдЧреА, рдЕрддрд┐рд░рд┐рдХреНрдд рд▓рд╛рдЗрдиреЗрдВ рд╣рдЯрд╛ рджреА рдЬрд╛рдПрдВрдЧреА, рдЖрджрд┐ред



- <Compile Include="Models\ViewModels\HistoryViewModel.cs" /> - <Compile Include="Properties\Settings.Designer.cs"> - <AutoGen>True</AutoGen> - <DependentUpon>Settings.settings</DependentUpon> - <DesignTimeSharedInput>True</DesignTimeSharedInput> - </Compile> 


рдХрдиреЗрдХреНрдЯреЗрдб рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдФрд░ рд╕рдмрдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпрд╛рдВ рдХрдо рд╣реЛ рдЬрд╛рдПрдВрдЧреАред



 - <Reference Include="NLog, Version=4.0.0.0, Culture=neutral, PublicKeyToken=5120e14c03d0593c, processorArchitecture=MSIL"> - <HintPath>..\packages\NLog.4.3.3\lib\net45\NLog.dll</HintPath> - <Private>False</Private> - </Reference> - <ProjectReference Include="..\WpfCommon\WpfCommon.csproj"> - <Project>{7ce118f6-2978-42a7-9e6a-ee5cd3057e29}</Project> - <Name>WpfCommon</Name> - </ProjectReference> + <PackageReference Include="NLog" Version="4.6.7" /> + <ProjectReference Include="..\WpfCommon\WpfCommon.csproj" /> 


рдХрдИ рдкреНрд░реЛрдЬреЗрдХреНрдЯреНрд╕ рдХреЗ рд▓рд┐рдП рд╕рд╛рдорд╛рдиреНрдп рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЛ Directory.BuildProps рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рдПрдХ рдРрд╕реА рд╡рд┐рд╢реЗрд╖ рдлрд╝рд╛рдЗрд▓ рд╣реИ рдЬреЛ MsBuild рдореЗрдВ рджрд┐рдЦрддрд╛ рд╣реИред
.Gitignore рдФрд░ .editorconfig рдХреЗ рд╕рд╛рде рд╕рд╛рджреГрд╢реНрдп рджреНрд╡рд╛рд░рд╛, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╕рд╛рдорд╛рдиреНрдп рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЗ рд╕рд╛рде рдПрдХ рд╡реИрд╢реНрд╡рд┐рдХ рдлрд╝рд╛рдЗрд▓ рд╣реИред
рд╣рдо рд╡рд┐рд╢рд┐рд╖реНрдЯ csproj рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ / рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдирд┐рдЬреА рд╕рдВрдкрддреНрддрд┐ рд╕рдореВрд╣ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред рд╡рд┐рд╡рд░рдг рдпрд╣рд╛рдБ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред



рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ



рдиреЗрдЯрдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЗ рд▓рд┐рдП рдкреБрд░рд╛рдиреА рдирд┐рд░реНрднрд░рддрд╛ рд╣реЛрдЧреАред рдЖрдкрдХреЛ рдирдЧреЗрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡реИрдХрд▓реНрдкрд┐рдХ рдпрд╛ рд╕рдорд╛рди рдкреИрдХреЗрдЬ рдЦреЛрдЬрдирд╛ рд╣реЛрдЧрд╛ред рдХрдИ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП, рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ Nuget рдкреИрдХреЗрдЬ рд╣реИ рдЬреЛ netcore рдпрд╛ netstandard рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред



рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдиреЗ DI рдпреВрдирд┐рдЯреА рдХреЗ рдкреБрд░рд╛рдиреЗ рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред рдПрдХ рдирдП рд╕рдВрд╕реНрдХрд░рдг рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рддреЗ рд╕рдордп, рдореБрдЭреЗ рджреЛ рдпрд╛ рддреАрди рд╕реНрдерд╛рдиреЛрдВ рдореЗрдВ рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрджреНрдпрддрди рдХрд░рдирд╛ рдерд╛ред


 using Microsoft.Practices.Unity -> using Unity; 


рдФрд░ рд╢рд╛рдпрдж рдпрд╣ рдкреИрдХреЗрдЬ рдХреЗ рд╕рднреА рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЛ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реЛрдЧрд╛ред рдФрд░ рдмрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреЛ рдкреБрдирд░рд╛рд░рдВрдн рдХрд░реЗрдВред



рдиреЗрдЯрдХреЛрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП csproj рдмрджрд▓реЗрдВ



WPF рдирд┐рдпрдВрддреНрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ, рдЖрдкрдХреЛ Microsoft.NET.Sdk.WindowsDesktop рд╕реНрд╡рд░реВрдк рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:



 -<?xml version="1.0" encoding="utf-8"?> -<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> - <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" /> - <PropertyGroup/> 

 +<Project Sdk="Microsoft.NET.Sdk.WindowsDesktop"> + <PropertyGroup> + <TargetFramework>netcoreapp3.0</TargetFramework> + <AssemblyTitle>MyEnterpriseLibrary</AssemblyTitle> + <Product>MyEnterpriseLibrary</Product> + <OutputPath>..\bin\$(Configuration)\</OutputPath> + <UseWPF>true</UseWPF> + <!--    assemblyinfo    ,    --> + <GenerateAssemblyInfo>false</GenerateAssemblyInfo> </Project> 


ClassLibrary рдХреЗ рд▓рд┐рдП, рдмрд╕ Microsoft.NET.Sdk рдЯрд╛рдЗрдк рдЫреЛрдбрд╝реЗрдВ:



 <Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <TargetFramework>netcoreapp3.0</TargetFramework> <AssemblyTitle>MyEnterpriseLibrary</AssemblyTitle> <Product>MyEnterpriseLibrary</Product> <OutputPath>..\bin\$(Configuration)\</OutputPath> </PropertyGroup> <!-- ... --> </Project> 


рд╢рд╛рдпрдж, Windows Forms рдирд┐рдпрдВрддреНрд░рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реА рдХреБрдЫ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ, рдЖрдкрдХреЛ UseWindowsForms рдкрд░ рдПрдХ рдХреЙрд▓ рдЪрд┐рдкрдХрд╛ рджреЗрдирд╛ рд╣реЛрдЧрд╛:


 <UseWindowsForms>true</UseWindowsForms> 


Csproj рдиреЗ рд╕рдВрд╕рд╛рдзрди рд╕рдВрдХрд▓рди рдкреНрд░рд╡рд╛рд╣ рдХреЗ рд▓рд┐рдП рдЕрдкрдирд╛ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдмрджрд▓ рджрд┐рдпрд╛ рд╣реИред рдкрд╣рд▓реЗ, рдкреНрд░рд╛рд░реВрдк рдиреЗ рдЖрдкрдХреЛ рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдФрд░ рд╕рд╛рдордЧреНрд░реА рджреЛрдиреЛрдВ рд╕реЗ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреА рдереА,
рдФрд░ рдЬрд╣рд╛рдВ рднреАред


рдЕрдм, рдпрджрд┐ рдлрд╝рд╛рдЗрд▓ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рдВрдЧреНрд░рд╣ рдореЗрдВ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдЗрд╕реЗ рд╕реЗ рдирд┐рдХрд╛рд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж рд╣реА рдЗрд╕реЗ рд╡рд╛рдВрдЫрд┐рдд рд╕рдореВрд╣ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд░реЗрдВред
рдпрд╣рд╛рдВ рд╡рд╣ рдХреЛрдб рд╣реИ рдЬреЛ рдлрд╝рд╛рдЗрд▓.рдЬреЙрди рдХреЛ рдХрд┐рд╕реА рднреА рд╕рдВрдЧреНрд░рд╣ рд╕реЗ рдирд╣реАрдВ рдЦреАрдВрдЪрддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рд╕рдВрд╕рд╛рдзрди рд╕рдВрдЧреНрд░рд╣ рд╕реЗ рдЬреЛрдбрд╝рддрд╛ рд╣реИред



 <ItemGroup> <None Exclude="file.json" /> <Resource Include="file.json" /> </ItemGroup> 


рддрджрдиреБрд╕рд╛рд░, рд╕рднреА рдлрд╛рдЗрд▓реЗрдВ рдЬреЛ рд╕реНрд░реЛрдд рдирд╣реАрдВ рд╣реИрдВ, рдЙрдиреНрд╣реЗрдВ рдХрд┐рд╕реА рднреА рд╕рдВрдЧреНрд░рд╣ рд╕реЗ рдирд╣реАрдВ рд╣рдЯрд╛рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЗрд╕ рддрд░рд╣:



 <ItemGroup Condition="'$(UseWPF)' == 'true' And $(UseWindowsForms) != 'true'"> <None Exclude="**\*.xml;**\*.xsl;**\*.xslt;**\*.txt;**\*.bmp;**\*.ico;**\*.cur;**\*.gif;**\*.jpeg;**\*.jpe;**\*.jpg;**\*.png;**\*.dib;**\*.tiff;**\*.tif;**\*.inf;**\*.compositefont;**\*.otf;**\*.ttf;**\*.ttc;**\*.tte" /> <Resource Include="**\*.xml;**\*.xsl;**\*.xslt;**\*.txt;**\*.bmp;**\*.ico;**\*.cur;**\*.gif;**\*.jpeg;**\*.jpe;**\*.jpg;**\*.png;**\*.dib;**\*.tiff;**\*.tif;**\*.inf;**\*.compositefont;**\*.otf;**\*.ttf;**\*.ttc;**\*.tte" /> </ItemGroup> 


рдХреБрдЫ рд▓рд╛рдЗрдиреЛрдВ рдХреЛ рд╣рдЯрд╛рдирд╛ рд╣реЛрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ .net рдлреНрд░реЗрдорд╡рд░реНрдХ 4.0 рдкрд░ рдлреНрд░реЗрдорд╡рд░реНрдХ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдЦрдЯрдЦрдЯрд╛рддреЗ рд╣реИрдВред



  Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" 


рд░реВрдкрд╛рдВрддрд░рдг рдХреЗ рдмрд╛рдж рдХреБрдЫ рд╕реНрдерд╛рдиреЛрдВ рдкрд░, рдЕрдЬреАрдм рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпрд╛рдБ рдмрдиреА рд░рд╣реЗрдВрдЧреА рдЬреЛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рд╕реЗ рд░реЛрдХрддреА рд╣реИрдВред рдпрд╣рд╛рдБ рдЗрд╕ рддрд░рд╣ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рдЙрджрд╛рд╣рд░рдг рд╣реИрдВ:



 - <ItemGroup> - <EmbeddedResource Include="**\*.resx" /> - </ItemGroup> - <Compile Remove="something.cs"> 


WCF рдЧреНрд░рд╛рд╣рдХ



рдпрджрд┐ рдЖрдкрдиреЗ рдбрдмреНрд▓реНрдпреВрд╕реАрдПрдл рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдХреЛ рдлрд┐рд░ рд╕реЗ рдмрдирд╛рдирд╛ рд╣реЛрдЧрд╛ред рдЗрд╕реЗ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдпрд╣рд╛рдВ рдХреИрд╕реЗ рдкрдврд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ: docs.microsoft.com/en-us/dotnet/desktop-wpf/migration/convert-project-from-net-framework#updating-wcf-client-usage



рдХреНрдпрд╛ рдирд╣реАрдВ рд▓реЗ рдЬрд╛рдПрдЧрд╛?



рд╕реНрдЯрд╛рдЗрд▓рдХреЙрдк рдФрд░ рдХреЛрдб рд╡рд┐рд╢реНрд▓реЗрд╖рдгред



рд╣рдорд╛рд░реЗ рдХреБрдЫ рдкреНрд░реЛрдЬреЗрдХреНрдЯреНрд╕ рдореЗрдВ рд╕реНрдЯреИрдЯрд┐рдХ рдХреЛрдб рдПрдирд╛рд▓рд╛рдЗрдЬрд░ рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ред рдЖрдзреБрдирд┐рдХ MsBuild рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ рд╕реНрд╡рд┐рдЪ рдХрд░рддреЗ рд╕рдордп, рдХрд▓реЗрдХреНрдЯрд░ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдкреБрд░рд╛рдиреЗ рд╕реНрдЯреИрдЯрд┐рдХ рдХреЛрдб рдПрдирд╛рд▓рд╛рдЗрдЬрд╝рд░ рдХреЗ рдмрдЬрд╛рдп рдирдП Roslyn analyzers рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗрддрд╛ рд╣реИред



рдореБрдЭреЗ рдЗрд╕ Microsoft рдЧрд╛рдЗрдб рдХреЗ рдмрд╛рдж Stylecop.Analyzers рдФрд░ FxCop.Analyzers Nuget рдкреИрдХреЗрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреБрд░рд╛рдиреЗ рдирд┐рдпрдореЛрдВ рдХрд╛ рдЕрдиреБрд╡рд╛рдж рдХрд░рдирд╛ рдерд╛ ред ред
рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рд╡рд┐рднрд┐рдиреНрди рдлрд╝реЛрд▓реНрдбрд░реЛрдВ (рдореЛрдиреЛ-рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА) рдореЗрдВ рдХрдИ рдкрд░рд┐рдпреЛрдЬрдирд╛рдПрдВ рд╣реИрдВ, рддреЛ Build.props рдореЗрдВ analyzers рдХреЗ рдХрдиреЗрдХреНрд╢рди рдХреЛ рдмрд╛рд╣рд░ рдХрд░рдирд╛ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдПрдХ рд╕рдорд╛рди рдирд┐рдпрдо рдХреЗ рд╕рд╛рде рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдирд╛ рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИред



рдпрд╣рд╛рдБ рдХреНрдпрд╛ рд╣реБрдЖ:



 - <RunCodeAnalysis>true</RunCodeAnalysis> + <PackageReference Include="FxCop.Analyzers" Version="2.9.4" /> 


рдлрд╛рдЗрд▓реЗрдВ - рдЕрдирд╛рде



рдкреБрд░рд╛рдиреЗ csproj рдкреНрд░рд╛рд░реВрдк рдореЗрдВ .cs рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рд╕реНрдкрд╖реНрдЯ рдХрдиреЗрдХреНрд╢рди рдирд┐рд╣рд┐рдд рд╣реИред рдЙрд╕реА рд╕рдордп, рдХрднреА-рдХрднреА рдкреБрд░рд╛рдиреА рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рдирд╛рдо рдмрджрд▓рдиреЗ рдпрд╛ рдЙрдиреНрд╣реЗрдВ рд╣рдЯрд╛рдиреЗ рдХреЗ рдмрд╛рдж csproj рд╕реЗ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдЙрдиреНрд╣реЗрдВ рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рд╕реЗ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╣рдЯрд╛рдпрд╛ рдирд╣реАрдВ рдЧрдпрд╛ рдерд╛ред рдирдП csproj рдкреНрд░рд╛рд░реВрдк рдореЗрдВ, рдкрд░рд┐рдпреЛрдЬрдирд╛ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдореМрдЬреВрдж рд╕рднреА рдлрд╛рдЗрд▓реЗрдВ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЙрдард╛рдИ рдЬрд╛рдПрдВрдЧреА, рдмрд╕ рдЬреЛ рдкрд╣рд▓реЗ рдирд╣реАрдВ рд╣рдЯрд╛рдИ рдЧрдИ рд╣реИрдВред рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рдЙрдирдореЗрдВ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рд╣реЛрдВрдЧреА, рдкрд╣рд▓реЗ рд╕реЗ рдореМрдЬреВрдж рдЧреИрд░-рдореМрдЬреВрдж рд╡рд░реНрдЧреЛрдВ, рд╡рд┐рдзрд┐рдпреЛрдВ, рд╕рдВрд╕рд╛рдзрдиреЛрдВ рд╕реЗ рдЕрдкреАрд▓ рдХреА рдЬрд╛рддреА рд╣реИред рдпрд╣ рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдХреЗ рджреМрд░рд╛рди рд╕рд╛рдорд╛рдиреНрдп рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рджреЗрдЧрд╛ред



рд╕рд╛рдзрди



рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ, рд╕реНрдкреНрд▓реИрд╢рд╕реНрдХреНрд░реАрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдПрдХ рдХреЛ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдкрд░ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд░реВрдк рд╕реЗ рдЪреБрдирд╛ рдЧрдпрд╛ рдерд╛ред рд╕реНрдкреНрд▓реИрд╢рд╕реНрдХреНрд░реАрди рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдХреЛ рд╕рдВрд╕рд╛рдзрди рдХреЗ рдкрде рдХреЗ рд╕рд╛рде рдЖрд░рдВрдн рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ, рдиреЗрдЯрдХреЛрд░ 3 рдкрд░ рдЬреАрддрдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рдерд╛: рд╕рдВрд╕рд╛рдзрди рдХреА рдХрдореА рдкрд░ рд╢рдкрде рд▓реЗрддрд╛ рд╣реИред



рдХреЛрдб рдЬреЛ рдХрд╛рдо рдХрд░рдиреЗ рд▓рдЧрддрд╛ рд╣реИ



.Net рдлреНрд░реЗрдорд╡рд░реНрдХ рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдХреЛрдб рдиреЗрдЯрдХреЛрд░ рдореЗрдВ рднреА рдХрд╛рдо рдХрд░рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИред рд▓реЗрдХрд┐рди рдХреЛрдб рдХреЗ рдХреБрдЫ рдЦрдВрдб рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рд╕рдВрдХрд▓рдХ рдиреЗ рдЕрдкрдиреА рдЖрдБрдЦреЗрдВ рдмрдВрдж рдХрд░ рд▓реА рд╣реИрдВред рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдпрджрд┐ рдХреЛрдб рдЙрди рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рдиреЗрдЯрдХреЛрд░ рдореЗрдВ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдирд╣реАрдВ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо PlatformException рдХреЛ рдкрдХрдбрд╝ рд▓реЗрдВрдЧреЗред


рдРрд╕реЗ рд╕реНрдерд╛рдиреЛрдВ рдХреА рдЦреЛрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдХ рд╡рд┐рд╢реЗрд╖ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рд╣реИ: github.com/dotnet/platform-compat ред



рдпрд╣ рд╕рдм рдХреНрдпреЛрдВ рд╣реИ рдЕрдЧрд░ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛рдо рдХрд░ рд░рд╣реА рд╣реИ?



рдХрдИ рдлрд╛рдпрджреЗ рдирд╣реАрдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА, рд╡реЗ рд╣реИрдВред



  • рдЖрдкрдХреЗ рдХреЛрдб рдХреЛ netcore рдореЗрдВ рдЬреЛрдбрд╝реЗ рдЧрдП рд╕рднреА рдЕрдиреБрдХреВрд▓рди рдкреНрд░рд╛рдкреНрдд рд╣реЛрдВрдЧреЗред
  • рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓реЙрдиреНрдЪ рдХреА рдЧрддрд┐ рдмрдврд╝ рдЬрд╛рдПрдЧреАред
  • C # рдХреЗ рднрд╛рд╡реА рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЛ рд▓рдХреНрд╖рд┐рдд рдХрд░рдирд╛ред
  • Csproj рдХреЗ рдирдП рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП рдХрдо рд╕рдордпред
  • рдПрдХрд▓ exe рдореЗрдВ рдкреИрдХрд┐рдВрдЧред


Microsoft рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдирдП рдлрд╝реБрдЯрд┐рдВрдЧ рдкрд░ рдирд╣реАрдВ рдзрдХреЗрд▓ рд░рд╣рд╛ рд╣реИред рдлрд┐рд░ рднреА, рдпрджрд┐ рдЖрдкрдХрд╛ рдЖрд╡реЗрджрди рджреВрд╕рд░реЗ рдмрдбрд╝реЗ рдХрд╛ рдПрдХ рдкреНрд▓рдЧрдЗрди рд╣реИ, рддреЛ рдпрд╣ рднрд╡рд┐рд╖реНрдп рдХреЗ рд░рд┐рд▓реАрдЬ рдкрд░ рд▓рдХреНрд╖реНрдп рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ, рдЬреЛ рдХрд┐ рдиреЗрдЯрдХреЛрд░ рдкрд░ рднреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИред



рдЙрдкрдпреЛрдЧреА рд▓рд┐рдВрдХ



Source: https://habr.com/ru/post/hi470401/


All Articles