我将我的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?似乎这样的事情会在任何版本中引起重大问题,但显然没有。
任何信息都将不胜感激。
答案 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软件包,在打包之前强制构建完整网站,并且在构建期间出现所有这些错误