簡體   English   中英

如何用 Visual Studio 解決方案/項目中的新 GUID 替換所有現有的 GUID?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM