代码之家  ›  专栏  ›  技术社区  ›  Henric

从C项目中的文件夹获取许可证文件

  •  1
  • Henric  · 技术社区  · 16 年前

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

    pdf.SetLicense("pathToLicenseFileHere");
    

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

    我尝试这样设置路径:

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

    但这对我来说不太合适。

    编辑:

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

    2 回复  |  直到 16 年前
        1
  •  5
  •   Oliver    16 年前

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

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

    1. 将文件标记为 内容 ,以便vs将其复制到.exe文件的文件夹中
    2. 如果内存访问足够,将其作为资源添加到应用程序中

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

    • 在解决方案资源管理器中标记文件
    • 右键单击该文件并选择“属性”
    • 改变 构建动作 内容

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

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

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

    • 将所需文件(如果尚未发生)添加到项目(项目-添加现有项)
    • 在解决方案资源管理器中双击myproject-properties-resources.resx
    • 单击“添加资源”按钮旁边的小箭头,然后选择“添加现有文件”…
    • 在对话框中再次选择您喜欢的文件

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

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

        2
  •  1
  •   psychotik    16 年前

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