VB#App.Path在c#中的等价性是什么?

时间:2010-01-05 07:40:08

标签: c# path

如何在c#中获取.csproj的文件路径?

我想获取此信息以检查该路径中是否存在文件。因此,如果程序找到该文件,则表示它处于调试模式,否则有一个用户正在执行该程序。

但使用Application.ExecutablePath或Application.StartupPath或System.Reflection .....

指向\ debug或\ release path中的.exe文件。

3 个答案:

答案 0 :(得分:2)

AFAIK,没有BCL API可以为您提供.csproj文件的路径。您应该记得.csproj文件是Visual Studio的工件,但.NET本身并不依赖于VS - 您可以使用csc.exe编译C#应用程序,在这种情况下,您将拥有一个功能齐全的.NET应用程序任何.csproj文件都参与其中。

如果要测试应用程序是否在调试模式下运行,可以使用#if directive,如下所示:

bool debugging = false;
#if DEBUG
    debugging = true;
#endif

debugging变量仅在定义了DEBUG符号时才为真,这是在Debug配置中编译时的。在发布版本中,debugging始终为false

但是,我认为首先有这样的要求是可疑的。

答案 1 :(得分:1)

VB6在与项目相同的目录中创建了.exe,VB.NET没有。 VB6的App.Path确实与Application.ExecutablePath做同样的事情,只是将.exe写入不同的目录。部署程序时,ExecutablePath仍将指向.exe,已部署的程序没有“项目目录”。

我假设您需要这个,因为您的程序正在访问与.exe相同的目录中的文件,这些文件现在存储在您的项目目录中。您只需复制它们,IDE就可以轻松实现。项目+添加现有项目,选择文件。在“属性”窗口中,设置“构建操作=无”和“复制到输出目录”=“如果较新则复制”。

另一种方法是Project + Properties,Compile选项卡,擦除Build输出路径设置。现在它将与VB6一样工作。但是对于Release vs Debug版本或SSCS来说不会那么好。不要发送Debug版本,它会在没有调试器的情况下泄漏。

答案 2 :(得分:0)

AFAIK无法从代码中获取.csproj文件路径。在大多数情况下(在开发之后),应用程序将在没有csproj文件的机器上运行,所以我认为.net没有理由公开它。

如果您所谈论的文件包含在项目中,则可以将文件的“复制到输出目录”属性设置为“始终复制”。然后,在构建项目时,它将被复制到您的调试或发布文件夹中。使用Application.ExecutablePath访问它。