【问题标题】:C#: How to convert a Website project to a Web ProjectC#:如何将网站项目转换为 Web 项目
【发布时间】:2010-10-19 17:31:57
【问题描述】:

更新:所有这些问题都是为了在 Visual Studio 中将网站应用程序转换为 Web 项目。一旦我挖掘并找到了解决方案,我在下面标记为答案。

基本上,如果您想将网站项目升级/移动到 Web 项目,您会遇到许多错误。简短的操作方法在下面的答案中。谢谢大家的cmets和帮助。

旧问题和标题如下:

如何将命名空间 xx {} 包装到所有类文件中?

如何将命名空间包装到 web 项目(或任何项目)中的所有代码隐藏文件?

namespace MyDomain
{
  // regular code here
}

长话短说……

我一直在转换一个外包到海外的项目。对于这样一个简单的网站(摇头),仅“网络”项目中就有超过 20,000 个文件。它是在 vs2005 中使用 VB.NET 和 C# 编写的(是的,都是编译)。它最初是一个网站应用程序。我已将其转换为 Web 应用程序,主要是因为您发布时会生成 8,000 个“临时”程序集。

好的,我正在转换到 VS2008。我已将所有代码转换为 C#。看起来不错。我已将所有特殊的 App_Code/VB 和 C# 代码引入单独的程序集中。

现在,当我尝试再次编译时,我会收到大量错误警报。我通过将代码隐藏文件包装在命名空间中来解决这些问题,并更新用户控件以使用新的命名空间。

但是……还有 5000 多个错误……求助!

alt text http://eduncan911.com/blog/thumbnail/4-15-2009.6-00-13.PM.png

也许还有其他方法?这是来自代码后的示例 sn-p:

public partial class MyHomepage_MyStuff_MyPosts : SecurePage
{ ... }

注意类名 MyHomepage_MyStuff_MyPosts。这是 /MyHomepage/MyStuff/MyPosts.aspx 文件所在位置的目录路径。

错误是代码隐藏文件找不到对正在使用的控件的引用。如:

ctl_website_rpt.RowCount = _totalCount;

这是一个在 ASPX 文件中名为“ctl_website_rpt”的控件(它们的命名约定)。 aspx 页面在页眉中有:

<%@ Page Title="My Posts" Language="C#" 
  MasterPageFile="~/MasterPages/Main.master" AutoEventWireup="true" 
  CodeFile="MyPosts.aspx.cs" 
  Inherits="MyHomepage_MyStuff_MyPosts" %>

也许我可以在其他地方引用此页面?无需将其更改为的命名空间?

namespace Website.MyHomepage.MyStuff
{
  public partial class MyPosts
  { ... }
}

<%@ Page Title="My Posts" Language="C#" 
  MasterPageFile="~/MasterPages/Main.master" AutoEventWireup="true" 
  CodeFile="MyPosts.aspx.cs" 
  Inherits="Website.MyHomepage.MyStuff.MyPosts" %>

【问题讨论】:

    标签: c# visual-studio namespaces code-behind


    【解决方案1】:

    仅供参考,我找到了解决方案。这比你想象的要容易。

    您只需右键单击您的新 Web 项目,就会出现“转换为 Web 应用程序”选项。这做了一些有趣的事情。首先,它会创建 [file].aspx.designer.cs 自动生成的文件。这消除了我 99% 的错误,因为代码隐藏找不到对控件的引用(请参阅上面我的问题中的屏幕截图)。

    这也会重写您的 aspx 文件中的 声明,以继承新名称/命名空间背后的代码。

    剩下的就是一些程序集参考问题并完成了!

    方法是:

    1) 创建一个新的 Web 项目,将旧网站项目中的所有文件复制到新的 Web 项目中。

    2) 修复所有对您知道您需要的程序集的引用。

    3) 右键单击​​ Web 应用程序并选择转换为 Web 应用程序。仔细检查错误和警告日志。修复后随意重新转换。

    如果任何 aspx 或 ascx 文件没有 Designer.cs 文件,则该文件的转换失败。修复引用、命名空间等并重新转换。

    提示 #1:确保在转换为 Web 应用程序之前添加了所有引用。有时会发生许多错误。

    提示 #2:即使它看起来已完成,但在转换后查找错误。它会将您指向无法转换的文件,因此您需要处理它们。

    提示#3:您可以多次重新转换任何子目录或任何文件。假设您正在修复的#2 中有多个错误,您可以多次重新转换该文件或目录,直到您修复它。重新转换不会损害现有应用程序。

    【讨论】:

      【解决方案2】:

      除了编写一个小控制台应用程序来检查所有文件并为您修改它们之外,我想不出其他解决方案。

      【讨论】:

      • 这是一个想法。希望有另一个解决方案(将问题更新为更详细)。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多