我正在尝试更新我的Diff All Files Visual Studio 扩展以支持 VS 2017。在调试我的扩展时,它抱怨找不到所需的程序集: 我已确认该文件存在于C:\\Users\\Dan.Schroeder\\AppData\\Local\\Microsoft\\VisualStud ...
提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供 中文繁体 英文版本 中英对照 版本,有任何建议请联系yoyou2525@163.com。
我为 Visual Studio 2013 编写了一个扩展。由于该死的 ComboBox 错误,我不得不将 System.Windows.Interactivity 包含到我的项目中。 要添加更多详细信息:
效果:当包含提到的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 在搜索中忽略了它,尽管它是最自然的搜索位置(因为请求程序集也驻留在那里)
这是此问题的解决方法。 我不喜欢它,但它有效:)
解决方案是从源代码强制加载程序集,这样 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();
}
我有同样的问题。 下面的解决方案对我有用。
[$RootKey$\\BindingPaths{some_guid}]
"$PackageFolder$"=""
<Asset Type="Microsoft.VisualStudio.VsPackage" d:Source="File" Path="MyDef.pkgdef" />
使用Microsoft.Xaml.Behaviors.Wpf而不是System.Windows.Interactivity问题消失了。
以下是迁移方法: https : //devblogs.microsoft.com/dotnet/open-sourcing-xaml-behaviors-for-wpf/ (基本上:安装nuget ,替换 xaml 文件中的 xmlns 命名空间。)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.