C# 找不到文档图像

C# 找不到文档图像,c#,pdfsharp,migradoc,C#,Pdfsharp,Migradoc,我在文件夹“root”中有一个脚本。我在根目录中有一个名为“Images”的文件夹,在Images中有一个名为“logo.png”的文件夹 根 script.cs 图像 logo.png 我有以下代码来创建节: Document document = new Document(); Section section = document.AddSection(); 我试过这样做: section.AddImage("../../Images/logo.png"); 这是: section.A

我在文件夹“root”中有一个脚本。我在根目录中有一个名为“Images”的文件夹,在Images中有一个名为“logo.png”的文件夹

根 script.cs 图像 logo.png 我有以下代码来创建节:

Document document = new Document();

Section section = document.AddSection();
我试过这样做:

section.AddImage("../../Images/logo.png");
这是:

section.AddImage("Images/logo.png");
尝试添加图像,但都返回“未找到图像”


我已经尝试过将MigraDoc更新到v1.5,但它似乎不起作用。

脚本被编译,您将得到一个执行的程序集。您使用的是相对路径,默认情况下,图像将相对于进程的工作目录进行搜索,该目录很可能是相对于包含程序集的文件夹的。使用ASP.NET,事情可能会更加复杂


提示:DocumentRenderer类具有WorkingDirectory属性。如果设置它,则将相对于此工作目录搜索具有相对路径的图像。将其设置为root,第二个路径Images/logo.png应该可以工作。

请原谅,因为我在提供答案之前意识到了此线程的年龄,但我也遇到了接受的答案无法解决的问题

在C语言中,您可以使用它来引用相对路径。在您的情况下,它看起来像:

section.AddImage(HostingEnvironment.MapPath("~/Images/logo.png"));

谢谢你的帮助。假设我的真实目录是'Application/Project.csproj/Images/logo.png',设置为工作目录的确切代码是什么?如果你的程序集位于'Application/Project.csproj/bin/debug'中,那么.././Images/logo.png应该可以做到这一点。可能需要另一个../例如,如果程序集位于bin/debug/net462或类似文件夹中。这仅适用于未为项目设置工作文件夹的情况。可能包括section.AddParagraphEnvironment.CurrentDirectory;请原谅,我对类库之类的概念还不熟悉,但是这个项目有4个主要文件夹,其中一个是“应用程序”,每个文件夹包含大约20个类库的项目。csproj就是其中之一。我知道“main”项目位于一个名为“Presentation”的根文件夹中,但我对程序集的理解不够,不知道在哪里组装什么。。。遗憾的是,@.././Image/logo.png也不起作用。使用environment.currentdirectory,我获得了一些类似于“C:/Implementation/release”的本地文件夹,而解决方案本身位于“C:/Implementation/source”中。我使用“var dir=new”获得它DirectoryInfo@LogoFolder/Logo.png;'然后是“section.AddImagedir.FullName”。但是,我有点作弊。我检查了“Implementation/Release”文件夹,发现其中已经有一个名为“LogoFolder/Logo.png”的文件夹,其中有我需要的徽标,因此我引用了该文件夹。但是谢谢你的帮助,你无疑把我推向了正确的方向。我想多花点时间让它按照我想要的方式工作。也许我会在不久的将来对此进行调查,以彻底解决这个问题。抱歉,但我没有代码来测试它了-因此我无法将其标记为已接受,因为我无法验证它!但是谢谢你的回复:@AidanH,不是什么大人物。我想让它更具可视性,因为在搜索这个问题时,你的问题是谷歌上最热门的搜索结果之一。