ASP.NET错误继承可以在.NET 3.5中发布,但不能在4.0中发布?

时间:2012-02-23 15:56:47

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

我将我的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?似乎这样的事情会在任何版本中引起重大问题,但显然没有。

任何信息都将不胜感激。

1 个答案:

答案 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软件包,在打包之前强制构建完整网站,并且在构建期间出现所有这些错误