public static string GetWindowsLibraryPath(this DevEnv visualVersion, Platform platform, DotNetFramework?dotNetFramework = null)
        {
            string visualStudioVCDir = Util.EnsureTrailingSeparator(visualVersion.GetVisualStudioVCRootPath());
            string subDir            = platform == Platform.win64 ? @"\amd64" : "";

            if ((visualVersion == DevEnv.vs2017) || (visualVersion == DevEnv.vs2019))
            {
                subDir = platform == Platform.win64 ? @"\x64" : @"\x86";
            }

            string visualStudioLib = string.Format(@"{0}lib{1};{0}atlmfc\lib{1};", visualStudioVCDir, subDir);

            if (visualVersion == DevEnv.vs2010)
            {
                return(visualStudioLib);
            }
            else
            {
                KitsRootEnum useKitsRoot    = KitsRootPaths.GetUseKitsRootForDevEnv(visualVersion);
                string       targetPlatform = platform == Platform.win64 ? "x64" : "x86";

                switch (useKitsRoot)
                {
                case KitsRootEnum.KitsRoot:
                {
                    string kitsRoot = Util.EnsureTrailingSeparator(KitsRootPaths.GetRoot(KitsRootEnum.KitsRoot));
                    return(string.Format(@"{0};{1}lib\win8\um\{2};{1}References\CommonConfiguration\Neutral;", visualStudioLib, kitsRoot, targetPlatform));
                }

                case KitsRootEnum.KitsRoot81:
                {
                    string kitsRoot = Util.EnsureTrailingSeparator(KitsRootPaths.GetRoot(KitsRootEnum.KitsRoot81));
                    return(string.Format(@"{0};{1}lib\winv6.3\um\{2};{1}References\CommonConfiguration\Neutral;", visualStudioLib, kitsRoot, targetPlatform));
                }

                case KitsRootEnum.KitsRoot10:
                {
                    string netFxPath = string.Empty;
                    if (dotNetFramework.HasValue && visualVersion >= DevEnv.vs2015)
                    {
                        string netFXKitsDir = Util.EnsureTrailingSeparator(KitsRootPaths.GetNETFXKitsDir(dotNetFramework.Value < DotNetFramework.v4_6 ? DotNetFramework.v4_6 : dotNetFramework.Value));
                        netFxPath = Path.Combine(netFXKitsDir, "Lib", "um", targetPlatform);
                    }

                    string kitsRoot10 = KitsRootPaths.GetRoot(KitsRootEnum.KitsRoot10);
                    Options.Vc.General.WindowsTargetPlatformVersion windowsTargetPlatformVersion = KitsRootPaths.GetWindowsTargetPlatformVersionForDevEnv(visualVersion);
                    string platformVersion = windowsTargetPlatformVersion.ToVersionString();
                    var    paths           = new[]
                    {
                        visualStudioLib,
                        Path.Combine(kitsRoot10, "Lib", platformVersion, "ucrt", targetPlatform),           // $(UniversalCRT_LibraryPath_x86) or $(UniversalCRT_LibraryPath_x64)
                        Path.Combine(kitsRoot10, "Lib", platformVersion, "um", targetPlatform),             // $(WindowsSDK_LibraryPath_x86) or $(WindowsSDK_LibraryPath_x64)
                        netFxPath
                    }.ToList();

                    if (windowsTargetPlatformVersion <= Options.Vc.General.WindowsTargetPlatformVersion.v10_0_10240_0)
                    {
                        string kitsRoot81 = KitsRootPaths.GetRoot(KitsRootEnum.KitsRoot81);
                        paths.AddRange(new[] {
                                Path.Combine(kitsRoot81, "lib", "winv6.3", "um", targetPlatform),
                                Path.Combine(kitsRoot81, "References", "CommonConfiguration", "Neutral")
                            });
                    }

                    return(string.Join(";", paths));
                }

                default:
                    throw new NotImplementedException("No WindowsResourceCompiler associated with " + visualVersion);
                }
            }
        }