C# C中的目录路径#

C# C中的目录路径#,c#,.net,winforms,C#,.net,Winforms,在我的winform应用程序中,我需要如下路径 "D:\NEWD\WIN_NEW\Sales\Report\Report2.rdlc" 但是我只有“Sales\Report\Report2.rdlc”问题是,我无法预测这条路径D:\NEWD\WIN\u NEW,但是当我使用 Directory.GetCurrentDirectory() + "\\Sales\\Report\\Report2.rdlc"; 路径包括我的bin\debug目录。如何获取所需的路径?调试时,当前目录的路径(执行程

在我的winform应用程序中,我需要如下路径

"D:\NEWD\WIN_NEW\Sales\Report\Report2.rdlc"
但是我只有
“Sales\Report\Report2.rdlc”
问题是,我无法预测这条路径
D:\NEWD\WIN\u NEW
,但是当我使用

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

路径包括我的
bin\debug
目录。如何获取所需的路径?

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

当您部署该工具时,您将不再存在此问题


看起来,您希望使用工具部署“Sales”目录:因此,您可能应该将其包含在解决方案中,并选择它与可执行文件一起复制到输出目录(.\bin\debug)。

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

当您部署该工具时,您将不再存在此问题


看起来,您希望使用工具部署“Sales”目录:因此,也许您应该将其包含在解决方案中,并选择它与可执行文件一起复制到输出目录(.\bin\debug)。

如果您知道您将始终处于bin\debug中,您可以这样做

 var path=System.IO.Path.GetFullPath(@"..\..\Sales\Report\Report2.rdlc");
或者你可以做一些检测

var path=@"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 path=@"Sales\Report\Report2.rdlc";
#if DEBUG

path=@"..\..\"+path;

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

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

如果您知道您将始终处于bin\debug中,您可以这样做

 var path=System.IO.Path.GetFullPath(@"..\..\Sales\Report\Report2.rdlc");
或者你可以做一些检测

var path=@"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 path=@"Sales\Report\Report2.rdlc";
#if DEBUG

path=@"..\..\"+path;

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

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

嗯,我认为这似乎是一个更棘手的问题: 考虑到现在您有了
bin\Debug
,在部署时该路径将消失,所以说GetCurrentDirectory(),我认为最好使用
path.GetDirectoryName(Application.ExecutablePath)
,您将获得部署路径。还有一天,您可能需要更改部署的文件结构,所以

仅在bin\Debug或bin\Release中复制您未来的部署文件/文件夹布局,这样您的应用程序将以相同的方式在Debug和deploy中工作。如果可能的话,总是这样。


希望这能有所帮助。

嗯,我认为这似乎是一个更棘手的问题: 考虑到现在您有了
bin\Debug
,在部署时该路径将消失,所以说GetCurrentDirectory(),我认为最好使用
path.GetDirectoryName(Application.ExecutablePath)
,您将获得部署路径。还有一天,您可能需要更改部署的文件结构,所以

仅在bin\Debug或bin\Release中复制您未来的部署文件/文件夹布局,这样您的应用程序将以相同的方式在Debug和deploy中工作。如果可能的话,总是这样。


希望这有帮助。

您需要提供更多信息,无法猜测可能是任意路径的路径。很难理解这个问题。当您将程序移动到目录D:\NEWD\WIN\u NEW时,它将工作。如果你不这样做,为什么你不能用“D:\NEWD\WIN\u NEW\Sales\Report\Report2.rdlc”作为路径?你需要提供更多信息,没有办法猜测可能是任何东西的任意路径。这很难理解问题。当您将程序移动到目录D:\NEWD\WIN\u NEW时,它将工作。如果不这样做,为什么不能使用“D:\NEWD\WIN\u NEW\Sales\Report\Report2.rdlc”作为路径?