VS2003 转 VS2005 个别问题解决办法

Asp.net项目从Vs2003转换到Vs2005的常见问题大全及解决方法

我下了很多基于VS2003(以及VS2002)的Asp.net的Demo。而我用的是VS2005,我在使用这些Demo时,基本上绝大部分基 于VS2003的Asp.net工程都因为少数文件无法转换而无法加载工程,我也为些郁闷了好久,后来终于让我找到了解决办法:
Asp.net基于VS2005的工程与以往版本的工程的最大区别就是用分部类(partial)取代了代码隐藏(Codebehind)。
于是我采取的方法是:
1.      用打开网站的方式打开这个工程。这样VS2005也会进行转换,而且也会报错,但与直接打解决方案无法加载不同的是,这一次它展开了网站的所有文件。如果你现在运行工程,也不会成功的。
2.      打开filename.aspx文件到源代码视图,将@Page指令中的属性“Codebehind”改为“CodeFile”,
3.      将与这对应的Codebehind文件filename.aspx.cs,将继承于System.Web.UI.Page的类定义class前加上partial关键字。
4.      运行该工程,它会提示你在filename.aspx中已经包含controlname的定义,跟踪错误到filename.aspx.cs,将那些被指示错误的重复定义删去。51aspx
5.      然后重复2-4步直至所有的文件都改过来,再运行工程应该就可以运行成功了。不过也许会报几个警告说某某已经过时,不用去管它。

我用这个方法将那些老顽固(包括2003以及2002的工程)都成功转换了,真的是屡试不爽。这只不过是我自己总结出来的方法,也许有人有更好的办法,如果有更好的方法也请指点。


vs2005可以很方便的帮我们把vs2003开发的asp.net1.1版本项目升级到vs2005开发的asp.net2.0版本,从vs2005里面打开vs2003的解决方案或者项目文件,会有向导帮我们自己完成升级工作。一部分asp.net1.1的项目做完这个工作就足够了。
不过更多的时候不会这么顺利,还要注意一些问题:
  • vs2003开发的asp.net1.1程序,不会检查aspx、aspcx等文件中的语法错误51aspx,而vs2005会检查项目中所有的aspx、aspcx等文件中的语法,所以如果有语法错误,会导致编译无法通过。
  • vs2003中,如果用的是默认的代码绑定方式,那么在aspx文件(以aspx文件为例,ascx文件也有这个问题)中申明的服务器端控件,会在aspx文件对应的aspx.cs文件中,生成一个对应的申明,例如aspx中有一个TextBox,ID是MyTextBox,那么在aspx.cs中,会申明一个"protected TextBox MyTextBox;",而在vs2005中,这个申明是多余的,所以升级后要去除这些多余的申明。
  • 如果有程序采用了asp.net1.1下的Membership——使用MemberRole.dll,要升级到asp.net2.0下的Membership,需要做如下工作:[list]
  • 删除所有项目中对"MemberRole.dll"的引用,添加"System.Configration"的引用
  • 改变命名空间ScalableHosting.Profile -> System.Web.Profile;ScalableHosting.Security -> System.Web.Security; 同时添加using System.Configuration; 51aspx.com
  • 移除所有MemberRole.dll相关的Membership配置,参照以前的Membership配置,增加asp.net2.0支持的Membership配置,更新Membership的存储过程。
[/list]

注意:建议VS2005要打Sp1补丁包,否则不能转换webAppliction项目文件
今天在测试一个项目的时候,是用vs2003开发的,在用vs2005打开的时候,首先进行了代码转化,用原来的net1.1转化为net2.0,项目开发的时候,采用了IEwebControl控件实现收缩菜单,在开发的时候网页中都引用了 Microsoft.Web.UI.WebControls;和System.Web.UI.WebControls; 在net1.1组建下System.Web.UI.WebControls不支持IEWebControl,但是在net2.0的时候System .Web.UI.WebControls支持该控件了,这样的话在网页中就同时引用了该控件,在引用的时候就会导致 TreeNode引用不明确,从而使项目编译不成功,相信好多的朋友都会遇到过此种情况吧,一位大师说在引用的时候写完整他,除了没别的方法,可我写完整了编译还是出错,难道是我写错了吗,我把代码贴出来,跟大家交流交流,愿高手给指点迷津,
注:任意带TreeNode都会提示错误,我任意找了一个文件的代码,整个 Department.ascx.cs文件


namespace OI.UserControls
{
using System;
using System.Data;
using System.Drawing;
using System.Web;
    using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
    using Microsoft.Web.UI.WebControls;
using OI.DatabaseOper ;
/// <summary>
///  Department 的摘要说明。
/// </summary>
public partial class Department : System.Web.UI.UserControl
{
  private DatabaseConnect dc;
 
  protected void Page_Load(object sender, System.EventArgs e)
  {
  // 在此处放置用户代码以初始化页面
  dc=new DatabaseConnect ();
  if(!this.IsPostBack )
  {
    this.CreateDataSource ();
    DarentmentList.SelectedNodeIndex ="0";
  }
  }
  #region Web 窗体设计器生成的代码
  override protected void OnInit(EventArgs e)
  {
  //
  // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
  //
  InitializeComponent();
  base.OnInit(e);
  }
 
