azure - 适用于运行 Windows Server 2012 的 azure 的正确 gacutil 命令语法

标签 azure startup gac windows-server-2012

我有一个使用 Pkcs12ProtectedConfigurationProvider 的项目。当针对 Windows Server 2008 sp2 或 r2 时,在 azure 中使用此 dll 从来没有出现任何问题。但是,当我尝试使用 Windows Server 2012 (osFamily="3") 部署到 azure 时,出现异常,指出找不到程序集。

我依稀记得在模拟器中遇到过这个问题,解决方案是将这个dll添加到GAC中。我用谷歌搜索发现these instructions关于如何将 DLL 作为 azure 启动任务安装到 GAC 中。只要我在 Web 角色项目的根目录中有 gacutil 和相关的 .cmd 文件,一切都会正常。但是,我想将其移至应用程序的/startup 文件夹中,其中有其他启动命令。

到目前为止,我还无法让它发挥作用。 gacutil 也不是很有帮助,因为我在对其运行命令后无法让它显示任何输出。这是我尝试过的:

在 csdef 文件中:

<Startup>
  <!-- other tasks, such as disabling the IIS idle timeout -->
  <Task commandLine="startup\gacRegistrations.cmd" executionContext="elevated" taskType="simple" />
</Startup>

在 gacRegistrations.cmd 文件中:

gacutil /nologo /i ..\PKCS12ProtectedConfigurationProvider.dll
exit /b 0

我认为问题与引用 cmd 文件中 dll 位置的语法有关。所有相关文件都设置为构建操作:无并复制到输出目录:始终复制。但是,gacutil.exe 和 cmd 文件被复制到 webrole/bin/startup,而 PKCS12ProtectedConfigurationProvider.dll 文件位于 webrole/bin 中的 1 个文件夹中。

这里正确的语法是什么?我应该尝试gacutil /nologo /i ..\.\PKCS12ProtectedConfigurationProvider.dll ?就像我说的,当文件没有嵌套在/startup 目录中时,一切正常。

最佳答案

当前目录始终是 bin 文件夹,因此您应该尝试以下操作:

startup\gacutil /nologo /i PKCS12ProtectedConfigurationProvider.dll
exit /b 0

关于azure - 适用于运行 Windows Server 2012 的 azure 的正确 gacutil 命令语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13463377/

相关文章:

azure - 如何在 Azure 数据孪生资源管理器中更改孪生的 dtid

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

Azure Key Vault 保护证书

.net - 如何将 .NET Framework 4.6 与 Azure 网站结合使用?

Objective-C:如何在启动时强制调用 `+initialize` 而不是在类碰巧第一次使用时调用?

iphone - IOS:如何区分应用程序的自动启动或用户启动?

c - ARM Cortex-M3 启动文件

.net - 系统消息dll丢失?

visual-studio - Azure SDK 2.0 升级按钮不可用