.NET把文件嵌入到程序集中的EmbeddedFile

这篇具有很好参考价值的文章主要介绍了.NET把文件嵌入到程序集中的EmbeddedFile。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

简介

有时候我们在发布程序时,不想让客户看到项目中的文件,这时就可以使用.NET的嵌入文件功能(虚拟文件)。在.NET中,虚拟文件(Virtual File)是一种特殊类型的文件,它们在编译时被嵌入到程序集中,而不是作为独立的文件存在于文件系统中。EmbeddedFile是指在编译时将文件内容嵌入到程序集中,并通过虚拟路径来访问的文件。

使用步骤:

1、嵌入的文件配置

首先将要嵌入的文件添加到项目中,我们在vs项目中新建一个名为"dotnet"的文本文件,并右键属性设置其生成操作为 "嵌入的资源"。设置完成右键选择项目 "属性",然后在属性窗口中 "生成" 选项来完成嵌入。如下图:

生成后的文件夹是没有这个文件,如下图

2、文件说明

在代码中可以使用虚拟路径来访问嵌入的文件。虚拟路径是指通过程序集的命名空间和文件名来构建的路径。例如,如果嵌入的文件名为 "dotnet.txt",它位于命名空间为 "Test7" 的程序集中,那么虚拟路径就是 "Test7.dotnet.txt"。

3、用C#代码读取嵌入文件

参考代码如下:

using System;
using System.IO;
using System.Reflection;
using System.Text;

namespace Test7
{
    class Program
    {
        static void Main(string[] args)
        {
            string embeddedFilePath = "Test7.dotnet.txt";
            string fileContent = ReadEmbeddedFile(embeddedFilePath);
            Console.WriteLine(fileContent);
        }
        static string ReadEmbeddedFile(string embeddedFilePath)
        {
            Assembly assembly = Assembly.GetExecutingAssembly();
            //如果跨程序访问或者不确定文件,这里可以判断文件流是否为null
            using (Stream stream = assembly.GetManifestResourceStream(embeddedFilePath))
            {
                if (stream == null)
                {
                    throw new Exception("Embedded文件未发现: " + embeddedFilePath);
                }
                using (StreamReader reader = new StreamReader(stream))
                {
                    return reader.ReadToEnd();
                }
            }
        }
    }
}

在上面的示例中,`ReadEmbeddedFile` 方法通过虚拟路径获取嵌入的文件流,并使用 `StreamReader` 读取文件内容。然后,将文件内容打印到控制台。

注意:虚拟文件的路径是区分大小写的,并且要正确地指定命名空间和文件名。此外,如果文件位于不同的程序集中,你需要使用正确的程序集名称来构建虚拟路径。

结语

本文讲述了在 .NET Core 中使用虚拟文件(EmbeddedFile)的基本方法。当然你也可以将任意类型的文件(例如文本文件、图像文件等)嵌入到程序集中,并以使用上面的方式指定虚拟路径的方式访问它们。它的好处是嵌入方便发布程序,尤其是winform桌面类别的程序。希望本文对你有所收获,欢迎留言或者吐槽!

参考:

1、learn.microsoft.com/zh-cn/dotnet/core/extensions/resources

2、chatgpt文章来源地址https://www.toymoban.com/news/detail-655260.html

来源公众号:DotNet开发跳槽