  /// <summary>
  ///  设计器支持所需的方法 - 不要使用代码编辑器
  ///  修改此方法的内容。
  /// </summary>
  private void InitializeComponent()
  { 
  }
  #endregion
  public int DEPT_ID
  {
  get
  {
    return Convert.ToInt32 (DarentmentList.GetNodeFromIndex (DarentmentList.SelectedNodeIndex ).ID.Trim () );
  }
  }
  public string DEPT_NAME
  {
  get
  {
    return DarentmentList.GetNodeFromIndex (DarentmentList.SelectedNodeIndex ).Text;
  }
  }
  private void CreateDataSource()
  {
  DarentmentList.Nodes .Clear ();
  TreeNode node=new TreeNode ();
  node.Text ="开始";
  node.ID ="0";
  CreateDataSource("0",ref node);
  DarentmentList.Nodes .Add (node);
  }


  private void CreateDataSource (string Parentid, ref TreeNode Pnode)
  {
  string sql ="SELECT DepartmentId,DepartmentName,IsPublic FROM departments WHERE ParentDepartmentID='"+Parentid+"'";
  DataSet ds;
  ds=dc.getBinding (sql,"s11");
  foreach (DataRow dr in ds.Tables["s11"].Rows )
  {
                //TreeNode node=new TreeNode ();
                Microsoft.Web.UI.WebControls.TreeNode node = new Microsoft.Web.UI.WebControls.TreeNode();
    node.Text =dr["DepartmentName"].ToString ();
    node.ID =dr["DepartmentId"].ToString ();   
    /*
    if (dr["menupath"].ToString () !="")
    {
    node.NavigateUrl=dr["menupath"].ToString ();
    node.Target ="main";
    }*/
    if(Convert.ToBoolean (dr["IsPublic"].ToString ().Trim ()))
    {
    CreateDataSource(dr["DepartmentId"].ToString (),ref node);
    Pnode.Nodes .Add(node);
    }
   
   
   
  }
  }
}
}

VS2003 向 VS2005 过渡的问题


  我使用ASP.NET已经3年了,刚开始是使用手动编写,后来使用 VS2003,又从 .NET Framework 1.0 升级至 1.1 ,一直都没有问题。
  这段时间,由于要开发手机应用,准备从 VS2003 向 VS2005 过渡。在没有看过两者有什么区别前,我就尝试将原来的 VS2003的项目转换成VS2005的项目。转换结束后,出现了一大堆的错误,而且很多文件都导不进vs2005的项目中。经仔细研究后发现,我的程序.aspx 文件中引用了Web控件,在.cs文件中申明为 public ,但他要求是 protected。如:
我申明为: public Label ctlMsg;  (申明为 public 是个不好的习惯)

正确的应该是: protected Label ctlMsg;
所以在转换项目前,要先把所有申明为 public 的控件修改为 protected ,再转换,否则这个文件就无法导入到项目中。
  当我把所有申明为 public 的控件修改为 protected 后,转换成功了。我在VS2003中看了一下项目,所有文件都转换过来了。
  本以为可以正常使用了,我正高兴地去编译程序,又发现无法编译通过,出了很多错误。
  错误1:Validation (Internet Explorer 6): .....................
  说明:网页的Html代码不符合规范,如: <table>[color=#ff0000]<form><tr></tr></form></table>
  解决: 菜单 Tools => Options => Text Editor => HTML => Validation  取消 [/color]Show Errors
  错误2:Error 1 Missing partial modifier on declaration of type 'Index'; another partial declaration of this type exists D:\root\http://www.5xsoft.com/\Index.aspx.cs 12 14 D:\root\http://www.5xsoft.com/\[color=#000000]
  说明:从网页中继承出来的类的要加上 [color=#ff0000]partial
申明
  如 [font=Verdana]public class Index : System.Web.UI.Page

  解决:加上 partial 如 public partial class Index  : System.Web.UI.Page[/color][/color][/font]
[color=#000000][font=Verdana][color=#0000ff][color=#000000]  错误3:[font=Verdana]Error 1 The type 'ZSWeb.Article' already contains a definition for 'ctlTitle' D:\root\http://www.5xsoft.com/\Article.aspx.cs 20 25 http://localhost/www.5xsoft.com/
  [color=#000000]说明:VS2003中,使用Web控件要在.cs中申明后才能使用,但在 VS2005中默认不能申明。
  解决:删除.cs文件中的 Web 控件声明。如删除 [font=Verdana]protected Label ctlTitle;
  小结:其实这里,我绕了一个圈,在转换项目前,直接把 Web 控件声明删除掉,就不会有错误3出现了。
[/color][/font]
[/color][/font][/color][/color][/font]
 
posted @ 2009-01-15 16:18  云飞扬IT  阅读(730)  评论(0)    收藏  举报