6

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

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

旧问题和标题如下:

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

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

namespace MyDomain
{
  // regular code here
}

长话短说...

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

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

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

但是……还有 5000 多个错误……救命!

替代文字 http://eduncan911.com/blog/thumbnail/4-15-2009.6-00-13.PM.png

也许还有另一种方式?以下是代码隐藏的示例片段:

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" %>
4

2 回答 2

4

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

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

这也重写了您的 aspx 文件中的 <%@ Page %> 声明,以从新名称/命名空间后面的代码继承。

剩下的就是一些装配参考问题并完成!

方法是:

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

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

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

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

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

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

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

于 2009-05-03T16:55:16.787 回答
1

除了编写一个可以遍历所有文件并为您修改它们的小控制台应用程序之外,我想不出一个解决方案。

于 2009-04-15T22:14:46.387 回答