2009-11-19 2 views
2

프로젝트가있어서 강력한 실행 파일 이름을 지정하고 싶습니다.Visual C#에서 강력한 명명 된 어셈블리가 작동하지 않습니다.

CSC .../키 파일 : 명령 줄을 사용하여 잘 작동을 컴파일 ...

을하지만 난 IDE 이렇게하고 싶은, 그래서이 찾을 : 프로젝트 속성의`서명에 '탭에는'어셈블리 서명 '옵션이 있습니다. 나는 그것을 틱하고 내 키 쌍 파일로 직접 간다. 내가 디버그를 미사일 후, FileNotFound 예외가 무관심 장소에서 나타난다 : 응용 프로그램이 내가이 configureation을 직전에하고 있던

 protected override Type d(Stream st) 
     { 
      BinaryFormatter bf = new BinaryFormatter(); 
      return (Type)bf.Deserialize(st); 
     } 

(내 응용 프로그램이 직렬화를 사용).

답변

2

서명되지 않은 응용 프로그램으로 작성된 데이터를 다시 읽고 있다고 가정합니다. 이 데이터는 이제 호환되지 않습니다. 디시리얼라이저는 유형을 일치시킬 수 없습니다.

이 문제를 어떻게 해결해야할지 모르겠지만 서명 된 애플리케이션을 작성하고 읽음으로써이를 먼저 확인할 수 있습니다.

직렬화 된 모든 유형을 별도의 어셈블리에 보관하는 것이 좋습니다.

+0

감사합니다. 그게 전부 야. 이 파일은 강력한 지명 된 어셈블리를 사용하기 전에 작성되어 사용되었습니다. 이제 나는 새 것과 오래된 것을 비교했다. 그들은 분명히 다르다. 나는 강하게 지어진 어셈블리에서 사용되는 파일이 일반 파일과 다르다는 것을 알지 못했습니다. – fwonce

1

두 응답 모두 우수했습니다.
내 1 펜스 추가하기 : TYPE FIDELITY 이진법은 XML 또는 다른 유형의 직렬화가 아닌 이진 직렬화를 통해서만 가능합니다.

+0

고마워요! 귀하의 정보는 유용합니다. – fwonce

관련 문제