2012-03-10 6 views
0

내 개발 컴퓨터에서 잘로드되지만 Win2008 컴퓨터에서 시작하는 데 실패하는 C# 응용 프로그램이 있습니다. 인터넷다른 컴퓨터에서 실행되지 않는 C# 응용 프로그램

검사 프레임 워크 및 그들은 일치, 4.0

나는 즉시 문제는 내가 한 줄에 좁혀 몇 가지 테스트 코드를 사용하여, 내가 충분히에서 읽고 확인 된 특정 파일에 대한 참조에서 발생 된 의심

.

public static string[] salesArray = (File.ReadAllLines("sales.txt").ToArray()); 

위의 행을 주석 처리하면 테스트 응용 프로그램이 시작됩니다. 테스트 응용 프로그램을 종료하면 실패합니다. 어떤 아이디어?

Debug 디렉토리를 그 안에있는 두 번째 시스템 (sales.txt)에 복사합니다.

이것은 전체 코드입니다. 응용 프로그램은 아무것도하지 않고 빈 창이 열립니다.

namespace testServer 
{ 
    public partial class Form1 : Form 
    { 

     public static string[] salesArray = (File.ReadAllLines("sales.txt").ToArray()); 

     public Form1() 
     { 
      InitializeComponent(); 
     } 
    } 
} 
+1

상대 경로를 사용하면 현재 디렉토리를 설정하지 않은 경우 (또는 현재 디렉토리가 현재 디렉토리라고 생각하는지 여부를 확인하는 것까지도) 매우 나쁜 아이디어라고 생각합니다. –

+0

파일을 @ "c : \ sales.txt"로 설정하려고 시도했지만 파일이 거기에 있는지 확인했습니다. 한 컴퓨터에서는 작동하고 다른 컴퓨터에서는 작동하지 않습니다. –

+0

두 컴퓨터에서 NET 4.0을 사용했지만 개발 컴퓨터에도 레거시 NET 버전이 있습니다. .NET 4.0은 하위 버전과 호환되지 않습니다. NET 3.5를 두 번째 시스템에 설치하자 마자 앱이 정상적으로 실행되기 때문입니다. –

답변

2

해당 파일을 찾기 위해 더 나은 메커니즘을 사용하고 있는지 확인해야합니다 (예 : File.Exists)을 열기 전에.

예상되는 위치에 파일이없는 경우와 같이 문제가있는 경우이를 사용자에게보고 할 수도 있습니다.

1

코드 주위에 예외 처리기를 추가하십시오. 오류 메시지를받을 수 있으며 실패를 정상적으로 처리 할 수 ​​있습니다.

모든 오류 (파일을 찾을 수 없음, 사용중인 파일, 사용 권한 오류 등)를 처리해야합니다.

3

두 가지 잠재적 인 문제가 밖으로 뛰어 :

1) 응용 프로그램의 현재 작업 디렉토리 당신이 생각하는 것이 아니다 :이 표시/인쇄 할 수 있습니다 경우에, 당신은 확실히 알 것입니다. http://msdn.microsoft.com/en-us/library/system.io.directory.getcurrentdirectory.aspx

상대 경로를 지정 했으므로 현재 작업 디렉터리는 파일을 확인할 대상입니다.

2) 아마도 사용 권한. 그 이론에 대한 빠른 점검으로 '관리자 권한으로 실행'을 마우스 오른쪽 버튼으로 클릭 할 수 있습니다.

+0

나는 다음과 같이 변경해 보았습니다. public static string [] salesArray = (File.ReadAllLines (@ "c : \ sales.txt") .ToArray()); 또한 관리자로 실행을 시도했지만 문제가 지속됩니다. 나는 string path = Directory.GetCurrentDirectory()를 추가했다. MessageBox.Show (path); 먼저 실행되는 program.cs에 현재 디렉토리가있는 메시지 상자가 표시되지만 확인을 누르 자마자 ReadLine 코드에 충돌하면 충돌이 발생합니다. –

+0

Steve가 말했듯이, try/catch와 MessageBox.Show (e)로 그 줄을 감싸 야합니다. – sethcall

+0

나는 try catch를 사용했다. 여기에 "take testserver.Form1.cs '의 형식 이니셜 라이저가 예외를 던졌다." –

관련 문제