【问题标题】:c# System.guid does not contain a definition for Parsec# System.guid 不包含 Parse 的定义
【发布时间】:2011-04-22 16:31:28
【问题描述】:
AT.Anchor = System.Guid.Parse(DataBinder.Eval(e.Item.DataItem, "Anchor").ToString());

这会抛出:

'System.Guid' does not contain a definition for 'Parse'

当我尝试构建它时。但它运行良好,知道如何更好地处理这个问题吗?

编辑

这是我的 web.config 的一部分

    <compilation defaultLanguage="c#" debug="true">
        <assemblies>
            <add assembly="System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
            <add assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
            <add assembly="System.Data.DataSetExtensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
            <add assembly="System.Xml.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
            <add assembly="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
            <add assembly="System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
            <add assembly="System.Data.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
            <add assembly="System.ServiceModel.Web, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
            <add assembly="System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
            <add assembly="System.Data.Linq, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
            <add assembly="System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
            <add assembly="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
            <add assembly="System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
            <add assembly="System.Web.ApplicationServices, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
            <add assembly="MySql.Data, Version=6.3.6.0, Culture=neutral, PublicKeyToken=C5687FC88969C44D"/>
            <add assembly="MySql.Data.Entity, Version=6.3.6.0, Culture=neutral, PublicKeyToken=C5687FC88969C44D"/>
            <add assembly="MySql.Web, Version=6.3.6.0, Culture=neutral, PublicKeyToken=C5687FC88969C44D"/></assemblies>
    </compilation>

【问题讨论】:

    标签: c# asp.net casting guid


    【解决方案1】:

    Guid.TryParse 是 .NET 4 的一部分。确保您正在构建和运行 .NET 4,它应该没问题。

    【讨论】:

    • @Jon,感谢您的回答,我以为我是(运行网站时运行良好,只是无法构建)。如何快速检查我正在运行的版本?应用程序池是 .net 4。
    • @Tom:听起来你是在 running 反对 4... 但请检查你在项目中 building 反对的版本属性。
    • 这就是 Jon 所说的“运行对抗”部分——它在 IIS 中运行,因此应用程序池正在控制它运行的版本。您还必须检查 Visual Studio 中项目的配置属性。右键单击项目,选择属性,然后查看应用程序和构建设置。您应该会看到一个 Target Framework 属性。这就是你设置它的构建对象的地方。
    • @Charlie,在我的项目构建设置中,它位于 .net 4 上
    • 嗯。你的 Web.config 呢?在 部分(如果存在)中,是否有对早于 4.0 的程序集的引用? 部分呢?那里有重定向吗?
    【解决方案2】:

    IIS 应用程序池的一个特点是在应用程序池中启动的第一个 Web 应用程序决定了该应用程序池使用的 CLR 版本。

    如果启动的第一个应用是为 .Net v1.1 构建的,那么之后启动的每个应用都将针对 v1.1 运行时运行。如果接下来开始的应用程序是为 4.0 运行时构建的,那么您不太可能找到快乐。有些人可能认为这是一个功能。或者不。

    在这种情况下,“开始”表示“接收 HTTP 请求”。这意味着您获得的运行时版本本质上是随机的:它取决于客户端在弹回应用程序池或弹回 IIS 之后执行的操作以及顺序。

    您需要小心地将您的网络应用程序放入适当的应用程序池中。将每个 Web 应用程序捆绑到其自己的应用程序池中,或者为每个 CLR 版本设置一个应用程序池,并注意将您的 Web 应用程序放入正确的应用程序池中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多