转自 http://blog.sina.com.cn/s/blog_53729e4601014ze9.html

本文介绍如何将现有的 Microsoft Visual Studio 2005 网站项目转换为 Microsoft Visual Studio 2005 Web 应用程序项目。Web 应用程序项目模型使用的概念方法与 Visual Studio .NET 2003 中的 Web 项目相同。该概念方法包括一个项目文件,用于将文件和编译包含到单个程序集中,或将它们排除在外。

要完成转换操作要进行以下步骤:

  • 打开并验证 Visual Studio 2005 网站项目。

  • 创建新的 Visual Studio 2008 Web 应用程序项目。

  • 设置项目引用。

  • 将文件复制到新的 Web 应用程序项目。

  • 转换项目文件。

  • 运行 Web 应用程序项目。

  • 添加命名空间语法。

  • 转换声明性强类型数据集。

  • 转换配置文件对象代码。

若要完成转换,您需要:

  • Visual Studio 2008 或 Microsoft Visual Studio 2005 Service Pack 1 (SP1)

  • .NET Framework 2.0 版。

    转换项目之前,应验证项目是否可以正确运行。这有助于防止在转换期间发生错误。

    打开并验证 Visual Studio 2005 Web 项目

    1. 打开现有的 Visual Studio 2005 解决方案。

    2. 在“文件”菜单中单击“打开”,再单击“网站”。

      将显示“打开网站”对话框。

    3. 选择要打开的项目文件夹,然后单击“打开”。

    4. 在“生成”菜单上单击“生成网站”。

    5. 在“调试”菜单中单击“启动调试”。也可以按 F5。

    6. 验证项目是否按预期运行。

创建新的 Visual Studio 2008 Web 应用程序项目

转换现有 Visual Studio 2005 网站项目的最佳策略是先在单独的目录中创建一个新的空白 Visual Studio 2008 Web 应用程序项目。这样可避免现有网站文件的任何部分发生更改。它还有利于将现有功能复制到新的 Web 应用程序项目中。

您可以将新项目添加到现有解决方案中,当存在多个要使用的类库项目时,这将是理想的方案。另外,也可以启动 Visual Studio 的新实例并创建新的解决方案和项目。

在新解决方案中创建新的 Visual Studio 2008 Web 应用程序项目

  1. 在 Visual Studio 2008 中,关闭所有打开的解决方案。

  2. 在“文件”菜单中单击“新建”,再单击“项目”。

    将显示“新建项目”对话框。

  3. 在“新建项目”对话框的“项目类型”部分中,展开要使用的语言,然后选择“Web”以显示与 Web 相关的模板。

  4. 选择“ASP.NET Web 应用程序”。

  5. 键入“名称”、“位置”和“解决方案名称”的值,然后单击“确定”以创建 Web 应用程序项目。

  6. 创建项目后,请删除自动创建的 Default.aspx 和 Web.config 文件。

将网站项目复制到 Web 应用程序项目中

  1. 在“解决方案资源管理器”中,右击网站项目,然后选择“在 Windows 资源管理器中打开文件夹”。

  2. 选择要复制网站项目的文件。

  3. 右击选定的文件,然后选择“复制”。

  4. 在 Web 应用程序项目中,右击该 Web 应用程序项目,然后选择“在 Windows 资源管理器中打开文件夹”。

  5. 将网站项目文件粘贴到 Web 应用程序目录中。

  6. 在 Web 应用程序项目的“解决方案资源管理器”中,单击“显示所有文件”按钮。

  7. 在“解决方案资源管理器”中选择新的文件。

  8. 右击选定的文件,然后单击“包括在项目中”。

Visual Studio 2008 网站项目与 Visual Studio 2008 Web 应用程序项目的一个区别是,网站项目模型会动态生成由工具生成的分部类。

将文件从网站项目复制到 Web 应用程序项目之后,您会发现每个页和用户控件的代码隐藏文件仍与 .aspx、.master 和 .ascx 文件关联。此过程并未生成 .designer.cs 或 .designer.vb 文件。在下一步中,您要转换这些页,以便将其分部类保存在 .designer.cs 或 .designer.vb 文件中。

转换项目文件

Visual Studio 包括一个用于转换 Web 应用程序项目中的页和类以使用其分部类的选项。分部类用于分隔页或用户控件代码隐藏代码中的标记。这些由设计器生成的类都保存在代码隐藏文件之外的一个单独的文件中。

在转换过程中,Visual Studio 2008 将以递归方式检查项目中的每个页、母版页和用户控件,并自动为它们中的每一项生成一个 .designer.cs 文件。此外,Visual Studio 还会更改 .aspx 或 .ascx 文件,以使用 codeBehind 属性代替 codeFile 属性。此命令还会将 App_Code 文件夹重命名为 Old_App_Code。

将页和类转换为使用 Web 应用程序项目中的分部类

  1. 在“解决方案资源管理器”中,右击包含要转换的页和类的项目根文件夹,然后单击“转换为 Web 应用程序”。

  2. 生成项目,以查看是否存在任何编译错误。

如果您看到错误,则可以检查两个最常见的原因,如下所述:

  • 缺少必须添加到项目中的程序集引用。

  • 动态生成的类型(例如 Profile 对象或类型化数据集)存在问题。

如果缺少程序集引用,请打开引用管理器并进行添加。如果使用的是动态生成的类型,请参见本主题后面的“转换声明性强类型数据集” 和“转换配置文件对象代码”。

由于 ASP.NET 2.0 会动态编译 App_Code 文件夹中的所有类,因此不应将编译为 Visual Studio 2008 Web 应用程序的一部分的类存储在该文件夹中。否则,该类将被编译两次。第一次将作为 Visual Studio 2008 Web 应用程序项目程序集的一部分编译,第二次则是由 ASP.NET 在运行时编译。这可能导致“未能加载类型”异常。之所以出现此异常,是因为应用程序中存在重复的类型名称。

正确的方法应是将类文件存储在 App_Code 文件夹之外的项目文件夹中。此操作是通过“转换为 Web 应用程序”命令自动完成的,此命令可将该文件夹重命名为 Old_App_Code。

运行 Web 应用程序项目

现在可以编译并运行应用程序。默认情况下,Visual Studio 2008 将使用内置的 ASP.NET Development Server 运行网站。您也可以将项目配置为使用 Internet 信息服务 (IIS)。若要管理 Web 应用程序项目设置,请右击该项目,再单击“属性”。随后,可以选择“Web”选项卡来配置这些运行时设置。

其他转换选项

将项目转换为 Web 应用程序项目时,还需要考虑其他一些转换选项。这些选项如下:

  • 添加命名空间语法。

  • 转换声明性强类型数据集。

  • 转换配置文件对象代码。

添加命名空间语法

默认情况下,使用 Visual Studio 2008 网站项目模型生成的页和类不会自动包含代码命名空间。但是,使用 Visual Studio 2008 Web 应用程序项目模型生成的页、控件和类会自动包含代码命名空间。将网站项目转换为 Web 应用程序项目时,必须向代码添加命名空间。

例如,当您使用 C# 时,可通过 C# 代码编辑器中的“外侧代码”快捷菜单命令向 Visual Studio 中的现有类添加命名空间。

向现有类添加命名空间

  1. 打开要修改的代码文件。

  2. 在源编辑器中选择一个类(或多个类),右击所选的代码,然后单击“外侧代码”。

  3. 在列表中选择“命名空间”项。

扩展名为 .aspx、.ascx、.master、.ashx、.asmx 和 .asax 的文件包含带有 Inherits 或 Class 属性的指令(例如 @ Page指令),当这些文件是代码隐藏页时,上述属性将列出它们调用的类名。如果向属于这些文件类型的代码隐藏文件中添加了命名空间,则还必须将该命名空间添加到 Inherits 和 Class 声明中。例如,如果向名为 Details.aspx 的代码隐藏文件中添加WebApplication5 命名空间,则还需要将 @ Page 指令的 Inherits 属性从 inherits=Details_aspx 更改为inherits=WebApplication5.Details_aspx。

转换声明性强类型数据集

如果 Visual Studio 2008 网站项目的 App_Code 文件夹中包含强类型数据集类,则还必须执行另一项更改才能修复 Web.config 文件中的 connectionString 元素。此外,还必须为数据集类中的每个 TableAdapter 对象设置connectionString 元素。

修复强类型数据集的 connectionString

  1. 在“解决方案资源管理器”的 App_Code 文件夹中,右击该数据集类,然后单击“视图设计器”。

    将显示该数据集的“设计器”窗口。

  2. 右击 TableAdapter 对象,然后单击“属性”。

  3. 选择“Connection”属性,然后通过选择一个可用选项来重置该连接。

    更新连接时,连接字符串也将随之更新。

  4. 对于每个数据集中的每个 TableAdapter 对象,请重复上述步骤。

转换配置文件对象代码

ASP.NET 2.0 增加了对配置文件属性的支持。利用此功能,可以在个性化数据库中存储和检索用户配置文件数据。在 Visual Studio 2008 网站项目中,ASP.NET 会自动向项目中的每个 ASP.NET 网页添加一个 Profile 对象(ProfileCommon 类的实例)。此对象可对应用程序 Web.config 文件的 profile 节中所定义的全部属性提供强类型访问。您可以获取此对象的 IntelliSense 数据,并自动在其中保存和检索值。

例如,应用程序的 Web.config 文件可能包含以下部分。

<profile defaultProvider="AspNetSqlProfileProvider"> <properties> <add name="Teachers" type="Teachers" allowAnonymous="true" /> </properties> </profile>

附记

打开一个 ASP.NET 网站,试图在“设计”视图中对内容页进行编辑时,竟然什么也看不到,不能进行可视化编辑,也无法在代码文件中创建事件处理程序。遇到了这种情况,令人非常困惑。因此想到把ASP.NET网站转换为ASP.NET Web应用程序项目是否能够解决这个问题,结果是肯定的。

