簡體   English   中英

C# 如何在沒有 GacUtil 的情況下在 GAC 中注冊程序集?

[英]C# how to register assembly in the GAC without GacUtil?

我需要使用批處理文件在 GAC 中注冊一個程序集。 有沒有辦法找到GacUtil.exe的安裝位置,或者有沒有辦法在沒有 GacUtil 的情況下注冊程序集?

你最好的選擇是使用一個包裝Publish.GacInstall的 powershell 腳本,比如這個🕗

GacUtil 不與框架安裝一起安裝,僅與 SDK 安裝一起安裝 - 因此您不能保證它會在您正在安裝的機器上。

這在您的批處理文件中不起作用,但如果您自己開發了應用程序,則可以使用下面描述的 GacInstall 方法:
http://msdn.microsoft.com/en-us/library/system.enterpriseservices.internal.publish.gacinstall.aspx

或者,我建議生成一個 msi 文件來部署應用程序。 教程在這里:
http://www.dreamincode.net/forums/topic/58021-deploying-ac%23-application-visual-studio-setup-project/

在您的發行版中包含 GacUtil.exe 的副本將是一個不可取的解決方案,因為它具有不同的許可證,並且您可能沒有獲得重新分發它的許可

您可以通過執行以下操作將 dll 安裝到 GAC(全局程序集緩存)中

[Reflection.Assembly]::LoadWithPartialName("System.EnterpriseServices") | Out-Null 
[System.EnterpriseServices.Internal.Publish] $publish = new-object System.EnterpriseServices.Internal.Publish
$publish.GacInstall(<<FullFilePathToTheDll>>)

這與本機 PowerShell 無關,而是與從 PowerShell 實例化和使用 .NET 庫有關

做一個iisreset

來源

我使用了 InnoSetup 並創建了一個包含我的程序集的安裝。

重要的一行如下所示:

Source: "C:\Program Files (x86)\WinSCP\WinSCPnet.dll"; DestDir: "{app}"; StrongAssemblyName: "WinSCPnet, Version=1.3.7.7333, Culture=neutral, PublicKeyToken=2271ec4a3c56d0bf, ProcessorArchitecture=MSIL"; Flags: ignoreversion gacinstall uninsnosharedfileprompt

暫無
暫無

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

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