Q: What is Porting Assistant for .NET?
Porting Assistant for .NET is a compatibility analysis tool that finds package dependencies in .NET Framework applications, and generates an assessment report including incompatible .NET Core APIs and NuGet packages with replacement suggestions. Porting Assistant for .NETs’ suggestion engine improves over time as it learns patterns based on usage and frequencies of missing packages and APIs. The detailed compatibility assessment enables organizations to prioritize portable applications based on the complexity and effort involved in the process.
Q: What .NET versions are supported by Porting Assistant for .NET?
Porting Assistant for .NET supports .NET Core 3.1 as a target, and .NET Framework 3.5+ as source. The support for .NET 5 as the target will be available later this year.
Q: What kind of .NET applications are supported by Porting Assistant for .NET?
Porting Assistant for .NET currently supports Windows services and ASP.NET applications.
Q: What are the prerequisites for using Porting Assistant for .NET?
Porting Assistant for .NET tool can be installed on a VM or workstation running Windows 10 and Windows Server 2016 and above. It requires .NET Core 3.1 and AWS CLI to be already installed. In addition, any .NET Framework version currently in use by your application should also be pre-installed.
Q: What artifacts are generated by Porting Assistant for .NET?
Porting Assistant for .NET generates the following artifacts for each .NET application it analyzes:
Compatibility Assessment: 1) portability score; 2) compatibility status of NuGet packages; 3) incompatible APIs and their source packages; 4) replacements suggestions for the incompatible packages and APIs, where available; 5) Project dependency graph.
Assisted Porting: 1) A cloned project with .NET Core compatible packages and package reference files
Q: How does .NET Core compatibility assessment work?
Porting Assistant for .NET analyzes source code and both public and private NuGet package dependencies of your .NET application. It identifies incompatible API calls being made from each NuGet packages and checks whether NuGet package is compatible or incompatible to .NET Core. Based on the compatibility information of NuGet packages and .NET APIs, Porting Assistant for .NET designates a compatibility score which is an estimation of how much effort the application might require to port to .NET Core. The compatibility score is simply a ratio of compatible and incompatible APIs and can be used to identify and prioritize applications for your porting effort. Note that the compatibility score is just an estimation based on the compatibility information. The actual porting effort may vary.
Q: How does assisted porting work?
Once you have selected the application for porting, Porting Assistant for .NET can help jumpstart the process by setting up the project file with updated NuGet and formatted package references in .NET Core compatible format. You can use the updated project file to start refactoring your application.
Q: Can I export the assessment reports produced by Porting Assistant for .NET?
Yes, you have the ability to download the assessment report produced by Porting Assistant for .NET. This report can be shared with other developers or decision makers in your organization for offline viewing and analysis.
Q: Can I use Porting Assistant for .NET from IDE?
The current version of Porting Assistant for .NET is only available as a standalone tool.
Q: What type of telemetry information does Porting Assistant for .NET collect?
As you scan your source code, Porting Assistant for .NET collects the compatibility information on the public NuGet packages and the APIs within those packages that are in use by your application. Porting Assistant for .NET doesn’t collect source code or information on your private NuGet packages. Additionally, in the case of any failures, the tool may collect stack traces to improve product experience. You have the option to disable the telemetry gathering at the setup time or at any later time.
Q: How does Porting Assistant for .NET uses the collected information?
Porting Assistant for .NET leverages the information on the public NuGet packages and APIs to continuously improve its API replacement suggestions. Porting Assistant for .NET periodically analyzes the collected information and updates its replacement engine, so that the next user of the tool gets more complete and richer information.
Q: How do I get help if I have questions during the porting process?
If during the refactoring process, you have questions regarding the Porting Assistant for .NET tool or a particular missing package or API, you can reach out to AWS Developer Forum for .NET for help from the Porting Assistant for .NET service team and community members.
Q: Is Porting Assistant for .NET an open source project?
Porting Assistant for .NET is currently only offered as AWS-provided builds, but our plan is to open source the project over time so that developers, partners, and other interested parties can contribute their changes. As a starting point, we have published the dataset that Porting Assistant for .NET uses to analyze applications and make recommendations. The dataset includes the data that AWS has curated as well as the data used from other public sources such as .NET Portability Analyzer tool. The dataset can be found at our GitHub repository.