2011-12-16 4 views
2

가능한 중복 :
How to programatically build and compile another c# project from the current project응용 프로그램이 다른 응용 프로그램을 컴파일하고 만들 수 있습니까?

쓰고있는 Program2.exe 말을 우리가 난 프로그램이 다른 EXE 파일을 생성하는 것을 EXE를 클릭하면 Program1.exe라는 응용 프로그램을 가지고 있습니다 말할 수 있습니다 "hello world"가 화면에 나타납니다. 그래서 가능하면 가능하다면 코드에서 csc 명령을 사용하여 Visual Studio의 명령 줄 도구를 사용하는 것이 가능하다고 생각합니다. Program2.exe는 Program1.exe를 대체 할 수 있습니까? Program1.exe를 런타임에 다시 컴파일 할 수 있습니까? Microsoft.CSharp.CSharpCodeProvider

이 기사에서 : Compiling and Executing Code at Runtime

추신 :이 작업을 수행 할 수 있는지

+0

명령 줄을 사용하여 프로그램을 컴파일 할 수 있습니다. –

+0

@GabrielGM 이미 "나는 Visual Studio의 명령 줄 도구를 사용하여 코드에서 csc 명령을 사용할 수 있다고 생각합니다." –

답변

6

는, 클래스를 보라 당신은 실제로 코드에서 csc 명령을 호출하지는 않지만, 저의 이해에서 ... 어떤 식 으로든 더 낮은 방법을 사용하고 있습니다. 어쨌든 관리 도구를 사용하고 외부 도구를 사용하지 않는 것이 좋습니다.

1

Program1.exe가 실행되는 동안 Windows는 파일에 대한 쓰기 권한을 거부해야합니다. ... 질문을 올바르게 이해하면 분명히 갈 길이 없습니다. 런타임 동안 자체를 변경하려면 프로그램에서 Reflection을 사용해야합니다.

효율적으로 수행하려면 Emit에서 전체 바이트 코드 액세스 권한 (및 관련 위험)을 제공 받으십시오. 몇 년 전에 CodeProject의 프로젝트를 사용하여 세부 작업을 도와주었습니다. NET 2.0에서 일하고 있었는데, 이제는 더 최근의 것이 있습니다 (this).

또는 CSharpCodeProvider을 사용하고로드 할 어셈블리를 빌드 할 수 있습니다 (소스 또는 트리 표현에서 컴파일).

csc를 사용하여 어셈블리를 컴파일하고 실행중인 프로그램에로드 할 수 있습니다. 이 방법을 사용하면 어셈블리 로딩에서주의를 기울여야합니다. This 링크가 유용 할 수 있습니다.

관련 문제