我的C#代码有什么问题

时间:2014-10-31 08:00:11

标签: c# api web-scraping

我正在编写一个使用Visual Web Ripper API的C#控制台应用程序。我编写了一个程序,当我在代码中指定文件路径并且代码为

时,该程序有效
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using VisualWebRipper;
using VisualWebRipper.Processor;

namespace VisualWebRipperAPI
{
    class Program
    {
        static void Main(string[] args)
        {
            WrProject project= WrProject.Load("C:\\Users\\User\\Desktop\\news.rip");

            project.DataConfiguration.DataSource.OutputFolder =@ "C:\\Users\\User\\Desktop\\output";
            project.DataConfiguration.DataSource.IsDefaultOutputFolder = false;
                 IAgent agent = WrAgent.RunProject(new WrProcessPars(project, false, false, false, project.DefaultCollector, project.LogLevel), true);

            string status = agent.Status;     
            int  processedPages = agent.ProcessedPages;     
            int  pageLoadErrors = agent.TimeoutPages;      
            int  missedRequiredElements = agent.MissedRequiredElements;
            bool isError = agent.IsError;
            Console.WriteLine(status +" "+ processedPages +" "+  pageLoadErrors +" "+  missedRequiredElements  +" "+ isError);
            Console.ReadLine();
        }
    } 
}

但是现在我尝试更改代码以提及对象中的输入和输出文件路径。我添加了两个类code.cs和program.cs

我写的code.cs中的

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using VisualWebRipper;
using VisualWebRipper.Processor;

namespace webripperplugin
{
    public class code
    {

        public void method(string source,string output)
        {
            WrProject project = WrProject.Load(source);
            project.DataConfiguration.DataSource.OutputFolder = output;
            project.DataConfiguration.DataSource.IsDefaultOutputFolder = false;
            IAgent agent = WrAgent.RunProject(new WrProcessPars(project, false, false, false, project.DefaultCollector, project.LogLevel), true);

            string status = agent.Status;
            int processedPages = agent.ProcessedPages;
            int pageLoadErrors = agent.TimeoutPages;
            int missedRequiredElements = agent.MissedRequiredElements;
            bool isError = agent.IsError;
            Console.WriteLine(status + "\n" + processedPages + "\n" + pageLoadErrors + "\n" + missedRequiredElements + "\n" + isError);
            Console.ReadLine();
        }

    }
}

在program.cs中我写了

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using VisualWebRipper;
using VisualWebRipper.Processor;
using webripperplugin;

namespace webripperplugin
{
    class Program
    {
        static void Main()
        {
            code trail = new code();
            trail.method("C:\\Users\\User\\Desktop\\news.rip", @"C:\Users\User\Desktop\output");

        }
    }
}

但是我的节目没有像它应该的那样工作。它显示两个警告

  1. 正在构建的项目的处理器架构与#34; MSIL"之间存在不匹配。以及参考" WebRipper"," x86"的处理器架构。这种不匹配可能会导致运行时故障。请考虑通过Configuration Manager更改项目的目标处理器体系结构,以便在项目和引用之间调整处理器体系结构,或者依赖于具有与项目的目标处理器体系结构相匹配的处理器体系结构的引用。
  2. 正在构建的项目的处理器架构与#34; MSIL"之间存在不匹配。以及#34; WebRipperBrowser"," x86"的处理器体系结构。这种不匹配可能会导致运行时故障。请考虑通过Configuration Manager更改项目的目标处理器体系结构,以便在项目和引用之间调整处理器体系结构,或者使用与项目的目标处理器体系结构相匹配的处理器体系结构依赖于引用
  3. 当我早点运行时,我曾经得到了所需的输出,现在我没有输出

1 个答案:

答案 0 :(得分:1)

好的,所以WebRipper二进制文件的目标是x86,你可能已经勾选Any CPUx64确保x86有一个配置为活动,并且该错误应该消失。如果单击文件上的properties并在编译选项卡(平台)中更改体系结构,则可以在项目文件中执行此操作

同时尝试以下方法:

  1. 转到Build> Configuration Manager菜单项。
  2. 在列表中找到您的项目,平台应该说Any CPU
  3. 选择Any CPU,然后选择New
  4. 现在选择x86。
  5. 确保选中Any CPU
  6. 点击确定
  7. 需要对Debug和Release设置进行此操作。