VS2017 C#代码自动生成时添加using System的问题求助
嘿,这个问题我太懂了——在Unity里用VS2017写代码,每次靠「提前写函数名让VS自动生成」时,它总硬塞个using System;进来,跟Unity的Random撞得头破血流,一天要改十几次,烦得要死。给你几个实用的解决办法,按省心程度排序:
1. 先搞个“防冲突保险”——给Unity Random加别名
这是最快见效的办法,就算VS继续加using System;也不怕。在你所有Unity脚本的最顶部(using UnityEngine;下面就行)加一行:
using Random = UnityEngine.Random;
之后不管代码里有没有System命名空间,只要写Random,编译器都会优先用Unity的随机类,彻底杜绝混淆问题。甚至可以把这行加到Unity的脚本模板里,新建脚本自动带上,一劳永逸。
2. 直接关掉VS自动加using的功能
如果不想让VS随便给你加命名空间,直接改它的设置:
- 打开VS,点击顶部菜单的「工具」->「选项」
- 展开左侧的「文本编辑器」->「C#」->「高级」
- 在右侧找到**“在生成代码时添加using指令”**的复选框,把它取消勾选
- 点击「确定」保存设置
这样以后VS自动生成函数时,就不会自作主张加using System;或者其他命名空间了。
3. 修改VS的代码生成模板(彻底根治)
如果想保留其他场景下自动加using的功能,只是针对生成方法时去掉using System;,可以修改VS的内置模板:
- 找到VS2017的模板文件路径(以Community版本为例):
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\ItemTemplates\CSharp\Code\1033\Method\Method.cs - 右键用记事本或VS打开这个文件,删掉里面的
using System;行 - 把原来的
throw new NotImplementedException();改成完全限定名:throw new System.NotImplementedException(); - 保存文件后,重启VS。以后自动生成方法时,就不会带
using System;了,而且NotImplementedException依然能正常识别。
4. 用Resharper自定义规则(如果你装了的话)
如果你的VS装了Resharper插件,可以更精准地控制代码生成:
- 打开Resharper的设置(快捷键
Ctrl+Alt+S) - 找到「Code Editing」->「C#」->「Code Generation」->「Implement Members」
- 在「Add 'using' directives」选项里,取消勾选或者排除
System命名空间 - 保存设置后,Resharper生成代码时就不会加
using System;了
内容的提问来源于stack exchange,提问作者user2286552




