我有一个控制台应用程序,必须从代码中启动。此应用程序的配置文件位于同一文件夹中。如果我手动启动控制台应用程序,它会找到配置文件,一切都很好。但当我在代码中作为进程启动它时,它会尝试在应用程序的文件夹中查找配置,所以我需要将它复制到Debug/Release文件夹中。我是否可以避免这种行为,因为我希望此控制台应用程序作为一个模块独立定位?
您需要定义流程的WorkingDirectory
。查看ProcessStartInfo.WorkingDirectory
了解更多信息。
在您的情况下,您可能希望将UseShellExecute
设置为false
,并将工作目录设置为可执行文件的位置。
您可以从执行程序集中加载文件。Assembly.GetExecutingAssembly().Location
将为您提供执行此代码的ddl的当前位置。
var config = ConfigurationManager.OpenExeConfiguration(Assembly.GetExecutingAssembly().Location);