Skip to main content

Why do templates (.cshtml) get overwritten on Umbraco Cloud, and how can this be resolved?

Joana Knobbe avatar
Written by Joana Knobbe
Updated yesterday

Why Do Templates (.cshtml) Get Overwritten on Umbraco Cloud, and How Can This be Resolved?

On Umbraco Cloud, template management and its interaction with the Umbraco Deploy process can sometimes cause unexpected issues, such as .cshtml template files being cleared or their Master references removed. This article delves into the root cause of this issue and provides a step-by-step guide to resolve it, ensuring template integrity in your projects.

Understanding the Issue

This problem arises when templates are managed in a mixed state—both as file-based templates (stored locally as .cshtml files) and as Deploy-managed artifacts (.uda files). On the Cloud platform, the Deploy process treats templates as managed artifacts and expects the .uda files to be the source of truth. If the .uda file for a template does not contain Razor markup or has an invalid Master reference:

  • Deploy removes the Master reference from the .uda file.

  • Deploy overwrites the corresponding .cshtml template file with an empty file.

This explains why you may notice such changes in the Cloud environment, as Deploy runs there, rather than on your local machine:

  • The commits come from Umbraco Cloud

  • You only see this behavior on Cloud, not locally

  • The Razor compile flags in the .csproj do not prevent it

Resolving the Issue: Choose between Fully File-Based Template Management or Deploy-managed artifacts

Fully File-Based Template Management

To prevent Deploy from overwriting your .cshtml template files, you need to ensure that templates are managed solely as file-based assets. Follow these steps to resolve the issue:

  1. Restore Your .cshtml Files: If your .cshtml files have been cleared, restore them from a Git repository or a backup.

  2. Remove Deploy-Managed Artifacts: Delete the corresponding .uda files (e.g., template_*.uda) for the templates in question. This action stops Deploy from managing templates as artifacts.

  3. Commit and Push Template Files: Commit and push your restored or updated .cshtml files to your Git repository. This ensures the templates are treated as part of your codebase and will deploy like regular code.

These changes stop Deploy from normalizing templates based on .uda files, thereby maintaining the integrity of your .cshtml files.

Deploy-managed artifacts

You can find information on Deployment here

Additional Considerations

  • Always maintain backups of your .cshtml files to ensure you can restore them in case of unexpected changes.

  • Avoid mixing template management modes (file-based and Deploy-managed artifacts) to prevent similar conflicts in the future.

  • Review the Umbraco documentation for best practices on template management in Cloud environments.

By following these guidelines, you can ensure a smooth and predictable development experience when using Umbraco Cloud.

Did this answer your question?