语言特定资源dll的WF 4错误

时间:2013-05-28 10:04:52

标签: c# workflow-foundation-4

我正在使用WF 4处理重新托管的工作流设计器,我使用此设计器控件的应用程序是一个多语言应用程序,可加载2个或更多语言特定的资源dll。如果我有一个语言的两个附属程序集,如“en”和“en-US”,设计师会抛出这样的异常:

Compiler error(s) encountered processing expression "testExpression". The project already has a reference to assembly MyProject.resources. A second reference to 'C:\Dlls\en-US\MyProject.resources.dll' cannot be added.

这是堆栈跟踪:

   at Microsoft.VisualBasic.Activities.VisualBasicHelper.Compile[T](LocationReferenceEnvironment environment, Boolean isLocationReference)
   at Microsoft.VisualBasic.Activities.VisualBasicHelper.Compile[T](LocationReferenceEnvironment environment)

值得一提的是,当我查看我的附属程序集的属性“详细信息”选项卡时,我意识到它们都是中性语言。我认为它们必须是特定语言,因此应用程序可以识别这些dll不一样。

我可以做些什么来克服这个问题,我可以将dll文件的语言属性更改为特定语言吗?这可以帮忙吗?

1 个答案:

答案 0 :(得分:1)

我遇到了同样的问题,我可以通过定义设计师可以通过其AssemblyContextControlItem“看到”的dll,过滤掉卫星程序集(我不需要)来修复它:

var acci = this.Designer.Context.Items.GetValue<AssemblyContextControlItem>() ?? new AssemblyContextControlItem();
acci.ReferencedAssemblyNames = acci.AllAssemblyNamesInContext
                                   .Select(an => new System.Reflection.AssemblyName(an))
                                   .Where(an => !an.Name.Contains(".resources"))
                                   .ToList();
this.Designer.Context.Items.SetValue(acci);