The requested page is not available for the requested platform. You are viewing the content for Default platform.
You are viewing help content for pre-release software. This document and the features it describes are subject to change. Switch to the current version.
All docs
V19.2
19.2 (EAP/Beta)
19.1
18.2
The page you are viewing does not exist in version 18.2. This link will take you to the root page.
18.1
The page you are viewing does not exist in version 18.1. This link will take you to the root page.
17.2
The page you are viewing does not exist in version 17.2. This link will take you to the root page.

Port an Existing XAF Application to .NET Core 3.0

  • 2 min to read

Follow the steps below to port your XAF WinForms application from .NET Framework to .NET Core. Refer to the .NET Core 3.0 Support in XAF WinForms Applications topic to make sure that your application can be migrated and all required components are installed on your machine.

Important

Copy and save the current versions of all csproj files before porting.

  1. In the Solution Explorer, unload all projects.

  2. Replace the existing code in each csproj file with the following:

    MySolution.Module

    <Project Sdk="Microsoft.NET.Sdk.WindowsDesktop">
        <PropertyGroup>
            <OutputType>Library</OutputType>
            <TargetFramework>netcoreapp3.0</TargetFramework>
            <UseWindowsForms>true</UseWindowsForms>
            <GenerateAssemblyInfo>false</GenerateAssemblyInfo>
            <RootNamespace>MySolution.Module</RootNamespace>
            <Deterministic>False</Deterministic>
        </PropertyGroup>
        <ItemGroup>
            <EmbeddedResource Include="**\*.svg" />
            <EmbeddedResource Include="**\*.xafml" />
            <EmbeddedResource Remove="bin\**" />
        </ItemGroup>
        <ItemGroup>
            <PackageReference Include="DevExpress.WindowsDesktop.Core" Version="19.2.1-currentVersion" />
            <PackageReference Include="DevExpress.WindowsDesktop.Xaf" Version="19.2.1-currentVersion" />
        </ItemGroup>
    </Project>
    

    MySolution.Module.Win

    <Project Sdk="Microsoft.NET.Sdk.WindowsDesktop">
        <PropertyGroup>
            <OutputType>Library</OutputType>
            <TargetFramework>netcoreapp3.0</TargetFramework>
            <UseWindowsForms>true</UseWindowsForms>
            <GenerateAssemblyInfo>false</GenerateAssemblyInfo>
            <RootNamespace>MySolution.Module.Win</RootNamespace>
            <Deterministic>False</Deterministic>
        </PropertyGroup>
        <ItemGroup>
            <EmbeddedResource Include="**\*.svg" />
            <EmbeddedResource Include="**\*.xafml" />
            <EmbeddedResource Remove="bin\**" />
        </ItemGroup>
        <ItemGroup>
            <ProjectReference Include="..\MySolution.Module\MySolution.Module.csproj" />
        </ItemGroup>
    </Project>
    

    MySolution.Win

    <Project Sdk="Microsoft.NET.Sdk.WindowsDesktop">
        <PropertyGroup>
            <OutputType>WinExe</OutputType>
            <TargetFramework>netcoreapp3.0</TargetFramework>
            <UseWindowsForms>true</UseWindowsForms>
            <GenerateAssemblyInfo>false</GenerateAssemblyInfo>
            <RootNamespace>MySolution.Win</RootNamespace>
            <Deterministic>False</Deterministic>
        </PropertyGroup>
        <ItemGroup>
            <EmbeddedResource Include="**\*.svg" />
            <EmbeddedResource Include="**\*.xafml" />
            <EmbeddedResource Remove="bin\**" />
        </ItemGroup>
        <ItemGroup>
            <PackageReference Include="Microsoft.CodeAnalysis.CSharp" Version="3.2.1" />
            <PackageReference Include="System.Data.SqlClient" Version="4.7.0-preview.19073.11" />
            <PackageReference Include="System.Diagnostics.PerformanceCounter" Version="4.6.0-preview8.19405.3" />
        </ItemGroup>
        <ItemGroup>
            <ProjectReference Include="..\MySolution.Module.Win\MySolution.Module.Win.csproj" />
            <ProjectReference Include="..\MySolution.Module\MySolution.Module.csproj" />
        </ItemGroup>
    </Project>
    
  3. In the new code, replace the "MySolution" placeholder with your project's root namespace in the <RootNamespace> element and with the project's name in the <ProjectReference> element. Replace the "currentVersion" placeholder with the current version of DevExpress NuGet packages. You can find this version number in the NuGet Package Manager.

  4. If you reference other projects or NuGet packages, copy the corresponding <ProjectReference> elements from the old version of the csproj files and paste them into the new one.

  5. Reload all projects.

  6. In the Program.cs (Program.vb) file, comment the following line:

    static class Program {
        // ...
        static void Main() {
            // ...
            EditModelPermission.AlwaysGranted = System.Diagnostics.Debugger.IsAttached;
        }
    }
    
  7. In the App.config file, remove the <system.diagnostics> element and add the code below to <appSettings>:

    <?xml version="1.0"?>
    <configuration>
    <!-- ... -->
        <appSettings>
        <!-- ... -->
            <add key="eXpressAppFrameworkTraceLevel" value="3"/>
        </appSettings>
    </configuration>
    

    .NET Core applications use this key instead of switches in the <system.diagnostics> element.

    If you use EasyTest in your application, add the following keys:

    <?xml version="1.0"?>
    <configuration>
    <!-- ... -->
        <appSettings>
        <!-- ... -->
            <add key="EasyTestTraceLevel" value="4"/> 
            <add key="EasyTestLogFileName" value="TestExecutor.log" />
        </appSettings>
    </configuration>
    
  8. Rebuild the solution.