.net – 在WPF中实例化用户控件时PresentationFramework.dll中的
我有一个用户控件UserControl,它位于程序集Assembly中.我有一个
WPF应用程序,它以编程方式实例化UserControl.我已经添加了对Assembly的引用.但是,在运行时我得到了ff.例外:
Cannot locate resource 'usercontrol.xaml'. at MS.Internal.AppModel.ResourcePart.GetStreamCore(FileMode mode,FileAccess access) at System.IO.Packaging.PackagePart.GetStream(FileMode mode,FileAccess access) at System.IO.Packaging.PackagePart.GetStream() at System.Windows.Application.LoadComponent(Object component,Uri resourceLocator) ... 我将UserControl.xaml的构建操作更改为EmbeddedResource,但这会导致编译问题,因此我将其恢复为默认的页面设置.我在.NET 3和4中尝试过这一点无济于事.任何人都有任何想法? 解决方法
最常见的原因是重命名程序集.我将解释这种情况,然后给出其他一些可能性.
假设您有一个包含UserControl“MyControl”的DLL项目“Abc”.在Abc.dll中为MyControl生成的InitializeComponent将包含Uri“/Abc;Component/MyControl.xaml”. 在运行时,将提取程序集名称“Abc”,并按该名称搜索已加载的程序集以获取程序集.如果找到这样的程序集但它没有“MyControl.xaml”资源,则会收到您在问题中发布的错误. 所以这是场景: >您将Abc.dll文件重命名为Def.dll 现在,当您从Def.dll实例化MyControl时,它会在Abc.dll程序集中查找其xaml而不是Def.dll程序集. 可能发生这种情况的其他一些情况: >您的obj目录中有一个陈旧的.g.cs文件,该文件的xaml文件名称错误.如果您更改源代码而不更新日期(这可能发生在从源控制系统签出或解压缩zip文件或许多其他方式时),则会发生这种情况.清理和重建解决方案将解决这个问题.由于您的评论说您试过这个,这不适用于您. 请注意,如果.g.cs文件与资源中的路径不匹配,对XAML文件路径的任何更改(如重命名或移动它)都可能导致此问题. 为了进一步诊断您的问题,我建议您下载NET Reflector的副本并查看您的.dll文件以查看: > InitializeComponent()指定的Uri是什么? 您还可以在抛出异常的位置检查调用堆栈,以确保正在使用的资源管理器具有对预期程序集的引用,而不是其他程序集. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- Windows – 如何使用Delphi从文件扩展名获取图标和描述?
- Windows 7与Windows XP的客观速度比较
- 运行命令
- windows-phone-7 – 微软广告平台之外的应用程序的最佳广告
- windows-server-2003 – 更改Windows域用户名
- windows-7 – 激活Windows虚拟机进行测试?好坏?
- wpf – 在不使用PasswordBox的情况下隐藏TextBox控件的文本
- windows – 使用QNetworkAccessManager的post()方法上传文件
- microsoft-graph – ADAL.js和MSAL.js有什么区别?
- 程序集 – Windows上的ARM模拟器
- 以编程方式在Windows 8上排序文件夹
- 在没有安装CD的Win Server 2003上安装IIS?
- 域名系统 – 重新启动Windows DNS服务之前的DNS解
- 如何在Windows上安装PLV8?
- windows-7 – 是否有cmd / certutils将证书从一个
- 安装程序 – NSIS与Windows游戏资源管理器集成
- windows-store-apps – Windows UWP作为屏幕保护
- windows-server-2008 – 在Windows Server 2008
- windows – Linux spin_lock与NT KeAcquireSpinL
- wix – Bootstrapper处理多实例msi