XCopy Deploy

  • 10/11/2019 4:05:11 PM

  • About 2 minutes to read

An XCopy deployment refers to manually copying the Plato files into your configured IIS site or copying the files via FTP or other means to your production web server.

IMPORTANT: You cannot simply XCopy deploy the Plato source code to production and expect this to work. You must first publish the source code using web deploy or dotnet publish and XCopy deploy the published folder to your production servers.

A published folder for Plato looks very different from the regular source code folder. You can see an example of a folder containing a published version of Plato below...


Note the following key differences between the Plato source code folder and a published version of Plato...

  • New "refs" folder - Contains all NuGet package dependencies required by Plato
  • New "runtimes" folder - Contains the various .NET Core run times for various platforms. This is only required for self-contained deployments of Plato. By default Plato is not distributed as a self-contained application and as such in most cases the runtimes folder can be safely deleted or ignored when deploying to production.
  • web.config transformations - When you publish Plato the web.config file is transformed to ensure the launcher process for Plato is set to dotnet.exe and Plato.dll is loaded into dotnet.exe to begin the bootstrapping process. See web.config transformations below.
  • Assemblies - Notice all .NET Core assemblies that previously existed within the src\Plato\bin directory are copied into the root of the Publish folder. There is no \bin folder in the published folder.

XCopy Deploy

Copy the contents of the publish folder to your IIS web site folder or point your IIS web site to the publish folder. You can see an example of this below...


To test the changes please right click your web site within IIS and go to Manage Website and then Browse to launch your IIS site within your default web browser. If everything was successful you should be presented with the web based set-up or your homepage.

Web.Config Transformations

During publishing the web.config file for the published site is transformed to ensure dotnet.exe can load Plato.dll and begin the bootstrapping process. You can see how the transformed web.config looks below. Notice the processPath and arguments attributes are very different from the development web.config file.

<?xml version="1.0" encoding="utf-8"?>
      <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
    <aspNetCore stdoutLogEnabled="false" hostingModel="InProcess" processPath="dotnet" arguments=".\Plato.dll" stdoutLogFile=".\logs\stdout">
        <environmentVariable name="ASPNETCORE_ENVIRONMENT" value="Production" />
        <environmentVariable name="COMPLUS_ForceENC" value="1" />
Can we improve this doc? Login or register to tell us how
Your Feedback
In this doc