Saya mencoba mendaftarkan custom ITaskHost dalam HostServices untuk diakses selama proses pembuatan dengan properti Task.HostObject.

HostServices hostServices = new HostServices();
string prjPath = "/mnt/devel/CrowIDE/build/Debug/netcoreapp3.1/src/CustomCrowIDE.targets"       
hostServices.RegisterHostObject(prjPath, "CustomBeforeBuild", "HookTask", this);
ProjectInstance pi = BuildManager.DefaultBuildManager.GetProjectInstanceForBuild (project);         
BuildRequestData request = new BuildRequestData (pi, new string[] { target }, hostServices);            
BuildResult result = BuildManager.DefaultBuildManager.Build (solution.buildParams, request);

Tapi properti HostObjet dari tugas khusus saya tetap nol.

Saya sudah membaca bahwa Itaskhost adalah objek COM pada Windows yang harus didaftarkan dalam tabel busuk, tetapi di sini di Linux, apakah mungkin untuk mem-bypass kendala ini?

0
j-p 2 April 2021, 21:45

1 menjawab

Jawaban Terbaik

Saya telah menemukan solusi lain untuk meneruskan hasil ke aplikasi hosting menggunakan ILogger dan kemungkinan untuk menaikkan acara khusus dengan CustomBuildEventArgs. Caranya adalah dengan menggunakan refleksi pada logger untuk memotong isolasi.

0
j-p 2 April 2021, 23:47