我对System.Globalization.CultureInfo类和System.Globalization命名空间有这个特殊的问题。我从具有CultureInfo属性的API调用返回一个对象(Languages)。我能够在客户端成功将其设置为IENumerable<Language> languages {get; set;}
,但当我尝试使用var x = model.languages.First().AssociatedCulture.Name
这样的行构建时,我遇到了以下错误:
错误489&#39; System.Globalization.CultureInfo&#39;不包含&#39; EnglishName&#39;的定义没有扩展方法&#39;英文名称&#39;接受第一个类型为'System.Globalization.CultureInfo&#39;可以找到(你错过了使用指令或程序集引用吗?)
错误488类型&#39; System.Globalization.CultureInfo&#39;在未引用的程序集中定义。您必须添加对程序集的引用,System.Globalization,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a&#39;。
以下是为了尝试这一点而运行的一系列行:
var y = new CultureInfo("en"); //works
var z = y.Name; //works
var x = model.languages.First().AssociatedCulture.EnglishName; //error at this line.
我不明白这个幽灵错误。如果有帮助,创建Language.cs的项目使用.NET portable v.4.5。
我尝试将此添加到web.config程序集块但没有骰子。
<compilation defaultLanguage="c#" debug="true" targetFramework="4.5">
<assemblies>
<add assembly="System.Globalization , Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
<add assembly="System.Runtime, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<add assembly="System.Web.Abstractions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<add assembly="System.Web.Routing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<add assembly="System.Data.Linq, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
<add assembly="System.Web.Helpers, Version=2.0.0.0, Culture=neutral,PublicKeyToken=31BF3856AD364E35" />
<add assembly="System.Web.Mvc, Version=4.0.0.0, Culture=neutral,PublicKeyToken=31BF3856AD364E35" />
<add assembly="System.Web.WebPages, Version=2.0.0.0, Culture=neutral,PublicKeyToken=31BF3856AD364E35" />
<add assembly="System.Web.Abstractions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
<add assembly="System.Web.Routing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
<add assembly="System.Web.Mvc, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
</assemblies>
<buildProviders>
<add extension=".cshtml" type="System.Web.WebPages.Razor.RazorBuildProvider, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
</buildProviders>
</compilation>
之前有没有人遇到过这个问题?是不是由.NET portable引起的?
答案 0 :(得分:3)
您需要项目参考到System.Globalization
。
当您修改web.config
文件时,您正在为.aspx
/ .cshtml
个文件生成的动态程序集添加引用,这是独立的与您的项目引用(它们是项目中输出DLL的引用)不同。
通过Solution Explorer在Visual Studio中添加项目引用。