I just upgraded one of my plugins and here are the bulk of the steps I followed:
1. Install the .NET upgrade assistant as a Visual Studio extension: https://learn.microsoft.com/en-us/dotnet/core/porting/upgrade-assistant-install#install-the-visual-s...
2. Open my .sln, right-click the sln in the solution explorer, choose 'Upgrade'
3. Follow the steps in the upgrade wizard ("Upgrade project to a newer .net version" --> "Side by side project upgrade" --> "New project" --> name it something like "{projectname}-netCore" or whatever)
4. Close the sln, then open the new .csproj it created in any text editor and make the following edits:
5. Remove this line: <GenerateAssemblyInfo>false</GenerateAssemblyInfo>
6. Added these 3 lines to the first PropertyGroup:
<AssemblyName>PUT_PROJECT_NAME_HERE</AssemblyName>
<RootNamespace>PUT_PROJECT_NAME_HERE</RootNamespace>
<NoWarn>CA1416;</NoWarn>
You probably don't need to do this but I wanted to keep my .dlls named the same for consistency with my pre-2025 plugins
7. If your project has a post-build command, you'll need to switch it over to the new format. It'll look something like this:
<Target Name="PostBuild" AfterTargets="PostBuildEvent">
<Exec Command='
PUT COMMAND HERE
' />
</Target>
Rather than:
<PropertyGroup>
<PostBuildEvent>PUT COMMAND HERE</PostBuildEvent>
</PropertyGroup>
Obviously this also applies to pre-build events. Don't ask me why the .net upgrade assistant didn't handle this for you.
8. If your build configurations have spaces in their names, switch them to underscores because apparently newer .nets have problems with spaces. EX: "Debug 2025" --> "Debug_2025"
9. Open the .sln
10. In the Solution Explorer, right-click the Properties folder for the new netCore project --> Add new item --> choose "Assembly Info File" and name it AssemblyInfo.cs. Then open that file and add this line to the bottom: [assembly: SupportedOSPlatform("windows")] . This way you won't get spammed with warnings about '...this call site is reachable on all platforms...'