

# Modernizing .NET in the IDE
<a name="dotnet-ide"></a>

AWS Transform for .NET is a new generative AI-powered agent designed to modernize legacy .NET applications. For more information, see Modernizing .NET with AWS Transform. You can modernize your legacy .NET code by using the AWS Transform web application or the Visual Studio AWS Toolkit extension. Use AWS Transform in integrated development environments (IDEs) to get assistance with your software development needs. In IDEs, AWS Transform includes capabilities to provide guidance and support across various aspects of .NET code modernization.

To transform a .NET solution or project, the AWS Transform agent analyzes your codebase, determines the necessary updates to port your application, and generates a transformation plan before the transformation begins. During this analysis, the AWS Transform agent divides your .NET solution or project into code groups that you can view in the transformation plan. A code group is a project and all its dependencies that together generate a buildable unit of code such as a dynamic link library (DLL) or an executable.

During the transformation, the AWS Transform agent provides step-by-step updates in the AWS **Transformation Hub** window where you can monitor progress. After transforming your application, AWS Transform generates a summary with the proposed changes in a diff view for you to optionally verify the changes before you accept them. When you accept the changes, AWS Transform makes in-place updates to your .NET solution or project.

AWS Transform performs four keys tasks to port .NET applications to Linux:
+ Upgrades language version – Replaces outdated C\$1 versions of code with Linux-compatible C\$1 versions.
+ Migrates from .NET Framework to cross-platform .NET – Migrates projects and packages from Windows dependent .NET Framework to cross-platform .NET compatible with Linux.
+ Rewrites code for Linux compatibility – Refactors and rewrites deprecated and inefficient code components.
+ Generates a Linux compatibility readiness report – For open-ended tasks where user intervention is needed to make the code build and run on Linux, AWS Transform provides a detailed report of actions needed to configure your application after transformation.

For more information about how AWS Transform performs .NET transformations, see [How AWS Transform modernizes .NET applications](dotnet-ide-how.md).

**Quotas**  
For AWS Transform .NET transformation quotas in the IDE, see [Quotas for AWS Transform](transform-limits.md).

To modernize your .NET code using the AWS Transform, part of the Visual Studio AWS Toolkit extension, see the following: 
+ [Modernizing .NET using AWS Transform in Visual Studio](dotnet-ide-vs.md)
+ [How AWS Transform modernizes .NET applications](dotnet-ide-how.md)
+ [Troubleshooting issues with .NET transformations in the IDE](dotnet-ide-troubleshoot.md)

# Modernizing .NET using AWS Transform in Visual Studio
<a name="dotnet-ide-vs"></a>

Complete these steps to port a Windows-based .NET application to a Linux-compatible cross-platform .NET application with AWS Transform in Visual Studio 2026 or 2022. 

## Step 1: Prerequisites
<a name="transform-dotnet-prerequisites"></a>

Before you continue, make sure you've downloaded and installed the [AWS Toolkit extension with Amazon Q](https://marketplace.visualstudio.com/items?itemName=AmazonWebServices.AWSToolkitforVisualStudio2022) from the Visual Studio Marketplace. Review the AWS Transform [capabilities](https://docs.aws.amazon.com/transform/latest/userguide/dotnet.html#capabilities) and [limitations](https://docs.aws.amazon.com/transform/latest/userguide/dotnet.html#limitations) for .NET modernization to confirm that your code can be transformed. 

## Step 2: Authenticate in Visual Studio
<a name="transform-dotnet-vs-authenticate"></a>

To connect to your AWS accounts from the Toolkit for Visual Studio, open the Getting Started with the AWS Toolkit User Interface (connection UI): 

1. From the Visual Studio main menu, navigate to **Extensions > AWS Toolkit > Getting Started** to open the **Getting Started: AWS Toolkit page**.

1. Select either **AWS Transform** or **Amazon Q Developer **authentication.

1. Choose an existing profile or create a new one. When creating a new profile, enter a name for the profile and your AWS Transform start URL, which was emailed to you after you were added to IAM Identity Center by your administrator.

1. Choose **Connect**. Follow the prompts to sign in and grant access permissions through your web browser. In Visual Studio, you should see **Connected with IAM Identity Center**.

## Step 3: Transform your application
<a name="transform-dotnet-app"></a>

To transform your .NET solution or project, complete the following procedure:

1. Open any C\$1 based solution or project in Visual Studio that you want to transform. 

1. Open any C\$1 code file in the editor. 

1. Choose **Solution Explorer**.

1. From the **Solution Explorer**, right click a solution or project you want to transform, and then choose to port or transform the solution or project with AWS Transform.

1. The AWS Transform window appears. 

   The solution or project you selected will be chosen in the **Choose a solution or project to transform** dropdown menu. You can expand the menu to choose a different solution or project to transform. 

1. In the **Choose a workspace** dialog, create a workspace or select an existing one. Workspaces make your activity visible in the AWS Transform web application, where you can invite collaborators to view and chat about transformation jobs.

