加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-15 21:51:43 所属栏目:百科 来源:网络整理
导读:我正在使用WF 4处理一个重新托管的工作流设计器,我的应用程序使用这个设计器控件是一个多语言应用程序,可以加载2个或更多语言特定的资源dll.如果我有一个语言的两个附属程序集,如“en”和“en-US”,设计师会抛出这样的异常: Compiler error(s) encountered
我正在使用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:Dllsen-USMyProject.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);

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读