Search code examples
visual-studio-code.net-core.net-8.0.net-7.0migrate

I use VS Code, how can I smoothly migrate from ASP.NET Core in .NET 7 to .NET 8?


I am currently using VS Code for C# code debugging. I am currently using .NET 7.0 and I want to upgrade to .NET 8.0. I found the following Microsoft documentation webpage, but I have some questions about the content and I don't know how to proceed.

  1. The webpage says, "Update the .NET SDK version in global.json", but it doesn't mention where this file is located. When I enter dotnet --info in CMD, the output shows:

    Environment variables: Not set
    global.json file: Not found
    

    I asked gpt, and it said: "If there is no global.json file in the project root directory, you can manually create one.".
    The problem is, I have many solutions. Do I have to create a new global.json file for each project? That seems like a lot of work!

  2. The webpage also says, "Update the target framework. Update the project file's Target Framework Moniker (TFM) to net8.0."

    My understanding of this statement is to update the .csproj file. But each solution has many .csproj files. Do I have to update all of them?
    Gpt's answer is, "Indeed, for solutions that contain multiple projects, manually updating each project's .csproj file can be a lot of work. However, you can reduce the manual work by writing a script to update these files in bulk. Here are a few solutions that can help simplify this process." I'm not entirely confident in gpt's answer.

I have many questions and uncertainties in the upgrade process mentioned above. Is there any specific guidance or a simpler upgrade method? Or is there a video tutorial with detailed upgrade steps? If I completely uninstall the current 7.0 version and reinstall the 8.0 version, will it render all my current projects unusable? Or do I still need to manually update each solution and project file in VS Code?

LogAn.csproj:

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>net7.0</TargetFramework>
    <ImplicitUsings>enable</ImplicitUsings>
    <Nullable>enable</Nullable>
  </PropertyGroup>
</Project>

LogAnalyzerTest.csproj:

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFramework>net7.0</TargetFramework>
    <ImplicitUsings>enable</ImplicitUsings>
    <Nullable>enable</Nullable>
    <IsPackable>false</IsPackable>
    <IsTestProject>true</IsTestProject>
  </PropertyGroup>
  <ItemGroup>
    <PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.7.1" />
    <PackageReference Include="NUnit" Version="3.13.3" />
    <PackageReference Include="NUnit3TestAdapter" Version="4.4.2" />
    <PackageReference Include="NUnit.Analyzers" Version="3.6.1" />
    <PackageReference Include="coverlet.collector" Version="3.2.0" />
  </ItemGroup>
  <ItemGroup>
    <ProjectReference Include="..\LogAn\LogAn.csproj" />
  </ItemGroup>
</Project>

Solution

  • I assume you have SDK installed for 8.0.

    As you know each project defines its own target framework version. It is easier to develop solution where all projects share same framework version but I've seen cases where that goal is hard to reach.

    How to update your framework version is quite simple. You need to open your project .csproj file and update its TargetFramework to version 8. Like this:

    <Project Sdk="Microsoft.NET.Sdk">
    
      <PropertyGroup>
        <TargetFramework>net8.0</TargetFramework>
      </PropertyGroup>
      ...
    

    As GPT said changing multiple projects to .net core 8.0 version it might be a lot of work. Also note that it is recommended to update some related libraries to later versions as well. For example EntityFramework Core from 7 to 8 if that ORM is used.

    You could improve your question by stating what is the actual need for updating .NET Core version? Is there a dependant library? How many projects would you like to upgrade?

    What is your project structure and/or how does your .csproj file look like at the moment.