【问题标题】:ASP.NET wrong inheritance publishable in .NET 3.5 but not in 4.0?ASP.NET 错误继承可在 .NET 3.5 中发布,但不能在 4.0 中发布?
【发布时间】:2012-03-14 01:32:06
【问题描述】:

我将我的 ASP.NET 项目从 3.5 迁移到 4.0(VS2008 到 VS2010),当我尝试发布网站时遇到了这个错误:

类型 'TYPE' 存在于两者中 'c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET 文件...\App_Web_1z57x8dg.dll' 和 'c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET 文件...\App_Web_ofaxwney.dll'

但是,当我回到我的 .NET 3.5/VS2008 项目时,它可以毫无问题地发布。我发现了一些类似问题的 SO 问题,this 特别提供了非常丰富的信息。我做了batch="false" 选项,但仍然遇到问题。

一定存在循环引用的问题。回到 .NET 4.0 项目,我开始更仔细地查看错误并发现许多类似的情况:

<%@ Control Language="C#" AutoEventWireup="true" CodeFile="ViewPresentationTabControl.ascx.cs" Inherits="Common_UserControls_PresentationTabControl" %>

如果你仔细观察,Inherits 标签指向了错误的控件。这是复制和粘贴代码的受害者(由我们继承此项目的离岸承包商提供)。

我检查了所有错误并修复了明显的错误,该项目可以在 .NET 4.0/VS2010 中发布。

这篇冗长的帖子的目的是为什么 3.5 允许这种情况发生,而不是 4.0?似乎这样的事情会在任何版本中引起重大问题,但显然没有。

任何信息将不胜感激。

【问题讨论】:

    标签: .net asp.net-3.5 asp.net-4.0


    【解决方案1】:
    iisreset 
    

    然后从

    中删除所有内容
    Windows\Microsoft.NET\Framework64\v2.0.50727\Temporary ASP.NET Files
    

    实际上,您可以为机器上安装的每个版本的框架清除它 v3.0、v3.5、v4.0 等。

    然后尝试重新发布该网站。如果它不起作用,则需要检查 Web 项目中的每个代码文件并检查命名空间是否正确。

    如果您查看文件 \Temporary ASP.NET Files\ [projectname] \ *.cs 的内容,您会发现 asp.net 页面代码生成引擎背后的魔力。

    在您的情况下,可能的原因是构建方法的不同:4.0 出于某种原因将整个站点内容构建到一个大的 application.dll 程序集中,因此在构建过程中会出现不正确的继承。以前的构建是在每页的基础上进行的,一页被编译成一个程序集。为了避免这种情况,我通常会为网站安装构建 .msi 包,这会在打包之前强制构建完整的网站,并且所有这些错误都会在构建过程中出现

    【讨论】:

    • 感谢您的输入,但是我通过查看 Inherit 标记指向另一个文件的所有位置解决了这个问题。这里的问题是为什么 .NET 3.5 允许发布它而不是 4.0。我的问题还不够清楚吗?请告诉我,以便我修复它以避免任何混淆。
    • 哎呀。直到最后才阅读:) 构建方法的差异,4.0 出于某种原因将整个站点内容构建为一个大的 application.dll 程序集,因此在构建过程中会出现不正确的继承。以前的构建是在每页的基础上进行的,一页被编译成一个程序集。为了避免这种情况,我通常会为网站安装构建 .msi 包,这会在打包之前强制构建完整的网站,并且在构建过程中会出现所有这些错误。
    • 有趣。感谢您的反馈!您应该将该信息添加到您的答案中,以便我接受它作为正式答案。
    • 根据您的建议更新。但是,您的案例很有趣,您是在同一台机器上发布还是在另一台机器上发布?
    • 这是同一台机器,但我可能在这里松散地使用“发布”。在我开始之前完成的方式是通过 VS“发布”,并将预编译的 Web 文件复制到 IIS 服务器,然后让 IIS 重定向到新文件夹(如果它没有被覆盖)。我已经设置了一个构建机器,基本上只是将站点发布到 IIS 服务器所在的文件夹,但我们仍然像以前一样复制和/或重新分配。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-30
    • 1970-01-01
    • 2023-04-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多