替换版本信息 (C#)



我正在尝试制作一个版本资源工具 - 主要是因为我最近遇到了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.

这行得通吗?如果没有,有人会有一些更好的主意吗?

谢谢埃文

请不要做你想做的事情,即使你设法找到了方法。在许多情况下,如果包含程序集,则需要版本号。如果您一时兴起为程序集设置版本,它可能会对依赖您的程序集的人造成严重破坏。

<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>

我不认为读取整个文件并匹配VERSIONINFO块会那么容易。如果我没记错的话,资源数据不仅仅是由字符串组成的,这里和那里都有二进制块。

另一种方法是 p/invoke BeginUpdateResource()、UpdateResource() 和 EndUpdateResource()。有关代码示例和一些指针,请参阅本文。

最新更新