C#要修改项目的文件名和命名空间似乎不如Java IDE修改包名那么简单,直接修改本地的文件夹等操作来移植项目会出现解决方案打不开或者打开运行后出现命名空间配置等错误.
最近常需要移植项目框架,偶尔也需要重新命名项目的命名空间,根据网上资料并进行操作成功后,记录以下操作,供回忆和学习:
要修改C#的命名空间和文件名,需要经历 改解决方案名->项目名->改命名空间名->文件夹名几个步骤,具体操作如下:
1) 改解决方案名
这个简单,打开VS后,直接在解决方案上,右键-重命名
2)修改项目名
这个也简单,和上面类似,只需要选择解决方案下具体的项目名,右键-重命名就好了.这个地方问题的关键就是,我们通过VS修改了项目名后一般会以为本地文件夹的名字也跟着变,其实没有,它只是改了VS显示的项目名,对应的文件夹名称和命名空间的名称是没有变的.(所以会有后面修改命名空间和文件夹名称)
3)修改命名空间名称
3-1 修改代码命名空间名
命名空间名称修改非常关键,以为.cs代码最开始就是通过命名空间索引的,如果命名空间不对,那直接跑不起来的,这个操作也有点迷,就算取巧吧.
打开一个.cs程序文件,找到命名空间 namespace,修改成你想要的名称,修改后命名空间会出现一个报错的小红框,如下图
出现报错,明显还没完,我们要点击那个框,会出现一个让你这个项目下将所有命名空间重名名的选择,你点击一下, 全部项目中已经存在的程序文件的命名空间都被改名了,命名空间就自动修改好了.
3-2 修改项目属性中的默认命名空间名称
3-1 虽然,完成命名空间的修改,但是C#还是比较坑,(不如java一样包名修改好了,就完全好了).我们还需要改项目属性中的默认命名空间名,这样新建程序文件后能保证命名空间名是正确的.
在项目名上点右键->属性,将名字改成你想要的名称,和前面命名空间,最好和文件夹名称一样,这样方便一些.(ctrl+s保存)
4 修改文件夹的名称
前面通过VS完成命名空间等变更,但是VS并不会自动同步修改文件夹名字(一般我们会将命名空间的名称和文件夹名称一致),还需要我们手动去修改.
关闭VS,找到项目在电脑存放的位置,点击解决方案名称.sln的解决方案文件,这里面配置本地文件夹名称,如果我们要修改文件夹名称,这个地方也要同步手动修改好,不然程序是打不开的.
解决方案名称.sln,右键记事本打开,
保存后,就可以去给本地文件夹修改名称了,然后重新打开项目即可.
后续:
上面完成后,新项目基本上就可以跑起来了,但是我遇到一个请求不会跳转进去,其实就是进不去指定的后端服务中,通过浏览器控制台打印的log可以看出是500错误,点击后看到的错误如下:
这个错误就是找不到对应的请求服务了,从上面可以看到是冲突,让代码不知所措,不知道用哪一个,而造成这个的原因就是因为我们修改了命名空间,还有一些文件命名空间的后遗症,如一下.ashx的xml中依然留存了原来的命名空间:
解决方案就是,做一次解决方案的全部替换:
同时去解决方案的bin文件夹下面,删除掉之前命名空间编译遗留下的项目包: