xmlvisual-studiomsbuild

To build of old project by newer Visual Studio CLI


How to solve build of one's old project by a newer Visual Studio non-GUI ie. MSVC build;

   C:\ext2fsd-code> msbuild Ext3Fsd.sln /p:Configuration=Release

    MSBuild version 17.12.12+1cce77968 for .NET Framework
    Build started 29-Dec-24 7:28:21 AM.
    MSBUILD : error MSB4025: The project file could not be loaded. Root element is missing.
    
    Build FAILED.
    MSBUILD : error MSB4025: The project file could not be loaded. Root element is missing

in .sln file,

    Microsoft Visual Studio Solution File, Format Version 10.00
    # Visual Studio 2008
    Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Ext3Fsd", "Ext3Fsd\ext3fsd.vcproj", "{2328F787-71B4-408B-8E10-B7A95BF9A110}"
    EndProject
    Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Ext2Mgr", "Ext2Mgr\Ext2Mgr.vcproj", "{F0E304B5-AF20-49F7-8183-5994C6EA889D}"
    EndProject
    Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Ext2Srv", "Ext2Srv\Ext2Srv.vcproj", "{A18F670C-DA85-43F6-8620-99A2DD8CEF1A}"
    EndProject
    Global
            GlobalSection(SourceCodeControl) = preSolution
                    SccNumberOfProjects = 2
                    SccProjectUniqueName0 = Ext3Fsd\\ext3fsd.vcproj
                    SccProjectName0 = Ext3Fsd
                    SccLocalPath0 = Ext3Fsd
                    SccProvider0 = MSSCCI:Perforce\u0020P4\u0020SCM
                    CanCheckoutShared = true
                    SccProjectUniqueName1 = Ext2Srv\\Ext2Srv.vcproj
                    SccProjectName1 = Ext2Srv
                    SccLocalPath1 = Ext2Srv
                    SccProvider1 = MSSCCI:Perforce\u0020P4\u0020SCM
                    CanCheckoutShared = true
            EndGlobalSection
            GlobalSection(SolutionConfigurationPlatforms) = preSolution
                    Debug|Win32 = Debug|Win32
                    Release|Win32 = Release|Win32
            EndGlobalSection
            GlobalSection(ProjectConfigurationPlatforms) = postSolution
                    {2328F787-71B4-408B-8E10-B7A95BF9A110}.Debug|Win32.ActiveCfg = 

Debug|Win32
                    {2328F787-71B4-408B-8E10-B7A95BF9A110}.Debug|Win32.Build.0 = Debug|Win32
                    {2328F787-71B4-408B-8E10-B7A95BF9A110}.Release|Win32.ActiveCfg = Release|Win32
                    {2328F787-71B4-408B-8E10-B7A95BF9A110}.Release|Win32.Build.0 = Release|Win32
                    {F0E304B5-AF20-49F7-8183-5994C6EA889D}.Debug|Win32.ActiveCfg = Debug|Win32
                    {F0E304B5-AF20-49F7-8183-5994C6EA889D}.Debug|Win32.Build.0 = Debug|Win32
                    {F0E304B5-AF20-49F7-8183-5994C6EA889D}.Release|Win32.ActiveCfg = Release|Win32
                    {F0E304B5-AF20-49F7-8183-5994C6EA889D}.Release|Win32.Build.0 = Release|Win32
                    {A18F670C-DA85-43F6-8620-99A2DD8CEF1A}.Debug|Win32.ActiveCfg = Debug|Win32
                    {A18F670C-DA85-43F6-8620-99A2DD8CEF1A}.Debug|Win32.Build.0 = Debug|Win32
                    {A18F670C-DA85-43F6-8620-99A2DD8CEF1A}.Release|Win32.ActiveCfg = Release|Win32
                    {A18F670C-DA85-43F6-8620-99A2DD8CEF1A}.Release|Win32.Build.0 = Release|Win32
            EndGlobalSection
            GlobalSection(SolutionProperties) = preSolution
                    HideSolutionNode = FALSE
            EndGlobalSection
    EndGlobal

To get notion let's look into its first vcproject file which's changed to UTF-8 from gb2312 and after put off some lines to succinct:

C:\ext2fsd-code>type Ext3Fsd/ext3fsd.vcproj
<?xml version="1.0" encoding="UTF-8"?>
<VisualStudioProject
        ProjectType="Visual C++"
        Version="9.00"
        Name="Ext3Fsd"
        ProjectGUID="{2328F787-71B4-408B-8E10-B7A95BF9A110}"
        SccProjectName="Ext3Fsd"
        SccLocalPath="."
        SccProvider="MSSCCI:Perforce P4 SCM"
        Keyword="MakeFileProj"
        TargetFrameworkVersion="0"
        >
        <Platforms>
                <Platform
                        Name="Win32"
                />
        </Platforms>
        <ToolFiles>
        </ToolFiles>
        <Configurations>
                <Configuration
                        Name="Debug|Win32"
                        OutputDirectory=".\chk"
                        IntermediateDirectory=".\chk"
                        ConfigurationType="0"
                        InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
                        UseOfMFC="0"
                        ATLMinimizesCRunTimeLibraryUsage="false"
                        >
                        <Tool
                                Name="VCNMakeTool"
                                BuildCommandLine=".\DDKBuild.bat -W7XP chk ."
                                ReBuildCommandLine=".\DDKBuild.bat -W7XP chk . -ceZ"
                                CleanCommandLine=""
                                Output="Ext2Fsd.sys"
                                PreprocessorDefinitions=""
                                IncludeSearchPath=""
                                ForcedIncludes=""
                                AssemblySearchPath=""
                                ForcedUsingAssemblies=""
                                CompileAsManaged=""
                        />
                </Configuration>
                <Configuration
                        Name="Release|Win32"
                        OutputDirectory=".\fre"
                        IntermediateDirectory=".\fre"
                        ConfigurationType="0"
                        InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
                        UseOfMFC="0"
                        ATLMinimizesCRunTimeLibraryUsage="false"
                        >
                        <Tool
                                Name="VCNMakeTool"
                                BuildCommandLine=".\DDKBuild.bat -W7XP fre ."
                                ReBuildCommandLine=".\DDKBuild.bat -W7XP fre . -cZ"
                                CleanCommandLine=""
                                Output="Ext3Fsd.sys"
                                PreprocessorDefinitions=""
                                IncludeSearchPath=""
                                ForcedIncludes=""
                                AssemblySearchPath=""
                                ForcedUsingAssemblies=""
                                CompileAsManaged=""
                        />
                </Configuration>
        </Configurations>
        <References>
        </References>
        <Files>
                <Filter
                        Name="Source Files"
                        Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
                        >
                        <File
                                RelativePath="access.c"
                                >

                        <Filter
                                Name="nls"
                                >

                        </Filter>
                        <Filter
                                Name="ext4"            >
    
                        </Filter>
                        <Filter
                                Name="jbd"
                                >
         
                        </Filter>
                </Filter>
                <Filter
                        Name="Header Files"
                        Filter="h;hpp;hxx;hm;inl"
                        >
        
                        <Filter
                                Name="Linux"
                                >
                                <File
                                        RelativePath="include\linux\atomic.h">
                                <File
                                        RelativePath="include\linux\bitops.h"
      
                                </File>
                        </Filter>
                        <Filter
                                Name="asm"
                                >
       
                        </Filter>
                </Filter>
                <Filter
                        Name="Resource Files"
          
                </Filter>
                <Filter
                        Name="Douments"
                        >
            
                </Filter>
        </Files>
        <Globals>
        </Globals>
</VisualStudioProject>

Please help guide/point out why such error occurs, very gratified in advance


Solution

  • This CLI way can't do that (at least yet, AFAIK) .

    So to get the 'real' Microsoft Visual Studio IDE Version Community 2022, whose executable binary file name devenv launched, its wizard worked like a charm.
    It'll immediately upgrade/update, migrate the old Visual Studio version project to the newest version.

    One could compare the files .vcxproj and .vcproj remaining.