自定义VS项目模板中using语句自动移出命名空间的问题求助
问题原因及解决办法
原因
这是Visual Studio实例化自定义模板时,自动触发了IDE默认的代码格式化规则导致的。默认配置下,VS的代码清理功能会将命名空间内部的using语句统一移到命名空间外部,模板生成新项目时会自动对代码执行格式化操作,所以原本在命名空间内的using System = global::System;被移到了外部。
解决办法
要让模板生成的代码保留原using语句的位置,推荐以下两种方案:
给模板嵌入.editorconfig配置文件
在模板压缩包中添加.editorconfig文件,写入以下规则强制VS保留命名空间内的using:[*.cs] csharp_using_directives_placement = inside_namespace csharp_place_system_namespace_first = false新项目生成时会自动遵循该配置,不会移动
using语句位置,这个方案不受IDE全局设置影响,适合模板分发。调整Visual Studio全局代码样式(仅本地生效)
打开工具 > 选项 > 文本编辑器 > C# > 代码样式 > 常规,找到「using指令的放置」选项,选择「在命名空间内」。但这个是全局设置,换机器或其他用户使用模板时仍会出现相同问题,仅适合个人临时使用。
另外,也可以在模板代码文件的命名空间内的using语句上方添加注释// ReSharper disable CheckNamespace(如果使用ReSharper插件),但仅对安装了该插件的环境生效,通用性不如.editorconfig。
内容的提问来源于stack exchange,提问作者MajorMajorMajor
相关产品推荐
相关产品推荐

