2011-04-06 41 views
17

我想讓管理員爲我註冊一些DLL,但他可能不想安裝整個SDK。我可以下載並安裝gacutil.exe,無需安裝VS或SDK嗎?

他可以只安裝gacutil.exe嗎?如果是這樣,他可以在哪裏得到它?我只需要將gacutil.exe文件發送給他,並且他必須將它放在他的機器上才能使用它?

+3

他不能。您不能通過許可證禁止重新分配。快速向他發送Setup.exe。 – 2011-04-06 20:48:19

+1

感謝漢斯。在繼續我的研究之後,我發現官方最佳實踐方法是讓Windows安裝程序執行此操作。這就是我所做的,我創建了一個簡單的安裝項目,它所做的只是將程序集安裝到GAC。這是做到這一點的正確方法嗎?任何其他建議/提示/陷阱? – richard 2011-04-06 21:15:43

+0

對,quickie Setup.exe。測試它。 – 2011-04-06 21:17:21

回答

4

根據漢斯對我的問題的評論,這是違反許可證的。這裏要做的最好的事情是創建一個快速的setup.exe或msi,它將文件安裝到GAC中,我已經完成了。

2

另一種替代方法是將DLL手動拖放到c:\ windows \ assembly中。

對於.NET 4,我相信大會的文件夾是C:\ WINDOWS \ microsoft.net \總成 - 雖然我沒有測試過這種方式簡單的xcopy除了對.NET 4

+0

你不必在Windows註冊表中註冊它? – crush 2014-11-07 16:35:05

+0

@crush在我的測試中不需要Windows註冊表(「在我的機器上工作」™) – jeffreypriebe 2014-11-07 22:14:42

+0

直到我使用gacutil.exe「安裝」它時,才工作。 – crush 2014-11-07 22:28:23

17

我它通過複製工作gacutil.exe,gacutil.exe.configgacutlrc.dll。我明白這是違反許可證的,但您無法在VisualStudio Express中獲得InstallShield,因此這是最簡單的解決方案。

2

老問題,但在不安裝SDK的機器上一掐,只要PowerShell是可用的,你可以這樣做:

#Note that you should be running PowerShell as an Administrator 
[System.Reflection.Assembly]::Load("System.EnterpriseServices, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")    
$publish = New-Object System.EnterpriseServices.Internal.Publish    
$publish.GacInstall("C:\Path\To\DLL.dll") 

https://www.andrewcbancroft.com/2015/12/16/using-powershell-to-install-a-dll-into-the-gac/

相關問題