2011-08-24 202 views
1

在我的WinForm应用程序,我需要像目录路径

"D:\NEWD\WIN_NEW\Sales\Report\Report2.rdlc" 

的路径,但我只有"Sales\Report\Report2.rdlc"事情是DAT我无法预测此路径D:\NEWD\WIN_NEW但是当我使用

Directory.GetCurrentDirectory() + "\\Sales\\Report\\Report2.rdlc"; 

该路径包含我的bin\debug目录。我如何获得所需的路径?

+0

你需要提供更多的信息,没有办法猜测任何可能是任何东西的路径 –

+0

很难理解这个问题。当您将程序移动到目录D:\ NEWD \ WIN_NEW时,它将起作用。如果你不这样做,为什么你不能只使用“D:\ NEWD \ WIN_NEW \ Sales \ Report \ Report2.rdlc”作为路径? – PythEch

回答

4

如果你知道你总是要在斌\调试,你可以只是做

var path=System.IO.Path.GetFullPath(@"..\..\Sales\Report\Report2.rdlc"); 

或者你可以做一些检测

var [email protected]"Sales\Report\Report2.rdlc"; 
var currentDir=System.IO.Directory.GetCurrentDirectory(); 
if (currentDir.ToLower().EndsWith(@"\bin\debug") || 
    currentDir.ToLower().EndsWith(@"\bin\release")) { 

    path=System.IO.Path.GetFullPath(@"..\..\" + path); 
} else { 
    path=System.IO.Path.GetFullPath(path); 
} 

检测的另一种形式是做路径条只有在你正在调试的情况下,应该设置DEBUG以便你可以做...

var [email protected]"Sales\Report\Report2.rdlc"; 
#if DEBUG 

[email protected]"..\..\"+path; 

# end if 
path=System.IO.Path.GetFullPath(path); 

最后一个版本的优点是所有额外的检测都不会编译到您的发布代码中。

8

在调试时,当前目录的路径(程序执行的路径)将位于。\ bin \ debug \ dir中。

当您部署该工具时,您不会再遇到此问题。

看来,你想用你的工具部署“销售”目录:所以也许你应该在你的解决方案中包括这个,并选择它复制到你的可执行文件的输出目录(。\ bin \ debug) 。

2

嗯,我觉得这是更triccky的问题,因为它似乎: 考虑到现在你有bin\Debug,对部署路径消失,所以说GetCurrentDirectory(),我要说它能够更好地使用Path.GetDirectoryName(Application.ExecutablePath),你会被检索您的部署路径。还有一天,您可能需要更改您的部署的文件结构,所以...

只需在您的bin \ Debug或bin \ Release中复制将来的部署文件/文件夹布局,以便您的应用程序在DEBUG中工作并以相同的方式部署。总是如果可能的话。

希望这会有所帮助。