【问题标题】:Workflow Foundation 4.5 "Expression Activity type 'CSharpValue`1' requires compilation in order to run."Workflow Foundation 4.5“表达式活动类型'CSharpValue`1'需要编译才能运行。”
【发布时间】:2013-01-09 06:00:28
【问题描述】:

我正在处理 WF45 的 Getting Started Tutorial 并遇到了其他人似乎遇到过的问题,但与我遇到的方式不同。我希望其他人可以为我提供解决方案。

当我完成教程时,一切都很好,直到我必须从工作流主机运行它。此时工作流的实例化失败并返回以下消息。

"Expression Activity type 'CSharpValue`1' 需要编译在 命令运行。请确保已编译工作流。”

我已经尝试从Windows Workflow Foundation (WF45) - Getting Started Tutorial 下载源代码,以防我错过了一个步骤,但错误仍然存​​在。

在线阅读似乎需要编译具有嵌入式 C# 表达式的工作流,但据我了解,在使用 VS2012 和工作流设计器时默认会发生这种情况?我试图实现找到 here 的 CompileExpressions 方法,但这没有帮助。我确实读到在预发布版本中存在一个问题,C# 表达式导致了这个问题,但 VB 项目工作正常。对此进行测试,我发现我正在遭受这种确切的情况。 VB 教程运行良好,但 C# 版本失败并出现此异常。

另外,我敢说:这不是我同事机器上的问题,所以我认为这是我机器上的配置问题......

更新和闪避修复:

所以,我已经设法解决了这个问题,虽然我对解决方案不满意,并且很想听听是否有人有正当的理由发生这种情况。

我的解决方法是将 \Framework\v4.0.30319 文件夹中的 Microsoft.Common.targets 文件替换为我同事的同一文件版本。这解决了这个问题。它还破坏了什么还有待观察......

【问题讨论】:

  • 我没有遇到过这个问题。您是否尝试过运行 Nuget 管理器来检查所有依赖项是否都是最新的?

标签: c# workflow-foundation .net-4.5 workflow-foundation-4.5


【解决方案1】:

原来的问题线程已经很老了,但可能对您也有帮助。

我的动态活动遇到了同样的问题,发现文档有误:

这是产生上述错误的代码:

字符串路径 = @"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);

【讨论】:

  • 有趣 - 我在 Pro WF 4.5 中遵循了一个示例并遇到了同样的错误。您的解决方案已解决。
  • 这个答案应该被标记为解决方案。它也对我有用,是真正的救星。
  • 得到同样的错误,但不幸的是,它并没有解决我的问题。奇怪的是,当我在流程图级别定义变量时会发生这种情况,然后我只是尝试在包含序列的自定义活动中将其值增加 1。如果我从自定义活动中删除分配,错误就会消失,但这显然不是解决方案。
【解决方案2】:

这可能对某人有所帮助 - 对我有用的是我在我的一个分配的表达式窗口中有换行符。删除换行符并开始工作。

【讨论】:

    【解决方案3】:

    此错误的另一个原因是表达式的值中有太多 \r\n。

    因此,如果您在“价值”部分有类似这样的分配活动

    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,}
    

    现在按住两个拇指,希望它可以修复错误。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-11-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多