C#根据CSProj设置获取命名空间

时间:2015-06-08 15:54:04

标签: c# .net c#-4.0 visual-studio-2013 namespaces

有没有办法获得.csproj默认命名空间和Visual Studios在不使用预处理程序指令的情况下理解它?

例如:

CS Project 1的默认命名空间为 SomeCompany.ProductA

CS Project 2的默认名称为 SomeCompany.ProductB

CS Project 1有一个存在于BaseClasses / MySpecialBase.cs中的cs文件

CS Project 2的链接文件与另一个项目中的同一文件。这样就可以维护一个文件版本,而不使用不同的程序集

CS Project 2现在有一个cs文件引用CS Project 1的内容,所以类名称空间现在不正确。

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

IE:[MyDefaultNameSpace] .BaseClasses

如果可能的话,我想避免做#if #else,所以我不必添加符号。

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

2 个答案:

答案 0 :(得分:0)

尝试使用“Reflection API” - https://msdn.microsoft.com/en-us/library/ms173183.aspx 例如。

System.Type myNameSpaceAndClassName = this.getType()

答案 1 :(得分:0)

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

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

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