Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 我很难比较两个列表。该程序的目的是执行脱机修补程序安装_C# - Fatal编程技术网

C# 我很难比较两个列表。该程序的目的是执行脱机修补程序安装

C# 我很难比较两个列表。该程序的目的是执行脱机修补程序安装,c#,C#,问题是循环出现的。它似乎在wmi qfe列表和KB列表之间执行比较。我遇到的问题是获取并搜索.msu文件名列表中的内容以查找KB,然后安装它。我用python编写了一个类似的程序,并在C代码中模拟了一个类似的结构。如果您能提供有关如何正确使用此功能的任何指导,我们将不胜感激。代码如下: static void Server08r2Patches() { var IE9 = from a in IAVA.Worksheet<IE9>("IE9") select a;

问题是循环出现的。它似乎在wmi qfe列表和KB列表之间执行比较。我遇到的问题是获取并搜索.msu文件名列表中的内容以查找KB,然后安装它。我用python编写了一个类似的程序,并在C代码中模拟了一个类似的结构。如果您能提供有关如何正确使用此功能的任何指导,我们将不胜感激。代码如下:

static void Server08r2Patches()
    {
    var IE9 = from a in IAVA.Worksheet<IE9>("IE9") select a;
    var Server08r2 = from a in IAVA.Worksheet<Server08r2>("Server08r2") select a;
    var KBlist = Server08r2.Select(s=>new {KB = s.KB}).ToList();
    var ExeList = Server08r2.Select(s=>new {Executable = s.Executable}).ToList();
    string path = (Path.GetDirectoryName(Assembly.GetEntryAssembly().Location)+@"\x64\");
    foreach (var item in KBlist)
    {
    if (OsPatches.Contains(item.KB))
    {
                Console.WriteLine(item.KB+" is already installed.");
            }
            else
            {
                Console.WriteLine(item.KB+" will now be installed.");
                foreach (var inst in ExeList)
                {
                    do
                        {
                            var kb_inst = new ProcessStartInfo()
                            {
                                CreateNoWindow = true,
                                UseShellExecute = true,
                                FileName =path+inst.Executable,
                                WindowStyle = ProcessWindowStyle.Hidden,
                                Arguments = (@" /quiet /norestart"),
                            };
                            try
                            {
                                Process update = new Process();
                                update.StartInfo = kb_inst;
                                update.Start();
                                update.WaitForExit();
                                Console.WriteLine(inst.Executable+" was successfully installed");
                            }
                            catch (Exception Ex)
                            {
                                Console.WriteLine(Ex.Message+" "+inst.Executable);
                            }
                        }
                    while (inst.Executable.Contains(item.KB) == true);
                }
            }
        }
    }

我不太明白问题出在哪里。它崩溃了吗?我不确定您询问的while条件的目的是什么,可执行文件的文本内容是否包含item.KB的字符串?此外,我还以为ExeList是一个为特定知识库安装的可执行文件列表,但它似乎对所有知识库都是一样的?它进入了一个无限循环。我最初没有while循环,而是使用if语句,但是if语句会导致null引用异常。