System.Globalization.CultureInfo不包含名称

时间:2016-03-28 19:09:32

标签: c# asp.net .net

我对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引起的?

1 个答案:

答案 0 :(得分:3)

您需要项目参考System.Globalization

当您修改web.config文件时,您正在为.aspx / .cshtml个文件生成的动态程序集添加引用,这是独立的与您的项目引用(它们是项目中输出DLL的引用)不同。

通过Solution Explorer在Visual Studio中添加项目引用。