I created a webpart and workflow farm solution in visual studio in SharePoint 2013 for my company's intranet many years ago. A while back, my company upgraded to SharePoint 2016. I'm trying to migrate the 2013 farm solution to SharePoint 2016. I opened SharePoint 2013 project file in Visual Studio 2019 and migrated it to 2016 and then tried installing it on the SharePoint 2016 farm.
All looks good; however, when trying to get to the workflow association form, I get a correlation ID Error which complains about not finding the form in the virtual path. I manually checked and the files are located C:\Program Files\Common Files\microsoft shared\Web Server Extensions\16\TEMPLATE\_LAYOUTS\myProject\myWorkflow\coder\WorkflowAssociationForm1.aspx.
Any ideas how I can get my new SharePoint 2016 farm to find the form files in the /_LAYOUTS/ directory?
Steps:
- Open SharePoint 2013 project in Visual Studio 2019
- Solutions will state it needs to be migration
- Click Reload Project with Dependencies for the Workflow and WebPart
- Click ok to the One-Way Upgrade
- Once done, Build the solution, all builds with no errors
- Publish a new .wsp file
- Upload the .wsp to the server
- Deploy it via Install-SPSolution -Identity mySolution.wsp -GACDeployment -WebApplication WebAppUrl
- All installs and deploys fine without errors
- Open work flow association form and get correlation error
Application error when access /_LAYOUTS/myProject/myWorkflow/coder/WorkflowAssociationForm1.aspx, Error=The file '/_LAYOUTS/myProject/myWorkflow/coder/WorkflowAssociationForm1.aspx' does not exist. at System.Web.UI.Util.CheckVirtualFileExists(VirtualPath virtualPath) at System.Web.Compilation.BuildManager.GetVPathBuildResultInternal(VirtualPath virtualPath, Boolean noBuild, Boolean allowCrossApp, Boolean allowBuildInPrecompile, Boolean throwIfNotFound, Boolean ensureIsUpToDate) at System.Web.Compilation.BuildManager.GetVPathBuildResultWithNoAssert(HttpContext context, VirtualPath virtualPath, Boolean noBuild, Boolean allowCrossApp, Boolean allowBuildInPrecompile, Boolean throwIfNotFound, Boolean ensureIsUpToDate)