我正在尝试创建一个Version资源工具 - 几乎是因为我最近遇到了FileVersionInfo类。我正在使用FileVersionInfo.GetVersionInfo通过代码获取可执行文件的版本信息。现在,我想使用代码来更新可执行文件的版本信息。我不确定是否有内置类可以获取信息。
如果没有,我有一个想法,使用类似于以下代码的东西,以替换文件的信息。我曾经在VB6中做过类似的事情 - 我从中得到了这个想法。
File.ReadAllBytes(@"\MyFile.exe")
// Convert the data into a string
// Use the Replace function to find original version information (obtained via FileVersionInfo), and replace it with new information to my liking.
这会有用吗?如果没有,可能有人有更好的想法吗?
谢谢, 埃文
答案 0 :(得分:3)
即使你找到了办法,也请不要做你想做的事。在许多情况下包含程序集时,需要版本号。如果你随心所欲地为装配设置版本,它可能会对依赖你的装配的人造成严重破坏。
<compilation debug = "true" targetFramework = "4.0">
<assemblies>
<add assembly = "System.Web.Abstractions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<add assembly = "System.Web.Routing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<add assembly = "System.Web.Mvc, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
</assemblies>
</compilation>
答案 1 :(得分:0)
我认为阅读整个文件并匹配VERSIONINFO
块并不容易。如果我没记错的话,资源数据不只是字符串,那里有二进制块。
另一种方法是p / invoke BeginUpdateResource(),UpdateResource()和EndUpdateResource()。有关代码示例和一些指示,请参阅this article。