从主项目中查找类库的资源

问题描述 投票:1回答:3

问题

我的解决方案由少数几个项目组成。 UI的主要界面称为“助理”,后端称为“ AssistantLib”。

这里是结构:

enter image description here

在AssistantLib中,我将PDF作为资源包含在Resources文件夹中,其中Build ActionContent,而Copy to Output DirectoryCopy Always。我可以在调试时通过使用以下组合找到它们:

    private string GetArtifactPath(string artifactName)
    {
        return Path.Combine(GetResourcePath(), artifactName);
    }

    public static string GetResourcePath()
    {
        return Path.Combine(Directory.GetCurrentDirectory(), "Resources");
    }

这有效。从GetArtifactPath返回字符串后,我将使用Process对象和AcroRd32.exe打开文件。

请注意,我需要通过文件路径引用这些文件。它们不是读取或流式传输的简单txt。我还需要能够使用AcroRd32.exe提供的某些标志来打开它们。这意味着我必须具有文件路径

发布ClickOnce应用后遇到的问题是,收到一个找不到该文件的错误:

Error: Could not find a part of the path 'C:\Users\EL-C\AppData\Local\Apps\2.0\3JCPDD49.7G5\9122AMZE.NZL\azte..tion_edea8654ffceff97_0001.0000_447ed0da08290357\Resources\Guidelines\3.2'.. Stacktrace:    at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)

当然,当我去那个位置时,资源不在那里。

我尝试过的事情

  • 我已将Build Action更改为“嵌入式资源”,并且没有-相同的结果
  • 我已将Copy Output Directory更改为“请勿复制”>
  • This不适用,因为我无法流式传输这些资源,它们不是简单的文本文件。我也不想阅读它们,而是想打开它们。
  • This也不适用,因为在我的情况下引用MyNamespace.Properties.Resources.My_Zip_File;无效。我不知道资源的名称。
  • 更新

我正在研究构建后事件。通过这样做,我发现这些资源在构建后的输出目录中已经

enter image description here

但是由于某些原因,它们在我发布时不显示:

enter image description here

更新2

为了说明文件夹结构如何影响此效果,在此之前和之后。

[当资源位于AssistantLib中时(例如EVMSBP),这是结构:

Resource in Lib

这是在AssistantLib中安装资源后,ClickOnce发布文件夹的外观:

Missing

或者,当资源位于Assistant中时(同样是EVMSBP),这是结构:

Resource in Assistant

这是在Assistant中使用资源安装后,ClickOnce publish文件夹的外观:

Not Missing

据我所知,资源必须是Startup项目的一部分。听起来像疯了吗?

我想念什么?

问题我的解决方案由少数几个项目组成。 UI的主要部分称为“助手”,后端称为“ AssistantLib”。这是结构:在AssistantLib中,我有...

c# .net clickonce visual-studio-2019
3个回答
0
投票

当我使用Visual Studio安装程序以exe格式构建项目时,我面临相同的问题,我只需在项目构建输出目录中简单地添加pdf文件。您必须将pdf文件夹复制到bin

release

0
投票

[不幸的是,答案是将我的资源移到启动项目UI项目中。


0
投票

有关编辑的更多详细信息,这是我复制的方式

© www.soinside.com 2019 - 2024. All rights reserved.