Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# C如何在没有GacUtil的情况下在GAC中注册程序集?_C#_Gac - Fatal编程技术网

C# C如何在没有GacUtil的情况下在GAC中注册程序集?

C# C如何在没有GacUtil的情况下在GAC中注册程序集?,c#,gac,C#,Gac,我需要使用批处理文件在GAC中注册程序集。有没有办法找到GacUtil.exe的安装位置,或者有没有办法在没有GacUtil的情况下注册程序集?GacUtil不是与框架一起安装的,而只是与SDK一起安装-因此您无法保证它会在您正在安装的框中 这在批处理文件中不起作用,但如果您自己开发了应用程序,则可以使用下面描述的GacInstall方法: 或者,我建议生成一个msi文件来部署应用程序。此处有教程: 在您的发行版中包含GacUtil.exe的副本是不可取的解决方案,因为它有不同的许可证,您可能

我需要使用批处理文件在GAC中注册程序集。有没有办法找到GacUtil.exe的安装位置,或者有没有办法在没有GacUtil的情况下注册程序集?

GacUtil不是与框架一起安装的,而只是与SDK一起安装-因此您无法保证它会在您正在安装的框中

这在批处理文件中不起作用,但如果您自己开发了应用程序,则可以使用下面描述的GacInstall方法:

或者,我建议生成一个msi文件来部署应用程序。此处有教程:


在您的发行版中包含GacUtil.exe的副本是不可取的解决方案,因为它有不同的许可证,您可能没有重新发布它的许可证

您最好使用封装的powershell脚本,例如您可以通过执行以下操作将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

+1:哇!这个特别的答案应该被接受,因为它直接回答了上面的问题。Force是字符串。GacInstall似乎需要指向dll的绝对路径。