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

时间:2010-04-20 08:50:25

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

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

pdf.SetLicense("pathToLicenseFileHere");

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

我尝试设置这样的路径:

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

但这对我来说不合适。

编辑:

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

2 个答案:

答案 0 :(得分:5)

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

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

  1. 将文件标记为 Content ,以便VS将其复制到.exe文件的文件夹中
  2. 如果内存访问足够,则将其作为资源添加到您的应用
  3. 对于解决方案1(作为内容文件)

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

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

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

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

    • 将所需文件(如果尚未发生)添加到项目中(项目 - 添加现有项目)
    • 在MyProject上的Solution Explorer中双击 - Properties - Resources.resx
    • 单击“添加资源”按钮旁边的小向下箭头,然后选择“添加现有文件...”
    • 在对话框
    • 中再次选择您喜欢的文件

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

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

答案 1 :(得分:1)

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