gpt4 book ai didi

wpf - 在运行时从具有相同名称的程序集中加载 ResourceDictionary 资源

转载 作者:行者123 更新时间:2023-12-03 17:53:23 25 4
gpt4 key购买 nike

我在尝试从具有 的两个独立程序集加载资源时遇到了一些问题。同名但是 位于不同的文件夹 :

  • C:\folder1\fcl.dll
  • C:\folder2\fcl.dll

  • 一个 ResourceDictionary命名 资源.xaml 嵌入(作为页面)在这些程序集中的每一个中。

    加载第一个 ResourceDictionary ,我使用以下代码段:
    // Load the assembly in memory
    var assembly = Assembly.LoadFrom(@"c:\folder1\FCL.Dll");

    // Get Dictionnary
    var uri = string.Format("pack://application:,,,/{0};Component/Resources.xaml", assembly.GetName().Name);
    var resourceDictionary = new ResourceDictionary { Source = new Uri(uri) };

    这是在运行!

    但是当我尝试加载第二个 ResourceDictionary 时使用相同的代码片段(只是将 Assembly.LoadFrom(@"c:\folder1\FCL.Dll") 更改为 Assembly.LoadFrom(@"c:\folder2\FCL.Dll") 它不会从 c:\folder2\fcl.dll 加载资源,而是从先前加载的 c:\folder1\fcl.dll 中加载资源:-(

    原因: shortAssemblyName URI 的字段是相同的,在可能的情况下 FCL:
     var uri = string.Format("pack://application:,,,/{0};Component/Resources.xaml", assembly.GetName().Name)

    有人知道如何解决这个问题吗?

    最佳答案

    你不能用相同的名称加载两个程序集,所以我认为第二个 Assembly.LoadFrom 只是被忽略了。您可能将不得不重命名其中一个程序集。

    关于wpf - 在运行时从具有相同名称的程序集中加载 ResourceDictionary 资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15334085/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com