[英]How to replace all the existing GUIDs with new one from the Visual Studio solution/project?
我有一個用 C# 和 C++ 開發的 Windows 應用程序,所以它有多個 .cs 和 .cpp 文件。 現在許多 .cs 文件的 GUID 格式如下:
[指南(“D01A42F5-FD89-4c8f-8065-726AD4363411”)]
我的項目中存在大量 GUID。 現在我正在將當前的 32 位應用程序升級到 64 位,因此不希望這兩個應用程序具有相同的 GUID。
無論如何,是否可以在不手動執行的情況下替換所有 GUID? 我知道選項Tools--> Create GUID但對於這種情況,我需要在所有這些類文件中手動替換它。
編輯:下面的兩個條目與以后安裝的應用程序發生沖突並被覆蓋。
計算機\\HKEY_CLASSES_ROOT\\namespacedll\\CLSID
計算機\\HKEY_LOCAL_MACHINE\\SOFTWARE\\Classes\\namespacedll\\CLSID
無論如何,是否可以在不手動執行的情況下替換所有 GUID?
不。
我也不明白為什么這是一個問題。 32 位和 64 位通常不會交互,因此除非您可以通過示例或指向文檔的鏈接提出真正的觀點,否則在我看來這就像“忙碌的工作” - 無需創建大量工作。
我個人的方法是創建一個應用程序來讀取每個項目文件,使用新生成的正則表達式匹配/替換每個單獨的 GUID。
您可以采用一種更簡單的方法,該方法不太可能產生重復項,即使用正則表達式替換來交換和移動現有 GUID 值的一部分。
因此,您可以將所有內容與此匹配:
([0-9A-F])([0-9A-F])([0-9A-F])([0-9A-F])([0-9A-F])([0-9A-F])([0-9A-F])([0-9A-F])\-([0-9A-F])([0-9A-F])([0-9A-F])([0-9A-F])\-4([0-9A-F])([0-9A-F])([0-9A-F])\-([0-9A-F])([0-9A-F])([0-9A-F])([0-9A-F])\-([0-9A-F])([0-9A-F])([0-9A-F])([0-9A-F])([0-9A-F])([0-9A-F])([0-9A-F])([0-9A-F])([0-9A-F])([0-9A-F])([0-9A-F])([0-9A-F])
然后用移位/交換版本替換它:
$31$1$30$2$29$3$28$4-$27$5$26$6-4$25$7$24-$8$23$9$22-$10$21$11$20$12$19$13$18$14$17$15$16
請注意,這僅適用於版本 4 GUID,因為我們需要靜態 4 版本標識符。 還要注意,它實際上並沒有生成新的 GUID; 它只是重新排列現有的。 它取最后一個字符,然后是第一個字符,然后是下一個最后一個字符,然后是下一個最后一個字符,依此類推。 這樣做的好處是,一旦應用轉換,當前相同的所有 GUID 值將彼此相同。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.