我写了一个 shell 扩展在C#.应用程序显示WPF对话框,我使用Xaml.行为当我运行应用程序.所有其他DLL都找到了.(相同的文件夹作为exe)但应用程序抛出一个异常,因为缺少Microsoft.Xaml.Behaviors.dll(但实际上是在同一文件夹中)
所以我运行:gacutil.exe/i ...\bin\Debug\Microsoft.Xaml.Behaviors.dll这修复了我的问题。
我的问题是为什么找到其他的dll而不是xmal_behaviors?
是否可以跳过GAC步骤?
更新:
- 是。行为被nuget包引用。
- 主进程为explorer.exe
2条答案
按热度按时间ukxgm1gy1#
尝试在项目中添加对DLL的引用,并将“复制本地”属性设置为true。这将导致DLL在生成时复制到应用程序的输出目录,并在运行时从该位置加载。
plupiseo2#
行为现在作为一个核心包提供。
使用它们的方法是管理Nuget包,找到Microsoft.Xaml.Behaviors.wpf并“安装”它。
例如
然后,您需要在视图中使用xmlns。
以及一个示例用法:
以上是来自一个真实的的解决方案,它被编译到目标。net 6,没有机器GAC中的行为dll也能正常工作。
如果这不起作用,那么可能是由于不兼容。AFAIK微软的建议仍然是不要在托管代码中编写 shell 扩展。我找不到当前的链接,但以下是截至2018. https://learn.microsoft.com/en-us/previous-versions/windows/desktop/legacy/dd758089(v=vs.85)