C#:如何将网站项目转换为Web项目

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

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

旧问题和标题如下:

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

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

namespace MyDomain { // regular code here } 

长话短说…

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

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

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

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

alt text http://sofzh.miximages.com/c%23/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页面在标题中:

  

也许有一种方法可以在其他地方引用这个页面? 无需将其更改为命名空间?

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

Fyi,我找到了解决方案。 它比你想象的容易。

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

这也会重写您的aspx文件中的<%@ Page%> decleration,以inheritance新名称/命名空间后面的代码。

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

方法是:

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

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

3)右键单击Web应用程序,然后选择“转换为Web应用程序”。 仔细检查错误和警告日志。 一旦你修好了东西,就会随意重新转换。

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

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

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

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

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