繁体   English   中英

如何使用Nuget软件包随附的链接的exe文件

[英]How to use a linked exe file that comes with a Nuget package

通过Nuget安装了Phantomjs之后,packages文件夹中就有一个可执行文件。 该软件包还将链接/占位符放置在项目根目录phantomjs.exe 该文件仅在Visual Studio中不会显示在文件系统中。 它具有指向物理文件的“完整路径”属性。

如何从我的代码执行该文件? 以下代码导致The system cannot find the file specified

var p = new Process();
var startInfo = new ProcessStartInfo
{
    UseShellExecute = false,
    RedirectStandardOutput = true,
    RedirectStandardError = true,
    FileName = @"~/phantomjs.exe"
};
p.StartInfo = startInfo;

p.Start();

看一下真实的文件扩展名,它肯定是.lnk,在这种情况下,它不能与CreateProcess之类的东西一起使用,CreateProcess肯定是您使用的API的包装。 如果不是lnk文件,请检查它是否为硬链接或符号链接,以及目标是否存在。 外壳上的“目录”应显示给您。 如果它是lnk文件,则可以尝试使用ShellExecute,因为您的API似乎已经为此提供了一个标志,或者甚至可以用自定义创建的硬链接或符号链接替换lnk文件,或者需要使用cmd.exe,这应该能够执行lnk文件,就像打开doc文件路径一样。

Nuget软件包实际上在bin文件夹中安装了可执行文件的另一个副本,可以方便地使用它。

路径可以通过映射

HttpContext.Current.Server.MapPath("~/bin/")

在WebAPI中。

检查phantomjs.exe的属性-应该将其复制到输出目录(“如果更新则复制”或“始终复制”)。 如果不是,请进行设置。 这样,可执行文件将被复制到构建版本的输出目录中,然后可用于您的进程。

您的代码的问题是路径。 这对我有用:

var p = new Process();
var startInfo = new ProcessStartInfo
{
    UseShellExecute = false,
    RedirectStandardOutput = true,
    RedirectStandardError = true,
    FileName = @"phantomjs.exe"
};
p.StartInfo = startInfo;

p.Start();

暂无
暂无

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

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