C# WPF在尝试将文件扩展名与我的GUI关联时未能加载程序集

ohfgkhjo  于 2023-04-07  发布在  C#
关注(0)|答案(1)|浏览(235)

我正试图打开一个文件扩展名(.flw)与我的应用程序相关联,以便您可以打开此扩展名,我的应用程序打开并从中加载信息因此在主窗口中,我添加了以下内容:

private void MainWindow_Loaded(object sender, RoutedEventArgs e)
{
    string[] args = Environment.GetCommandLineArgs();

    foreach (string arg in args)
    {
        if (System.IO.Path.GetExtension(arg) == ".flw")
        {
            Console.WriteLine("Path = " + arg);
            SerializationHelper.LoadFlow(arg);
        }
    }
}

“.flw”文件正在打开并正确读取,但当我使用此扩展名打开应用程序时,应用程序的依赖项之一“Framework.DLL”似乎丢失,就好像它与file.flw在同一目录中搜索一样。
例如,当我双击位于桌面上的“flw”文件时,它说:
未能加载文件或程序集文件“Systems.dll”或它的某一个依赖项。系统找不到指定的文件。
这个特定的依赖项是一个C# DLL,我将它用于应用程序的样式化,并将其作为引用添加。
它与应用程序一起安装在与.exe路径相同的路径中,但似乎当我打开具有'.flw'文件的应用程序时,它试图在与我的文件相同的目录中搜索此程序集
请注意,从桌面快捷方式打开应用程序不会导致此问题。

omqzjyyz

omqzjyyz1#

我能够通过改变我的应用程序的当前目录来解决它。
似乎从任何其他文件而不是exe文件打开应用程序,应用程序的当前目录被设置为该文件的位置,因此它无法找到依赖项。
因此,在我的App.xaml.cs中,我将当前目录设置为

string exePath = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetEntryAssembly().Location);
Console.WriteLine("exe path = " + exePath);
System.Environment.CurrentDirectory = exePath;

相关问题