1. In the **Choose a .NET target** dropdown menu, choose the .NET version you want to upgrade to.

1. You can update the Default Settings, or leave them as-is. These include: 
   + Exclude .NET Standard projects from the transformation plan

     This setting is selected by default. When selected, AWS Transform excludes any .NET Standard projects from the transformation plan. If you deselect this setting, .NET Standard projects will be transformed, which will make them no longer compatible with the .NET Framework. 
   + Check the NuGet sources and get .NET compatible package versions

     Allow AWS Transform to search for and get .NET compatible package versions for the code that you would like to transform. 

1. Choose **Start** to begin the transformation.

1.  Wait while AWS Transform analyzes your code and generates an assessment report and a code transformation plan.

    You will be prompted with **View Transformation Plan?** **Choose Edit Plan** to review or edit the transformation plan, or **Start transformation** to transform with the existing plan.

1. If you choose to edit the plan, a *transformation-plan.md* markdown file will open in the code editor. The transformation plan describes the objective and details of the transformation in a series of steps. Refer to the instruction comments at the end if the plan. You can modify this plan in the following ways: 
   + **Transformation steps and substeps**: change, add, or remove steps and substeps to control structural transformation and package update details
   + **Preview Project Transformation**: Add experimental transformation of WinForms desktop projects, WPF projects, Xamarin projects, or projects written in VB.NET
**Note**  
Other project transformations are a preview feature, available only in the US East (N. Virginia) Region.
   + **Customization section**: add customization instructions, such as dependency injection instructions or coding pattern examples.
**Note**  
Coding pattern examples are a preview feature, available only in the US East (N. Virginia) Region.

   After saving any plan changes, choose **Start Transformation** to start the transformation.

1. AWS Transform begins transforming your code.

   An **AWS Transformation Hub** opens where you can monitor progress for the duration of the transformation. Here you can see estimated time remaining, a Job ID you can copy to the clipboard, and transformation steps. Choose a step to see the worklog for that step, which explains the current transformation activity.

   Once AWS Transform has started the **Transforming code** step you can navigate away from the project or solution for the duration of the transformation.

1. After the transformation is complete, navigate to the **Transformation Hub** and choose **View diffs** to review the proposed changes in a diff view. To update your files in place, choose **Accept changes** from the Actions dropdown menu. 

