2012년 2월 19일 일요일

.NET 4 상속 보안 규칙 문제

.NET 4 는  이전 버전보다 보안이 무척 강화되었네요. 특히 기존 .NET 2.0 이나 .NET 3.5 를 기준으로 컴파일된 에셈블리의 경우 문제가 생기는 경우가 잇습니다. 특히 소스가 있어서 .NET 4 로 컴파일해서 사용하려고 할 때 다음과 같은 예외가 발생할 수 있습니다.

'Inheritance security rules violated while overriding member'

이 문제는 사실 두 군데서 경험했는데, Ext.Net 을 .NET 4 로 컴파일 후 사용하려고 할 때, Microsoft Enterprise Library 5.0 을 .NET 4 에서 사용하려고 할 때 였습니다.

아무리 찾아도 이 문제에 대한 해법은 보이지 않더니, 오늘 우연히 찾았습니다. 결론적으로는 위와 같은 문제가 생기는 경우, 보안 규칙을 .NET 3.5 이하 버전을 기준으로 하도록 강제로 낮추는 것입니다.

실제 Enterprise Library 관련 보안 예외에 대한 정보는 여기를 보세요

AssemblyInfo.cs 에 다음의 코드를 추가하세요.

[assembly: SecurityRules(SecurityRuleSet.Level1)]


이 코드는 보안규칙을 Level1 으로 낮추어서, 보안 규칙 예외를 발생시키지 않도록 하는 것입니다.



보안 관련하여 .NET 4 로 마이그레이션이 안되었던 분들은 위의 보안 규칙을 낮춘 다음에 다시 시도해 보시기 바랍니다.

댓글 없음: