.NET项目在生成时如何将静态资源文件复制到输出目录

平常使用Visual Studio开发.NET项目,总会有用到一些自定义静态资源文件的时候,由于VS默认情况下,项目编译和生成后不会把静态资源文件复制到输出目录,就需要我们自己手动设置静态文件的属性。操作十分简单,本文作为一个知识小结笔记进行记录。

这里使用一个C#控制台应用程序作为演示,随便新建一个ConsoleApp(使用的VS IDE版本是2019),然后在项目下分别添加json、xml、txt、html这四种不同类型的静态资源文件:

创建演示文件

接下来生成项目并打开bin文件夹查看,可以看到我们在项目中创建的四个静态资源文件是没有被复制到输出目录里的:

查看生成结果

回到VS的解决方案资源管理器视图,全选这几个文件(如有需要也可以一一对应进行设置),然后右键选择属性:

设置静态资源文件属性

在打开的属性设置视图里,设置复制到输出目录值为始终复制

设置复制到输出目录值为始终复制

设置完成后再一次编译和生成项目,就可以看到刚刚设置的四个静态资源文件(json、xml、txt、html)已经被复制到bin文件夹里:

静态资源文件复制到bin目录

这里需要注意一个地方,我上面的操作并没有设置生成操作的值,默认是,因为我只是用控制台程序来进行简单演示,所以这里没设置也能实现效果。一般情况下,如果是ASP.NET项目,建议将值设置成内容,利于项目部署,当然这块还得根据自己的业务需求来判断。可以从下拉框中看看到该属性包含了很多值:

生成操作值

关于更多生成操作值的具体说明,可以查看微软官方文档(Docs/Visual Studio/Windows/IDE/生成/生成操作),贴下部分文档说明和截图:

标记为“内容” 的文件可以通过调用 Application.GetContentStream 作为流进行检索。 对于 ASP.NET 项目,在部署站点时包含这些文件,作为站点的一部分。

官方文档生成操作值截图1

官方文档生成操作值截图2

本文是一篇简单的小结笔记,起因是前阵子需要开发博客的SSL/TLS证书定时自动更新功能,搭建在一个服务程序里,使用了自定义的JSON配置文件来存储ACME协议相关数据,在项目生成发布后无法读取JSON配置文件,才发现文件根本没有复制到bin文件夹里,后面排查问题才想起没有设置静态文件的复制到输出目录属性。其实最早的时候就有用到自定义的XML文件来做一些简单数据或者配置存储,也有用过html文件做邮件发送模板,所以有些知识还是要记录下加深印象,不然可能就突然忘记了。




原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/tech/pnotes/99064.html

(0)
上一篇 2021年8月21日 02:06
下一篇 2021年8月21日 02:06

相关推荐

发表回复

登录后才能评论