2016-12-27 2 views
0

System.Diagnostics으로 다른 프로그램 (이 프로그램을 주 프로그램이라고 부름)을 호출하는 테스트 프로그램이 있습니다. 테스트 프로그램이 사용하고있는 App.Config을 지정하는 데 문제가 있습니다. 항상 기본 프로그램의 app.config을 사용하는 것으로 기본 설정됩니다. 프로그램 인수를 사용하기 위해 주 프로그램을 변경하지 않고 사용할 파일을 지정하는 방법이 있습니까? 아래 내 코드를 참조하십시오.C# 다른 프로그램을 실행하고 App.Config 파일을 지정하십시오.

Process process = new Process(); 
    process.StartInfo.UseShellExecute = false; 
    process.StartInfo.FileName = @"...\MainProgram.exe"; 
    process.StartInfo.CreateNoWindow = false; 
    process.StartInfo.WorkingDirectory = @"...\TestProgram\bin\Debug"; 
    process.Start(); 

답변

0

필요한 파일을 복사 할 수 있다고 가정합니다.

이렇게하려면 File.Copy을 사용하십시오.

File.Copy(@"C:\yourCorrectFilePath\App.Config", @"...\TestProgram\bin\Debug\App.Config", true); 
    Process process = new Process(); 
    process.StartInfo.UseShellExecute = false; 
    process.StartInfo.FileName = @"...\MainProgram.exe"; 
    process.StartInfo.CreateNoWindow = false; 
    process.StartInfo.WorkingDirectory = @"...\TestProgram\bin\Debug"; 
    process.Start(); 
+0

감사합니다, 당신의 아이디어 작동합니다. 테스트 app.config를 프로그램 디렉토리로 복사했습니다. 나중에 주 프로그램의 app.config를 편집하는 대신 주 프로그램의 디렉토리를 임시 디렉토리로 복사하도록 변경할 수 있습니다. – waterguard

+1

사용자 설정에 대해서는 작동하지 않습니다. 그들은 어딘가에 사용자 프로파일 내의 별도의 XML 파일에 저장됩니다. 또한 config 파일은 컴파일 된 응용 프로그램에 대해 app.config가 아니라 어셈블리 이름 + "exe.config"와 일치합니다. 따라서 위의 코드는 적절하게 수정 될 때만 작동합니다. –

0

런타임에 App.config 파일을 지정할 방법이 없습니다. @ NicoRiff의 대답은 효과가 있지만 프로그램에 변수를 설정할 수있는 다른 경로에있는 다른 구성 파일과 함께 실행 파일을 저장할 수도 있습니다.

1

당신은 별도의 응용 프로그램 도메인에서 프로그램을 시작하고 거기의 app.config 양식의 경로를 설정할 수 있습니다 :

 AppDomainSetup setup = new AppDomainSetup 
        { 
         ShadowCopyFiles = "true", 
         LoaderOptimization = LoaderOptimization.MultiDomainHost, 
         ApplicationBase = "C:\ExamplePath", 
         PrivateBinPath = "C:\ExamplePath", 
         PrivateBinPathProbe = "C:\ExamplePath" 
        }; 

        var domain = AppDomain.CreateDomain("ExampleName", null, setup); 
        domain.SetData("APP_CONFIG_FILE", "C:\ExamplePath" + "\\app.config"); 

setup.ExecuteAssembly(@"c:\ExamplePath\MainProgram.exe"); 
관련 문제