更新:所有这些问题都是为了将网站应用程序转换为 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" %>