Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
How to run a Wisej app as a self-hosted process or service.
Wisej 3 .NET Core applications are self-hosted by default being standard ASP.NET Core applications. ASP.NET Core apps are built to an executable that you can simply start and will start hosting your application. You don't need to use Wisej.HostService.exe.
If you are deploying on a Linux distribution or on MacOS, make sure libgdiplus is installed.
Run the publishing tool to deploy to a folder.
That's it. When you run YourApplication.exe you can use the --urls command line argument to configure the application's endpoints.
Wisej 3 ASP.NET Core apps can be deployed as a Windows service quite easily:
Add the WindowsServices nuget to your project.
Add builder.Host.UseWindowsServices() to Startup.cs or Startup.vb (see code snippet below).
Register the service using "sc create"
Now you can start the service like any other Windows service. For any additional configuration option refer to the Microsoft documentation.
You can run a Wisej application (including Wisej 3 on .NET 4.8) as a self hosting process or service. All you need to do is deploy the Wisej.HostService executable in the root folder of the deployment directory.
Create the application directory
Copy Wisej.HostService.exe to the application directory
Create the /bin directory in the application's directory
Copy all the assemblies from your local /bin to the server's /bin (no need to copy xml and pdb files)
Copy the /Themes folder if you have custom themes or mixins
Copy the /Images folder if you have images that need to be served as URLs
Copy the /App_Data folder if your application uses it
Copy Web.config
Copy Default.html (and other html files you use sub-applications)
Copy Default.json (and other json configuration files if you use sub-applications)
Copy favicon.ico.
Wisej.HostService is currently only available in GitHub - you need to download the source code and compile the executable.
Once the deployment directory is ready, you can either register Wisej.HostService.exe as a Windows service, or run it directly as a normal process.
Self Hosting uses the classic pipeline instead of the integrated pipeline in web.config. If the classic configuration is not already present in your web.config, you need to add it. See the web.config section below to see what to add.
These are the supported startup arguments:
Listening on port 80 may be restricted by the OS unless the process is started as Administrator.
Register the executable to run as a service:
You can start the same service multiple times listening on different ports.
Used in conjunction with a load balancer like NGINX, you can have multiple processes of the same application handle their share of the sessions.
Run Wisej.HostService.exe as any other process. You can configure Windows to start the process at startup or use Windows Task Scheduler or any other means to start the process.
Starts the process listening for connections to localhost on port 8080 (the default).
If your web.config file doesn't include the <system.web> section (classic pipeline), add it as shown in the example below. All it needs is the definition of the Wisej httpModule. under <system.web> and to turn the validation of the integrated mode in <system.webServer>, otherwise IIS will throw in an error.
Once the web.config file includes these settings it can be used with IIS, self hosting, standalone, and Ultidev/Cassini deployments.
How to publish a Wisej App using Apache as a reverse proxy.
There are a few steps required to deploy to deploy a Wisej.NET app to Apache on .NET Core. use the following Visual Studio Publishing link to generate a build. Then proceed with Basic Steps.
After generating a build using the Visual Studio Publishing link above, copy the executable, resource files, and referenced DLLs to the folder they will run in.
Test that the deployment works using the dotnet start AppName command.
If the application is deployed as an executable, ensure the executable has the execute permission and run sudo ./AppName.
3. After verifying the app runs, you will need to configure the app to run on startup. systemd can be used to create a service file to start and monitor the underlying web app.
systemd is an init system that provides many powerful features for starting, stopping, and managing processes on Linux systems. Click here to make a service file.
All Apache needs is an address and a port. In the httpd.conf file define the URL for your application and assign the URL:port of the actual Wisej application to the ProxyPass setting.
The configurations in this book are minimal examples, use the full Apache guide to determine how to configure your Apache server.
This is all you need for Apache to dispatch the requests to the Wisej.NET application.
Deploying a Wisej 2.x application to Apache is similar the the IIS deployment in regards to the files to copy to the production machine.
Create the application directory on the deployment server
Create the /bin directory in the application's directory on the deployment server
Copy all the assemblies from your local /bin to the server's /bin (no need to copy xml and pdb files)
Copy the /Themes folder if you have custom themes or mixins
Copy the /Images folder if you have images that need to be served as URLs
Copy the /App_Data folder if your application uses it
Copy Web.config
Copy Default.html (and other html files you use sub-applications)
Copy Default.json (and other json configuration files if you use sub-applications)
Copy favicon.ico.
Notice that step 1 is different from IIS because Apache never loads the actual application, instead it acts as a Reverse Proxy dispatching requests to the web application listening on another internal port.
The actual Wisej application must be running and listening for requests in a separate process on the local machine or a remote machine. It can be either an IIS process or a Self Hosted process (may also run in a Docker container).
All Apache needs is an address and a port. In the httpd.conf file define the URL for your application and assign the URL:port of the actual Wisej application to the ProxyPass setting.
The configurations in this book are minimal examples, use the full Apache guide to determine how to configure your Apache server.
This is all you need for Apache to dispatch the requests to the Wisej.NET application.
Apache can also serve as a load balancer out of the box. Instead of setting the ProxyPass property to the actual Wisej server, assign it to a balancer group that defines the load balancing rotation.
Note that in the sample above we added a cookie ROUTEID with the name of the node to bind a specific server to a client in order to achieve the required sticky session functionality.
If you are deploying on a Linux distribution or on MacOS, make sure libgdiplus is installed.
(none) or -start
Starts the host process for the current Wisej application: where the process is located.
-stop
Stops the process for the current Wisej application
-p:{port} or -port:{port}
Changes the port. The default is 8080.
-d:{domain name} or -domain:{domain name}
Limits the domain: i.e. * = all, or localhost to accept local connections only. The default is *.
-i or -install
Installs Wisej.HostService as a Windows service for the current Wisej application.
-u or -uninstall
Uninstalls Wisej.HostService from the Windows services.
-n:{name} or -name:{name}
Changes the name of the service, otherwise Wisej sets the name to “Wisej.HostService: “ + {Name of Wisej Application Folder}
Troubleshoot license activation issues.
In some scenarios, the license can't be validated.
Network Connectivity: Ensure a stable internet connection.
License Limit: Verify the license hasn't exceeded its activation limit.
Incorrect License Key: Double-check the entered key for any typos.
Firewalls/Antivirus: These might block the activation process; consider temporary disablement.
Black-listed domain: Contact us for more information on what IPs and Domains to whitelist.
The "wisej-server.lic" file might become corrupted or be replaced by an outdated version on your server, causing the Invalid License popup to appear.
To mitigate this issue, we advise that you start by:
Deleting any old wisej-license.lic file.
Restarting the server.
Set the wisej-server.lic file to read-only.
How to configure Load Balancing with Wisej.
Wisej applications are standard web applications and work very well with load balancers. However, Wisej goes a step further and gives you additional features to manage the load across several servers.
You can configure each server running a Wisej application to accept a maximum number of sessions, or to be available for the load balancer only if the CPU load is below a certain percentage and/or the memory usage is below a certain level.
Wisej needs the requests from clients to always be routed to the same server instance. This is usually achieved by configuring your load balancer to either use Sticky Sessions, or another type of routing that guarantees that a specific server instance is assigned to a user.
Sticky Sessions is also called "Session Affinity".
There are several ways to configure the session affinity feature (sticky sessions):
Cookie generated by the load balancer
Cookie generate by the application and configure the load balancer to use that cookie
Client IP hash
Refer to your load balancer documentation to learn how to enable Session Affinity.
Wisej generates a unique client fingerprint id to recognize the same client that creates a session. However, when concatenating load balancers the server may receive the request from different IPs causing the fingerprint check to fail and the loss of the session. To solve this problem, add "validateClient": false.
Most load balancers don't enable WebSocket support by default. You have to locate in the documentation how to turn on WebSocket support.
Wisej works perfectly well in HTTP-only mode, it just loses the ability to push updated to the client without a request initiated by the browser.
See PollingInterval and Application.StartPolling to learn how to emulate push updated in HTTP-only mode.
This is a unique feature only available in Wisej. Through the healthcheck.json file and the HealthCheck.IsServerAvailable callback you can control when to take a specific server offline or return it to service.
Failover works by returning the 503 Server Unavailable status at the very first HTTP request for the application's HTML page (usually Default.html): the server has to "fail" at the very first request for the failover feature in the load balancer to kick in and resubmit the request to the next server in the rotation.
To implement this feature, Wisej processes the first HTTP request and, before dispatching the request to the application, checks in order:
Wisej.Core.HealthCheck.Enabled to verify that the healthcheck system is enabled.
The default in the built-in healthcheck.json file is false.
The return value from Wisej.Core.HealthCheck.IsServerAvailable() as returned by the custom function that you may have installed.
If HealthCheck.IsServerAvailable is null, it checks the MaxSessions, MaxMemory and MaxCPU values as configured in the application's HealthCheck.json or set by the code by assigning directly the values of the Wisej.Core.HealthCheck class.
If the final result is false, the server will return the error code configured in HealthCheck.ReturnCode (the default is 503 Server Unavailable).
Add a custom HealthCheck.json to your application using Add -> New Item -> Wisej 2 -> HealthCheck.
You can also create the file manually. The default file is created and initialized like this:
Values set in HealthCheck.json are also available, to read and to write, in the static class Wisej.Core.HealthCheck.
Please note that in Wisej 3 the property maxMemory will change to represent an absolute value in MB.
This is a placeholder for a custom function that you can install simply by assigning the property to a function. Usually the best place is Program.Main, but you can assign it or change it at any time.
Wisej will call this method before loading the application allowing your app to decide whether a particular server can take the incoming session.
Don't forget that most balancers don't support the failover feature. Refer to the load balancer's documentation.
Most load balancers use a "healthcheck" URL to probe whether a server is available in order to update their rotation list. Wisej provides a blank URL named healthcheck.wx that simply returns the 202 status.
When configuring your load balancer's healthcheck URL simply use your application's URL + "/healthcheck.wx".
Heathcheck.wx is the same URL used by the offline/online automatic detection in Wisej.
How to publish a Wisej app to an IIS Server.
Deploying a Wisej .NET Core application to IIS is exactly the same as deploying any ASP.NET Core application. However, it's a bit more complex than an ASP.NET application.
IIS Configuration
Basic Steps
Install IIS .NET Core Hosting Bundle for your deployment framework.
Create an application in IIS.
Uncomment and update the IIS entries in web.config.
Publish the application to a folder using the Visual Studio publishing tool.
Create a virtual application in IIS pointing to the published folder.
Create a new App Domain set to Unmanaged Code and assign it to the application.
Our templates have already added the commented out IIS configuration to the web.config file:
However, the web.config in the project has the processPath set to the debug output. When using the publishing tool, it changes the process path to ".\WisejWebPageApplication1.dll" or ".\WisejWebPageApplication1.exe" depending on the hosting model.
When running InProcess, IIS uses the AspNetCoreModuleV2 handler to load your ASP.NET Core app in the app domain's process and directly invokes the OWIN middleware.
When running OutOfProcess, IIS starts your ASP.NET Core application as a standalone executable and acts as a reverse proxy, just like NGINX and Apache.
Everything else in web.config is unchanged. You can set the debug mode, the license key and theme exactly like you did in Wisej 2.x.
Deploying a Wisej 2.x and 3.x .NET 4.8 application to IIS is exactly the same as deploying any ASP.NET application. It's just a matter of copying the right files and configuring IIS to recognize the application folder as a web application.
Create the /bin directory in the application's directory
Copy all the assemblies from your local /bin to the server's /bin (no need to copy xml and pdb files)
Copy the /Themes folder if you have custom themes or mixins
Copy the /Images folder if you have images that need to be served as URLs
Copy the /App_Data folder if your application uses it
Copy Web.config
Copy Default.html (and other html files you use sub-applications)
Copy Default.json (and other json configuration files if you use sub-applications)
Copy favicon.ico.
References:
If you are deploying a child IIS application, remember that IIS inherits the web.config from the parent application. When the parent application is also a Wisej application, you will get a server error because of duplicate settings in web.config.
There are two solutions:
Remove the duplicated setting in the child web.config
Add XML statements to remove the duplicated settings in the child web.config.
Names are case sensitive.
When deploying in production, we recommend to turn off the debug flag in web.config.
When debug mode is false all the .js and .css resources are minified and the debug console in the browser receives much less logging data then debug mode.
Copy your deployment Wisej Server key to web.config in the Wisej.LicenseKey setting. Make sure the server has internet connection in order to activate the license.
When you create a new application in IIS, it will be assigned to the DefaultAppPool which uses the ApplicationPoolIdentify as the user. This is fine in most deployments.
If you want to create a new Application Pool it's also fine. The only aspect of the application pool that affects Wisej is the user and the user's permissions: it must have Full Control on the system's Temp directory (which is usually located at C:\Windows\Temp).
Assigning Full Control for the system's Temp directory is required for the application to start; otherwise you will see the "Access Denied" exception on startup.
There are several settings on the Application Pool that you may also want to look at depending on your deployment requirements. Please refer to Microsoft's documentation for more information.
If you need additional professional support, please contact us.
IIS can also function as a simple load balancer when the AAR module is installed. Please refer to Microsoft's documentation to learn about this feature.
How to publish a Wisej App using NGINX as a reverse proxy.
Wisej.NET applications targeting .NET 6+ can follow Microsoft's instructions for deploying an ASP.NET Core application to Linux with NGINX.
Below you will find some useful information related to Wisej.NET-specific deployments.
After generating a build using the Visual Studio Publishing Tool, copy the executable, resource files, and referenced DLLs to the folder they will run in.
Test that the deployment works using the dotnet start AppName command.
If the application is deployed as an executable, ensure the executable has the execute permission and run sudo ./AppName.
3. After verifying the app runs, you will need to configure the app to run on startup. systemd can be used to create a service file to start and monitor the underlying web app.
systemd is an init system that provides many powerful features for starting, stopping, and managing processes on Linux systems. Click here to make a service file.
All NGINX needs is an address and a port. In the nginx.conf file define the URL for your application and assign the URL:port of the actual Wisej application to the proxy_pass setting.
The configuration in this book are minimal examples, use the full NGINX guide to determine how to be configure your NGINX server.
This is all you need for NGINX to dispatch the requests to the Wisej.NET application on .NET Core.
Deploying a Wisej application on NGINX is similar the the IIS deployment in regards to the files to copy to the production machine:
Create the application directory on the deployment server
Create the /bin directory in the application's directory on the deployment server
Copy all the assemblies from your local /bin to the server's /bin (no need to copy xml and pdb files)
Copy the /Themes folder if you have custom themes or mixins
Copy the /Images folder if you have images that need to be served as URLs
Copy the /App_Data folder if your application uses it
Copy Web.config
Copy Default.html (and other html files you use sub-applications)
Copy Default.json (and other json configuration files if you use sub-applications)
Copy favicon.ico.
Notice that step 1 is different from IIS because NGINX never loads the actual application, instead it acts as a Reverse Proxy dispatching requests to the web application listening on a another internal port.
The actual Wisej application must be running and listening for requests in a separate process on the local machine or a remote machine. It can be either another IIS process, or a Self Hosted process (may also run in a Docker container).
All NGINX needs is an address and a port. In the nginx.conf file define the URL for your application and assign the URL:port of the actual Wisej application to the proxy_pass setting.
The configuration in this book are minimal examples, use the full NGINX guide to determine how to be configure your NGINX server.
This is all you need for NGINX to dispatch the requests to the Wisej.NET application on .NET Framework.
NGINX can also serve as a load balancer out of the box. Instead of setting the proxy_pass property to the actual Wisej server, assign it to an upstream configuration group that defines the load balancing rotation.
Note that in the sample above we used "ip_hash" to bind a specific server to a client in order to achieve the required sicky session functionality. NGINX also supports "sticky" and other options.
Wisej.NET can be deployed in several ways, with or without a web server:
Internet Information Server (IIS) is the most common deployment target.
Cloud deployments, such as Amazon AWS, Microsoft Azure, …
Most modern ASP.NET Provider.
Desktop Application through the Standalone deployment.
Local service or process through the Self Hosting deployment.
Containerized deployment using Docker or any other Windows container technology.
Version 2.x of Wisej.NET can only be deployed on Windows machines. Linux is supported starting from version 3.0.
Usually, the deployment is just a matter of copying the correct files to the target machine and configure the web server to recognize the deployed folder as an application.
We cover each scenario in this document, the most common are:
How to publish a Wisej app to a commercial ASP.NET provider.
Commercial ASP.NET hosting providers are virtually all using IIS and a web administration tool like cPanel or Plesk. The deployment process is identical to a standard IIS deployment.
Locate the httpdocs or equivalent directory using the control panel, the follow the basic steps below:
Create the application directory
Create the /bin directory in the application's directory
Copy all the assemblies from your local /bin to the server's /bin (no need to copy xml and pdb files)
Copy the /Themes folder if you have custom themes or mixins
Copy the /Images folder if you have images that need to be served as URLs
Copy the /App_Data folder if your application uses it
Copy Web.config
Copy Default.html (and other html files you use sub-applications)
Copy Default.json (and other json configuration files if you use sub-applications)
Copy favicon.ico.
If the hosting provider supports IIS Publishing, you may use Visual Studio to publish the web site directly to the hosting provider's system.
Wisej, like most ASP.NET applications, needs to run in Full Trust mode and needs write permissions to the system's /temp directory. When using the web hosting control panel, locate the ASP.NET Settings section and set the CAS trust level to Full.
We tried over a dozen commercial ASP.NET providers with Wisej applications without any major issue.
When deploying using .NET Core on a Linux distribution, or on MacOS, you have to make sure that libgdiplus is installed.
There are several ways to install libgdiplus depending on the distribution. If using apt-get, this is the preferred installation script:
We also recommend the installation of Microsoft's fonts:
In case the scripts fail, please search online on how to install libgdiplus and microsoft fonts on Linux or MacOS, and contact our support if you have a different solution.
You will need to manually add the Web.Config file to the publish directory. In Linux builds, the purpose of the Web.Config file is to provide the server key and the initial theme.
In recent version of RHEL based Linux distributions, (e.g. CentOS), the SHA1 encryption scheme was deprecated, and that could lead to issues with activating the server license.
To fix this issue, you'll need to run the following command update-crypto-policies --set LEGACY.
Note: The Linux distribution used in this tutorial video is Ubuntu 22.04.2 LTS. You can get information about which Linux distribution you are using by running the command lsb_release -a
How to publish a Wisej app on the Amazon AWS cloud.
Amazon AWS doesn't provide an IIS service. The only way to deploy an ASP.NET or a Wisej application is to create an instance of a Windows Server machine, enabled IIS and follow the IIS deployment guide or the Visual Studio Publishing guide.
AWS also provides its own load balancing service. Wisej is fully compatible with Amazon's Elastic Load Balancing (including WebSocket support).
You can also try using the AWS toolkit to deploy to AWS directly from Visual Studio:
We have not tested this option. Please follow Amazon's documentation and report any issue directly to AWS support.
How to publish a Wisej app to the Microsoft Azure cloud.
Microsoft Azure supports different deployment types for Wisej (ASP.NET) applications. You can deploy to a Web Site (renamed to Web Service), to an IIS instance or a to a Virtual Machine with IIS.
In all cases you can publish directly from Visual Studio. Please refer to the Visual Studio Publishing guide and to Microsoft's Azure Deployment documentation for ASP.NET.
.NET Framework v4.x
.NET 6+
You cannot publish .NET Framework v4.x projects to Azure using the Visual Studio Publishing Tool with the new SDK-Project format.
The application was published successfully but shows an error 'Couldn't find Wisej.Framework' on startup.
Remove <add name="Wisej" type="Wisej.Core.HttpModule, Wisej.Framework" />
from <modules>
in web.config.
Make sure <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
is uncommented under <handlers> in web.config.
How to run a Wisej app as a standalone desktop executable.
Currently we don't have the Wisej.Application.exe built for .NET Core. If you need it contact sales@wisej.com or use Electron.
If you are deploying on a Linux distribution or on MacOS, make sure libgdiplus is installed.
Wisej also supports a local desktop deployment (we call it Standalone deployment) as a local executable. It's very similar to the Electron system, except that we provide the shell for Internet Explorer, Chromium, Firefox and Edge.
You can find the project source on GitHub. After downloading the extensions source code, you can compile the HostService projects. In the /bin directory you will find 4 directories (one for each browser) containing a single executable Wisej.Application.exe.
All you need to do to deploy your Wisej app as a local app, is to copy the version of Wisej.Application.exe that you want to use along with the deployment files. The executable must be placed in the root folder, at the same level as /bin (not inside /bin).
To determine which files to copy to the deployment folder, please follow the IIS deployment list.
When your Wisej application is deployed as a Standalone executable running as a desktop application, your "server side" code in .NET is running together with with the "client side" browser. This configuration gives your .NET code full access to the user's machine.
You can:
Read/write the user's registry
Read/write the entire file system
Connect to a local or remote database
Show native windows and controls
Launch and control Word or any other local application
It is basically a local application running in the browser.
Desktop applications can be redistributed without using a server license. Technology partners can request a free Desktop License by contacting sales@wisej.com.
Add <add key="Wisej.DesktopMode" value="true"/> to web.config. Otherwise Wisej.NET will look for a server licenses instead of the free desktop license.
You can customize the final executable in several ways:
Each of the standalone applications is a simple WinForms project with a form and a web browser control. You can personalize it freely: i.e. add a toolbar, status bar, icon, etc.
Change the initial splash loader simply by placing either a splash.png, splash.gif or splash.jpg file in the root project folder.
Change the application's icon.
Uses the Internet Explorer component that is already preinstalled with Windows. This is the smallest executable of all at roughly 500KB.
Uses CefSharp integrated in a WinForms application frame. The final executable is roughly 130MB since we embed the full Chromium system in the executable.
You can update the CefSharp version simply by copying the newer files over the same files included in our GitHub repository.
Uses GeckoFx integrated in a WinForms application frame. The final executable is roughly 102MB since we embed the full Firefox system in the executable.
You can update the GeckoFx version simply by copying the newer files over the same files included in our GitHub repository.
Uses the latest WebView2 control from Microsoft integrated integrated in a WinForms frame. The final executable is approximately 850KB but it doesn't include the WebView2 SDK deployment.
You can update the WebView2 controls simply by copying the newer files over the same files included in our GitHub repository. However, the WebView2 SDK needs to be downloaded and updated independently.
Sometimes you may need to debug an application in production. Which means you have to debug the server, somehow.
The best way is to install Visual Studio on the server and attach to the web server process (for IIS) or to the application's process when deployed as a standalone app.
Visual Studio supports remote debugging, allowing you to connect to the production machine with Visual Studio running on your development machine.
Please note that some Azure deployments support Visual Studio remote debugging natively, you just and to enable it.
How to publish a Wisej application using Visual Studio Publishing.
Deploying a Wisej application can be simplified using Visual Studio Publishing. Using this approach you can deploy directly to Azure, IIS, or a directory on the file system.
Publishing to Azure streamlines the deployment of a Wisej application to an Azure App Service Instance with minimal effort. Publishing to Azure copies all the files required for deployment to the app service.
In Solution Explorer, right-click the project node and choose Publish (or use the Build > Publish menu item).
If you have previously configured any publishing profiles, the Publish window appears. Select New.
In the Publish window, select Azure.
Select Azure App Service (Windows) and Next.
Sign in with your Azure account, if necessary. Select Create a new Azure App Service...
In the Create Azure App Service (Windows) dialog, the App Name, Resource Group, and App Service Plan entry fields are populated. You can keep these names or change them. When ready, select Create.
In the Publish dialog, the newly created instance has been automatically selected. When ready, select Finish.
Select Publish. Visual Studio deploys the app to your Azure App Service, and the web app loads in your browser. The project properties Publish pane shows the site URL and other details.
Find more information and screenshots on MSDN.
Information about the deployment can be found in the Web Publish Activity window in Visual Studio.
The Azure Cloud Explorer window has been retired for Visual Studio 2022.
Click here to learn about alternatives for managing deployed Azure Resources.
Web Server Publishing allows a Wisej application to be rapidly distributed to a local or external IIS server.
In Solution Explorer, right-click the project and choose Publish (or use the Build > Publish menu item).
If you have previously configured any publishing profiles, the Publish pane appears. Select New.
In the Publish window, choose Web Server (IIS).
Choose Web Deploy as the deployment method. Web Deploy simplifies deployment of Web applications and Web sites to IIS servers, and must be installed as an application on the server. Use the Web platform installer to install it.
Configure the required settings for the publish method and select Finish.
To publish, select Publish in the summary page. The Output window shows deployment progress and results.
Find more information and screenshots on MSDN.
If additional configuration is needed for IIS publishing, considering setting up Publish Settings.
Publishing to a Folder using Visual Studio exports the files needed to deploy the Wisej application to a folder on the file system. This can be used when preparing the distribution for another platform.
In Solution Explorer, right-click the project and choose Publish (or use the Build > Publish menu item).
If you have previously configured any publishing profiles, the Publish window appears. Select New.
In the Publish window, select Folder.
Enter a path or select Browse to specify a folder.
Click Finish.
Select Publish. Visual Studio builds the project and publishes it to the specified folder.
To configure deployment settings, select Edit in the publish profile summary and select the Settings tab.
The settings you see depend on your application type.
Configure options such as whether to deploy a Debug or Release configuration, and then select Save.
To republish, select Publish.
Find more information and screenshots on MSDN.
Deploying to IIS? Click here to learn more about Wisej IIS setup.
Visual Studio Publishing does not work with SDK-Style projects targeting .NET Framework
If you are deploying on a Linux distribution or on MacOS, make sure libgdiplus is installed.