如何在.csproj的StartProgram设置中指定命令行参数?

4

我正在尝试在<PropertyGroup><StartProgram>值中指定可执行文件的命令行参数。当前看起来是这样的:

<PropertyGroup>
  <StartAction>Program</StartAction>
  <StartProgram>$(SolutionDir)\Edge.Express\node.exe</StartProgram>
</PropertyGroup>

我希望能够自动化将我的库附加到正在运行的进程中的步骤,以便我的团队可以直接调试库,而无需进行额外的操作(他们还不熟悉Visual Studio)

我将Node可执行文件复制到Edge.Express文件夹中,我的Express服务器配置在该位置的server.js文件中。我想要做的是:

<PropertyGroup>
  <StartAction>Program</StartAction>
  <StartProgram>$(SolutionDir)\Edge.Express\node.exe server</StartProgram>
</PropertyGroup>

但是这会抛出以下异常 Exception 移除“server”参数会启动一个node实例。
我该如何在我的设置中为node.exe提供“server”参数?
或者,有没有一种方法将StartAction设置为运行批处理脚本,并将服务器启动推入脚本中?
快速搜索未返回有关可用的StartActions的文档。

使用StartArguments来指定参数。 - Hans Passant
成功了,现在出现了新的错误:“程序'node.exe'已退出,代码为8(0x8)”,但是StartArguments是关键。 - K. Alan Bates
所以,我已经让这个项目运行起来了。这个项目的目的是让我的团队能够直接调试库文件,而不必手动启动服务器(指向正确的配置),然后Debug | Attach库项目到正在运行的进程中。我不得不处理代码8崩溃,但这是由于相对引用未正确定义我的新服务器位置。PSR帮助我跟踪错误(控制台窗口瞬间崩溃并关闭),现在我有了一个使用CLR库的ExpressJS WebApi的端点,并且该库可以在2013 Web Express中进行调试;非常美妙。 - K. Alan Bates
1个回答

3

正如Hans指出的那样:如果您想为<StartAction> Program指定参数,您必须使用<StartArguments>元素:

<StartAction>Program</StartAction>
<StartProgram>$(SolutionDir)\Edge.Express\node.exe</StartProgram>
<StartArguments>server</StartArguments>

1
当您在项目属性中选择“启动项目”而不是“启动程序”时,是否有一种方法使<StartArguments>起作用? - Dai
@Dai 是的,这个组合可以工作。只需将应用程序启动对象设置为一个有效的接受参数的主方法即可。 - Romain Hautefeuille

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接