微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c# – 语言特定资源dll的WF 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文件的Language属性更改为特定于语言吗?这可以帮忙吗?

解决方法

我有同样的问题,我可以通过定义设计师可以通过其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);

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