c# - 打开目录文件夹中的文件

标签 c# wpf

[编辑]

我尝试从基本目录中的文件夹打开文件。

在解决方案资源管理器中,有一个文件夹“ Docs”和一个pdf文件(tempPDF.pdf)。
那将对应于我的项目文件夹中的一个文件夹。 (例如Project \ Docs),该文件位于保存级别的bin和properties文件夹中。

String assemblyPath = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().CodeBase);

Process proc = new Process();
proc.StartInfo = new ProcessStartInfo()
{
    FileName = assemblyPath + "\\Docs\\tempPDF.pdf"
};
proc.Start();


我已经将“生成操作”更改为“资源”,并将“复制到输出目录”更改为“始终复制”。但是,pdf文件不会复制到垃圾箱,程序也无法指定该文件。我清理,构建和重建解决方案。

路径始终指向bin \ Debug文件夹,因为这是可执行文件所在的位置,但是文件位于与bin相同级别的位置。

我可以简单地通过“ Images \ img.png”之类的路径在XAML中指定我的图像,它将相对地找到该图像。

这应该是一个非常简单的问题-单击鼠标即可打开PDF。

[编辑-有答案]

必须将“生成操作”更改为“嵌入式资源”,而不是“资源”(资源仅复制没有文件的空文件夹)。我不知道为什么。

最佳答案

首先,没有针对此的XAML解决方案。没有代码支持,我们无法执行流程。

您显示的URI是相对于当前程序集的。
您可以使用程序集目录路径,然后附加文件的相对路径。
可能是这样的:

String assemblyPath = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().CodeBase);

Process proc = new Process();
proc.StartInfo = new ProcessStartInfo()
{
    FileName = assemblyPath + "\\Docs\\somePDF.pdf"
};
proc.Start();


如果要将文档放在应用程序文件夹中,也可以使用该目录路径而不是程序集路径:

string appPath = Path.GetDirectoryName(Application.ExecutablePath);

关于c# - 打开目录文件夹中的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7203649/

相关文章:

C# - 使用通用枚举(或控制列表的替代方法)

c# - 如何获取int的位大小

wpf - 折叠除第一个组之外的所有组

wpf - ClickOnce 部署后按钮图标丢失

c# - 有什么方法可以阻止我的应用程序在 Windows 7 机器上运行?

c# - 跨多个项目重用数据库访问以确保更新时不会破坏任何项目的最佳方法是什么?

c# - LINQ to Entities 无法识别方法 'System.String Decrypt(System.String, System.String)' 方法

c# - 无法在我的 DataGrid 中使用类型化的 DataRowView

wpf - 设置 exitButton.IsCancel = True 时触发两次关闭事件

WPF 应用程序有两个 UI 线程,每个线程都在自己的监视器上运行?