1

アプリケーションを実行するたびにこの例外が発生します。私はそれが何であるかを知りません

XamlParseException が処理されませんでした。

「指定されたバインド制約に一致するタイプ 'chrm.MainWindow' でのコンストラクターの呼び出しで、例外がスローされました。」行番号「3」および行位置「9」。

私のコード

GoogleChrome.cs

namespace chrm
{
class GoogleChrome
{
    public List<URL> URLs = new List<URL>();
    public IEnumerable<URL> GetHistory()
    {
        // Get Current Users App Data
        string documentsFolder = Environment.GetFolderPath
        (Environment.SpecialFolder.ApplicationData);
        string[] tempstr = documentsFolder.Split('\\');
        string tempstr1 = "";
        documentsFolder += "\\Google\\Chrome\\User Data\\Default";
        if (tempstr[tempstr.Length - 1] != "Local")
        {
            for (int i = 0; i < tempstr.Length - 1; i++)
            {
                tempstr1 += tempstr[i] + "\\";
            }
            documentsFolder = tempstr1 + "Local\\Google\\Chrome\\User Data\\Default";
        }


        // Check if directory exists
        if (Directory.Exists(documentsFolder))
        {
            return ExtractUserHistory(documentsFolder);

        }
        return null;
    }


    IEnumerable<URL> ExtractUserHistory(string folder)
    {
        // Get User history info
        DataTable historyDT = ExtractFromTable("urls", folder);

        // Get visit Time/Data info
        DataTable visitsDT = ExtractFromTable("visits",
        folder);

        // Loop each history entry
        foreach (DataRow row in historyDT.Rows)
        {

            // Obtain URL and Title strings
            string url = row["url"].ToString();
            string title = row["title"].ToString();

            // Create new Entry
            URL u = new URL(url.Replace('\'', ' '),
            title.Replace('\'', ' '),
            "Google Chrome");

            // Add entry to list
            URLs.Add(u);
        }
        // Clear URL History
        DeleteFromTable("urls", folder);
        DeleteFromTable("visits", folder);

        return URLs;
    }

    void DeleteFromTable(string table, string folder)
    {
        SQLiteConnection sql_con;
        SQLiteCommand sql_cmd;

        // FireFox database file
        string dbPath = folder + "\\History";

        // If file exists
        if (File.Exists(dbPath))
        {
            // Data connection
            sql_con = new SQLiteConnection("Data Source=" + dbPath +
            ";Version=3;New=False;Compress=True;");

            // Open the Conn
            sql_con.Open();

            // Delete Query
            string CommandText = "delete from " + table;

            // Create command
            sql_cmd = new SQLiteCommand(CommandText, sql_con);

            sql_cmd.ExecuteNonQuery();

            // Clean up
            sql_con.Close();
        }
    }

     DataTable ExtractFromTable(string table, string folder)
    {
        SQLiteConnection sql_con;
        SQLiteCommand sql_cmd;
        SQLiteDataAdapter DB;
        DataTable DT = new DataTable();

        // FireFox database file
        string dbPath = folder + "\\History";

        // If file exists
        if (File.Exists(dbPath))
        {
            // Data connection
            sql_con = new SQLiteConnection("Data Source=" + dbPath +
            ";Version=3;New=False;Compress=True;");

            // Open the Connection
            sql_con.Open();
            sql_cmd = sql_con.CreateCommand();

            // Select Query
            string CommandText = "select * from " + table;

            // Populate Data Table
            DB = new SQLiteDataAdapter(CommandText, sql_con);
            DB.Fill(DT);

            // Clean up
            sql_con.Close();
        }
        return DT;
    }
}
}

URL.cs

namespace chrm
{
class URL
{
    string url;
    string title;
    string browser;
    public URL(string url, string title, string browser)
    {
        this.url = url;
        this.title = title;
        this.browser = browser;
    }

    public string getData()
    {
        return browser + " - " + title + " - " + url;
    }
}
}

そして最後に Mainwindow.xaml.cs

namespace chrm
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
    GoogleChrome ch = new GoogleChrome();
    public MainWindow()
    {

        InitializeComponent();

        ch.GetHistory();
    }
 }
}

csファイルにデバッグを入れると.. DataTable ExtractFromTable(文字列テーブル、文字列フォルダー)に入らないことがわかります。そのため、メインウィンドウのみでエラーが発生しています。

今何をする?

わかりました..例外をキャッチすると、それが私に与えます

System.IO.FileLoadException: 混合モード アセンブリはランタイムのバージョン 'v2.0.50727' に対してビルドされており、追加の構成情報がないと 4.0 ランタイムに読み込むことができません。\r\n at chrm.GoogleChrome.ExtractFromTable(String table, String folder) )\r\n D:\html5\chrm\chrm\GoogleChrome.cs:45行目のchrm.GoogleChrome.ExtractUserHistory(文字列フォルダ)\r\n D:\html5\chrmのchrm.GoogleChrome.GetHistory() \chrm\GoogleChrome.cs:35 行目\r\n D の chrm.MainWindow..ctor():\html5\chrm\chrm\MainWindow.xaml.cs:33 行目

私が使用しているdllがv2.0であるためですか..私のアプリには4.0が必要ですか?

4

1 に答える 1

0

あなたの によると、IOException.NET 2.0 に対してビルドされた DLL を使用しようとしているときに .NET 4.0 でコンパイルしているため、実際にはエラーであると言えます。

これを app.config ファイルの構成セクションに追加してみてください。必要に応じて、メイン アプリケーションまたは上記のコードを使用している DLL で試すことができます。

<startup useLegacyV2RuntimeActivationPolicy="true">
    <supportedRuntime version="v4.0"/>
</startup>
于 2012-10-29T06:31:57.123 に答える