如何指定RootNamespace所在的目录?

问题描述 投票:0回答:1

如果我有一个带有

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
警告和其他启用此功能的功能。

我想有一种方法(在项目文件中?)可以说“根命名空间的基目录应该是这样的”,并且让其他所有内容都像往常一样工作。不幸的是,到目前为止我还没有找到这样的方法。如何才能做到这一点?预先感谢。

.net visual-studio msbuild namespaces
1个回答
0
投票

正如评论中所述,我不知道是否有一个选项可以让事情完全按照您想要的方式工作,但是您可以使用这样的目录结构将代码与其他数据分开:

\ (Project root)
-- Awesomeproject.sln
-- \build
-- \documentation
  -- Specification.doc
  -- Readme.txt
-- \src
  -- \AwesomeProject1
     -- AwesomeProject1.csproj
     -- \namespace1
     -- \namespace2
  -- \AwesomeLibrary1
     -- AwesomeLibrary1.csproj
     -- \namespace...
-- \bin
-- \obj

解决方案及其项目之间可以有任意数量的文件夹(并且项目可以分布到多个文件夹),但项目文件及其子文件夹之间不能有。

© www.soinside.com 2019 - 2024. All rights reserved.