2009-09-04 3 views
2

나는 매우 간단해야하는 것처럼 보이는 것을 달성하려고 노력 중이다. 워크 플로우가있는 상태 머신 워크 플로우 콘솔 어플리케이션이 있습니다. 나는 그것에 대한 커스텀 액티비티를 생성했다. 이 활동은 결코 다른 곳에서 사용되지 않습니다. 내 워크 플로에서이 활동을 사용하고 싶지만,WF - 별도의 워크 플로 활동 라이브러리에서 사용자 지정 활동을 만들지 않고 어떻게 사용합니까?

  1. 도구 상자에는 나타나지 않습니다.
  2. 솔루션 탐색기에서 워크 플로 디자이너로 끌 수 없습니다.

내 솔루션이 혼란에 빠지기 때문에 별도의 상태 시스템 워크 플로 활동 라이브러리를 만들고 싶지는 않습니다. 제가 말했듯이, 저는 다른 프로젝트에서이 활동을 결코 사용하지 않을 것입니다. 그래서이 프로젝트를이 프로젝트에만 국한시키고 싶습니다 ...하지만 디자이너에게 가져갈 방법을 알 수는 없습니다! 나는 미쳐 가고있다!?

public partial class GameSearchActivity: Activity 
{ 
    public GameSearchActivity() 
    { 
     InitializeComponent(); 
    } 

    public static DependencyProperty QueryProperty = System.Workflow.ComponentModel.DependencyProperty.Register("Query", typeof(string), typeof(GameSearchActivity)); 
    [Description("Query")] 
    [Category("Dependency Properties")] 
    [Browsable(true)] 
    [DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)] 
    public string Query 
    { 
     get 
     { 
      return ((string)(base.GetValue(GameSearchActivity.QueryProperty))); 
     } 
     set 
     { 
      base.SetValue(GameSearchActivity.QueryProperty, value); 
     } 
    } 

    public static DependencyProperty ResultsProperty = System.Workflow.ComponentModel.DependencyProperty.Register("Results", typeof(string), typeof(GameSearchActivity)); 
    [Description("Results")] 
    [Category("Dependency Properties")] 
    [Browsable(true)] 
    [DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)] 
    public IEnumerable<Game_GamePlatform> Results 
    { 
     get 
     { 
      return ((IEnumerable<Game_GamePlatform>)(base.GetValue(GameSearchActivity.ResultsProperty))); 
     } 
     set 
     { 
      base.SetValue(GameSearchActivity.ResultsProperty, value); 
     } 
    } 

    protected override ActivityExecutionStatus Execute(ActivityExecutionContext executionContext) 
    { 
     IDataService ds = executionContext.GetService<IDataService>(); 
     Results = ds.SearchGames(Query); 

     return ActivityExecutionStatus.Closed; 
    } 
} 

감사 : 여기

는 활동에 대한 코드입니다.


편집 :

OK, 그래서 내가 클래스 라이브러리에 콘솔 응용 프로그램에서 프로젝트 형식을 변경하는 경우, 사용자 정의 활동이 도구 상자에 표시되는 것을 발견했습니다. 그러나 이는 허용되지 않습니다. 콘솔/Windows 응용 프로그램이어야합니다.

누구든지이 문제를 해결할 방법을 알고 계십니까?

답변

0

Visual Studio에서 버그를 발견 한 것 같습니다. 해킹 할 수는 있지만, 워크 플로 비트를 클래스 라이브러리에 보관하고 간단한 콘솔 응용 프로그램에서 참조하도록 고려해 보셨습니까? 네, 이것은 EXE와 DLL을 만듭니다. 그러나 이렇게하는 비용은 사소한 것이고 실제로 당신의 레이어를 더 잘 구분하고 (UI 대 비즈니스 로직), 미래에 더 나은 재사용을 가능하게합니다.

0

저는이 아이디어를 확인할 수 없지만 디자이너의 코드 파일에 들어가서 수동으로 최소 코드를 삽입 한 다음 디자이너에게 돌아가서 그것이 있는지 확인하려고 했습니까?

디자이너가 XAML 또는 C#을 만들었는지 여부는 알 수 없지만 XAML이라고해도 디자이너가 XML을 편집 할 수 있어야합니다.

0

프로젝트를 작성하기 만하면됩니다. 컴파일이 성공적으로 완료되면 도구 상자에 표시됩니다. 디자이너는 마지막 성공적인 빌드가 무엇인지에 관계없이 작업을 읽습니다.

관련 문제