2013-01-09 65 views
4

我通過Getting Started Tutorial爲WF45工作,遇到了,看起來已經體驗其他人的問題,但不是在我遇到同樣的方式。我希望別人能爲我解決問題。Workflow Foundation 4.5「表達式活動類型'CSharpValue`1'需要編譯才能運行。」

當我完成本教程,一切都很好,直到我從工作流程主機上運行它。此時工作流的實例化失敗並返回以下消息。

「表達式活動類型'CSharpValue`1'需要編譯 才能運行,請確保工作流程已編譯完成。」

我曾嘗試從Windows Workflow Foundation (WF45) - Getting Started Tutorial下載源,以防萬一我錯過了一個步驟但錯誤仍然存​​在。

看網上似乎與嵌入式C#表達式的工作流程需要得到遵守,但我的理解是這樣使用VS2012和工作流設計時,默認情況下會發生什麼?我試圖實現發現here的CompileExpressions方法,但沒有幫助。我確實讀過在C#表達式導致此問題的預發佈版本中出現問題,但VB項目仍在工作。測試這個,我看到我正在遭受這個確切的情況。 VB教程運行正常,但C#版本失敗,出現此異常。

而且敢我提到它:這不是我的同事的機器上的問題,所以我認爲這是我的機器上的配置問題...

更新&躲閃修復:

所以,我已經設法解決了這個問題,儘管我對解決方案不滿意,並且很想聽聽有沒有人有這樣的理由。

我的定盤來代替我Microsoft.Common.targets與我同事的版本相同的文件的\框架\ v4.0.30319文件夾文件。這已經解決了這個問題。還有什麼,它打破仍有待觀察...

+0

我還沒有經歷過這個問題。您是否嘗試過運行Nuget管理器來檢查您的所有依賴關係是否是最新的? – EverPresent

回答

8

原來的問題線程是很老,但可能是你的發現,無論是有幫助。

我有同樣的問題,我的動態活動,並發現該文檔是錯誤的:

這是產生上述錯誤的代碼:

串路徑= @「myActivity.xaml」;

  Activity activity = ActivityXamlServices.Load(path); 



      IDictionary<string, object> dictionary = new Dictionary<string, object> 
      { 
       { "Arg", 1}, 
      }; 

      IDictionary<string, object> output = WorkflowInvoker.Invoke(activity, dictionary); 

,這是工作的代碼:

串路徑= @ 「myActivity.xaml」;

  ActivityXamlServicesSettings settings = new ActivityXamlServicesSettings 
      { 
       CompileExpressions = true 
      }; 


      Activity activity = ActivityXamlServices.Load(path, settings); 

      IDictionary<string, object> dictionary = new Dictionary<string, object> 
      { 
       { "ArgNumberToEcho", 2}, 
      }; 

      IDictionary<string, object> output = WorkflowInvoker.Invoke(activity, dictionary); 
+0

有意思 - 我在Pro WF 4.5中使用了一個例子,並且遇到了同樣的錯誤。你的解決方案修復了它 – Mayo

+1

這個答案應該被標記爲解決方案。它也適用於我,是一個真正的救星。 –

1

這可能會幫助某人 - 對我有用的是我在Expression窗口中爲我的Assigns分行換行。刪除了換行符並開始工作。

0

此錯誤的另一個原因是表達式中值太多時\ r \ n。

所以,如果你有一個Assign活動,像這樣的東西「值」部分

new myobject(){ 
    param1=val1, 
    param2=val2, 
    param3=val3, 
    param4=val4, 
    param5=val5,  
    param6=val6, 
} 

改成這樣的:

new myobject(){param1=val1,param2=val2,param3=val3,param4=val4,param5=val5,param6=val6,} 

現在保持雙手的大拇指,並希望它修復錯誤。

相關問題