如果没有System.Web.dll,C#Library Code如何知道它的托管应用程序类型?

前端之家收集整理的这篇文章主要介绍了如果没有System.Web.dll,C#Library Code如何知道它的托管应用程序类型?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我们正在 Windows上使用C#和.NET 4.0在Visual Studio 2010中开发多个应用程序.两个SilverLight应用程序使用来自多个WCF项目的服务.另一个是控制台应用程序.

我们希望在一个单独的库项目中放置一些“通用”功能,以便分解和重用代码.由于文件路径处理不同,此库需要知道应用程序是托管(IIS,ASP.NET …),如WCF服务还是作为控制台应用程序运行.

谷歌搜索这个问题,人们表示使用System.Web.dll以了解代码是否托管,使用HttpContext,HostingEnvironment.IsHosted ……问题是这种方法需要包含对System.Web int的引用如果此库将由具有客户端配置文件的控制台项目引用,则不能接受库项目.

我们的想法是使用另一种不涉及使用System.Web程序集的技术.

解决方法

如果您只需要获取包含应用程序的文件夹中的文件的路径(如问题评论中所述),您可以使用:
Path.Combine(System.AppDomain.CurrentDomain.BaseDirectory,"filename")

对于ASP.NET应用程序,这将是根文件夹(与MapPath(“〜/”filename)相同),对于控制台应用程序,它将是包含可执行文件文件夹.

评论到原始问题:

when running a as console application,just use the filename as a relative path

我不建议使用相对路径.这将与当前工作目录相关,该目录可能与应用程序目录不同.

猜你在找的HTML相关文章