将网站项目转为 Web form应用程序(转)的更多相关文章

  1. 添加asp.net mvc到现有的asp.net web form 应用程序

    前言 asp.net mvc的前一版本为asp.net web Form(Asp.net mvc之前称为asp.net),其第一个版本与2002年年初发布.asp.net web form 属于.ne ...

  2. vs 2010 网站项目和asp.net 应用程序引用webservice

    项目需要做对接,对方提供的是一个webservice接口,自己建了个网站项目,然后添加web 引用,一切正常. 当实际编码的时候,发现一些类.方法找不到. 百思不得其解,只得对照对方提供的demo 看 ...

  3. 从myeclipse导入eclipse,不能识别为web项目(java项目转为web项目)

    1.进入项目目录,找到.project文件,打开. 2.找到<natures>...</natures>代码段. 3.在第2步的代码段中加入如下标签内容并保存:         ...

  4. Web 应用程序项目与 Visual Studio 中的网站项目的异同

    要查看英语原文,请勾选“英语”复选框.也可将鼠标指针移到文本上,在弹出窗口中显示英语原文. 翻译 英语 本文档已存档,并且将不进行维护. Web 应用程序项目与 Visual Studio 中的网站项 ...

  5. 在.NET中把项目从类库转为Web应用程序

    我们知道,在.NET中所有的项目文件以.csproj为扩展名.内容是xml格式. 类库项目文件.csproj: <Project DefaultTargets="Build" ...

  6. VS 2010 WebSite网站 使用CodeBehide 方式开发[Web应用程序项目转Web网站]

    由于生成Web应用程序的文件非常大,100M左右,上传到香港太慢,对于运维工作很不现实, 所以只能改用单个源代码文件上传方式,也就是Web网站方式,但VS2010中只提供Web网站转Web应用程序功能 ...

  7. ASP.NET网站怎么发布 Web项目程序怎么发布部署(暂时收藏)

    Web程序如何发布部署呢.网站项目做好了,需要发布出来,提交给客户,装上服务器.那怎么在ASP.NET开发环境中将网站程序发布出来呢 ^_^   工具/原料 Visual Studio 2010  ( ...

  8. 菜鸟疑问之新建网站与新建web应用程序区别

    学习asp.net一定少不了这困惑:新建网站与新建web应用程序有什么区别? 新建web应用程序 新建网站 呵呵,其实从名字看一个是webApplication,一个是webSite.名字不同罢了? ...

  9. VS2010新建Web网站与新建Web应用程序的区别

    在Visual Studio 2010中,除了可以使用“创建Web应用程序”的方式来构建自己的Web项目之外,还可以通过创建“Web网站”的方式来构建Web项其中,Web网站的创建方法:打开Visua ...

随机推荐

  1. PE/ELF文件里面存的是什么呢?

    malloc分配的空间是连续的吗?PE/ELF文件里面存的是什么呢?

  2. 2015年蓝桥杯省赛A组c++第5题(回溯算法填空)

    /* 1,2,3…9 这九个数字组成一个分数,其值恰好为1/3,如何组法? 下面的程序实现了该功能,请填写划线部分缺失的代码. */ #include <stdio.h> void tes ...

  3. php测试for/while/foreach循环速度对比

    对比代码先行贴上,有疑问或者有不同见解的希望可以提出,大家共同进步: //-------------------------------------$k=0;$checkTime = ['for'=& ...

  4. [development][C] linux 设置线程名称

    两个API, 都是linux的. 不是POSIX, 是GNU?  傻傻搞不清楚. 1. pthread_setname_np / pthread_setname_np 2. ptctl 带 PR_GE ...

  5. [httpd] httpd directory list character encoding

    在httpd下放置文件用来直接从浏览器访问的时候,中文文件名有可能产生乱码. 做以下设置,调整字符编码: 1: Add this to your .htaccess: IndexOptions +Ch ...

  6. 【Java】一台服务器配置多个Tomcat

    需求缘由 最近接收了一个新的工具业务:ipublish发布系统,刚接手这个业务的时候,发现每次发布新的代码 需要到群里告知大家,我要停服务几分钟,准备更新代码啦.这尼玛 哪个公司都不敢这么牛逼的和用户 ...

  7. Oracle shrink table

    shrink必须开启行迁移功能. alter table table_name enable row movement ; 在oracle中可以使用alter table table_name shr ...

  8. 同步fifo的Verilog实现

    FIFO是一种先进先出的数据缓存器,他与普通存储器相比: 优点:没有外部读写地址线,这样使用起来非常简单: 缺点:只能顺序写入数据,顺序的读出数据, 其数据地址由内部读写指针自动加1完成,不能像普通存 ...

  9. load和initialize

    load: 当类被引用进项目的时候(类文件加载到系统中)就会执行load函数(在main函数开始执行之前),与这个类是否被用到无关,每个类的load函数只会自动调用一次.由于load函数是系统自动加载 ...

  10. docker+Nexus Repository Manager 搭建私有docker仓库

    使用容器安装Nexus3 1.下载nexus3的镜像: docker pull sonatype/nexus3 2.使用镜像启动一个容器: docker run -d -p 8081:8081 -p ...