【问题标题】:Deploying c# application issues部署 c# 应用程序问题
【发布时间】:2010-12-20 14:42:48
【问题描述】:

我有一个带有一个文件夹的应用程序,我通过右键单击项目,选择添加文件夹来添加该文件夹。在这个文件夹中,我有 xml 文件,这些文件设置为构建操作:内容,复制到输出目录:如果更新则复制(我尝试设置为嵌入式资源)除此之外,我还有一些文本文件等等。

在我的 bin/debug 输出目录中,我有 exe、带有 xml 的文件夹、独立的 .txt 文件等等。我的问题是,如果我将 exe 发送给我的朋友尝试,他总是会抛出异常。

假设他将 exe 放在桌面上,我的程序有时会读取文件夹中 xml 文件的文件名。它使用以下代码来做到这一点

String[] filePaths = Directory.GetFiles(@"DataSources\");

我假设正因为如此,当 exe 从桌面运行时,它希望 .xml 文件的文件夹在同一个地方?尝试读取 .txt 文件时,我也遇到了相同类型的异常。我在这里做错了什么?

感谢您的宝贵时间

【问题讨论】:

  • 我设法通过制作一个安装工具包来做到这一点,它将所需的文件复制到带有 exe 文件的输出目录。我觉得这样更专业?

标签: c# deployment


【解决方案1】:

当使用相对路径读取文件时,您将获得相对于应用程序当前目录的路径。 提示: 在 C# 中,您可以查看使用 Environment.CurrentDirectory 的目录。

因此,如果您在桌面上创建快捷方式,您需要确保右键单击快捷方式并将其“开始于”文件夹设置为您的应用程序目录。这样,当它的起始路径和相对路径将相对于该路径而不是快捷方式的路径时,它的当前目录将被设置。

如果您确实将 exe 文件移动到桌面,您还需要移动它需要的任何资源,因此如果它想要一个名为“datasources”的文件夹,您也必须移动该文件夹,或者设置当前目录你启动应用程序。

【讨论】:

    【解决方案2】:

    您是否尝试过类似的方法:http://msdn.microsoft.com/en-us/library/system.windows.forms.application.executablepath.aspxhttp://msdn.microsoft.com/en-us/library/system.environment.currentdirectory.aspx

    所以 Directory.GetFiles(environment.currentdirectory + @"\DataSources\");

    【讨论】:

    • 当它到达 StreamReader sr = new StreamReader("txtfile.txt");
    猜你喜欢
    • 2015-04-15
    • 2012-05-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-13
    • 2011-11-22
    • 2020-01-09
    相关资源
    最近更新 更多