代码之家  ›  专栏  ›  技术社区  ›  Chris Nicol

文件夹结构中的链接文件

  •  2
  • Chris Nicol  · 技术社区  · 17 年前

    在VisualStudio中,当我将一个文件从一个项目链接到下一个项目时,当尝试加载链接的资源时,会出现以下错误。仅当链接的文件位于文件夹内时才会发生这种情况。

    错误:

    Message=“”pack://application:、、、、/projectName;组件/ResourceDictionary.xaml值无法分配给对象“System.Windows.SharedResourceDictionary”的属性“Source”。

    例子:

    Project1.Resources
               |
               |--> MergedResourceDictionary.xaml
               |--> ProjectResourceDictionary.xaml
               |--> Folder
                         |
                         |--> SharedResourceDictionary.xaml           
    
    
    Project2.Resources
               |
               |--> MergedResourceDictionary.xaml
               |--> ProjectResourceDictionary.xaml
               |--> Folder
                         |
                         |--> SharedResourceDictionary.xaml  **LINKED**
    

    如果在MergedResourceDictionary.xaml中合并了这些词典,则在项目2中找不到“SharedResourceDictionary.xaml”。但是,如果SharedResourceDictionary.xaml链接到项目的根目录,则在运行时可以找到资源。

    **注意:在project2的“obj/debug”中,所有链接的资源都位于根目录中,而在project1中,资源仍保留在项目中指定的文件夹结构中。

    重新创建的步骤

    1) 在项目1的“文件夹”中创建SharedResourceDictionary 2) 在项目2中创建“文件夹”,然后在文件夹中添加“作为链接”SharedResourceDictionary 3) 构建并运行应用程序 4) 应用程序将无法找到SharedResourceDictionary.xaml,因为它位于文件夹中。从文件夹结构中删除该文件可以作为链接文件正常工作。

    我感谢你的帮助,

    克里斯

    1 回复  |  直到 17 年前
        1
  •  1
  •   Chris Nicol    16 年前

    我花了一些时间与Microsoft支持人员一起解决这个问题。这是MsBuild的一个bug,将来可能会修复。

    我为感兴趣的任何人找到了一个解决方法:

    创建运行LocBaml的后期生成事件,创建所需的文件夹结构,并将文件放置在正确的文件夹中。

    希望这有帮助。