繁体   English   中英

如何在C#代码中嵌入文件的内容?

[英]How to embed content of the file in the C# code?

问题

我有一个包含这样的文本的文件(没有别的)

2010-10-05

我想将此文件(内容)嵌入到C#代码中,因此我可以将此文本分配给常量(字符串MyDate),然后使用此常量。

背景

我试图实现的是保持程序的相关信息 - 无论是在网站上还是在程序内。

解决方案必须是:

  • 死得很简单
  • 自动
  • 光滑

我想到的最简单的,就是保持文件“版本”与版本(实际发布日期,因为它更有意义恕我直言),这样的文件可以在网站上显示没有问题(PHP)。 我想我管理写的.bat文件很小,可以在每次构建时自动生成这样的文件。

但是如何在C#代码中使用它(嵌入)?

我想要实现这个或替代解决方案,但不比这个更复杂。

解决方法

我已经知道了几个解决方法,比如:

  • 不仅可以创建具有日期的文件,还可以创建可以直接编译的小型C#代码
  • 在安装程序中包含此文件,并在安装后读取它,以获取版本信息

但是我也不觉得“干净”。 我需要更顺畅的东西:-)

背景的背景

我的程序一方面应该通知用户“嘿,有更新版本的程序”,另一方面当浏览网页时,应该在页面上显示有关发布日期的信息。

事实

  • 版本:构建日期,也是发布日期
  • 网站:Linux,HTML和PHP
  • 程序:VS 2010,C#4.0,单个exe
  • 安装程序:高级安装程序

编辑 - 解决方案

我试图完全避免这个问题,并依赖文件的时间戳 - 它可以工作,因为当你在午夜之前构建exe并在之后创建安装包时,只有一个弱点。 但是,将文件上传到ftp服务器这样的计划 - 你必须确保ftp服务器支持时间戳修改,你不能使用SFTP协议。

所以,我最终创建了“版本”文件而没有嵌入它(因为我不知道如何) - 我在网站上用PHP脚本和执行时用C#代码读取内容。

预先感谢您的帮助。

如果使用资源文件(.resx文件),则可以将其编译到程序集中。

MSDN: 添加和编辑资源(Visual C#)

要解决检查更新的问题,您可以:使用WebClient从您的站点加载页面,并检查版本信息。

要解决显示版本信息的问题,您只需在安装程序中保留一个名为versioninfo.txt的文本文件,然后在运行时加载/显示该文件,或者如@Daniel所述,您可以使用资源将文本文件编译为二进制。

您的问题似乎有两个部分:

1)自动为您的程序生成内部版本号/版本

2)有一个Web服务,它将检查内部版本号是否是最新版本。

对于第1部分,有多种解决方案,例如通过资源自动包含文件和预构建事件,甚至使用MS自动递增构建号。

第二部分涉及与您的网站共享该信息。 只要您“发布”最新版本的程序并且可能是手动事件,就必须发生这种情况。 您可以编写一个“发布”程序来读取程序的MS内部版本号或嵌入式资源,并将其写入您将用作Web服务的后端存储的内容。

然后,Web服务对来自已安装程序的请求进行转换,并检查是否存在更高版本。

编辑

再思考一下。 您只需要每次构建程序时增加的MS内部版本号。 将其视为索引保存在您网站上的数据的关键。 程序将版本号发送到Web服务,如果有更新版本,则Web服务返回较新的版本号加上其发布日期。

但是,您可能仍希望在程序中嵌入发布日期,以便将其显示在about框中,而无需转到Web服务来查找该信息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM