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

时间:2011-06-10 18:49:38

标签: c# .net-4.0 clickonce gac command-line-arguments

我有一个引用dll'VMware.Vim.dll'的命令行控制台应用程序,但是这个其他引用的dll就像我的本地计算机上的GAC中保存的VimService41.dll,VimService20.dll等。 我想将此exe部署到任何计算机,并能够通过传递参数来运行它。当我复制exe和VMware.Vim.dll时,它会抱怨其他丢失的dll,尽管它们不属于release文件夹。

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

如何通过传递参数来运行此clickonce控制台应用程序?

4 个答案:

答案 0 :(得分:4)

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

其次,您可以尝试跟踪所需的所有dll,并将其包含在项目中。这包括所有二级或三级依赖项。将它们添加到项目中,将构建操作设置为“content”,并将“copy to output directory”设置为“always always”。然后,在构建时它们将包含在输出目录中。

某些应用程序的dll在本地部署时会起作用(如DirectX),而某些应用程序则不会(SQLServer Express)。你只需要尝试一下,看看是否这样做。

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

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

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

答案 1 :(得分:1)

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

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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

如果您可以找到所有依赖项,您可以将它们包含在内(通过将它们设置为在VS中复制本地),然后您就不会有问题。