繁体   English   中英

Visual Studio 扩展找不到所需的程序集

Visual Studio extension could not find a required assembly

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我为 Visual Studio 2013 编写了一个扩展。由于该死的 ComboBox 错误,我不得不将 System.Windows.Interactivity 包含到我的项目中。 要添加更多详细信息:

  1. <Project> 使用附加的解决方案程序集,例如 <Project>.Editor,其中包含物理编辑器。
  2. <Project>.Editor 引用 System.Windows.Interactivity
  3. <Project> 也引用 System.Windows.Interactivity。 事实上,我正在使用 nuget 加载Expression.Blend.Sdk包(它与 WPF 4.5 兼容)

效果:当包含提到的ComboBox的编辑器部分显示时,我立即收到异常:

PresentationFramework.dll 中发生了“System.Windows.Markup.XamlParseException”类型的第一次机会异常

附加信息:无法加载文件或程序集“System.Windows.Interactivity,PublicKeyToken=31bf3856ad364e35”或其依赖项之一。 该系统找不到指定的文件。

我在实验实例和文件夹中运行扩展:

C:\Users\<user>\AppData\Local\Microsoft\VisualStudio\12.0Exp\Extensions\<Company>\<Extension>\1.0

包含 System.Windows.Interactivity.dll,但出于某种原因,IDE 似乎看不到它。

更奇怪的是,我正在使用其他附加软件包,例如 IronPython,它们从未给我带来过这样的麻烦。

我该如何解决?


编辑:回应评论

