実行可能なabcd.exeがあります(多くの.dllが含まれている/マージされています)。 abcd.exe用のAzure Functionを作成して、Azure Cloud Functionsで実行することはできますか?
Abcd.exeアプリケーション:
System.Diagnostics.Process process = new System.Diagnostics.Process();
System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo();
startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
startInfo.FileName = "cmd.exe";
**startInfo.Arguments = "/C abcd.exe";**
process.StartInfo = startInfo;
process.Start();
Abcd.exeアプリケーションにはUI(GUI)はありませんが、それは数学および科学アプリケーションであり、abcd.exe内でマージされる多くの.dllに依存しています。
ありがとうございました
Abcd.exe用のAzure Functionを作成して、Azure Cloud Functionsで実行することは可能ですか?
はい、.exeファイルをアップロードして、Azure Functionアプリで実行できます。 TimerTrigger関数アプリを作成し、この関数アプリのデータベースにレコードを挿入する.exeを実行します。
function.json
{
"bindings": [
{
"name": "myTimer",
"type": "timerTrigger",
"direction": "in",
"schedule": "0 */1 * * * *"
}
],
"disabled": false
}
run.csx
using System;
public static void Run(TimerInfo myTimer, TraceWriter log)
{
System.Diagnostics.Process process = new System.Diagnostics.Process();
process.StartInfo.FileName = @"D:\home\site\wwwroot\TimerTriggerCSharp1\testfunc.exe";
process.StartInfo.Arguments = "";
process.StartInfo.UseShellExecute = false;
process.StartInfo.RedirectStandardOutput = true;
process.StartInfo.RedirectStandardError = true;
process.Start();
string output = process.StandardOutput.ReadToEnd();
string err = process.StandardError.ReadToEnd();
process.WaitForExit();
log.Info($"C# Timer trigger function executed at: {DateTime.Now}");
}
.exeファイルをFunction appフォルダーにアップロード
私の.exeプログラムのメインコード
SqlConnection cn = new SqlConnection("Server=tcp:{dbserver}.database.windows.net,1433;Initial Catalog={dbname};Persist Security Info=False;User ID={user_id};Password={pwd};MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;");
cn.Open();
SqlCommand cmd = new SqlCommand();
cmd.Connection = cn;
cmd.CommandText = "insert into [dbo].[debug]([Name]) values('test')";
cmd.ExecuteNonQuery();
cn.Close();
フレッドありがとうございました。さて、マイナーな変更により、アプリケーションはコンパイルおよび実行されています。
アプリケーションへのいくつかのマイナーな変更:
using System;
using System.Diagnostics;
using System.Threading;
public static void Run(TimerInfo myTimer, TraceWriter log)
{
System.Diagnostics.Process process = new System.Diagnostics.Process();
string WorkingDirectoryInfo =@"D:\home\site\wwwroot\TimerTriggerCSharp1";
string ExeLocation = @"D:\home\site\wwwroot\TimerTriggerCSharp1\MyApplication.exe";
Process proc = new Process();
ProcessStartInfo info = new ProcessStartInfo();
try
{
info.WorkingDirectory = WorkingDirectoryInfo;
info.FileName = ExeLocation;
info.Arguments = "";
info.WindowStyle = ProcessWindowStyle.Minimized;
info.UseShellExecute = false;
info.CreateNoWindow = true;
proc.StartInfo = info;
proc.Refresh();
proc.Start();
proc.WaitForInputIdle();
proc.WaitForExit();
}
catch
{
}
log.Info($"C# Timer trigger function executed at: {DateTime.Now}");
}