Dot-Net

向 GAC 註冊/安裝程序集的“正確”方式是什麼?

  • January 14, 2009

似乎有許多不同的方法可以向 GAC 註冊程序集,例如,它們“工作”。但是,“正確”的做法是什麼?

回應 Lou Franco(和 gacutil):

我正在使用 Gacutil 進行開發,但在我看來這不是安裝它的正確方法,因為 gacutil 不包含在 .NET 1.1 之後的基本 .NET 實用程序中 - 它只是一個開發人員工具。

附加:Gacutil(如下面的回复所示)不可再分發,因此不應在您打算提供給非開發人員的任何應用程序中使用。又名,客戶。請參閱Aaron Stebner 的這篇博文(和評論)

作為對使用 WIX 的回應:

WIX 可能很棒,但它是如何在幕後工作的?哪些細節使 WIX 安裝程序集的方式成為正確的安裝方式?它是如何查找的?它是系統/.NET 呼叫嗎?是否需要在 System32 中某處埋藏的 dll 中進行呼叫?

(編輯:看起來 WIX 在後台使用 MSI。請參閱我在接受的答案中的評論。)

最終編輯:看起來將程序集安裝到 GAC 的正確方法是使用 Windows 安裝程序,僅此而已。我要試試Wix。謝謝大家!

使用 Wix,我會做這樣的事情:


<DirectoryRef Id="我的目錄" >
<組件 ID="MyComponent" Guid="PUT-GUID-HERE" DiskId="1">
<File Id="MyAssembly" Name="MyAssembly.dll" Assembly=".net" KeyPath="yes" Source="MyAssembly.dll" />
</組件>
</DirectoryRef>

當您在 WiX 中為文件使用屬性 Assembly=".net" 時,它將在 MsiAssembly 和 MsiAssemblyName 表中為此組件創建條目並將其標記為 GAC 組件。

http://blogs.msdn.com/astebner/archive/2006/11/04/why-to-not-use-gacutil-exe-in-an-application-setup.aspx

看起來應該避免使用 gacutil;它不是一個可再分發的應用程序。相反,安裝它們的“正確”方式似乎是使用 MSI,一種方式是 WIX,正如 CheGueVerra 或其他腳本所發布的那樣。

引用自:https://stackoverflow.com/questions/205188