C# 获取当前正在运行的应用程序路径
我有3个应用程序(asp.net网站、控制台应用程序、SSIS)和一个公共类库,所有这3个应用程序都使用它。该公共库获取位于当前运行目录中的外部配置文件。比如说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
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。