实际上, InnerException 包含名为FusionLog字段,其中包含以下内容:

 === Pre-bind state information === LOG: DisplayName = System.Windows.Interactivity, PublicKeyToken=31bf3856ad364e35 (Partial) WRN: Partial binding information was supplied for an assembly: WRN: Assembly Name: System.Windows.Interactivity, PublicKeyToken=31bf3856ad364e35 | Domain ID: 1 WRN: A partial bind occurs when only part of the assembly display name is provided. WRN: This might result in the binder loading an incorrect assembly. WRN: It is recommended to provide a fully specified textual identity for the assembly, WRN: that consists of the simple name, version, culture, and public key token. WRN: See whitepaper http://go.microsoft.com/fwlink/?LinkId=109270 for more information and common solutions to this issue. LOG: Appbase = file:///C:/Program Files (x86)/Microsoft Visual Studio 12.0/Common7/IDE/ LOG: Initial PrivatePath = NULL Calling assembly : (Unknown). === LOG: This bind starts in default load context. LOG: Using application configuration file: C:\\Users\\<user>\\AppData\\Local\\Temp\\devE4FC.tmp LOG: Using host configuration file: LOG: Using machine configuration file from C:\\Windows\\Microsoft.NET\\Framework\\v4.0.30319\\config\\machine.config. LOG: Policy not being applied to reference at this time (private, custom, partial, or location-based assembly bind). LOG: Attempting download of new URL file:///C:/Program Files (x86)/Microsoft Visual Studio 12.0/Common7/IDE/System.Windows.Interactivity.DLL. LOG: Attempting download of new URL file:///C:/Program Files (x86)/Microsoft Visual Studio 12.0/Common7/IDE/System.Windows.Interactivity/System.Windows.Interactivity.DLL. LOG: Attempting download of new URL file:///C:/Program Files (x86)/Microsoft Visual Studio 12.0/Common7/IDE/PublicAssemblies/System.Windows.Interactivity.DLL. LOG: Attempting download of new URL file:///C:/Program Files (x86)/Microsoft Visual Studio 12.0/Common7/IDE/PublicAssemblies/System.Windows.Interactivity/System.Windows.Interactivity.DLL. LOG: Attempting download of new URL file:///C:/Program Files (x86)/Microsoft Visual Studio 12.0/Common7/IDE/PrivateAssemblies/System.Windows.Interactivity.DLL. LOG: Attempting download of new URL file:///C:/Program Files (x86)/Microsoft Visual Studio 12.0/Common7/IDE/PrivateAssemblies/System.Windows.Interactivity/System.Windows.Interactivity.DLL. LOG: Attempting download of new URL file:///C:/Program Files (x86)/Microsoft Visual Studio 12.0/Common7/IDE/CommonExtensions/Microsoft/TemplateProviders/System.Windows.Interactivity.DLL. LOG: Attempting download of new URL file:///C:/Program Files (x86)/Microsoft Visual Studio 12.0/Common7/IDE/CommonExtensions/Microsoft/TemplateProviders/System.Windows.Interactivity/System.Windows.Interactivity.DLL. LOG: Attempting download of new URL file:///C:/Program Files (x86)/Microsoft Visual Studio 12.0/Common7/IDE/CommonExtensions/Platform/Debugger/System.Windows.Interactivity.DLL. LOG: Attempting download of new URL file:///C:/Program Files (x86)/Microsoft Visual Studio 12.0/Common7/IDE/CommonExtensions/Platform/Debugger/System.Windows.Interactivity/System.Windows.Interactivity.DLL. LOG: Attempting download of new URL file:///C:/Program Files (x86)/Microsoft Visual Studio 12.0/Common7/IDE/PrivateAssemblies/DataCollectors/System.Windows.Interactivity.DLL. LOG: Attempting download of new URL file:///C:/Program Files (x86)/Microsoft Visual Studio 12.0/Common7/IDE/PrivateAssemblies/DataCollectors/System.Windows.Interactivity/System.Windows.Interactivity.DLL. LOG: Attempting download of new URL file:///C:/Program Files (x86)/Microsoft Visual Studio 12.0/Common7/IDE/PrivateAssemblies/DataCollectors/x86/System.Windows.Interactivity.DLL. LOG: Attempting download of new URL file:///C:/Program Files (x86)/Microsoft Visual Studio 12.0/Common7/IDE/PrivateAssemblies/DataCollectors/x86/System.Windows.Interactivity/System.Windows.Interactivity.DLL. LOG: Attempting download of new URL file:///C:/Program Files (x86)/Microsoft Visual Studio 12.0/Common7/IDE/System.Windows.Interactivity.EXE. LOG: Attempting download of new URL file:///C:/Program Files (x86)/Microsoft Visual Studio 12.0/Common7/IDE/System.Windows.Interactivity/System.Windows.Interactivity.EXE. LOG: Attempting download of new URL file:///C:/Program Files (x86)/Microsoft Visual Studio 12.0/Common7/IDE/PublicAssemblies/System.Windows.Interactivity.EXE. LOG: Attempting download of new URL file:///C:/Program Files (x86)/Microsoft Visual Studio 12.0/Common7/IDE/PublicAssemblies/System.Windows.Interactivity/System.Windows.Interactivity.EXE. LOG: Attempting download of new URL file:///C:/Program Files (x86)/Microsoft Visual Studio 12.0/Common7/IDE/PrivateAssemblies/System.Windows.Interactivity.EXE. LOG: Attempting download of new URL file:///C:/Program Files (x86)/Microsoft Visual Studio 12.0/Common7/IDE/PrivateAssemblies/System.Windows.Interactivity/System.Windows.Interactivity.EXE. LOG: Attempting download of new URL file:///C:/Program Files (x86)/Microsoft Visual Studio 12.0/Common7/IDE/CommonExtensions/Microsoft/TemplateProviders/System.Windows.Interactivity.EXE. LOG: Attempting download of new URL file:///C:/Program Files (x86)/Microsoft Visual Studio 12.0/Common7/IDE/CommonExtensions/Microsoft/TemplateProviders/System.Windows.Interactivity/System.Windows.Interactivity.EXE. LOG: Attempting download of new URL file:///C:/Program Files (x86)/Microsoft Visual Studio 12.0/Common7/IDE/CommonExtensions/Platform/Debugger/System.Windows.Interactivity.EXE. LOG: Attempting download of new URL file:///C:/Program Files (x86)/Microsoft Visual Studio 12.0/Common7/IDE/CommonExtensions/Platform/Debugger/System.Windows.Interactivity/System.Windows.Interactivity.EXE. LOG: Attempting download of new URL file:///C:/Program Files (x86)/Microsoft Visual Studio 12.0/Common7/IDE/PrivateAssemblies/DataCollectors/System.Windows.Interactivity.EXE. LOG: Attempting download of new URL file:///C:/Program Files (x86)/Microsoft Visual Studio 12.0/Common7/IDE/PrivateAssemblies/DataCollectors/System.Windows.Interactivity/System.Windows.Interactivity.EXE. LOG: Attempting download of new URL file:///C:/Program Files (x86)/Microsoft Visual Studio 12.0/Common7/IDE/PrivateAssemblies/DataCollectors/x86/System.Windows.Interactivity.EXE. LOG: Attempting download of new URL file:///C:/Program Files (x86)/Microsoft Visual Studio 12.0/Common7/IDE/PrivateAssemblies/DataCollectors/x86/System.Windows.Interactivity/System.Windows.Interactivity.EXE.

