2009-10-12 3 views
4

Silverlight 응용 프로그램과 일반 C# WCF 서비스에서 모두 사용하는 Silverlight 클래스 라이브러리가 있습니다.한 응용 프로그램에서 다른 버전의 DLL 사용

Silverlight 응용 프로그램은 WCF 서비스를 호출하여 일부 데이터를 읽거나 쓸 수 있습니다. 그들은 공통 라이브러리를 사용하여 전달되는 데이터를 조작합니다.

모든 것이 잘 컴파일,하지만 우리는 응용 프로그램을 실행할 때 웹 서비스는 실버 라이브러리에 대한 호출이됩니다 다음과 같은 오류가 발생합니다 : = 2.0 버전을

는 "파일이나 어셈블리 '에서 System.Xml를로드 할 수 없습니다를 .5.0, 문화 = 중립, PublicKeyToken = 7cec85d7bea7798e '또는 해당 종속성 중 하나. 지정한 파일을 찾을 수 없습니다. "

Silverlight 클래스 라이브러리가 System.Xml의 v2.0.5를 참조하지만 WCF 서비스가 System.Xml의 v3.5를 참조하기 때문입니다.

두 버전을 모두 참조 할 수 있고 오류가 표시되지 않는 방법이 있습니까?

+0

이것은별로 의미가 없습니다. WCF는 Silverlight와 다른 런타임 엔진에서 실행됩니다. –

+0

또한 Silverlight는 클라이언트와 서버의 WCF에서 실행됩니다. 이 오류는 WCF 서버 부분과 관련이 있다고 가정하므로 서비스 계약이 강력하게 형식화 된 값이나 WCF에서 다시 만들 수없는 값 집합을 유지하지 않는 한 Silverlight와 관련이 없습니다. 이 경우 서비스의 양 측면에서 적절하게 지원되는 유형을 포함하도록 계약을 변경해야합니다. –

답변

2

공유 라이브러리에 대한 소스를 제공하면 가장 좋은 방법은 SL에 한 번, WCF에 대해 한 개, 공유 라이브러리 소스에 대해 하나씩입니다. 그런 다음 Visual Studio의 링크로 추가 옵션을 사용하여 SL 및 WCF 프로젝트의 공유 라이브러리에서 소스 파일을 참조 할 수 있습니다. 그런 다음 원본 파일을 올바른 .NET 라이브러리 버전에 맞게 컴파일 할 수 있습니다. 이것에 대한 좋은 점은 소스가 참조 사본이되어 있기 때문입니다. 공유 라이브러리를 변경하면 SL과 WCF 프로젝트가 중복되지 않고 업데이트됩니다.

우리는이 접근법을이 제품에서 사용 해왔고 아주 잘 작동합니다.

HTH

+0

감사합니다. Andy, That가 문제를 해결했습니다. – Zak

2

아니요 CLR에서는 지원되지 않습니다 (좋은 해킹이없는 경우). 그 이유는 CLR의 근본적인 한계 때문입니다. 즉 하나의 mscorlib 만 CLR의 인스턴스에로드 할 수 있습니다.

System.Xml.dll의 버전이 2 개인 경우 2 가지 버전의 mscorlib가 참조됩니다. 이것은 특히 mscorlib와 BCL DLL이 근본적으로 다른 Silverlight 및 Silverlight가 아닌 프로젝트에 해당됩니다. 따라서 두 번째 System.Xml DLL을로드하려고하면 결국 실패 할 다른 mscorlib를로드하고로드합니다.

"해킹하지 않고"추가 한 이유는 바인딩 리디렉션입니다. Silverlight System.Xml을 전체 System.Xml로 리디렉션하여 app.config에 삽입하여 기능적으로로드 할 수있는 멋진 바인딩 마법이 있습니다. 그러나 이것은 프로그램이 실행될 때 거의 확실하게 오류를 줄여 줄 것입니다.

+0

.NET 4.0에는 이것이 적용되지 않습니까? – ParmesanCodice

+0

이것은 의미가 없습니다. Silverlight는 Silverlight 플러그인 (달빛)에서 클라이언트에서 실행되는 반면 WCF 서비스는 서버에서 실행됩니다. 여기에는 동일한 CLR을 다시 사용할 필요가 없습니다. 무엇이든이 서비스 계약 및 데이터 형식 마샬링 문제입니다. –

+0

@ 제프,이게 어떻게 이해가 안되니? 사용자가 두 번째 시스템을로드하는 중에 오류가 발생했다고합니다.Xml을 처리하고 버전 번호가 명확하게 Silverlight 버전임을 나타냅니다. 나는 시나리오가 이상하다는 데 동의하지만 OP가 증상을 말하고있는 것과 함께 가야한다. OP에서 설명한 시나리오에 대한 분석이 100 % 정확하다고 생각합니다. 왜 내가 downvote를 여기에서 얻고 있는지 명확히하지 않는다. – JaredPar

관련 문제