Visual Studio 致命错误 0x80131c39

Visual Studio Fatal Error 0x80131c39

我正在开展一个项目,该项目将读取 excel 文档和 return 数据集。 该错误仅在尝试执行此代码时发生。

我不明白这段代码有什么问题我已经尝试使用多个 excel 文件。

public static DataSet ImportExcelXLS(string FileName, bool hasHeaders) {
string HDR = hasHeaders ? "Yes" : "No";
string strConn;
if (FileName.Substring(FileName.LastIndexOf('.')).ToLower() == ".xlsx")
    strConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + FileName + ";Extended Properties=\"Excel 12.0;HDR=" + HDR + ";IMEX=0\"";
else
    strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + FileName + ";Extended Properties=\"Excel 8.0;HDR=" + HDR + ";IMEX=0\"";

DataSet output = new DataSet();

using (OleDbConnection conn = new OleDbConnection(strConn)) {
    conn.Open();

    DataTable schemaTable = conn.GetOleDbSchemaTable(
        OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" });

    foreach (DataRow schemaRow in schemaTable.Rows) {
        string sheet = schemaRow["TABLE_NAME"].ToString();

        if (!sheet.EndsWith("_")) {
            try {
                OleDbCommand cmd = new OleDbCommand("SELECT * FROM [" + sheet + "]", conn);
                cmd.CommandType = CommandType.Text;

                DataTable outputTable = new DataTable(sheet);
                output.Tables.Add(outputTable);
                new OleDbDataAdapter(cmd).Fill(outputTable);
            } catch (Exception ex) {
                throw new Exception(ex.Message + string.Format("Sheet:{0}.File:F{1}", sheet, FileName), ex);
            }
        }
    }
}
return output;
} 

寻找那个特定的错误产生了它意味着的信息 CORDBG_E_MISMATCHED_CORWKS_AND_DACWKS_DLLS

进一步研究另一个具有相同错误代码的 SO 线程表明,这意味着 CLR 版本和调试器版本之间存在致命的不匹配。这听起来很糟糕。

据说之前有人通过恢复到 .net 3.5 用法解决了问题...它似乎不是您的特定代码。更多的是 dll 版本的问题。

参考文献: