如果我有一个带有
RootNamespace
AwesomeRoot
的项目,并且我希望一个类直接位于该命名空间中,我一直这样做的方法是将类的代码文件直接放入项目目录中(不确定如果我的术语正确的话,但我的意思是 *.csproj
文件所在的目录)。如果我希望其他类位于命名空间 AwesomeRoot.PrettyGreatSubnamespace
中,我会将该类的代码文件放在项目目录的 PrettyGreatSubnamespace
中。
这样做,如果类文件的路径和该类的命名空间不匹配,Visual Studio 会给我一个
IDE0130
警告,“命名空间与文件夹结构不匹配”,并且还提供了一个快速和简单的自动修复。另外,当我创建一个新类时,VS 会根据文件路径自动设置适当的命名空间。
这一切都很棒,但我真正想要的是让源代码位于项目目录的“Source”子目录中,并且该目录中的代码对应于
RootNamespace
。所以我在 AwesomeRoot
中有 <project>\Source
类,在 AwesomeRoot.PrettyGreatSubnamespace
中有 <project>\Source\PrettyGreatSubnamespace
代码。
不幸的是,如果我天真地这样做,VS 将期望适当的命名空间是
AwesomeRoot.Source
和 AwesomeRoot.Source.PrettyGreatNamespace
。我确实不希望在我的所有命名空间中都有这个Source
级别。我也不想不断地与 IDE 作斗争。我也不想关闭 IDE0130
警告和其他启用此功能的功能。
我想有一种方法(在项目文件中?)可以说“根命名空间的基目录应该是这样的”,并且让其他所有内容都像往常一样工作。不幸的是,到目前为止我还没有找到这样的方法。如何才能做到这一点?预先感谢。
正如评论中所述,我不知道是否有一个选项可以让事情完全按照您想要的方式工作,但是您可以使用这样的目录结构将代码与其他数据分开:
\ (Project root)
-- Awesomeproject.sln
-- \build
-- \documentation
-- Specification.doc
-- Readme.txt
-- \src
-- \AwesomeProject1
-- AwesomeProject1.csproj
-- \namespace1
-- \namespace2
-- \AwesomeLibrary1
-- AwesomeLibrary1.csproj
-- \namespace...
-- \bin
-- \obj
解决方案及其项目之间可以有任意数量的文件夹(并且项目可以分布到多个文件夹),但项目文件及其子文件夹之间不能有。