wpf - VSX 2010 包加载 - Markup.xaml 解析找不到程序集

标签 wpf visual-studio-2010 vsx

我已经构建了一个 Wpf 用户控件库,它包含一大组程序集,甚至引用了其他两个类库和几个合并的资源字典。它构建没有错误。我构建了一个简单的 VSX 包并引用了 Wpf 库,然后尝试运行它。当它解析页面时,它只能找到我的 xaml UserControl 页面上引用的程序集的一部分。它在每个不可绑定(bind)的程序集的融合日志中为我提供了以下错误消息。如果我删除“坏”程序集,它会继续解析到下一个无法找到的程序集。它能够找到我引用的类库之一,但不能找到另一个。它们的设置基本相同,但类(class)内容不同。

那么,有人对此有任何资源或答案吗?我的其他测试项目甚至包含 WCF 服务加载没有问题,这对我来说是一个障碍。

谢谢,丹尼

=== 预绑定(bind)状态信息 ===
日志:用户 = AMRS\dhoneycu
日志:DisplayName = System.Windows.Interactivity,PublicKeyToken=31bf3856ad364e35
(部分的)
警告:为程序集提供了部分绑定(bind)信息:
警告:程序集名称:System.Windows.Interactivity,PublicKeyToken=31bf3856ad364e35 |域 ID:1
警告:仅提供部分程序集显示名称时会发生部分绑定(bind)。
警告:这可能会导致活页夹加载不正确的程序集。
警告:建议为程序集提供完全指定的文本标识,
WRN:由简单的名称、版本、文化和公钥标记组成。
警告:请参阅白皮书 http://go.microsoft.com/fwlink/?LinkId=109270有关此问题的更多信息和常见解决方案。
日志:Appbase = file:///C:/Program Files/Microsoft Visual Studio 10.0/Common7/IDE/
日志:初始 PrivatePath = NULL

调用程序集:(未知)。

LOG:此绑定(bind)在默认加载上下文中开始。
LOG:使用应用程序配置文件:C:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE\devenv.exe.Config
LOG:使用主机配置文件:
LOG:使用来自 c:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\config\machine.config 的机器配置文件。
日志:此时未将策略应用于引用(私有(private)、自定义、部分或基于位置的程序集绑定(bind))。
日志:正在尝试下载新的 URL 文件:///C:/Program Files/Microsoft Visual Studio 10.0/Common7/IDE/System.Windows.Interactivity.DLL。
日志:正在尝试下载新的 URL 文件:///C:/Program Files/Microsoft Visual Studio 10.0/Common7/IDE/System.Windows.Interactivity/System.Windows.Interactivity.DLL。
日志:尝试下载新的 URL 文件:///C:/Program Files/Microsoft Visual Studio 10.0/Common7/IDE/PublicAssemblies/System.Windows.Interactivity.DLL。
日志:正在尝试下载新的 URL 文件:///C:/Program Files/Microsoft Visual Studio 10.0/Common7/IDE/PublicAssemblies/System.Windows.Interactivity/System.Windows.Interactivity.DLL。
日志:正在尝试下载新的 URL 文件:///C:/Program Files/Microsoft Visual Studio 10.0/Common7/IDE/PrivateAssemblies/System.Windows.Interactivity.DLL。
日志:尝试下载新的 URL 文件:///C:/Program Files/Microsoft Visual Studio 10.0/Common7/IDE/PrivateAssemblies/System.Windows.Interactivity/System.Windows.Interactivity.DLL。
日志:正在尝试下载新的 URL 文件:///C:/Program Files/Microsoft Visual Studio 10.0/Common7/IDE/CommonExtensions/Microsoft/TemplateProviders/System.Windows.Interactivity.DLL。
日志:尝试下载新的 URL 文件:///C:/Program Files/Microsoft Visual Studio 10.0/Common7/IDE/CommonExtensions/Microsoft/TemplateProviders/System.Windows.Interactivity/System.Windows.Interactivity.DLL。
日志:尝试下载新的 URL 文件:///C:/Program Files/Microsoft Visual Studio 10.0/Common7/IDE/PrivateAssemblies/DataCollectors/System.Windows.Interactivity.DLL。
日志:正在尝试下载新的 URL 文件:///C:/Program Files/Microsoft Visual Studio

最佳答案

您应该在 VSPackage 类上放置一个 ProvideBindingPath 属性。这将导致您的包程序集所在的目录被探测以寻找否则无法找到的程序集(因为它们不在默认的 VS 探测路径中)。为此,请在您的项目中包含以下文件:

%VSSDKInstallDir%\VisualStudioIntegration\Common\Source\CSharp\RegistrationAttributes\ProvideBindingPathAttribute.cs

然后,将以下属性添加到您的 VSPackage 类中,如下所示:
[ProvideBindingPath] public class VsPackage1 : Package { ... }

关于wpf - VSX 2010 包加载 - Markup.xaml 解析找不到程序集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4478853/

相关文章:

WPF 在多层/项目应用解决方案中集中 xaml/image 资源

WPF 绑定(bind)复选框列表,其中 IsChecked 绑定(bind)到列表的成员资格

c# - Unix 时间 - 纳秒?

c# - 获取 cshtml 文件的语义模型?

c# - e.data.GetData 始终为空

c# - 将命令过滤器添加到 textview 后出现问题

c# - 辅助功能自动化属性 "Name"是否需要本地化?

调试后 C# WPF 与 IDE 的大小不同?

c++ - g++ 在 vi​​sual studio 满意的地方给出错误 - 未定义的引用

c# - 是否可以禁用基于 .NET 版本的部分程序?