1. Choose **View code transformation summary** for a summary of the changes AWS Transform made. For details about transformation, including changes made, the reason for changes, and actionable error details, you can download a transformation detail report by choosing **Download transformation report**. Refer to [Transformation Reports](https://docs.aws.amazon.com/transform/latest/userguide/tdotnet-reports.html) for more information. The transformation detail report includes a Linux readiness report section that identifies compatibility issues in moving from Windows to Linux that require human attention.

   If any of the items in the **Code groups** table require input under the Linux porting status, you must manually update some files to run your application on Linux. The transformation detail report includes a Linux readiness report section that identifies compatibility issues in moving from Windows to Linux that require human attention.

1. AWS Transform generates a *NextSteps.md *file, which describes any remaining porting work needed. To download the report, choose the **Download next steps** button at the top of the transformation detail report. You can use the NextSteps.md file to transform the project again with AWS Transform and a revised plan, or use it as input to an AI code companion.

1. To update your files in place, choose **Accept changes** from the **Actions** dropdown menu. 

# How AWS Transform modernizes .NET applications
<a name="dotnet-ide-how"></a>

Review the following sections for details about how .NET transformation with AWS Transform works. 

## Analyzing your application and generating a transformation plan
<a name="analyzing-app-generating-plan"></a>

Before a transformation begins, AWS Transform builds your code locally to verify that it is buildable and configured correctly for transformation. If the code does not build, AWS Transform will prompt whether to continue with transformation. AWS Transform then uploads your code to a secure and encrypted build environment on AWS, analyzes your codebase, and determines the necessary updates to port your application 

During this analysis, AWS Transform divides your .NET solution or project into code groups. A code group is a project and all its dependencies that together generate a buildable unit of code such as a dynamic link library (DLL) or an executable. Even if you didn't select all project dependencies to be transformed, AWS Transform determines the dependencies needed to build your selected projects and transforms them too, so that your transformed application will be buildable and ready for use.

After analyzing your code, AWS Transform generates a transformation plan that outlines the proposed changes that it will make, including a list of code groups and their dependencies that will be transformed. 

## Transforming your application
<a name="transforming-app"></a>

To start the transformation, AWS Transform builds your code again in the secure build environment to verify if it is buildable remotely. AWS Transform then begins porting your application. It works from the bottom up, starting with the lowest level dependency. If AWS Transform runs into an issue with porting a dependency, it stops the transformation and provides information about what caused the error. 

The transformation includes the following updates to your application: 
+ Replacing outdated C\$1 versions of code with Linux-compatible C\$1 versions
+ Upgrading .NET Framework to cross-platform .NET, including: 
  + Identifying and iteratively replacing packages, libraries, and APIs
  + Upgrading and replacing NuGet packages and APIs
  + Transitioning to cross-platform runtime
  + Setting up middleware and updating runtime configurations
  + Replacing private or third-party packages 
  + Handling IIS and WCF components 
  + Debugging build errors
+ Rewriting code for Linux compatibility, including refactoring and rewriting deprecated and inefficient code to port existing code 

## Reviewing transformation report and accepting changes
<a name="reviewing-summary-accepting-changes"></a>

After the transformation is complete, AWS Transform provides a transformation report with information about the proposed updates it made to your application, including the number of files changed, packages updated, and APIs changed. It flags any unsuccessful transformations, including affected files or portions of files and the errors encountered during an attempted build. You can also view a build summary with build logs to learn more about what changes were made. 

The transformation report also provides a Linux porting status, which indicates whether or not additional user input is needed to make the application Linux compatible. If any of the items in a code group require input from you, you download a Linux readiness report that contains Windows-specific considerations that AWS Transform could not address at build time. If input is needed for any code groups or files, review the report for details about what type of change still needs to be made and, if applicable, for recommendations for how to update your code. These changes must be made manually before your application can be run on Linux. 

You can review the proposed changes AWS Transform made in a diff view before accepting them as in-place updates to your files. After updating your files and addressing any items in the Linux readiness report, your application is ready to run on cross-platform .NET.

You can download a *Next Steps* markdown file with prompts for continued transformation with AWS Transform or an AI code companion. To download the file, choose the **Download Next Steps** button at the top right of the report.

# Troubleshooting issues with .NET transformations in the IDE
<a name="dotnet-ide-troubleshoot"></a>

Use the following sections to troubleshoot common issues with .NET transformations in the IDE with AWS Transform.

## How do I know if a job is progressing?
<a name="job-progressing"></a>

If AWS Transform appears to be spending a long time on a step in the **AWS Transformation Hub**, you can check whether the job is still active in the output logs. If diagnostic messages are being generated, the job is still active. 

To check the outputs, choose the **Output** tab in Visual Studio. In the **Show output from:** menu, choose **Amazon Q Language Client**.

The following screenshot shows an example of the outputs AWS Transform generates during a transformation.

![\[Screen shot of the AWS Transform Code Transformation Hub, showing the output from the Amazon Q Language Client.\]](http://docs.aws.amazon.com/transform/latest/userguide/images/code-transform-troubleshoot4.png)


## Why are some projects not selected for transformation?
<a name="projects-not-selected"></a>

AWS Transform can only transform supported .NET project types. For a list of supported project types and other prerequisites for transforming your .NET projects, see [Step 1: Prerequisites](dotnet-ide-vs.md#transform-dotnet-prerequisites).

## How can I get support if my project or solution isn't transforming?
<a name="get-support"></a>

If you aren't able to troubleshoot issues on your own, you can reach out to Support or your AWS account team to submit a support case. 

To get support, provide the transformation job ID so AWS can investigate a failed job. To find a transformation job ID, choose the **Output** tab in Visual Studio. In the **Show output from:** menu, choose **Amazon Q Language Client**.

## How can I prevent my firewall from interfering with transformation jobs?
<a name="firewall-inteference"></a>

If your organization uses a firewall, it might interfere with transformations in Visual Studio. You can temporarily disable security checks in Node.js to troubleshoot or test what is preventing the transformation from running. 

The environment variable `NODE_TLS_REJECT_UNAUTHORIZED` controls important security checks. Setting `NODE_TLS_REJECT_UNAUTHORIZED` to "0" disables Node.js's rejection of unauthorized TLS/SSL certificates. This means:
+ Self-signed certificates will be accepted
+ Expired certificates will be allowed
+ Certificates with mismatched hostnames will be permitted
+ Any other certificate validation errors will be ignored

If your proxy uses a self-certificate, you can set the following environment variables instead of disabling `NODE_TLS_REJECT_UNAUTHORIZED`:

```
NODE_OPTIONS = —use-openssl-ca
NODE_EXTRA_CA_CERTS = Path/To/Corporate/Certs
```

Otherwise, you must specify the CA certs used by the proxy to disable `NODE_TLS_REJECT_UNAUTHORIZED`.

**To disbale NODE\$1TLS\$1REJECT\$1UNAUTHORIZED on Windows:**

1. Open the Start menu and search for **Environment Variables**.

1. Choose **Edit the system environment variables**.

1. In the **System Properties** window, choose **Environment Variables**.

1. Under **System variables**, choose **New**.

1. Set **Variable name** to NODE\$1TLS\$1REJECT\$1UNAUTHORIZED and **Variable value** to 0.

1. Choose **OK** to save the changes.

1. Restart Visual Studio.