到了这里,关于.NET把文件嵌入到程序集中的EmbeddedFile的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【ARM 嵌入式 编译系列 3.6 -- 删除lib中的某个文件】

    请阅读 【嵌入式开发学习必备专栏 之 ARM GCC 编译专栏】 比如,如果要删除 libc.a 静态库中的特定对象文件并重新使用这个静态库,在终端中可以使用 ar 命令。 ar 是一个归档工具,它可以创建、修改、提取以及列出归档库文件(如 .a 文件)的内容。 下面是删除 libc.a 中指定

    2024年01月25日
    浏览(56)
  • ASP.NET Core 中的 wwwroot 文件夹

    在本文中,我将讨论 ASP.NET Core 应用程序中的 wwwroot 文件夹。请阅读我们之前讨论过ASP.NET Core 请求处理管道的文章。在本文的最后,您将了解 wwwroot 文件夹及其需求以及如何在 ASP.NET Core 应用程序中进行配置。 ASP.NET Core 中的 wwwroot 文件夹是什么? 默认情况下,ASP.NET Core 应用

    2024年02月04日
    浏览(40)
  • 【C# 调试】.net中的 .pdb文件是什么,有什么用

    mscn:在 Visual Studio 调试器(C#)中指定符号 (.pdb) 和源文件 PDB全称Program Database,程序数据库 ( .pdb) 文件(也称为符号文件)将项目源代码中的标识符和语句映射到已编译应用中的相应标识符和说明。 这些映射文件将调试器链接到源代码,以进行调试。 这个文件会在我们调试

    2024年02月04日
    浏览(46)
  • vscode 的代码提示有时候有,有时候没有(python)

    vscode 的代码提示有时候有,有时候没有。没有的时候出现如下报错: Sorry, something went wrong activating IntelliCode support for Python. Please check the “Python” and “VS IntelliCode” output windows for details. 不太清楚为什么,把 IntelliCode 的版本换了别的也不好用。 先存一下,以后遇到解决方法

    2024年02月09日
    浏览(82)
  • el-input有时候添加不了有时候删不了

    有些情况下在 el-input 是无法输入的,绑定的值动也动不了,删也删不掉,改也改不了可能是以下原因导致 Tips:我出现的问题是通过问题一解决~~~

    2024年02月07日
    浏览(64)
  • 如何在 .NET Core WebApi 中处理 MultipartFormDataContent 中的文件

    在上一篇文章(如何在 .NET Core WebApi 中处理 MultipartFormDataContent)中,我们有描述过如何以最简单的方式在 .NET Core WebApi 中处理 MultipartFormDataContent 。基于框架层面的封装,我们可以快速的从 Request.Form 中分别拿到文件内容和文本内容,但是这些默认的解析方式都是建立在前后

    2023年04月21日
    浏览(35)
  • 【Unity】拖拽放置模型时 为什么出现有时候有紧贴地面和有时候随机再空中的情况

    👨‍💻个人主页 :@元宇宙-秩沅 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 本文由 秩沅 原创 😶‍🌫️收录于专栏 :unity细节和bug 😶‍🌫️优质专栏 ⭐【软件设计师高频考点暴击】 解决了点个赞,关注下吧✅ ⭐【2023unity游戏制作-mango的冒险】-开始画面API制作 ⭐【

    2024年02月10日
    浏览(56)
  • 为什么感觉假期有时候比上班还累?

    假期比上班还累的感觉可能由以下几个原因造成: 计划过度:在假期里,人们往往会制定各种计划,如旅游、聚会、休息等,以充分利用这段时间。然而,如果这些计划过于紧张或安排得过于紧密,就会导致身体和心理疲劳,反而比上班还要累。 心理压力:尽管假期是放松

    2024年02月07日
    浏览(61)
  • 为什么有时候ADSL访问速度会很慢

      为什么有时候ADSL访问速度会很慢        1.网卡绑定的协议太多。上网速度慢,在局域网用户中很常见,原因是网卡绑定的协议太多。网卡上如果绑定了许多协议,当数据通过网卡时,计算机就要花费很多时间来确定这个数据使用哪种协议来传送,这时用户就会感觉上网慢

    2024年02月08日
    浏览(59)
  • 视频集中存储/直播点播平台EasyDSS点播文件分类功能新升级

    视频推拉流EasyDSS视频直播点播平台,集视频直播、点播、转码、管理、录像、检索、时移回看等功能于一体,可提供音视频采集、视频推拉流、播放H.265编码视频、存储、分发等视频能力服务。 TSINGSEE青犀视频的EasyDSS平台具有点播文件分类展示方法,有两种实现方式可供用户

    2024年02月09日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包