Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/31.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# 获取当前正在运行的应用程序路径_C#_Asp.net_Ssis_Console Application - Fatal编程技术网

C# 获取当前正在运行的应用程序路径

C# 获取当前正在运行的应用程序路径,c#,asp.net,ssis,console-application,C#,Asp.net,Ssis,Console Application,我有3个应用程序(asp.net网站、控制台应用程序、SSIS)和一个公共类库,所有这3个应用程序都使用它。该公共库获取位于当前运行目录中的外部配置文件。比如说 ASP.NET - > c:\MySite\appconfig.xml CONSOLE -> C:\MyConsoleApplication\appconfig.xml SSIS -> c:\MySSISPakage\appconfig.xml 我使用以下代码获取当前正在运行的应用程序路径以获取appconfig

我有3个应用程序(asp.net网站、控制台应用程序、SSIS)和一个公共类库,所有这3个应用程序都使用它。该公共库获取位于当前运行目录中的外部配置文件。比如说

ASP.NET - > c:\MySite\appconfig.xml

CONSOLE -> C:\MyConsoleApplication\appconfig.xml

SSIS -> c:\MySSISPakage\appconfig.xml
我使用以下代码获取当前正在运行的应用程序路径以获取appconfig.xml文件

string appPath = AppDomain.CurrentDomain.BaseDirectory;
在web应用程序中,它运行文件并返回路径

c:\MySite.
但在控制台应用程序中,它返回路径

C:\MyConsoleApplication\bin\debug
C:\MyConsoleApplication
。我要去拿那条路

C:\MyConsoleApplication\bin\debug
C:\MyConsoleApplication

对于控制台应用程序。有什么想法吗?

您可以使用
Directory.GetParent

试着这样做:
Program
是项目中任何类的名称

string path = Path.GetDirectoryName(Assembly.GetAssembly(typeof(Program)).Location);

Console.WriteLine(Directory.GetParent(Directory.GetParent(path).ToString()).ToString());

查看此链接是否有帮助问题在于console应用程序将返回其正在执行的文件夹,其中当前为bin\debug文件夹。如果您将console应用程序移动到另一个文件夹,您希望它返回什么?应用程序确实正在该文件夹中运行(您正在调试模式下运行它,对吗?),当您构建和部署应用程序并从适当的文件夹运行它时,它将反映该文件夹。您需要向调试设置脚本中添加一些内容,以便将配置文件复制到调试文件夹中,以便所有配置文件都能透明地运行。您可以将xml文件的“复制到输出目录”设置为“如果更新,则复制”,以便将文件保存到调试或发布文件夹中。这对于控制台应用程序来说工作正常,我有webapplication和SSIS包,DLL也是一样的。以上代码将是所有3种类型的应用程序都将使用的公共DLL。