0

Powershell から直接 DLL の RC 情報を更新/追加しようとしています。

私はそれを取得する方法を見つけましたが、SpecialBuildまたはのようなフィールドを設定する方法が見つかりませんでしPrivateBuildた。

PS C:\> (gi .\mydll.dll).VersionInfo | fl

OriginalFilename  : mydll.dll
FileDescription   : mydll.dll
...............................
PrivateBuild      : 32572
SpecialBuild      : NOT_HOTFIX
FileVersionRaw    : 17.3.0.12013
ProductVersionRaw : 17.3.0.12013

PS C:\> (gi .\mydll.dll).VersionInfo | gm


   TypeName : System.Diagnostics.FileVersionInfo

Name               MemberType     Definition
----               ----------     ----------
Equals             Method         bool Equals(System.Object obj)
GetHashCode        Method         int GetHashCode()
GetType            Method         type GetType()
ToString           Method         string ToString()
Comments           Property       string Comments {get;}
.................................................
PrivateBuild       Property       string PrivateBuild {get;}
ProductBuildPart   Property       int ProductBuildPart {get;}
ProductMajorPart   Property       int ProductMajorPart {get;}
ProductMinorPart   Property       int ProductMinorPart {get;}
ProductName        Property       string ProductName {get;}
ProductPrivatePart Property       int ProductPrivatePart {get;}
ProductVersion     Property       string ProductVersion {get;}
SpecialBuild       Property       string SpecialBuild {get;}
FileVersionRaw     ScriptProperty System.Object FileVersionRaw {get=New-Object System.Version -ArgumentList @(...
ProductVersionRaw  ScriptProperty System.Object ProductVersionRaw {get=New-Object System.Version -ArgumentList @(...

ご覧のとおり、プロパティはここでのみ取得されます。

これらのフィールドを更新する方法を知っていますか?

よろしくお願いします。

4

1 に答える 1

1

Resource Hacker やverpatchなどのツールを使用してフィールドを更新できますが、お勧めしません。dll が自分のものである場合は、コンパイル前に更新する方がはるかに簡単です。

コンパイル済みの dll にパッチを適用することの欠点の 1 つは、署名されている場合、署名が無効になることです。また、パッチを適用すると、dll が破損する場合があります。

コンパイル後に変更したい特別な理由はありますか?

于 2016-10-28T09:55:10.857 に答える