2012-11-02 10 views
1

다음은 자체 호스팅 디자이너에서 동일한 문제를 해결하는 동안 발견되는 시나리오입니다. 유형이있는 라이브러리 프로젝트를 만듭니다. 내 것이 이거 야.이 버그 또는 WF 디자이너와 함께 뭔가가 누락되었습니다

namespace RaceEventLibrary 
{ 
    public class Registration 
    { 
     public string Name { get; set; } 
     public int Age { get; set; } 
     public string EventName { get; set; } 
    } 
} 

이제 Workflow 4.5 콘솔 앱 (또는 서비스, 상관 없습니다)을 작성하십시오. 라이브러리 프로젝트를 참조하십시오. 디자이너에 시퀀스를 넣은 다음이 라이브러리의 InArgument를 내 케이스에 등록하십시오. 모두 괜찮습니다. 디자이너는 행복합니다.

다음으로 동일한 동일한 프로젝트를 만들려면 동일한 라이브러리를 참조하십시오. 이제 첫 번째 프로젝트에서 xaml 파일을 열면됩니다. 붐, 타입을 찾을 수 없습니다.

System.Xaml.XamlException : ''등록 '속성의'InArgument (r : Registration) '을 확인할 수 없습니다.' XAML에서

이다 : 자기 호스팅 디자이너와

<x:Members> 
     <x:Property Name="registration" Type="InArgument(r:Registration)" /> 
    </x:Members> 

preceded by 
    xmlns:r="clr-namespace:RaceEventLibrary;assembly=RaceEventLibrary" 

나는이 문제에 많은 변화를 발견하지 않았습니다와 디자이너에로드 라이브러리 어셈블리를 얻기 위해 다양한 방법을 시도했지만, 기쁨.

이 문제를 해결하는 방법에 대한 제안 사항이 있으십니까?

+0

[Fusion log viewer.] (http://msdn.microsoft.com/en-us/library/e74a18c4.aspx)를 사용하여 디버깅 할 수 있습니다. 관리자로 실행하고 전원을 켜십시오. 디버깅을 시도하기 전에 로그 및 재부팅을 수행하십시오. CLR에서 어셈블리를 찾고있는 위치와 버전을 확인할 수 있습니다. 또한 CLR에서 찾을 수없는 이유를 확인할 수 있습니다 (설치된 경우에도 해당). – Will

+0

매우 이상합니다. 당신이 제안하고 많은 로그를 보았습니다. 그러나이 문제는 없습니다. 작성한 이래로 나는 문제가되는 워크 플로우를 솔루션에 가져 왔고 디자이너에서 그렇게 열 수 있습니다. obj 폴더 아래의 모든 파일이 거기에 있다는 사실에 놀랄 일이 아닙니다. 계속 될 것이지만 제안에 감사드립니다. –

+0

잠깐, 방금 솔루션에없는 파일을여셨습니까? 그건 지원되지 않습니다, AFAIK. – Will

답변

0

WF4에는 어셈블리를로드하는 자체 방법이 있으며 표준 .NET Framework와 완전히 동일하지는 않습니다. 론 제이콥스 (Ron Jacobs)는 흥미로운 수의 게시물을 작성했습니다. 시작하려면 here을 참조하십시오.

실제로 워크 플로우를 워크 플로우 디자이너에로드하는 방법은 언급하지 않았습니다. 이 작업에는 몇 가지 방법이 있습니다. ActivityXamlServices.CreateBuilderReader()를 사용할 때 어떤 어셈블리가 필요한지 XamlSchemaContext을 사용하여 지정할 수 있습니다. 그렇게하면 워크 플로를로드 할 수 있습니다.

+0

방금 ​​WorkflowDesigner.Load (workflowFileName)를 사용하고있었습니다. 워크 플로우를로드하라는 제안을 사용하여 아래의 어셈블리를 참조하면됩니다 :'var reader = new XamlXmlReader (System.IO.File.OpenText (_workflowName)); 어셈블리 어셈블리 = Assembly.LoadFrom (@ "somepath \ RaceEventLibrary.dll을 "); IList의 어셈블리 = 새로운 목록 () { 조립 } var에 WF = ActivityXamlServices.CreateBuilderReader (리더, 새로운 XamlSchemaContext (어셈블리)); WorkflowDesigner.Load (WF)에 대한' –

+0

죄송합니다 이 유일한 문제는 디자이너가 부하에서 충실도를 잃었거나 일부 경우에 빈 창이 나왔다는 것입니다. 레이아웃 정보 (생각하는 점)가 손실 된 것 같습니다. –