但还有更多。 我使用 ProcMon 来检查,Visual Studio 在哪里查找该 DLL 并最终注意到:

 08:46:46,7508050 devenv.exe 7544 CreateFile C:\\Users\\<user>\\AppData\\Local\\Microsoft\\VisualStudio\\12.0Exp\\Extensions\\<Company>\\<Extension>\\1.0\\Lib\\System.Windows.Interactivity NAME NOT FOUND Desired Access: Read Attributes, Disposition: Open, Options: Open Reparse Point, Attributes: n/a, ShareMode: Read, Write, Delete, AllocationSize: n/a 08:46:46,7509231 devenv.exe 7544 CreateFile C:\\Users\\<user>\\AppData\\Local\\Microsoft\\VisualStudio\\12.0Exp\\Extensions\\<Company>\\<Extension>\\1.0\\Lib\\System.Windows.Interactivity.EXE NAME NOT FOUND Desired Access: Read Attributes, Disposition: Open, Options: Open Reparse Point, Attributes: n/a, ShareMode: Read, Write, Delete, AllocationSize: n/a 08:46:46,7510379 devenv.exe 7544 CreateFile C:\\Users\\<user>\\AppData\\Local\\Microsoft\\VisualStudio\\12.0Exp\\Extensions\\<Company>\\<Extension>\\1.0\\Lib\\System.Windows.Interactivity.DLL NAME NOT FOUND Desired Access: Read Attributes, Disposition: Open, Options: Open Reparse Point, Attributes: n/a, ShareMode: Read, Write, Delete, AllocationSize: n/a

Lib 文件夹包含我正在使用的一些 Python 模块(出于脚本目的,因为我使用的是 IronPython)。 而且,具有讽刺意味的是,大会在

C:\\Users\\<user>\\AppData\\Local\\Microsoft\\VisualStudio\\12.0Exp\\Extensions\\<Company>\\<Extension>\\1.0\\

文件夹(不含 Lib)。 但是 Visual Studio 在搜索中忽略了它,尽管它是最自然的搜索位置(因为请求程序集也驻留在那里)

3 个回复

这是此问题的解决方法。 我不喜欢它,但它有效:)

解决方案是从源代码强制加载程序集,这样 PresentationFramework 就不必在解析 XAML 文件期间寻找它。 例如:

private static void LoadSystemWindowsInteractivity()
{
    // HACK: Force load System.Windows.Interactivity.dll from plugin's 
    // directory
    typeof(System.Windows.Interactivity.Behavior).ToString();
}

static MyEditorFactory()
{
    LoadSystemWindowsInteractivity();
}

我有同样的问题。 下面的解决方案对我有用。

  1. 创建一个文本文件名为“MyDef.pkgdef”
  2. 将内容更改为

[$RootKey$\\BindingPaths{some_guid}]
"$PackageFolder$"=""

  1. 在 .vsixmanifest 文件中添加资产

<Asset Type="Microsoft.VisualStudio.VsPackage" d:Source="File" Path="MyDef.pkgdef" />

  1. 确保引用的 dll 必须签名并且“复制本地”属性必须为真。

使用Microsoft.Xaml.Behaviors.Wpf而不是System.Windows.Interactivity问题消失了。

以下是迁移方法: https : //devblogs.microsoft.com/dotnet/open-sourcing-xaml-behaviors-for-wpf/ (基本上:安装nuget ,替换 xaml 文件中的 xmlns 命名空间。)

2 在Visual Studio加载项中反序列化二进制文件-'找不到程序集'

我创建了Visual Studio(2010)插件,并决定使用二进制序列化文件来存储我的设置。 事实证明,在反序列化文件时,出现“找不到程序集MyAddin.xxx”异常。 我只能假设这是AddIn程序集被加载到与创建序列化文件的域不同的域中的结果。 我尝试将文件流式传输到AppDom ...

3 在Visual Studio扩展中加载程序集

我正在编写一个Visual Studio扩展程序,我对如何以及在何时何地加载程序集感到困惑。 我所拥有的是: 我的Visual Studio扩展项目(我们称其为MyExtension )引用了多个程序集,包括一个名为Foo.dll的程序集。 MyExtension包含一个名为FooManage ...

4 Visual Studio:查找类的程序集

我很蠢。 如果我只知道类的名称,我怎么知道要引用哪个程序集,例如System.Collections.Specialized.StringCollection 。 (是的,我知道通常我会通过查看命名空间来做出有根据的猜测。) 谢谢 亚历克斯 ...

7 Visual Studio 2019 - 找不到程序集“Windows”

我正在尝试使用此 PoshWinRT .NET/Powershell 库, 如此博客文章和此 SO 问题中所述。 这以前在 Windows 7 上对我有用,但现在我在 Windows 10 上,因为我已经搬到新计算机上,所以我已经清除了构建期间缓存的程序集。 该代码使用了几个类,例如 Window ...

8 Visual Studio 2010无法加载文件或程序集

我知道在这个问题上有很多问题,但是我没有找到关于我的问题的有用答案。 我从同事那里得到了一个使用mercurial的项目。 现在,当我打开项目时,我无法打开任何C#文件,并且收到以下消息: 无法加载文件或程序集“ Microsoft.MSXML,版本= 8.0.0.0,文化=中 ...

9 Visual Studio FileNotFound:无法加载程序集

我删除了项目中的bin和obj文件夹,并且在重建时突然出现此错误: 我已经尝试修复此问题大约2个小时了,在互联网上我唯一能找到的是修复系统dll,但是我认为该dll不是来自我的系统,而是由Visual Studio生成的。 谁能帮我解决此错误? ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM