在 .net class 库中检测调用项目类型

Detect calling project type in a .net class library

我在 Dotnet 中生成了一个 class 库。 现在我已经在各种客户端、控制台程序、服务、单元测试项目和 ASP.NET 网站中链接了这个库。 在某些部分,我需要从磁盘加载某些文件(即 Excel 模板)。在这种情况下,不同调用方项目的位置不同。

所以我的问题是:找出哪种项目类型当前正在使用我的库的最佳方法是什么?

检测网站客户端很简单,我只需要检查If System.Web.HttpContext.Current是否不是Nothing。但是如何检测其他客户端呢?

即使您现在设法检测到不同类型的应用程序,您也永远无法确定该逻辑将来是否仍然有效。

我认为最好不要猜测并实施另一个解决方案,例如:

  1. 使用相对于当前应用程序根目录的路径,例如通过使用 AppDomain.CurrentDomain.BaseDirectory (MSDN)
  2. 将您的文件位置放入应用程序的配置文件(在 appSettings 部分)并使用 ConfigurationManager.AppSettings.Get() (MSDN)
  3. 从您的库中读取它