Silverlight/Tips

RadControl for Silverlight 4 RC 컴파일 에러 트러블슈팅

길버트리 2010. 3. 24. 19:12
저희 개발팀은 Ribbon바 등 몇몇 멋진 컨트롤 때문에 RadControl을 구입해서 사용하고 있습니다.
며칠 전 개발환경을 Silverlight 4 RC와 Visual Studio 2010 RC로 업그레이드하면서,
기존에 사용하고 있던 컨트롤들이 런타임 에러를 발생시키기 시작했습니다.

RadControl 개발사인 Telerik 사이트에 로그인을 해보면,
Silverlight 4 RC용 빌드가 인스톨러 없이 바이너리만 업로드 되어있는 것을 확인할 수 있습니다.

"아싸"를 외치면 다운로드를 받아서 종전에 쓰던 Silverlight 4 Beta용 Dll들을 갈아치웠는데,
컴파일을 하는 순간 이상한 에러가 뜨는 것이 었습니다.

Error 1 The "CompileXaml" task failed unexpectedly.
System.IO.FileLoadException: Could not load file or assembly 'file:///C:\Program Files\Telerik\00470RadControls_for_Silverlight4_RC_DEV\Dev\Telerik.Windows.Controls.DataVisualization.dll' or one of its dependencies. Operation is not supported. (Exception from HRESULT: 0x80131515)
File name: 'file:///C:\Program Files\Telerik\00470RadControls_for_Silverlight4_RC_DEV\Dev\Telerik.Windows.Controls.DataVisualization.dll' ---> System.NotSupportedException: An attempt was made to load an assembly from a network location which would have caused the assembly to be sandboxed in previous versions of the .NET Framework. This release of the .NET Framework does not enable CAS policy by default, so this load may be dangerous. If this load is not intended to sandbox the assembly, please enable the loadFromRemoteSources switch. See http://go.microsoft.com/fwlink/?LinkId=155569 for more information.
   at System.Reflection.RuntimeAssembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks)
   at System.Reflection.RuntimeAssembly.nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks)
   at System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName assemblyRef, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection, Boolean suppressSecurityChecks)
   at System.Reflection.RuntimeAssembly.InternalLoadFrom(String assemblyFile, Evidence securityEvidence, Byte[] hashValue, AssemblyHashAlgorithm hashAlgorithm, Boolean forIntrospection, Boolean suppressSecurityChecks, StackCrawlMark& stackMark)
   at System.Reflection.Assembly.LoadFrom(String assemblyFile)
   at Microsoft.Silverlight.Build.Tasks.CompileXaml.LoadAssembly(String reference)
   at Microsoft.Silverlight.Build.Tasks.CompileXaml.LoadAssemblies(ITaskItem[] ReferenceAssemblies)
   at Microsoft.Silverlight.Build.Tasks.CompileXaml.Execute()
   at Microsoft.Build.Framework.ITask.Execute()
   at Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute()
   at Microsoft.Build.BackEnd.TaskBuilder.ExecuteInstantiatedTask(ITaskExecutionHost taskExecutionHost, TaskLoggingContext taskLoggingContext, TaskHost taskHost, ItemBucket bucket, TaskExecutionMode howToExecuteTask, Boolean& taskResult)

한동안 씨름을 해보다가 Telerik Forum을 뒤지기 시작했습니다.
다행히 포럼의 Q&A를 읽어보고 해결을 했습니다.

Telerik에서 배포한 dll 파일들이 이유는 모르겠지만 '차단'상태가 되어있어서 그것을 해제해줘야 했습니다.
dll을 하나하나 선택하셔서 다음과 같은 단계를 거쳐 '차단'상태를 해제하시면 됩니다. (21개나 되니 좀 귀찮죠.)

    • 각각의 dll 파일에 오른쪽 클릭을 하고 '속성'을 선택합니다.
    • '읽기전용'에 체크가 되어있으면 체크를 해제합니다.
    • 오른쪽 아래의 '차단해제(K)' 버튼을 눌러줍니다.

이렇게 한 후에야 문제 없이 컴파일이 됩니다. 후=3

포럼 원문: http://www.telerik.com/community/forums/silverlight/general-discussions/how-to-install-sl4-rc-radcontrols.aspx