Translation of platform using configuration for C# targets

Can someone tell me why is there a reason to translate platform names for C# targets in CMake using the configuration? Why is this snippet needed in the VisualStudio generators?

std::string platform = GetPlatformName();
if (proj) {
  std::string extension =
    cmSystemTools::GetFilenameLastExtension(proj->GetRelativePath());
  extension = cmSystemTools::LowerCase(extension);
  if (extension.compare(".csproj") == 0) {
    // Use correct platform name
    platform =
      slnData.GetConfigurationTarget(tname, plainConfig, platform);
  }
}

Would it be safe to assume that this translation will land on the same platform for every target tname?

< edit >
I’m developing a fast path for the command-line invocation for the Visual Studio generators. When building multiple targets using CMake’s build driver, it turns into multiple as many MSBuilt invocations as targets the user specified. MSBuild is capable of building multiple targets with the same invocation under some circumstances. Becuase our CI speed is currently limited by this, I wanted to add a fast path to makeCommand generation that builds multiple targets when possible.
< edit/ >

Also, is there an easy way to tell if a target is a C++ or a C# target just by it’s name?

I’d ask on the MR that merged it. The author doesn’t seem to be on Discourse and the commit message doesn’t illuminate it for me.