![](/img/trans.png)
[英]Android App crashes when using .NET MAUI RelativeLayout
[英]Run external app using process in .Net Maui
我構建了一個 WPF 應用程序,它使用System.Diagnostics.Process
來運行 ffmpeg.exe。 在那里我添加了一個“外部”文件夾來保存 ffmpeg 文件。
然后只是做了類似的事情
new ProcessStartInfo()
{
FileName = @"External\ffmpeg\bin\x64\ffmpeg.exe",
...
}
效果很好。
現在我想將此項目移植到 .Net Maui 以利用其跨平台性,以便我的應用程序可以在 PC 或 Mac 上運行。
我的問題是我在 Maui 項目中的哪里添加 ffmpeg 文件? 我是否只需將它們放在“資源/原始”中並在我的代碼中進行某種檢查以查看使用哪個版本; 我應該在“Platforms/Windows”和“Platforms/MacCatalyst”中創建一個“Resources”文件夾並在那里添加適當的文件嗎?
旁注:我對 Mac 幾乎一無所知。
我想做類似的事情,(在我的情況下,運行 SQL 腳本)並且至少在 Android 下,我需要使腳本嵌入資源,並在運行時將它們復制到應用程序目錄以實際使用文件(或可執行文件) .
這就是我所做的。
private bool CopyDbScriptsToAppData()
{
string assemblyDirectory = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
if (assemblyDirectory == null) return false;
var assembly = Assembly.LoadFrom(Path.Combine(assemblyDirectory, "<assembly>.dll"));
string prefix = "<assembly>.Resources.Raw.";
foreach (var res in assembly.GetManifestResourceNames())
{
if (res.StartsWith(prefix))
{
Stream stream = assembly.GetManifestResourceStream(res);
if (stream == null)
{
_logger.Warning("Could not write resource:{0} to app data.", res);
continue;
}
string fullPath = ResourcePathHelper.PathNameFromResourceName(prefix, res);
fullPath = Path.Combine(_dbPath, fullPath);
if (!File.Exists(fullPath))
{
string dirName = Path.GetDirectoryName(fullPath);
if (dirName != null)
Directory.CreateDirectory(dirName);
}
using FileStream fs = File.OpenWrite(fullPath);
stream.CopyTo(fs);
fs.Close();
}
}
return true;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.