введите описание изображения здесь Я использую C # dll, использующий pythonnet на python 2.7.13 (который использует другие dll-файлы и файлы базы данных .mdb) для выполнения некоторых технических расчетов.Эти файлы DLL не имеют хорошей документации (только пространства имен, имена классов и методов).Хорошо, программа на большинстве ПК работает нормально, но на всех офисных компьютерах выдает ошибку времени выполнения из файлов Dll (я сомневаюсь в связи с базой данных).Эти dll-файлы скомпилированы для целевой .NET 4.0 (на офисных компьютерах установлена .NET 4.7.1 или другие версии, более новые, чем 4.0), и также используется EntityFramework (программы предназначены для 5.0, и это dll-файл в папке программы, но вна офисных компьютерах установлен инструмент EntityFramework 6.2).База данных Microsoft Engine 2010 также установлена на этих компьютерах.
На любом другом компьютере, который я тестировал, программа работает отлично.В офисных компьютерах я нашел группу входных данных, для которой работает программа, но в любом случае это не правильно, потому что она должна работать и для данных по умолчанию.
Чтобы проводить тесты на офисных компьютерах, я скомпилировал код Python с использованием PyInstaller(Я повторяю, скомпилированная версия отлично работает на других ПК).
Я использую .NET Reflector для декомпиляции DLL-файлов и программ Exception для поиска ошибки.Метод, который вызывает исключение, находится в следующем коде.
Заранее спасибо!
public int LoadRanghiAmmessi(int[] vRanghi, string geometria)
{
int index = 0;
CrConnection connection = new CrConnection(this.PathDB);
string query = "SELECT * FROM RanghiAmmessi WHERE (Geometria='" + geometria + "') ORDER BY NRanghi";
OleDbDataReader recordset = connection.GetRecordset(query, @"\Coils.mdb;");
if (!recordset.HasRows)
{
if (recordset != null)
{
recordset.Close();
}
query = "SELECT * FROM RanghiAmmessi WHERE (Geometria='*') ORDER BY NRanghi";
recordset = connection.GetRecordset(query, @"\Coils.mdb;");
while (recordset.Read())
{
vRanghi[index] = int.Parse(recordset["NRanghi"].ToString());
index++;
}
if (recordset != null)
{
recordset.Close();
}
}
return index;
}
public OleDbDataReader GetRecordset(string query, string NomeDB)
{
string connectionString = "Provider=Microsoft.JET.OLEDB.4.0;Data Source=" + this.PathDB + NomeDB + "Jet OLEDB:Database Password=123456";
this.ChiudiConnessioni();
this.conn = new OleDbConnection(connectionString);
OleDbCommand command = new OleDbCommand(query, this.conn);
try
{
this.ApriConnessione();
return command.ExecuteReader();
}
catch (Exception exception)
{
exception.Message.ToString();
this.ChiudiConnessioni();
return null;
}
}