【问题标题】:how to dynamically assign a variable to a console application c#如何将变量动态分配给控制台应用程序c#
【发布时间】:2015-02-06 13:59:51
【问题描述】:

我有一个控制台应用程序,它每天都会自动执行。在代码中,有一个使用 projectId 硬编码的变量字符串。问题是我需要使用 7 个不同的 projectID 执行控制台 7 次。我不能将它们作为数组输入,因为这是 Web 服务,并且该方法只接受字符串类型。 有没有办法调用控制台应用程序,第一次执行然后转到第二个 projectID 变量等等?

这里有我的应用程序的代码。

string ProjectID = "5c14684f-32a5";

var dt1 = DateTime.Today;
var dt2 = DateTime.Today.AddDays(1).AddSeconds(-1);

string OutputType = "caption";
string currentLanguage = "en-US";
string DateFormatStr = "MM/dd/yy hh:mm:ss tt";
string DateFormatFrom = dt1.ToString("MM/dd/yyyy HH:mm:ss", 
    CultureInfo.InvariantCulture); 
string FilloutDateTo = dt2.ToString("MM/dd/yyyy HH:mm:ss", 
    CultureInfo.InvariantCulture); 
string subjetID = "";
string ConditionID = "";

//DateTime 
String path = @"C:\TEMP\test.zip";

String finalPath = Path.Combine(Path.GetDirectoryName(path),
               Path.GetFileNameWithoutExtension(path)
              + DateTime.Now.ToString("_yyyyMMdd HHmms")
              + Path.GetExtension(path));

byte[] MyBinFiles = db.ResponseFile(ProjectID, OutputType, currentLanguage, 
    DateFormatStr, DateFormatFrom, FilloutDateTo, subjetID, ConditionID);

System.IO.File.WriteAllBytes(finalPath, MyBinFiles);

【问题讨论】:

  • foreach (string ProjectID in {"proj1", "proj2", "etc"})?或者您是否希望在每次回发时在下一个 ProjectID 上重新运行该流程?
  • 您可以让输入为每个项目的逗号分隔字符串,然后将该字符串拆分为 Web 服务内的一个数组并循环处理结果。
  • 嗨,它在 3 分钟后运行一个新进程以确保文件下载良好
  • 您可能正在寻找传递/处理命令行参数,但可能不是...请澄清命令行参数是否是您正在寻找的或者为什么它不适用于您的情况。
  • 嗨,我需要自动执行,无需用户操作,所以如果命令行参数有效,我可以检查。问题是 projectId 已经输入到代码中,所以也许一种方法可以放置一个空字符串,然后使用命令输入 7 projectID?

标签: c# string web-services variables dynamic


【解决方案1】:

您不能这样做,因为每次关闭应用程序时,内存都会被释放,并且您会丢失所有变量值。

你可以:

  • 将 ProjectID 作为命令行参数传递给您的应用程序。您可以使用不同的参数 (ProjectID) 创建运行程序 5 次的 PowerShell 脚本。
  • 您可以将 ProjectID 存储在文本文件中/每次启动程序时,它都会读取文本文件以获取下一个 ProjectID。

如果您想隐藏 ProjectID,您可以:

  • 使用 ProjectID 加密文本文件并在控制台应用程序中解密。
  • 您可以将所有 5 个 ProjectId 存储在您的 exe 文件中,并仅将下一个的编号写入文本文件 - 例如,第 3 个。

【讨论】:

  • 您好,感谢您的回答。你能帮我看看如何将 ProjectID 作为命令行参数传递吗?你说要创建 PowerSehll 脚本来运行它 5 次。但我有点迷路了。谢谢你
  • 我制作了一个批处理文件来执行console.exe并将5个项目ID放在上面,用空格分隔它们。但是控制台怎么知道怎么做控制台和批处理文件的交互呢?我需要在 de main() 中包含一些内容吗?谢谢
猜你喜欢
  • 2016-12-28
  • 1970-01-01
  • 2017-01-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-27
相关资源
最近更新 更多