[WPF] WPFプロジェクトなのに、Silverlight SDK がないと怒られることがある

2016年6月14日

 ある日、マシン A で作成した Visual Studio 2012 の WPF のプロジェクトを、別のマシン B で開き、WPF デザイナを表示しようとしたら、「Microsoft Silverlight SDK 5.0 は見つかりませんでした」なるエラーが表示され、画面をみることができないという自体に出くわした・・・(汗

 マシン A では問題なく画面は表示されるのに・・・。もちろん マシン A, B ともに Visual Studio のバージョンは同一です。

 「デザイナーを再度読み込」んでみてもダメ。ただ、この状態でもビルドは通る。純粋にデザイナーの表示がダメなだけ。
 エラーの詳細をみても確かに Silverlight に関わるエラーであることには間違いない。でもこのプロジェクト、Silverlight ではなく WPF なんですけど・・・

System.NotSupportedException
Microsoft Silverlight SDK 5.0 は見つかりませんでした。正しいバージョンの Microsoft Silverlight SDK がインストールされていることを確認してください。
   場所 Microsoft.Expression.DesignHost.Isolation.Remoting.STAMarshaler.WaitForCompletion(NestedCallContext nestedCallContext, BlockingCall call, WaitHandle timeoutSignal)
   場所 Microsoft.Expression.DesignHost.Isolation.Remoting.STAMarshaler.MarshalOutSynchronous(Action action, Int32 targetApartmentId, WaitHandle aborted, WaitHandle timeoutSignal)
   場所 Microsoft.Expression.DesignHost.Isolation.Remoting.STAMarshaler.MarshalOut(Action action, Int32 targetApartmentId, WaitHandle aborted, CallSynchronizationMode syncMode, WaitHandle timeoutSignal)
   場所 Microsoft.Expression.DesignHost.Isolation.Remoting.ThreadMarshaler.MarshalOut[TValue](RemoteHandle`1 targetObject, Action action, CallSynchronizationMode syncMode)
   場所 Microsoft.Expression.DesignHost.Isolation.Remoting.ThreadMarshaler.MarshalOut[TResult,TValue](RemoteHandle`1 targetObject, Func`2 func, CallSynchronizationMode syncMode)
   場所 Microsoft.Expression.DesignHost.Isolation.Remoting.LocalDesignerService.CreateDesignerImpl(IHostSourceItem item, IHostTextEditor editor, RemoteCancellationToken remoteCancelToken)
   場所 Microsoft.Expression.DesignHost.Isolation.Remoting.LocalDesignerService.<>c__DisplayClass12.b__11(RemoteCancellationToken remoteToken)
   場所 Microsoft.Expression.DesignHost.Isolation.Remoting.LocalDesignerService.CallWithCancellation[TResult](CancellationToken cancelToken, Func`2 func)
   場所 Microsoft.Expression.DesignHost.Isolation.Remoting.LocalDesignerService.Microsoft.Expression.DesignHost.IDesignerService.CreateDesigner(IHostSourceItem item, IHostTextEditor editor, CancellationToken cancelToken)
   場所 Microsoft.Expression.DesignHost.IsolatedDesignerService.IsolatedDesignerView.CreateDesignerViewInfo(CancellationToken cancelToken)

System.NotSupportedException
Microsoft Silverlight SDK 5.0 は見つかりませんでした。正しいバージョンの Microsoft Silverlight SDK がインストールされていることを確認してください。

Server stack trace: 
   場所 Microsoft.Expression.DesignHost.Isolation.Remoting.STAMarshaler.WaitForCompletion(NestedCallContext nestedCallContext, BlockingCall call, WaitHandle timeoutSignal)
   場所 Microsoft.Expression.DesignHost.Isolation.Remoting.STAMarshaler.MarshalIn(Action action, Int32 targetApartmentId)
   場所 Microsoft.Expression.DesignHost.Isolation.Remoting.ThreadMarshaler.MarshalIn(IRemoteObject targetObject, Action action)
   場所 Microsoft.Expression.DesignHost.Isolation.Remoting.ThreadMarshaler.MarshalIn[TResult](IRemoteObject targetObject, Func`1 func)
   場所 Microsoft.Expression.DesignHost.Isolation.Remoting.RemoteDesignerService.Microsoft.Expression.DesignHost.Isolation.Remoting.IRemoteDesignerService.CreateDesigner(IRemoteHostSourceItem remoteItem, IRemoteHostTextEditor remoteEditor, IRemoteCancellationToken remoteToken)
   場所 System.Runtime.Remoting.Messaging.StackBuilderSink._PrivateProcessMessage(IntPtr md, Object[] args, Object server, Object[]& outArgs)
   場所 System.Runtime.Remoting.Messaging.StackBuilderSink.SyncProcessMessage(IMessage msg)

Exception rethrown at [0]: 
   場所 System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)
   場所 System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)
   場所 Microsoft.Expression.DesignHost.Isolation.Remoting.IRemoteDesignerService.CreateDesigner(IRemoteHostSourceItem remoteItem, IRemoteHostTextEditor remoteEditor, IRemoteCancellationToken cancelToken)
   場所 Microsoft.Expression.DesignHost.Isolation.Remoting.LocalDesignerService.<>c__DisplayClass8.b__6(IRemoteDesignerService d)
   場所 Microsoft.Expression.DesignHost.Isolation.Remoting.ThreadMarshaler.<>c__DisplayClass4`2.b__3()
   場所 Microsoft.Expression.DesignHost.Isolation.Remoting.STAMarshaler.Call.InvokeWorker()

System.NotSupportedException
Microsoft Silverlight SDK 5.0 は見つかりませんでした。正しいバージョンの Microsoft Silverlight SDK がインストールされていることを確認してください。
   場所 Microsoft.Expression.DesignHost.Isolation.Remoting.STAMarshaler.WaitForCompletion(NestedCallContext nestedCallContext, BlockingCall call, WaitHandle timeoutSignal)
   場所 Microsoft.Expression.DesignHost.Isolation.Remoting.STAMarshaler.MarshalOutSynchronous(Action action, Int32 targetApartmentId, WaitHandle aborted, WaitHandle timeoutSignal)
   場所 Microsoft.Expression.DesignHost.Isolation.Remoting.STAMarshaler.MarshalOut(Action action, Int32 targetApartmentId, WaitHandle aborted, CallSynchronizationMode syncMode, WaitHandle timeoutSignal)
   場所 Microsoft.Expression.DesignHost.Isolation.Remoting.ThreadMarshaler.MarshalOut[TValue](RemoteHandle`1 targetObject, Action action, CallSynchronizationMode syncMode)
   場所 Microsoft.Expression.DesignHost.Isolation.Remoting.ThreadMarshaler.MarshalOut[TResult,TValue](RemoteHandle`1 targetObject, Func`1 func, CallSynchronizationMode syncMode)
   場所 Microsoft.Expression.DesignHost.Isolation.Remoting.RemoteWrapper`1.Invoke[T](Func`2 action)
   場所 Microsoft.Expression.DesignHost.Isolation.Remoting.RemoteHostPlatformService.Microsoft.Expression.DesignHost.IHostPlatformService.GetProperty(String frameworkSpec, String propertyName)
   場所 Microsoft.Expression.DesignSurface.PlatformContext.GetProperty(String frameworkSpec, String propertyName)
   場所 Microsoft.Expression.Platform.PlatformService.GetProperty(String frameworkSpec, String propertyName)
   場所 Microsoft.Expression.DesignSurface.Assemblies.SilverlightAssemblyResolver.GetSilverlightPlatformPaths(String assemblyName)
   場所 Microsoft.Expression.DesignSurface.Assemblies.SilverlightAssemblyResolver.LoadSilverlightPlatformAssembly(String assemblyName)
   場所 Microsoft.Expression.DesignSurface.Assemblies.SilverlightAssemblyResolver.ResolveRuntimeAssembly(AssemblyName assemblyName)
   場所 Microsoft.Expression.Platform.PlatformService.ResolvePlatformAssembly(AssemblyName assemblyName)
   場所 Microsoft.Expression.DesignSurface.DesignerContext.PlatformAssemblyResolver.ResolveAssembly(AssemblyName assemblyName)
   場所 Microsoft.Expression.DesignSurface.Assemblies.AssemblyService.ResolveAssembly(AssemblyName assemblyName, IEnumerable`1 assemblyResolverTable)
   場所 Microsoft.Expression.DesignSurface.Assemblies.AssemblyService.ResolveAssembly(String assemblyPath, String assemblyFullName, String projectPath, IHostShadowCopyTask hostShadowCopyTask)
   場所 Microsoft.Expression.DesignSurface.Assemblies.ProjectAssemblyResolver.GetAssemblyInformation(String path, String assemblyFullName)
   場所 Microsoft.Expression.DesignSurface.Assemblies.ProjectAssemblyResolver.GetAssemblyInformation(IHostReferenceItem reference)
   場所 Microsoft.Expression.DesignSurface.Assemblies.ProjectAssemblyResolver.UpdateAssemblyReferences(IEnumerable`1 referencesToUpdate)
   場所 Microsoft.Expression.DesignSurface.Assemblies.ProjectAssemblyResolver..ctor(IHostProject project, DesignerContext designerContext)
   場所 Microsoft.Expression.DesignSurface.Assemblies.ProjectAssemblyService.<.ctor>b__0(IHostProject project)
   場所 Microsoft.Expression.Utility.Collections.SuspendableKeyedCollection`2.CreateItems(TKey key)
   場所 System.Collections.Concurrent.ConcurrentDictionary`2.GetOrAdd(TKey key, Func`2 valueFactory)
   場所 Microsoft.Expression.Utility.Collections.SuspendableKeyedCollection`2.GetItem(TKey key)
   場所 Microsoft.Expression.DesignSurface.Assemblies.ProjectAssemblyService.GetProjectAssemblyResolver(IHostProject project)
   場所 Microsoft.Expression.DesignSurface.Project.ProjectContextBase.Initialize()
   場所 Microsoft.Expression.DesignSurface.Project.XamlProjectContext.Initialize()
   場所 Microsoft.Expression.DesignSurface.Project.ProjectContextManager.GetProjectContext(IHostProject project, IPlatform platform, Boolean create)
   場所 Microsoft.Expression.DesignSurface.Project.ProjectContextManager.d__d.MoveNext()
   場所 Microsoft.Expression.DesignSurface.Project.ProjectContextBase.XamlProjectMetadata.GetAssemblyForTypeResolve(String assemblyName)
   場所 Microsoft.Expression.DesignModel.Metadata.TypeResolver.GetType(ClrNamespaceIdentifier clrNamespaceIdentifier, String typeName)
   場所 Microsoft.Expression.DesignModel.Metadata.TypeResolver.ResolveType(ITypeId typeId)
   場所 Microsoft.Expression.DesignModel.Metadata.ProjectNeutralTypesAttributeTable.ResolveType(ITypeResolver typeResolver, ITypeId typeId)
   場所 Microsoft.Expression.DesignModel.Metadata.ProjectNeutralTypesAttributeTable.RegisterDataGridAttributeTable(ITypeResolver typeResolver)
   場所 Microsoft.Expression.WpfPlatform.WpfPlatform.RefreshProjectSpecificMetadata(ITypeResolver typeResolver, ITypeMetadataFactory typeMetadataFactory)
   場所 Microsoft.Expression.DesignSurface.Project.ProjectContextBase.Initialize()
   場所 Microsoft.Expression.DesignSurface.Project.XamlProjectContext.Initialize()
   場所 Microsoft.Expression.DesignSurface.Project.ProjectContextManager.GetProjectContext(IHostProject project, IPlatform platform, Boolean create)
   場所 Microsoft.Expression.DesignSurface.Project.ProjectContextManager.GetSourceItemContext(IHostSourceItem sourceItem)
   場所 Microsoft.Expression.DesignSurface.DesignerService.CreateDesigner(IHostSourceItem item, IHostTextEditor editor, CancellationToken cancelToken)
   場所 Microsoft.Expression.DesignHost.Isolation.Remoting.RemoteDesignerService.<>c__DisplayClass10.<>c__DisplayClass12.b__f(CancellationToken cancelToken)
   場所 Microsoft.Expression.DesignHost.Isolation.Remoting.RemoteDesignerService.CallWithCancellation[TResult](IRemoteCancellationToken remoteToken, Func`2 func)
   場所 Microsoft.Expression.DesignHost.Isolation.Remoting.RemoteDesignerService.<>c__DisplayClass10.b__e()
   場所 Microsoft.Expression.DesignHost.Isolation.Remoting.ThreadMarshaler.<>c__DisplayClass16`1.b__15()
   場所 Microsoft.Expression.DesignHost.Isolation.Remoting.STAMarshaler.Call.InvokeWorker()

System.NotSupportedException
Microsoft Silverlight SDK 5.0 は見つかりませんでした。正しいバージョンの Microsoft Silverlight SDK がインストールされていることを確認してください。

Server stack trace: 
   場所 Microsoft.Expression.DesignHost.Isolation.Remoting.STAMarshaler.WaitForCompletion(NestedCallContext nestedCallContext, BlockingCall call, WaitHandle timeoutSignal)
   場所 Microsoft.Expression.DesignHost.Isolation.Remoting.STAMarshaler.MarshalIn(Action action, Int32 targetApartmentId)
   場所 Microsoft.Expression.DesignHost.Isolation.Remoting.ThreadMarshaler.MarshalIn(IRemoteObject targetObject, Action action)
   場所 Microsoft.Expression.DesignHost.Isolation.Remoting.ThreadMarshaler.MarshalIn[TResult](IRemoteObject targetObject, Func`1 func)
   場所 Microsoft.Expression.DesignHost.Isolation.Remoting.RemoteWrapper`1.Invoke[T](Func`2 action)
   場所 Microsoft.Expression.DesignHost.Isolation.Remoting.RemoteHostPlatformService.Microsoft.Expression.DesignHost.IHostPlatformService.GetProperty(String frameworkSpec, String propertyName)
   場所 System.Runtime.Remoting.Messaging.StackBuilderSink._PrivateProcessMessage(IntPtr md, Object[] args, Object server, Object[]& outArgs)
   場所 System.Runtime.Remoting.Messaging.StackBuilderSink.SyncProcessMessage(IMessage msg)

