我有一个C#ASP.NET Web应用程序项目,其中所有页面都在global / default / top-level命名空间中。 (我没有明确的命名空间声明。当我在Red Gate的.NET Reflector中查看我编译的Web应用程序的DLL时,我可以验证所有类都在顶级.NET命名空间中。)是否有任何好的,自动化的方式将所有页面和自定义控件移动到新的命名空间,比如说“MyWebApplication”?理想情况下,只使用Visual Studio就可以了,但如果有必要,我愿意考虑使用商业重构工具。
我想可能通过在项目的Application属性中设置“Default namespace”属性,我可以让编译器隐式地将所有页面放入指定的命名空间中,但似乎并非如此;这个“默认命名空间”设置似乎使Visual Studio将显式命名空间声明插入 new 页面,而不是隐式地影响任何现有页面的命名空间。
如果重要,我在这里的动机是尝试在我的网络应用程序上运行静态分析工具(CAT.NET);该工具似乎在全局命名空间中有一个或两个带代码的怪癖。
答案 0 :(得分:1)
Chris可能看起来很傻,因为你已经准备好为重构工具付钱了。但请考虑一下:
默认情况下,名称空间在代码隐藏文件中声明为项目/应用程序名称。因此,如果您的项目名称是MyWeb,则默认名称空间将为
namespace MyWeb
{
public partical class MyWebPage....
现在在ASPX页面中提到如下:
<%Page ... CodeBehind="MyWebPage.aspx.cs" Inherits="MyWeb.MyWebPage"
您只需更改这两项内容即可实现命名空间迁移。坦率地说,这可以通过查找/替换对话框来实现。请复制完整的解决方案并试一试!!
干杯