1

带有 .NET 的 PowerCLI 对 dll 有一些依赖关系,只有在要运行的每台计算机上安装 PowerCLI 时才会获得这些依赖关系。我有一个带有命令行参数的控制台应用程序,当使用通常的方法部署时,由于未满足的依赖关系,它不起作用......这些程序集是 GAC 的一部分。

Clickonce 部署被证明是无用的。尽管我将它们作为查询参数传递,但它没有识别我的参数。

最后,我在这台远程机器上安装了 VMware PowerCLI。然后运行.exe,它工作了。有没有办法避免安装 PowerCLI 并能够在部署期间将所有依赖项包含在我的 exe 中?

4

2 回答 2

1

根据您要在哪里部署控制台应用程序,您可能会不走运。根据这个页面我能找到的最相关的论坛帖子,PowerCLI 程序集不可再分发。如果您想在公司之外分发此应用程序,最好的选择是使用 Web 服务 SDK - 因为您已经开发了该应用程序,所以这是一个巨大的痛苦。

假设您的应用程序仅供内部使用并且您只想将其部署在其目标服务器上,您可以执行以下操作以在本地引用程序集:

  1. 在开发机器上,将您从 GAC(在 %WINDIR%\assembly 中)引用的任何 PowerCLI .dll 复制到您的解决方案本地目录。
  2. 将项目中的引用更改为指向 .dll 的本地版本。
  3. 打开每个引用的“属性”视图,并确保“复制本地”设置为 True。
  4. 编译并部署你的控制台应用程序(它是共存的 .dlls)到目标机器,它应该在本地目录中引用它们并且在没有外部依赖的情况下运行。

希望有帮助!

于 2011-06-15T15:22:56.563 回答
1

如果问题是对用户隐藏安装,您还可以使用静默安装单行 Powershell 脚本自动安装 PowerCLI。

调用表达式(“cmd /c '$powerCLIexeFilePath'/S /VADDLOCAL=ALL /V/qn”)

于 2012-11-16T16:53:03.117 回答