2012-09-12 2 views
1

인 경우 "찾은 어셈블리의 매니페스트 정의가 어셈블리 참조와 일치하지 않습니다."이 간단한 작업을 시도해 보겠습니다. 예상대로이 작동어셈블리의 이름이

<section name="keys" type="MyApp.KeysSection, MyApp" /> 

:

나는이 포함 된 MyApp.exe.config 있습니다. 그러나 MyApp.exe의 이름을 MyApp.renamed.exe로 변경하고 구성 파일을 MyApp.renamed.exe.config로 바꾸면 예외가 발생합니다. "파일 또는 어셈블리 'MyApp'또는 해당 종속성 중 하나를로드 할 수 없습니다. 시스템이 지정된 파일을 찾을 수 없습니다 ".

구성 파일이 여전히 MyApp 어셈블리를 참조하기 때문에이 값을 지정해야합니다. 나는 응용 프로그램을 실행할 때

<section name="keys" type="MyApp.KeysSection, MyApp.renamed" /> 

, 나는 다음 새 예외를 얻을 : 그래서 읽기를 업데이트는 "위치 어셈블리의 매니페스트 정의가 어셈블리 참조와 일치하지 않습니다."

위의 메시지가 의미하는 바를 이해하고 있지만, 새 매니페스트 파일을 생성하지 않고 내 어셈블리의 이름을 바꿀 수 없다는 의미는 아닙니다. 이상적으로는 어셈블리의 이름을 바꾸고 여전히 작동하도록하고 싶습니다. 그 이유는 응용 프로그램이 다양한 "맛"을 가지고 MyApp.Flavour1.exe, MyApp.Flavour2.exe 등의 파일 이름을 사용하고 싶었 기 때문입니다. 그러나이 방법은 각 맛을 위해 다른 목록과 구성 파일을 생성하지 않으면 작동하지 않습니다 그대로

내가 묻는 바로는 파일 이름을 바꾸어도이 예외가 발생하지 않도록 내 어셈블리를 만드는 방법이 있는지 여부입니다.

감사합니다, 닉 불행하게도

+0

KeysSection 유형을 별도의 클래스 라이브러리 프로젝트로 이동하십시오. –

+0

이름을 변경해서는 안되는 별도의 클래스 라이브러리 프로젝트를 의미합니까? –

답변

3

, 당신은이 방법으로 어셈블리 이름을 바꿀 수 없습니다. 자세한 내용은 Loading renamed C# assembly throws FileNotFoundException을 참조하십시오.

대신에 동일하거나 유사한 파일을 포함하는 다른 프로젝트를 만들거나 공용 파일을 별도의 어셈블리로 이동하고 다른 "Flavor"어셈블리에서 공용 어셈블리를 참조 할 수 있습니다.