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 版本的问题。
参考文献:
Visual Studio 2012 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 版本的问题。
参考文献:
Visual Studio 2012 Fatal error 0x80131c39