LogoLogo
WinForms to WebPowerBuilder to .NETPowerBuilder to Java
  • WebMAP Documentation | Mobilize.Net
  • WinForms
    • Introduction
    • Getting Started
    • Conversion Process
    • Post-Conversion
    • Extend or Modify the Converted Application
      • NoWebMap Forms Winforms
        • How to add a new Form
        • Adding the created form to the migrated App
        • Interacting with the application data
        • Call the custom API
        • Interaction between the no webmap added Form and the WebMap components
      • Adding a component
      • Adding a component dynamically
      • Add a new control model
      • Switching CSS theme
      • Adding new window
      • Conversion Configuration
        • WebMAP configuration file
        • Stub Filter
      • Adding Non-WebMap Angular Forms
      • Adding FrontEnd Handler to a ToolStripMenuItem
      • Changing ToolStripButton icons
      • Adding new items to existing toolbar
      • Adding FrontEnd element properties and JS listeners
      • Adding FrontEnd output handlers
      • Access FrontEnd components
      • Create custom components based on existing WebMap Component
      • Override FrontEnd methods
    • Assessment Mode
    • Errors and Troubleshooting
      • How to resolve broken reference problems with VBUC
    • Portability
    • Glossary
    • Release Notes
    • Internal Demos
    • Known Issues
    • WinForms DCP
  • WebForms
    • Introduction
    • Overview
    • Desktop Compatibility Platform (DCP)
      • Pages and Master Pages
      • GridView and DataList data synchronization
      • HTTP objects
    • Post-Conversion
    • Extend or Modify the Converted Application
      • Adding FrontEnd validator
      • Adding Page
      • Adding MasterPage
    • Designer classes on WebForms Conversion Tool
    • Errors and Troubleshooting
      • How fix Solution when have been added website from filesystem without project file
    • Release Notes
  • PowerBuilder to .Net
    • Introduction
    • Getting Started
      • Conversion Tool
    • Desktop Compatibility Platform (DCP)
      • Data Manager
    • Reports
      • Report Rendering in Modernized Code
      • ReportWatcher Service Configuration
      • Data Manager to RDL Conversion
      • Reporting Service Internals
      • Troubleshooting
  • PowerBuilder to Java
    • Introduction
    • Getting started
    • Post-Conversion
      • Setup PBJava Environment
      • Architecture
      • App Start
    • Glossary
    • Errors
    • Glossary
    • FAQ
      • How to create a new Control
      • How to create a new Screen
      • What is the Mobilize.WebMAP.CoreServices.All?
      • What is the DesignerAttribute?
      • What is the InterceptedAttribute?
      • What is the InterceptedAttribute?
      • What is the ObservableAttribute?
      • What is the Mobilize.Weaving.WebMAPExtensions.All?
  • General
    • FrontEnd
      • Documentation
        • Webforms Angular Components
          • Web Components
            • Base Components
              • BaseValidator Component
            • KendoUI Components
              • CompareValidator
              • CustomValidator
              • RegularExpressionValidator
              • RequiredFieldValidator
              • ValidationSummary
          • Directives
          • AJAX Web Components
            • AjaxCalendar
            • AjaxModalPopupExtender
          • Ajax Interaction Services
        • Client Core
          • WebMap's Client Core
        • Angular Client
          • Introduction
          • WebMap Service
          • WebMap Interceptor Service
        • Base Components
          • Introduction
          • Components
            • Container
            • Control
            • ControlContainer
            • FormsContainer
            • Loading
            • Stub
        • Winforms Angular Components
          • Web Components
            • Base Components
              • Control Component
              • Form Container
              • Grid Component
              • Style
            • KendoUI Components
              • AdoDataControl
              • Button
              • C1TrueDBGrid
              • CheckBox
              • CheckedListBox
              • ComboBox
              • ContextMenuStrip
              • DataGridView
              • DataGridViewFlex
              • DateTimePicker
              • FileDialog
              • GroupBox
              • Label
              • ListBox
              • ListView
              • MaskedTextBox
              • MessageBox
              • NumericUpDown
              • Panel
              • PictureBox
              • PrintDialog
              • ProgressBar
              • RadioButton
              • RichTextBox
              • StatusStrip
              • Stup
              • TabControl
              • TabPage
              • TextBox
              • Timer
              • ToolStrip
              • TreeView
              • WebBrowser
              • Window
            • JQuery Web Components
          • WebMap FrontEnd Architecture
          • Migrated Structure
          • Setup
            • Front-End setup and compilation
            • Components Manual
            • Browser Support
            • Unit Test Manual
            • Development Process
            • Setup AOT/JIT Compilation
          • Decorators
            • Server Event
          • Conventions
            • Application Structure and NgModules
            • Coding
            • Components
            • Data Service
            • Directives
            • Lifecycle hooks
            • Names
            • Services
        • PowerBuilder Kendo Components
          • Base Components
            • base-component
            • column-control
            • controlcontainer
          • Data Manager Componets
            • base-data-manager
            • data-manager-control
            • data-manager-control-base
            • dw-checkbox
            • dw-column
            • dw-complexNumericMaskComponent
            • dw-compute
            • dw-date-time-edit-mask
            • dw-dropdowndatawindow
            • dw-edit
            • dw-edit-mask
            • dw-radio-button
            • dw-simple-numeric-edit-mask
            • dw-string-edit-mask
            • dw-time-edit-mask
          • Window Components
            • basemask
            • graphics
            • w-checkbox
            • w-command-button
            • w-complex-numeric-mask
            • w-date-time-edit-mask
            • w-dropdownlistbox
            • w-group-box
            • w-line
            • w-listbox
            • w-maskedtextbox
            • w-mdiclient
            • w-menu
            • w-multiline
            • w-picture
            • w-picture
            • w-radiobutton
            • w-rectangle
            • w-simple-numeric-edit-mask
            • w-single-line-edit
            • w-statictext
            • w-string-edit-mask
            • w-time-edit-mask
            • w-toolbar
            • w-toolbaritem
            • w-user-object
            • w-window
          • Services
            • DmInteractionService
          • DataManagerEvents
          • FocusManager guide
      • Api Documentation
        • WebMap Silverlight
        • WfNetC1Components
        • WebFormsComponents
      • Guides
        • Setup NPM package registry in the workspace
        • How to Setup WebMap Applications To Run Over SubDomains or WebApplications In IIS
        • Deploy several WebMap Apps in the same Server
        • Update to Angular 16
        • Appearance
          • How to change the CSS
          • How to override the style for a component
        • Component maintenance
          • How link WebMap package to the migrated Application
          • How to resolve broken reference problems with VBUC
          • How to test a local WebMap Components package
          • How to add a new component in a migrated application
          • How to update a component
          • Dynamic Control Support
          • How to add new set of component with a different provider
          • How to test your component in the playground
          • Tools
        • WMLogger
          • How to use the WMLogger's instance
          • How to change log's level
          • How to add log tags
        • Integration test
        • Setup WebMap Applications to Run Front-End And Back-End In Separates Sites
          • Setup WebMap Applications To Run Front-End And Back-End In Separates Sites in Production (IIS)
        • Setup Migrated WebMap Applications To Run Front-end & Back-end In Separates Sites (Only development)
        • Initial Set Up
          • Software to Install
          • Necessary Repositories
      • Errors
      • Version Notes
        • Client Core
        • Angular Client
        • Web Base Components
        • Winforms Angular Components
        • PowerBuilder Kendo Components
      • Licenses
        • Client Core
        • Angular Client
        • Base Components
        • PB Kendo Components
        • WFNet Kendo Components
        • WebForms Components
        • WFNet Access Components
        • WFNet Janus Components
        • WFNet C1 Components
        • Silverlight wms-framework
        • Silverlight i-components
    • BackEnd
      • WebMAP From Scratch
      • Setup
      • DCP: Desktop Compatibly Platform
        • Overview
        • Library Bundles
          • Bundle Library
            • Create an Observable Object
          • Bundle DTO
            • DTO: Data Transfer Objects
              • Creating a DTO
            • Mappers
              • Create Mappers
            • Observable Wrappers
              • Create an Observable Wrapper
            • API/Controllers
      • Architecture
      • Weaving on WebMAP
      • Glossary
      • FAQ
        • How to create a new Control
        • How to create a new Screen
        • What is the Mobilize.WebMAP.CoreServices.All?
        • What is the DesignerAttribute?
        • What is the InterceptedAttribute?
        • What is the Mobilize.Extensions.Logging.RollingFile?
        • What is the ObservableAttribute?
        • What is the Mobilize.Weaving.WebMAPExtensions.All?
      • Licenses
        • PBNet DCP
        • WebFormsDCP
        • WFNet DCP
        • CoreServices
        • CoreServicesCommon
    • Request and Response
  • SCALABILITY
    • Introduction
    • Microservices
    • Containerizing a WebMap .Net Application with Docker
    • Vertical scalability
Powered by GitBook
On this page
  • Requirements
  • The generated project
  • Executing the converted project
  • 1. Compile the frontend
  • 2. Build and execute the converted solution

Was this helpful?

  1. PowerBuilder to .Net

Getting Started

PreviousIntroductionNextConversion Tool

Last updated 4 years ago

Was this helpful?

This guide describes the basic steps involved in converting a small PowerBuilder project to a C#/Angular web application.

Requirements

This guide requires the following software packages:

  • Visual Studio 2017 or 2019

  • .NET Framework 4.6.1

  • .NET Core 2.2 SDK

  • NodeJS 12.9.* ()

  • Angular-CLI ()

  • Yarn ()

The PBNet conversion tool is Windows executable. Get in touch with the team to get an appropriate build of the tool.

A simple migration could be performed using just the -i and -o command line arguments.

A PowerBuilder project is expected to be composed of a group of PB libraries (.PBL files) and assets such as images and configuration files. An important element to tie everything together is the target file (a .PBT file).

For example, say that the project to be converted is located in the path C:\pbprojects\testproject1 . For a very simple project the contents of this directory may have something like this:

  • testproject1.pbl

  • testproject1.pbt

  • testproject1.pbw

  • testproject1.usr.opt

This is a simple project that when executed shows a simple window like this:

