2017-08-09 139 views
1

我正在嘗試在GAC中註冊.DLL。 目前我無法證明它已被添加到程序集中。在GAC(CMD或PowerShell)中註冊DLL

使用命令

C:\ Windows \ System32下>%PROGRAMFILES(86)%\微軟的SDK \的Windows \ v7.0A \ BIN \的Gacutil.exe -i「路徑\爲\我的\ file.dll「

提示告訴我程序集已被添加到緩存中。

Ç檢查:\程序文件(x86)\微軟的SDK \的Windows \ v7.0A \ BIN>的Gacutil.exe -l file.dll

它說,程序集中有0個元素。

通過Powershell命令,我試圖添加DLL這樣的:

PS C:\ WINDOWS \ SYSTEM32>添加型-AssemblyName 「的System.EnterpriseServices」

PS C :\窗口\ system32> $發佈= 新物體System.EnterpriseServices.Internal.Publish

PS C:\窗口\ system32> $ publish.GacInstall( 「file.dll」)

我做錯了什麼?我如何將.DLL添加到GAC?最好的方式(對我來說)將用Powershell這樣做。

回答

0

記得以管理員身份運行PowerShell,否則這將不起作用。

$dllpath = c:\path\yourdll.dll 
[System.Reflection.Assembly]::Load("System.EnterpriseServices, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")    
$publish = New-Object System.EnterpriseServices.Internal.Publish    
$publish.GacInstall($dllpath) 

你可能需要重新啓動任何相關服務或計劃在此之後,例如:

if (Get-Service "YourService" -ErrorAction SilentlyContinue) 
    { 
     Stop-Service -Name 'YourService' 
     Start-Service -Name 'YourService' 

    } 

或者只是重新啓動計算機。

+0

感謝您的回答。當通過Powershell嘗試第一個命令時,我收到以下消息: PS C:\ WINDOWS \ system32> $ dllpath = C:\ temp \ file.dll Fehler beimAusführendes Programms「file.dll」:Der angegebenen Datei ist keine Anwendung zugeordnetIn Zeile:1 Zeichen:12 + $ dllpath = C:\ temp \ file。dll + ~~~~~~~~~~~~~~~~~~~~~。 在Zeile:1賊臣:1 + $ DllPath的= C:\ TEMP \ file.dll + ~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~ + CategoryInfo:ResourceUnavailable:(:) [],ApplicationFailedException + FullyQualifiedErrorId:NativeCommandFailed 我得到一個錯誤...但爲什麼? –

+0

@TimD。你能把錯誤翻譯成英文嗎? – coinbird

+0

它「在執行程序file.dll時錯誤」的文件不assinged到應用程序說**。在行中:1個字符:12。「**其餘的是英文,你可以看到。 –

1

我設法與這些Powershell的線來解決這個問題:

Set-location "C:\Temp" 
 
[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:\Temp\file.dll")

重新啓動PC /服務器之後,該dll在GAC中註冊。謝謝您的幫助! :)