【问题标题】:Get license file from a folder in C# project从 C# 项目中的文件夹获取许可证文件
【发布时间】:2010-04-20 08:50:25
【问题描述】:

我有一个许可证文件,我需要在运行时访问它才能创建 pdf 文件。创建内存 pdf 后,我需要在该 pdf 上调用一个方法来设置许可证,如下所示:

pdf.SetLicense("pathToLicenseFileHere");

许可证文件与创建 pdf 的 .cs 文件位于同一项目中,但位于单独的文件夹中。我无法让这个简单的事情正确地表现,这让我有点难过,因为它真的不应该那么难。 :(

我尝试这样设置路径:

string path = @"\Resources\File.lic";

但它不适合我。

编辑:

更多信息。我应该提一下,这是一个将 pdf:s 作为字节 [] 返回的 Web 服务。 Web 服务创建 pdf:s,在此创建过程中,我需要设置许可证文件,以便从 pdf 文档中删除任何水印。 pdf 本身不保存到光盘,只需要在创建时访问一次许可证文件。

【问题讨论】:

    标签: c# asp.net web-services file-io relative-path


    【解决方案1】:

    所以该文件在您的项目中,您需要它在您的应用程序所在文件夹中的同一文件夹(结构)中。

    如果我是正确的,有两种方法可以让它工作:

    1. 将该文件标记为Content,以便VS将其复制到您的.exe文件的文件夹中
    2. 如果内存访问足够,则将其作为资源添加到您的应用中

    对于解决方案 1(作为内容文件)

    • 在解决方案资源管理器中标记文件
    • 右键单击文件并选择属性
    • Build Action 更改为 Content

    现在文件位于Path.Combine(Path.GetDirectoryName(Application.ExecutablePath), "license.txt")

    也许您在解决方案目录中添加了一个文件夹并将所需文件移到那里。在这种情况下,VS 将创建您的解决方案中定义的整个结构来放置您的内容文件。在这种情况下,您可能还需要将文件夹信息添加到上面的代码中。

    对于解决方案 2(作为内部资源)

    • 将想要的文件(如果还没有)添加到您的项目(项目 - 添加现有项目)
    • 在解决方案资源管理器中双击 MyProject - 属性 - Resources.resx
    • 单击“添加资源”按钮旁边的小向下箭头,然后选择“添加现有文件...”
    • 在对话框中再次选择您喜欢的文件

    现在该文件已作为内部资源添加到您的项目中。要从代码中访问它,只需使用Properties.Resources.MyFileName。根据文件的类型,您将在此处获得一个字符串(如果它是纯文本文件)或字节数组(如果它包含任何非文本)。

    此外,如果它是一个简单的文本文件,您可以在解决方案资源管理器中双击它,对其进行编辑,然后在重建后新应用程序包含更改后的文本(如果您的应用程序中需要一些 SQL 语句或 XML 文件,这非常方便) .

    【讨论】:

    • 感谢奥利弗的启发性回答。我会试试你的建议,如果我让它起作用,我会回来标记为已接受。 :)
    【解决方案2】:

    路径需要相对于可执行文件的位置,而不是相对于 .cs 文件的位置。

    【讨论】:

    • 确实如此,但我该如何实现。我知道我可以使用 Assembly.GetExecutingAssembly,但是然后呢?我是否需要将许可证文件的构建操作设置为任何特定的内容才能使用 GetManifestResourceStream() 进行操作?当前设置为无。谢谢。
    • @daft:可执行文件不知道 .cs 文件的位置。所以你需要重新计算你相对于可执行位置的路径。
    • @daft:请注意,您的相对位置应为用户计算机定义,而不是为您的开发环境定义。在用户的机器上,您的 .pdf 文件可能与可执行文件位于同一文件夹中。
    • @Vlad:谢谢。这是一个真正的信心打击。我从不认为我是一个优秀的开发者,但我也不认为我是无用的。现在我当然更倾向于后一种选择,这有点令人遗憾......您能否检查我在原始问题中的附加信息,并为我提供一个示例?
    • @daft:抱歉,确实阅读了您的问题。 path = @"\Resources\File.lic" 不应该工作,因为它指的是当前驱动器根文件夹中的 Resources 子文件夹。正如@Oliver 建议的那样,您最好使用Application.ExecutablePath。从Application.ExecutablePath 开始,如果您的 pdf 位于此处 w.r.t.,您可以进入 Resources 文件夹。你的可执行文件。更好的想法可能是将 pdf 嵌入到可执行文件中,因此您无需关心路径。但是请注意,嵌入会使对 pdf 的更新变得更加复杂:)
    猜你喜欢
    • 2012-04-28
    • 2011-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-16
    • 1970-01-01
    • 1970-01-01
    • 2015-11-19
    相关资源
    最近更新 更多