1

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

我隐约记得在模拟器中遇到过这个问题,解决方案是将这个 dll 添加到 GAC。我在谷歌上搜索并找到了有关如何将 DLL 作为天蓝色启动任务安装到 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 目录中时,一切正常。

4

1 回答 1

2

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

startup\gacutil /nologo /i PKCS12ProtectedConfigurationProvider.dll
exit /b 0
于 2012-11-19T22:39:55.070 回答