2012-03-13 51 views
0

我开发了一个桌面系统,需要部署。我的路径已经完整。见下面的例子。我担心,当我部署我的系统时,它不会在其计算机上运行,​​因为它们没有D驱动器或MY_THESIS文件夹。帮帮我?如何正确编写可移植文件的文件路径?

System.Diagnostics.Process.Start(@"D:\MY_THESIS\WORKING FILES\WindowsFormsApplication2\WindowsFormsApplication2\User Manual\User Guide Outline.pdf"); 

回答

0

假设你的exe文件在同一目录访问PDF格式,只需使用:

string path = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location); 

path = System.IO.Path.Combine(path, "User Guide Outline.pdf"); 
System.Diagnostics.Process.Start(path); 
+0

感谢史蒂夫的快速反应!我的PDF在**用户手册**文件夹下,而exe文件在** obj> Debug **下 – Ritzel 2012-03-13 12:43:04

+1

考虑将您的EXE和PDF部署到同一个目录中。典型的部署方案将EXE,依赖的DLL和所有支持文件放在单个目录或其子目录中。 – 2012-03-13 12:45:51

+0

谢谢!这工作完美! :) – Ritzel 2012-03-13 12:54:14

2

最好的做法是写在一个你肯定会存在的目录中,比如我的文档。

这个片段,您可以访问这个目录:

Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)

SpecialFolder枚举,您可以访问其他常用的目录。

否则,如果你是谁选择在PDF格式将是地方的一个,你总是可以把应用程序目录的PDF和使用Assembly.GetExecutingAssembly().LocationSystem.IO.Path.GetDirectoryName(Application.ExecutablePath)

+0

为什么要将应用程序部署到“我的文档”...? =) – gdoron 2012-03-13 12:41:04

+0

我需要便携式文件的文件路径,因为我将用户手册和数据库与整个源代码和exe一起放入CD。我认为这不会起作用。 – Ritzel 2012-03-13 12:45:19

+0

哦,我明白了..所以基本上你有一个项目A(命名它),现在该项目有源代码/数据库/用户手册这是在PDF格式。 是这样吗? – MDMalik 2012-03-13 13:09:09

0

使用app.config文件 有

connectionStrings> 
    <add name="File Path" connectionString="D:\MY_THESIS\WORKING FILES\WindowsFormsApplication2\WindowsFormsApplication2\User Manual\User Guide Outline.pdf" 
      /> 
</connectionStrings> 

现在,只要在该机器上部署,就可以获得文件所在路径的连接字符串xml文件。这样你才能得到那个文件。如果您没有在项目中部署。

+0

嗨,是的,我没有与该项目部署,这就是为什么我需要一个路径,将能够读取文件该目录与它所在的驱动器无关。该exe文件将被放置在CD中。 – Ritzel 2012-03-13 12:47:57

+0

你打算如何从CD运行exe。我知道这样做,但会直接点击exe文件,而无需安装或任何东西。? – MDMalik 2012-03-13 12:59:33