Exception rethrown at [0]: 
   場所 System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)
   場所 System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)
   場所 Microsoft.Expression.DesignHost.IHostPlatformService.GetProperty(String frameworkSpec, String propertyName)
   場所 Microsoft.Expression.DesignHost.Isolation.Remoting.RemoteHostPlatformService.<>c__DisplayClass1.b__0(IHostPlatformService s)
   場所 Microsoft.Expression.DesignHost.Isolation.Remoting.RemoteWrapper`1.<>c__DisplayClass4`1.b__3()
   場所 Microsoft.Expression.DesignHost.Isolation.Remoting.ThreadMarshaler.<>c__DisplayClass7`2.b__6()
   場所 Microsoft.Expression.DesignHost.Isolation.Remoting.STAMarshaler.Call.InvokeWorker()

System.NotSupportedException
Microsoft Silverlight SDK 5.0 は見つかりませんでした。正しいバージョンの Microsoft Silverlight SDK がインストールされていることを確認してください。
   場所 Microsoft.Expression.HostUtility.Platform.SilverlightDomainFactory.get_ReferenceAssembliesPath()
   場所 Microsoft.Expression.HostUtility.Platform.HostPlatformService.GetProperty(String frameworkSpec, String propertyName)
   場所 Microsoft.Expression.DesignHost.Isolation.Remoting.RemoteHostPlatformService.<>c__DisplayClass1.b__0(IHostPlatformService s)
   場所 Microsoft.Expression.DesignHost.Isolation.Remoting.RemoteWrapper`1.<>c__DisplayClass4`1.b__3()
   場所 Microsoft.Expression.DesignHost.Isolation.Remoting.ThreadMarshaler.<>c__DisplayClass16`1.b__15()
   場所 Microsoft.Expression.DesignHost.Isolation.Remoting.STAMarshaler.Call.InvokeWorker()

 そういえばこのプロジェクト。PCL (Portable Class Library) を参照していたのでした。でも、Silverlight 5 ではなく、Silverloight 4 を要件に設定しています。

 SDK がないというので、とりあえずインストール状況を確認してみます。すると。
 マシン A のインストール状況。SDK がある。

 マシン B のインストール状況。SDK がない・・・(汗

 原因はこれですか。同じようにインストールしていたはずなのに。だれだ、マシン B から SDK Uninstall したのは・・・

 いやいや、そもそも PCL を採用したのは、このライブラリはプラットフォーム依存を排除したかったからで。なのに SDK がないとデザイナーが開けなくなるとかアリ? _| ̄|○
 そして、PCL を普通のライブラリ(DLL)に作り直して参照設定し直したら、無事デザイナーは例外を吐かなくなりました・・・(汗 
 ちなみに、設定を変えることで「PCL から普通の DLL にする」といったことは出来ませんでした。(できるのかもしれないけどやり方が分からなかった)

 教訓。ランタイムはポータブルでも開発環境はポータブルではない場合がある(追加のSDKをインストールする必要がある)点に注意(大汗






カテゴリー: WPF

Follow comments via the RSS Feed | Leave a comment | Trackback URL

コメントを投稿する

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)


«   »
 
Powered by Wordpress and MySQL. Theme by Shlomi Noach, openark.org