Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/271.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 要在WF中运行同一程序集的多个版本,是否必须对程序集进行强名称?_C#_Assemblies_Workflow Foundation - Fatal编程技术网

C# 要在WF中运行同一程序集的多个版本,是否必须对程序集进行强名称?

C# 要在WF中运行同一程序集的多个版本,是否必须对程序集进行强名称?,c#,assemblies,workflow-foundation,C#,Assemblies,Workflow Foundation,我必须维护一个运行Windows工作流基础的系统,需要对工作流进行更改,所以我在工作流项目的新版本中开发它们,比如版本2.0.0.0 我需要运行版本1.0.0.0工作流,同时运行版本2.0.0.0工作流,并使用最新的部件创建新工作流 我读过关于运行多个版本的工作流的文章,在我的app.config中,我有以下内容: <runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">

我必须维护一个运行Windows工作流基础的系统,需要对工作流进行更改,所以我在工作流项目的新版本中开发它们,比如版本2.0.0.0

我需要运行版本1.0.0.0工作流,同时运行版本2.0.0.0工作流,并使用最新的部件创建新工作流

我读过关于运行多个版本的工作流的文章,在我的app.config中,我有以下内容:

<runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="some.namespace.workflow" publicKeyToken="null" />
        <codeBase version="1.0.0.0" href="legacy/version_1_0_0_0/some.namespace.workflow.dll"/>
      </dependentAssembly>
    </assemblyBinding>
  </runtime>

建议您需要对程序集进行强名称,才能使用
Assembly.Load
方法-这是真的吗?

是的,应该对包含工作流的程序集进行强名称。对我来说,这就像是,用艰苦的方式学习。我创建了数百个WF实例,然后更改了WF结构。完成此操作后,所有旧实例都会失败,因为WF无法将它们反序列化为正确的对象。确保在将WF代码库推入生产之前,已对所有相关程序集进行了强命名。

是的,包含工作流的程序集应进行强命名。对我来说,这就像是,用艰苦的方式学习。我创建了数百个WF实例,然后更改了WF结构。完成此操作后,所有旧实例都会失败,因为WF无法将它们反序列化为正确的对象。请确保在将WF代码库投入生产之前,您已对所有相关程序集进行了强命名。

我这里有一个严重的Bull and Gate案例,系统在没有强命名的情况下运行,结果证明,使用WF改装强名称是一件非常痛苦的事情,因为它所做的所有序列化工作:(我在WF 3.0中编程,并关注您在文章中提到的同一个博客。如果您引用的是同一个博客,那么我假设您也在使用WF 3.0。“程序集的强命名”,是每个WF程序员都应该知道的最重要的一条信息。但不幸的是,没有明确记录或强调它的地方。在您的情况下,您可以做的是使用旧WF结构处理所有现有实例。然后提供新的强命名代码库,并使用该WF实例进一步创建新的in实例。您的假设是正确的。在加载旧的非强名称程序集(版本1.0.0.0)时,我不会有问题吗来自新的强名称程序集?我以前尝试过对所有程序集进行签名,然后尝试将旧的未签名SIG转换为新签名的程序集-但我无法更正LocalService信息-请参阅我认为是的,当您尝试处理使用非强名称as创建的WF实例时,您会遇到问题通过使用强名称程序集进行组装。在您提供的链接中,导致问题的程序集版本相同。我尽了最大努力解决此不兼容问题,但我很快意识到我运气不佳。简而言之,序列化和反序列化的WF实例应该完全相同。任何类型的结构di不同之处,应该在版本控制的帮助下加以注意。我这里有一个严重的Bull and Gate案例,系统在没有强命名的情况下运行,结果证明,用WF改装强名称是一件非常痛苦的事情,因为它所做的所有序列化:(我在WF 3.0中编程,并关注您在文章中提到的同一个博客。如果您引用的是同一个博客,那么我假设您也在使用WF 3.0。“程序集的强命名”,是每个WF程序员都应该知道的最重要的一条信息。但不幸的是,没有明确记录或强调它的地方。在您的情况下,您可以做的是使用旧WF结构处理所有现有实例。然后提供新的强命名代码库,并使用该WF实例进一步创建新的in实例。您的假设是正确的。在加载旧的非强名称程序集(版本1.0.0.0)时,我不会有问题吗来自新的强名称程序集?我以前尝试过对所有程序集进行签名,然后尝试将旧的未签名SIG转换为新签名的程序集-但我无法更正LocalService信息-请参阅我认为是的,当您尝试处理使用非强名称as创建的WF实例时,您会遇到问题通过使用强名称程序集进行组装。在您提供的链接中,导致问题的程序集版本相同。我尽了最大努力解决此不兼容问题,但我很快意识到我运气不佳。简而言之,序列化和反序列化的WF实例应该完全相同。任何类型的结构di不同之处,应在版本控制的帮助下加以注意。
Assembly asm = Assembly.Load("some.namespace.workflow");