Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何确定dll的宿主位置_C#_Asp.net_.net_Wcf - Fatal编程技术网

C# 如何确定dll的宿主位置

C# 如何确定dll的宿主位置,c#,asp.net,.net,wcf,C#,Asp.net,.net,Wcf,我需要知道我的程序集所在的上下文(ASP.NET、Windows服务、Windows应用程序等) 我的程序集应该根据上下文调用不同的函数。例如,如果它需要创建一个相对于其位置的文件夹,我想知道使用哪种方法:Path.GetFullPath(dirName)或Server.MapPath(dirName)听起来您正在开发一个DLL供其他开发人员使用。听起来好像您正试图在不知道和/或无法控制环境的地方创建临时文件 如果上述情况属实,则最好创建一个配置文件(位于与DLL相同的目录中),其中包含一个用于

我需要知道我的程序集所在的上下文(ASP.NET、Windows服务、Windows应用程序等)


我的程序集应该根据上下文调用不同的函数。例如,如果它需要创建一个相对于其位置的文件夹,我想知道使用哪种方法:
Path.GetFullPath(dirName)
Server.MapPath(dirName)

听起来您正在开发一个DLL供其他开发人员使用。听起来好像您正试图在不知道和/或无法控制环境的地方创建临时文件

如果上述情况属实,则最好创建一个配置文件(位于与DLL相同的目录中),其中包含一个用于临时文件的路径。(或者,更好的方法是,在App.Config或Web.Config中使用类似的)

如果没有此配置文件,您可以尝试使用,但这很可能(以及在其他情况下)

如果无法创建临时文件,可以尝试将所需信息存储在内存中(例如,使用)

如果失败,那么您可以随时告诉用户使用配置文件


在回答您的实际问题时,我不知道有什么方法可以可靠地说出您正在从事的项目类型。NET的美妙之处在于它是如此灵活。从理论上讲,您可以编写一个能够作为web服务器、桌面应用程序或windows服务运行的控制台应用程序。可能是三合一

您可以尝试根据的类型进行猜测(System.Windows可能表示桌面,System.Web可能表示ASP.NET等),但这将充满错误。我编写了几个引用web程序集的桌面应用程序,还编写了引用桌面程序集的网站

但是,如果将路径放在配置文件中,则可能不需要知道上下文。。。您已经拥有了所需的完全限定路径,而无需使用GetFullPath()或MapPath()

如果确实需要区分,可以在配置文件中包含一个设置。DLL的用户可以将程序集配置为使用它的环境。如果他们配置错误。。。好。。。如果配置错误,大多数软件都会出现故障。事情就是这样


或者。。。更好的是。。。如果某些任务的行为(如查找文件路径)需要根据开发过程中未知的某些条件进行更改,则可以编写DLL代码以支持用户在需要时提供适当的功能。

@CodeCaster-我认为OP可能会询问所有上下文的路径是否相同(ASP.NET、Windows服务、Windows应用程序等)。例如,如果ASP.NET返回URL,则可能需要对其进行映射。@Ramhound:系统变量,例如what?感谢您,事实上,我创建的是一个配置,该配置具有“接受”答案文件夹的路径,可帮助未来的访问者找到问题的答案。(请不要感到压力-如果这个答案没有用,你不需要接受)对不起,直到我知道我还没有找到我的问题的直接答案,当我在ConfigFile中输入路径并不意味着我完成了我的观点时,无论如何,你的建议是好的。@NiklausWirth-请参阅更新