edu*_*911 6 c# namespaces code-behind visual-studio
更新:所有这些问题都是在Visual Studio中将网站应用程序转换为Web项目.一旦我挖出并找到了解决方案,我在下面标记为答案.
基本上,如果您想要将您的网站项目升级/移动到Web项目,您将遇到许多错误.简短的操作方法在下面的答案中.谢谢大家的意见和帮助.
旧问题和标题如下:
如何将名称空间xx {}包装到所有类文件中?
如何将命名空间包装到webproject(或任何项目)中的所有代码隐藏文件?
namespace MyDomain
{
// regular code here
}
Run Code Online (Sandbox Code Playgroud)
长话短说...
我一直在转换一个外包给海外的项目.仅在"网络"项目中就有超过20,000个文件,用于这样一个简单的网站(摇头).它是使用VB.NET和C#在vs2005中编写的(是的,两个编译).它最初是一个网站应用程序.我已将其转换为Web应用程序,主要是因为您发布时生成的8,000个"临时"程序集.
好的,我正在转换到VS2008.我已将所有代码转换为C#.看起来不错.我把所有特殊的App_Code/VB和C#代码都带到了单独的程序集中.
现在,当我再次尝试编译时,我会收到大量错误的警报.我通过将代码隐藏文件包装在命名空间中来修复这些问题,并更新usercontrol以使用新的命名空间.
但是......还有5000多个错误...帮助!
alt text http://eduncan911.com/blog/thumbnail/4-15-2009.6-00-13.PM.png
也许有另一种方式?以下是代码隐藏的示例代码段:
public partial class MyHomepage_MyStuff_MyPosts : SecurePage
{ ... }
Run Code Online (Sandbox Code Playgroud)
注意类名MyHomepage_MyStuff_MyPosts.这是指向/MyHomepage/MyStuff/MyPosts.aspx文件位置的目录路径.
错误是代码隐藏文件无法找到对正在使用的控件的引用.如:
ctl_website_rpt.RowCount = _totalCount;
Run Code Online (Sandbox Code Playgroud)
这是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" %>
Run Code Online (Sandbox Code Playgroud)
也许有一种方法可以在其他地方引用这个页面?无需将其更改为命名空间?
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" %>
Run Code Online (Sandbox Code Playgroud)
仅供参考,我找到了解决方案。这比你想象的要容易。
您只需右键单击新的 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 中遇到了多个错误,并且正在努力修复,则可以多次重新转换该文件或目录,直到修复为止。重新转换不会损害现有应用程序。
归档时间: |
|
查看次数: |
5615 次 |
最近记录: |