我无法将参数传递给我的控制台应用。 我试过这样的话:
App.exe arg1
App.exe "arg1"
App.exe
当我使用参数运行应用程序时,应用程序退出运行时没有任何消息。
调试时,string[] args
中没有任何内容。
我的C#项目是一个简单的.net 4.5.2命令行项目。 我的操作系统是Windows 10 x64。
示例代码:
using System;
using System.Collections.ObjectModel;
using System.Management.Automation;
namespace Setup
{
class Program
{
static void Main(string[] args)
{
if (args.Length == 0)
{
using (PowerShell psInstance = PowerShell.Create())
{
string cmd = "Set-ExecutionPolicy RemoteSigned -Force; " +
"echo \"Set-ExecutionPolicy RemoteSigned -Force\"; echo \"\"; " +
"Install-PackageProvider -Name NuGet -MinimumVersion 2.8.5.201 -Force; ";
psInstance.AddScript(cmd);
Collection<PSObject> PSOutput = psInstance.Invoke();
Console.WriteLine(psInstance.Streams.Error[0].ErrorDetails.Message);
foreach (var item in PSOutput)
{
if (item != null)
{
Console.WriteLine(item.BaseObject.ToString());
}
}
Console.ReadLine();
}
}
else
{
// Will not work
Console.WriteLine(args[0]);
}
}
}
}
有没有人有想法?
答案 0 :(得分:0)
如果您可以共享代码,将会很有帮助。
打印零位置参数的示例程序将是:
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine(args[0]);
}
}
}
您可以从命令行
调用它ConsoleApplication1.exe argument1
答案 1 :(得分:0)
我进一步简化了你的代码;我们现在看看
public class Program
{
public static void Main(string[] args)
{
int numberOfArguments = args.Length;
if (numberOfArguments > 0)
{
Console.WriteLine($"Count: {numberOfArguments} First: {args[0]}");
}
else
{
Console.WriteLine("No arguments were passed.");
}
Console.ReadLine(); // Keep the console open.
}
}
这样我们就可以得到输出。
在没有任何进一步的麻烦的情况下运行它将产生
没有传递任何参数。
但是,在Visual Studio中,进入
项目 - &gt;属性 - &gt;调试
我们现在将提供一些用于调试的命令参数行。
现在运行程序将产生
数:3首先: - 第一次
对于实际使用,您可以运行应用程序(例如从命令行),如下所示:
app.exe -one /two three foo
它仍将获得所有命令行参数:
数:4首先: - 一个