2010-01-05 77 views
1

如何获得c#中的.csproj文件路径?在c#中VB6 App.Path的等价性是什么?

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

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

点在\调试或\释放路径的.exe文件。

回答

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配置中编译的时候。在发布版本中,debugging将始终为false

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

0

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

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

1

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

我假设你需要这个,因为你的程序正在访问与.exe相同目录中的文件,这些文件现在存储在你的项目目录中。所有你需要做的就是复制它们,IDE使它变得简单。项目+添加现有项目,选择文件。在属性窗口中,设置生成操作=无,并复制到输出目录=复制,如果更新。

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