簡體   English   中英

我應該使用什么 gacutil.exe?

[英]What gacutil.exe should I use?

因此,在 Win 2008 R2 Std x64 上,我有 6(六個)gacutil.exe,它們完全不同(不包括 VS 文件夾中的那些),位於:

  1. c:\\Program Files\\Microsoft SDKs\\Windows\\v6.0A\\Bin
  2. c:\\Program Files\\Microsoft SDKs\\Windows\\v6.0A\\Bin\\x64
  3. c:\\Program Files (x86)\\Microsoft SDKs\\Windows\\v7.0A\\Bin
  4. c:\\Program Files (x86)\\Microsoft SDKs\\Windows\\v7.0A\\Bin\\x64
  5. c:\\Program Files (x86)\\Microsoft SDKs\\Windows\\v7.0A\\Bin\\NETFX 4.0 工具
  6. c:\\Program Files (x86)\\Microsoft SDKs\\Windows\\v7.0A\\Bin\\NETFX 4.0 Tools\\x64

問題是:

  1. x64版本在行為上有什么不同嗎?
  2. 我應該更喜歡v7.0A版本而v6.0A其他v6.0A版本嗎?
  3. 我應該為 .NET 4.0 程序集使用NETFX 4.0 Tools版本,其余的使用“標准”版本嗎?

或者,如果有關於該主題的一些通用類型的文章,我將不勝感激。

更新 1.關於Hans Passant 的回答

  1. gacutil.exe“構建、部署和配置工具 (.NET Framework)”的 .NET Framework 工具的一部分,因為現在已經過時 (!) shfusion.dll是;
  2. 確實v6.0A是VS2008安裝的,可以忽略(1, 2);
  3. 64 位解釋理論聽起來也很合理。 我還認為gacutil.exe很可能有一個IA64 版本,所以它就像一個“每個平台的工具副本”,它只是發生了,所以 x86 版本因為 WoW64 在任何地方都運行良好。 列表中減去 2 gacutil 版本 (4, 6);
  4. 關於使用哪個版本的部分似乎是錯誤的。 V4.0 gacutil.exe 根據其目標 CLR 檢測和放置程序集,並且適用於 .NET 4.0 和更早版本的程序集。 那么問題來了,為什么要離開 V2.0 gacutil.exe? 我的猜測是為了在那里的環境中進行部署。NET4.0 不可用。
  5. 使用或不使用 GAC,這不是問題。 所以我留下最后一段不做任何評論。

更新 2。

因此,在我看來,對於 Windows x86 和 x64 上的所有 GAC 操作,似乎可以安全地使用數字 3(然后 .NET4.0 不可用)或數字 5。 問題的答案是:

  1. 不。
  2. 沒關系,但使用較新的版本似乎更合乎邏輯。
  3. 不,您始終可以將NETFX 4.0 Tools版本(如果 .NET4.0 可用)用於所有 GAC 操作。

Gacutil.exe 是 Windows SDK 工具,而不是 .NET 框架工具。 您的機器上有兩個版本的 SDK。 你從 VS2008 安裝得到 6.0A,從 VS2010 安裝得到 7.0A。 您還有一個 64 位操作系統,因此您也獲得了 64 位工具。 這對 gacutil.exe 無關緊要,不知道為什么它們單獨包含它。 可能是為了讓 Visual Studio 命令提示符正常工作,請注意您有不同的 32 位和 64 位版本。 這對 C++ 項目很重要。 VS2010 允許同時針對 CLR 版本 4 和 CLR 版本 2,所以總共有 6 個版本。

重要的是您的機器上有兩個 GAC。 .NET 4 程序集的 GAC 存儲在 c:\\windows\\microsoft.net\\assembly 中。 對於早期版本,它存儲在 c:\\windows\\assembly 中。 您必須使用正確版本的 gacutil.exe 才能將程序集放入正確的 GAC。 對於面向 .NET 4 的程序集,您必須使用 Bin\\NETFX 4.0 Tools 中的程序集。 對於較早的,您必須使用 Bin 中的那個。

最好不要使用它,程序集應該在開發機器上設置 Copy Local 屬性。 GAC 是一個部署細節,當您的 GAC 具有您用戶的 GAC 沒有的程序集時,您會遇到麻煩。

簡短版本:如果您安裝了 .NET 4.0,請使用NETFX 4.0 Tools版本。 否則真的無所謂。

問題的回答:

  1. 不。
  2. 除非沒有安裝 .NET 4.0,否則並不重要,在這種情況下,您應該使用NETFX 4.0 Tools版本。 不確定是否可以安裝 v7.0 SDK 而未安裝 .NET 4.0。
  3. 不,您可以(並且應該)將NETFX 4.0 Tools版本用於所有 GAC 操作。

這不是最好的答案,但我注意到一個觀察結果。 根據為相關 Visual Studio 安裝開發的應用程序所使用的內容,使用最新版本文件夾。

C:\Program Files (x86)\Microsoft SDKs\Windows\{SDK version}\bin\NETFX 4.5.1 Tools\gacutil.exe

在比較 Visual Studio 安裝的控制面板 > 程序和功能 >“安裝日期”時,我在此處看到許多不同的文件夾。 我猜在這兩個安裝過程中更新了多個文件夾。

“gacutil.exe”所在的文件夾和修改日期:

C:\Program Files (x86)\Microsoft SDKs\Windows\
C:\Program Files (x86)\Microsoft SDKs\Windows\v6.0A\ - 3/20/2014
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\ - 3/20/2014
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\ - 5/15/2015
C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0\ - 3/20/2014
C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A\ - 5/15/2015
C:\Program Files (x86)\Microsoft SDKs\Windows\v8.1\ - 5/15/2015
C:\Program Files (x86)\Microsoft SDKs\Windows\v8.1A\ - 5/15/2015

具有“安裝於”日期的 Windows Visual Studio 安裝:

Visual Studio 2012 - 3/20/2014
Visual Studio 2013 - 5/15/2015

為了比較 GAC 中的內容,我運行了這個命令並對文件進行了比較。

cd C:\Program Files (x86)\Microsoft SDKs\Windows\v8.1A\bin\NETFX 4.5.1 Tools\
gacutil /l > c:\v8.1A.gac.txt

然后我為每個版本適當地更改了文件夾。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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