The current version of the conversion tool must be executed from the command line. The current directory must be the directory where the tool Mobilize.PBNetMAP.ConversionTool.exe was copied. For example:

C:\lastest_build\>

The -i command line argument is used to specify the path where the target file (testproject1.pbt) is located. The -o command line argument is used to specify the output directory . This path is going to have the converted C# project.

C:\lastest_build> Mobilize.PBNetMAP.ConversionTool.exe -i c:\pbprojects\testproject1 -o c:\pbprojects\converted
info: Migrator[0]
     TC0001: Starting Composition Import
info: Migrator[0]
     TC0003: Loading parts for category Rules
info: Migrator[0]
     TC0005: Loading file ..\Rules\net461\Mobilize.Rules.PowerBuilderToCSharp.dll
...
...
...
     HTMLGEN0004: Finish generating view w_main
info: Migrator[0]
     [2020.02.21 16:14:06] Finish Generation of Migrated Code
info: Migrator[0]
     [2020.02.21 16:14:06] Finish Migration
C:\lastest_build>

While running, the conversion tool shows many internal execution messages.

The generated project

The output folder looks like this:

This output folder contains log files(ConversionTool.Log...txt), temporary migration folders (repository) and the generated C# solution in MigratedSolution.

The MigratedSolution contains one C# project (.CSPROJ) and directory per PowerBuilder library (.PBL) . Two additional projects are created for each migration:

  • AllInterfaces.csproj contains interfaces for class definitions in all the libraries of the solution

  • testproject1Site.csproj contains the website for the converted application.

Executing the converted project

Two steps need to be performed for executing the converted project.

1. Compile the frontend

The compilation of the frontend components need to be executed from the command line. First run the yarn install command to install all the required third party packages (including Angular, Kendo UI, etc). Then compile the code using ng build.

For example:

C:\pbprojects\converted\MigratedSolution\testproject1Site\testproject1Site-angular> yarn install
arn install v1.13.0
[1/4] Resolving packages...
...
...
...
Done.
C:\pbprojects\converted\MigratedSolution\testproject1Site\testproject1Site-angular> ng build

Date: 2020-02-21T22:51:03.431Z
Hash: d9ed8a39693e87005cf1
Time: 73782ms
chunk {main} main.js, main.js.map (main) 51.8 kB [initial] [rendered]
chunk {polyfills} polyfills.js, polyfills.js.map (polyfills) 384 kB [initial] [rendered]
chunk {polyfills-es5} polyfills-es5.js, polyfills-es5.js.map (polyfills-es5) 463 kB [initial] [rendered]
chunk {runtime} runtime.js, runtime.js.map (runtime) 6.08 kB [entry] [rendered]
chunk {scripts} scripts.js, scripts.js.map (scripts) 86.1 kB [entry] [rendered]
chunk {styles} styles.js, styles.js.map (styles) 1.19 MB [initial] [rendered]
chunk {vendor} vendor.js, vendor.js.map (vendor) 23.9 MB [initial] [rendered]
C:\pbprojects\converted\MigratedSolution\testproject1Site\testproject1Site-angular>

Downloading the packages and compiling the code may take a couple of minutes depending on the size of your project.

2. Build and execute the converted solution

The server side code needs to be compiled using Visual Studio 2017 or above. The solution is located in MigratedSolution\MigratedSolution.sln .

Compile and execute this project and execute this project to get

https://nodejs.org/en/
https://cli.angular.io/
https://yarnpkg.com/