私は本当に奇妙な「バグ」を抱えており、それが何なのか見当もつきません。アプリは .net 4 フレームを使用して VS2010 で作成されています。通常のアセンブリに加えて、MS 相互運用機能を Excel に使用します。クライアント マシンに Office 2010 がインストールされています。
基本的に、アプリはExcelシートを解析し、結果で別のもの(新しいファイル)を作成します。問題: exe ファイルをデスクトップ (または PC の他の場所) にコピーすると、例外がスローされますが、アーカイブ (RAR) にあり、アーカイブがデスクトップにある場合、完全に機能します。
彼らは非常に制限的なシステム(電話会社)を持っており、そのアプリはまったく使用されるべきではないため、インストールできません。(手動で解析している労働者は、通常、プログラムが5秒で処理するのに3時間かかるため、上司はそれを知ることができません.
問題は会社内の他のマシンでも持続するため、孤立したケースではありません。
それに関する情報は高く評価されます。PSさらに情報が必要な場合は、叫び声を上げてください。ハンドルされていない例外の「詳細」は次のとおりです。
このダイアログ ボックスの代わりに Just-In-Time (JIT) デバッグを呼び出す方法の詳細については、このメッセージの最後を参照してください。
************** 例外テキスト ************** System.ArgumentOutOfRangeException: インデックスと長さは、文字列内の場所を参照する必要があります。パラメータ名: System.String.InternalSubStringWithChecks での長さ(Int32 startIndex, Int32 length, Boolean fAlwaysCopy) で System.String.Substring(Int32 startIndex, Int32 length) で ExcelSvjetlana.Form1.buttonObradi_Click(オブジェクト送信者, EventArgs e) で System.Windows .Forms.Control.OnClick(EventArgs e) で System.Windows.Forms.Button.OnClick(EventArgs e) で System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent) で System.Windows.Forms.Control.WmMouseUp(Message& m、MouseButtons ボタン、Int32 クリック) System.Windows.Forms.Control.WndProc(Message& m) で System.Windows.Forms.ButtonBase.WndProc(Message&
************** Loaded Assemblies ************** mscorlib Assembly Version: 4.0.0.0 Win32 Version: 4.0.30319.239 (RTMGDR.030319-2300) CodeBase: file:///C:/Windows/Microsoft.NET/Framework/v4.0.30319/mscorlib.dll ---------------------------------------- ExcelSvjetlana Assembly Version: 1.0.0.0 Win32 Version: 1.0.0.0 CodeBase: file:///C:/Users/sobradovic/Desktop/Interno.exe ---------------------------------------- System.Windows.Forms Assembly Version: 4.0.0.0 Win32 Version: 4.0.30319.1 built by: RTMRel CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms/v4.0_4.0.0.0__b77a5c561934e089/System.Windows.Forms.dll ---------------------------------------- System.Drawing Assembly Version: 4.0.0.0 Win32 Version: 4.0.30319.276 built by: RTMGDR CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Drawing/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll ---------------------------------------- System Assembly Version: 4.0.0.0 Win32 Version: 4.0.30319.258 built by: RTMGDR CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System/v4.0_4.0.0.0__b77a5c561934e089/System.dll ---------------------------------------- System.Data Assembly Version: 4.0.0.0 Win32 Version: 4.0.30319.1 (RTMRel.030319-0100) CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_32/System.Data/v4.0_4.0.0.0__b77a5c561934e089/System.Data.dll ---------------------------------------- System.Core Assembly Version: 4.0.0.0 Win32 Version: 4.0.30319.1 built by: RTMRel CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Core/v4.0_4.0.0.0__b77a5c561934e089/System.Core.dll ---------------------------------------- System.Xml Assembly Version: 4.0.0.0 Win32 Version: 4.0.30319.1 built by: RTMRel CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Xml/v4.0_4.0.0.0__b77a5c561934e089/System.Xml.dll ---------------------------------------- System.Numerics Assembly Version: 4.0.0.0 Win32 Version: 4.0.30319.1 built by: RTMRel CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Numerics/v4.0_4.0.0.0__b77a5c561934e089/System.Numerics.dll ---------------------------------------- Microsoft.Office.Interop.Excel Assembly Version: 14.0.0.0 Win32 Version: 14.0.4756.1000 CodeBase: file:///C:/Windows/assembly/GAC_MSIL/Microsoft.Office.Interop.Excel/14.0.0.0__71e9bce111e9429c/Microsoft.Office.Interop.Excel.dll ---------------------------------------- office Assembly Version: 14.0.0.0 Win32 Version: 14.0.4760.1000 CodeBase: file:///C:/Windows/assembly/GAC_MSIL/office/14.0.0.0__71e9bce111e9429c/office.dll ---------------------------------------- Microsoft.CSharp Assembly Version: 4.0.0.0 Win32 Version: 4.0.30319.1 CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/Microsoft.CSharp/v4.0_4.0.0.0__b03f5f7f11d50a3a/Microsoft.CSharp.dll ---------------------------------------- System.Dynamic Assembly Version: 4.0.0.0 Win32 Version: 4.0.30319.1 CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Dynamic/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Dynamic.dll ---------------------------------------- Anonymously Hosted DynamicMethods Assembly Assembly Version: 0.0.0.0 Win32 Version: 4.0.30319.239 (RTMGDR.030319-2300) CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_32/mscorlib/v4.0_4.0.0.0__b77a5c561934e089/mscorlib.dll ---------------------------------------- ************** JIT Debugging ************** To enable just-in-time (JIT) debugging, the .config file for this application or computer (machine.config) must have the jitDebugging value set in the system.windows.forms section. The application must also be compiled with debugging enabled.
For example:
<configuration>
<system.windows.forms jitDebugging="true" />
</configuration>
When JIT debugging is enabled, any unhandled exception
will be sent to the JIT debugger registered on the computer
rather than be handled by this dialog box.
そして、これがあなたが求めたコードです。いくつかの弦を変更したことに注意してください。
private void buttonObradi_Click(object sender, EventArgs e)
{
int brojac = 0;
string grade = "";
string grading1 = "2";
string grading2 = "3";
string grading3 = "4";
string grading4 = "1";
string grading5 = "No Answer";
string grading6 = "5";
string grupa = "";
bool citaj = false;
bool mozda = false;
string odjel = "";
string pododjel = "";
string ocjenica = "";
int prviProlaz = 0;
foreach (DataRow redak in excelData.Rows)
{
if (prviProlaz > 0)
{
if (brojac == 0)
{
brojac = 1;
grupa = redak[1].ToString();
mozda = false;
citaj = false;
}
else
{
if (redak[1].ToString() == "")
{
mozda = true;
citaj = false;
}
else
{
if (redak[1].ToString() == "Agent Name")
{
citaj = true;
}
else if (redak[1].ToString() == grading1 || redak[1].ToString() == grading2 || redak[1].ToString() == grading3 || redak[1].ToString() == grading4 || redak[1].ToString() == grading5 || redak[1].ToString() == grading6)
{
grade = redak[1].ToString();
mozda = false;
}
else if (mozda == true)
{
brojac = 0;
}
else if (citaj == true)
{
if (grupa == "Team A" || grupa == "Team M" || grupa == "Team T")
{
pododjel = "AAAA";
odjel = "CCCC";
}
else if (grupa == "Team 1" || grupa == "Team 2")
{
pododjel = "BBBB";
odjel = "TTTT";
}
else if (grupa == "K Team" || grupa == "F Team")
{
pododjel = "RRRR";
odjel = "SSSS";
}
else if (grupa == "Group 1" || grupa == "Group 2" || grupa == "Group 3" || grupa == "Group 4")
{
pododjel = "FFFF";
odjel = "TTTTT";
}
else if (grupa == "Fun group 1" || grupa == "fun group 2" || grupa == "fun group 3" || grupa == "fun group 4" || grupa == "fun group 5")
{
pododjel = "KKKK";
odjel = "FFFF";
}
ocjenica = ocjenica.Trim();
preSort.Rows.Add(redak[0].ToString(), redak[1].ToString(), "", grade, Convert.ToDecimal(redak[4].ToString()), grade.Substring(0, 1), grupa, pododjel, odjel);
}
}
}
}
else
{
prviProlaz = 1;
}
}
dataGridView2.DataSource = preSort;
}