【问题标题】:Compilation Error (Website Not Recognizing .NET 4.5)编译错误(网站无法识别 .NET 4.5)
【发布时间】:2014-08-08 21:18:13
【问题描述】:

我正在尝试让网站识别新版本的 .Net (4.5),以便我可以升级到 DNN (7.2) 的最终版本。我已经安装了 .Net 4.5,但是当我进入 IIS 设置时,将框架切换到 4.5(它实际上说 4.0 bc 版本在技术上是 4.03),然后刷新本地主机我得到错误:

"编译错误

描述:在编译服务此请求所需的资源期间发生错误。请查看以下特定错误详细信息并适当修改您的源代码。

编译器错误消息:CS1703:具有相同标识“System.Web.Extensions,Version=4.0.0.0,Culture=neutral,PublicKeyToken=31bf3856ad364e35”的程序集已被导入。尝试删除其中一个重复的引用。

[没有相关的源代码行]"

到目前为止,尚未在网络上找到任何有用的信息。请帮忙!

更新:web.config 中引用的版本确实说 3.5.0.0 这是问题吗?

【问题讨论】:

  • 您的 web.config 中是否引用了 System.Web.Extensions, Version=4.0.0?
  • "System.Web.Extensions, Version=3.5.0.0" 是引用的版本

标签: compilation .net-4.5 dotnetnuke


【解决方案1】:

在我的例子中,我从 Nuget (Humanizer) 安装了一些东西,它在我的网站中创建了一个名为 packages 的文件夹,它添加了对基本上每个已知的 .net 类的新引用(似乎它需要解决一些依赖项- 很多依赖项!!:)) ),这就是为什么我多次引用了很多 .net 类。我已经完全删除了该包,并连同它一起删除了所有其他依赖项引用。 现在一切都好了..感谢上帝! :)

【讨论】:

    【解决方案2】:

    我遇到了类似的构建错误:

    具有相同标识的程序集 'System.Runtime, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' 已经 进口的。尝试删除其中一个重复的引用。

    问题在于web.config 中的<assemblyBinding>。我不得不改变

    <runtime>
      <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
        <dependentAssembly>
          <assemblyIdentity name="System.Runtime" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
          <bindingRedirect oldVersion="0.0.0.0-2.6.10.0" newVersion="2.6.10.0" />
        </dependentAssembly>
      </assemblyBinding>
    </runtime>
    

    到(注意绑定重定向版本)

    <runtime>
      <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
        <dependentAssembly>
           <assemblyIdentity name="System.Runtime" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
           <bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0" />
         </dependentAssembly>
       </assemblyBinding>
     </runtime>
    

    我认为当我将站点从 asp.net 2.0 升级到 4.0 时添加了原始程序集绑定重定向。出于某种原因,这可以在我的一台机器上运行,但是当我在另一台机器上签出项目时,构建失败了。

    【讨论】:

      【解决方案3】:

      我正在将一个 dnn 站点从 SSMS 2008 移动到 2012 以将 DotNetNuke 4.8.0 站点升级到 5.4.0(我知道它已经过时并且它是 5.4 并且稳定,我可以继续升级路径) 并遇到编译器错误消息。

      编译器错误消息:CS1703:具有相同标识的程序集 'System.Web.Extensions,版本=4.0.0.0,文化=中性, PublicKeyToken=31bf3856ad36e35' 已经被导入。尝试 删除重复的引用之一。

      我在 web.config 中将两个对 3.5 的引用替换为 4.0,在我用 5.4 升级文件替换旧的核心文件后,它立即启动。

      【讨论】:

        【解决方案4】:

        您的网站只需配置为使用 .Net 4.0
        .Net 4.5 是 4.0 版本的扩展。
        根据您用于从 .Net 2.0 切换到 .Net 4.0 的方法,您必须将 web.config 中对 3.5 版的引用替换为对 4.0 版的引用。

        【讨论】:

        • 那么直接在web.config中将引用改成4.0?
        • 我从 .Net 2.0 切换到 4.0 所做的只是安装 .Net 4.0 框架,然后更改 IIS 管理器下的设置
        • 切换到 .Net 4.0 需要您更改应用程序池设置以使用 .Net 4.0 而不是 2.0 版。然后,您的 web.config 也需要升级。您可能可以使用 Visual Studio 或手动执行此操作。
        • 对,我可以进去轻松更改应用程序池设置,然后再更改网络配置文件?
        • 太棒了!这是一个严重的障碍。 :D
        猜你喜欢
        • 2015-02-05
        • 2014-03-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-11-22
        • 2013-06-13
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多