c#基于CSProj设置获取命名空间

本文关键字:获取 命名空间 设置 CSProj 基于 | 更新日期: 2023-09-27 17:54:41

是否有一种方法可以获得。csproj默认命名空间和Visual studio理解它而不使用预处理器指令?

例如:

CS Project 1有一个默认命名空间SomeCompany。有的时候

CS Project 2有一个默认的命名空间SomeCompany。ProductB

CS Project 1有一个CS文件存在于baseclass/MySpecialBase.cs

CS项目2有一个链接文件到另一个项目中的相同文件。这样维护一个文件版本,而不使用不同的程序集。

CS项目2现在有一个CS文件引用了CS项目1的东西,所以类命名空间现在是不正确的。

是否有一个关键字可以在单个CS文件中使用当前csproject文件默认命名空间

即:[MyDefaultNameSpace]。baseclass

如果可能的话,我想避免使用#if #else,这样我就不必添加符号了。

namespace [somekeywordhere].BaseClasses
{
     class MySpecialBase
     {
        ....
     }
}

c#基于CSProj设置获取命名空间

不,没有办法在源代码中使用"默认命名空间"。它被样板T4模板用来自动准备新文件,但它是一个Visual Studio参数,而不是代码的实际属性。

正如您所说,这可以通过一些#if和符号的巧妙使用来完成,或者正如DaveC所说,您可以准备一个T4模板来生成更正名称空间的副本(这将不使用链接)。无论如何,这涉及到一些工作。

当更深层次的结构(您的共享链接文件)使用更具体的东西(来自一个或另一个项目的代码)时,我看到了逻辑层次结构的反转,因为我总是使用链接文件来处理像全局版本属性或其他汇编属性(例如公司,产品)这样的东西,所以这个共享文件从不依赖于任何"逻辑上面"它。但我想你有你的理由,只是想说清楚。

尝试使用"反射API" - https://msdn.microsoft.com/en-us/library/ms173183.aspx如。

System.Type myNameSpaceAndClassName = this.getType()