繁体   English   中英

运行 C# clickonce 控制台应用程序

[英]Running C# clickonce console app

I have a Command line console app that references a dll 'VMware.Vim.dll', but this has other referenced dll's like VimService41.dll, VimService20.dll etc saved off in the GAC on my local machine. 我想将此 exe 部署到任何计算机上,并能够通过传递 arguments 来运行它。 当我复制 exe 和 VMware.Vim.dll 时,它抱怨其他缺少的 dll,尽管它们不是发布文件夹的一部分。

我尝试了发布选项并创建了一个 ClickOnce 应用程序以将其部署到我要从中执行 exe 的机器上。 这创建了一个 setup.exe 和一个清单文件。 当我运行它时,它抱怨外部 dll 尚未添加到 GAC。

如何通过传递 arguments 来运行这个 clickonce 控制台应用程序?

首先,您不会通过运行 EXE 来运行 ClickOnce 应用程序。 如果您要这样做,只需将 bin 文件夹从您的构建复制到机器上。 如果您不需要进行自动更新,那么使用 ClickOnce 就是在浪费生命。

其次,您可以尝试跟踪您需要的所有 dll 并将它们包含在项目中。 这包括所有二级或三级依赖项。 将它们添加到您的项目中,将构建操作设置为“内容”,并将“复制到 output 目录”设置为“始终复制”。 然后它们将在您构建时包含在 output 目录中。

一些应用程序的 dll 在本地部署时可以工作(如 DirectX),而有些则不能(SQLServer Express)。 你只需要尝试一下,看看这些是否有效。

但是,我会说,使用 VMWare 程序集可能违反 EULA。 这就像试图包含 Office 程序集以便在没有安装它的机器上运行 Excel。

至于传递 arguments,如果您真的想将其用作 ClickOnce 应用程序,这里有一篇博客文章解释了如何将 arguments 传递给离线(或在线)ClickOnce 应用程序:

http://robindotnet.wordpress.com/2010/03/21/how-to-pass-arguments-to-an-offline-clickonce-application/

如果您想使用 ClickOnce,您需要添加一个自定义先决条件,以便应用程序在 GAC 中安装它的依赖项。

看: http://msdn.microsoft.com/en-us/library/ms165429(v=VS.100).aspx

我认为这种情况不适合单击一次。 如果您需要安装修改 gac 的东西,那么您需要使用安装程序。

如果您可以找到所有依赖项,则可以将它们包含在发行版中(通过将它们设置为在 VS 中复制本地),那么您应该没有问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM