【问题标题】:VS/C# Equivalent of Java/Eclipse "resource folder"?VS/C# 等效于 Java/Eclipse“资源文件夹”?
【发布时间】:2020-11-25 04:50:51
【问题描述】:

在 Eclipse IDE 中使用 Java 时,可以使用“库”选项卡中的“添加类文件夹”选项将文件夹添加到“构建路径”,这允许该文件夹中的资源在应用程序的 jar 中进行编译文件,而不是在外面或根本不在。

.

这样,您可以通过Class.getResource(String name)方法以URL 的形式获取文件夹内的资源。我已经了解了 C# 的等效项:Assembly.GetManifestResourceStream(string name)Assembly.GetManifestResourceInfo(string resourceName) 方法,但我不知道 Visual Studio 中 C# 的“构建路径”等效项(如果您想知道,我使用的是 2019)。 有人可以解释一下我将如何在 C# 中完成 Java 的构建路径资源文件夹吗?

(请注意,我希望创建一个资源文件夹,其中放置在该文件夹中的任何内容都将被视为应用程序资源。我不是在寻找一种单独添加一个或多个资源文件的方法。)

任何回复将不胜感激! :)

【问题讨论】:

    标签: c# visual-studio .net-core .net-assembly embedded-resource


    【解决方案1】:

    您只需创建一个文件夹并根据自己的喜好命名,例如“资源”。添加您希望在其中被您的应用程序视为资源的任何文件。

    然后导航到每个资源文件的属性(您可以按 F4)并在菜单中选择您希望编译器对该文件执行的操作(Compile Action 是选项名称,如果我牢记)。您可以在此处选择作为资源的类型、命名空间(您的构建路径),以及您是否希望每次编译应用程序时都复制该文件,等等。

    【讨论】:

    • 感谢您的回答。我正在寻找一种方法来避免这种情况,因为我的资源文件夹可能有很多文件并且为每个文件更改“编译操作”会有点乏味,这就是为什么我想要一个资源文件夹而不是很多资源文件,但我可以将此作为我最后的手段。再次感谢! :)
    • Okey... 然后您可以使用资源文件 (.resx)。这是一种不同的方法,但您可以存储任何类型的数据。看看这个link
    【解决方案2】:

    经过一番研究,我找到了解决这个问题的方法。事实上,有两种可能的解决方案来解决这个问题。


    .NET Core 解决方案

    首先涉及编辑 C# 项目的 .csproj 文件。此解决方案仅在 .Net Core 中可用。

    您可以将此代码 sn-p 添加到您的文件中,并将 {PATH_TO_RESOUCE_FOLDER_HERE} 文件夹更改为您想要的文件夹。

    <ItemGroup>
        <EmbeddedResource Include="{PATH_TO_RESOUCE_FOLDER_HERE}\**" />
    </ItemGroup>
    

    现在放置在该文件夹中的任何项目都将被视为嵌入资源Assembly.GetManifestResourceStream(string name) 方法。


    常规 .NET 解决方案

    第二种方法是使用.resx 文件来封装你的所有资源

    Visual Studio 2019 中,您可以通过右键单击项目中要将文件添加到的位置并导航到 Add &gt; New Item 来创建 .resx 文件(您可以也按Ctrl+Shift+A)。您现在可以导航到引用“资源文件”的项目并选择它。您现在可以使用此 GUI 插入您的资源(要了解更深入的说明,请单击 thisthis 链接。有关用例,请参阅此 MSDN)。

    The "Resources File" option

    请注意,此解决方案也适用于 .NET Core。


    我希望这个答案对您和我一样有帮助! :)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-10
      • 1970-01-01
      • 1970-01-01
      • 2013-08-16
      • 2016-08-06
      • 2013-07-08
      相关资源
      最近更新 更多