【问题标题】:MEF With Portable Class library using Microsoft Composition MEF2 throws file not found exception带有使用 Microsoft Composition MEF2 的可移植类库的 MEF 引发文件未找到异常
【发布时间】:2016-04-14 00:04:53
【问题描述】:

我正在研究可移植类库 (PCL) 并试图在其中实现 MEF。我使用了 Nuget 的 System.Composition。当我为 vsix(Visual Studio 扩展)构建和打包时,它不会打包并将这些 dll 放置到扩展文件夹中 (C:\Users\UserName\AppData\Local\Microsoft\VisualStudio\14.0Exp\Extensions\ExtensionName\AppName\versionofYourApp)。当我手动将这些库放在此文件夹中时,它工作正常。有人可以提出一个很好的解决方案来解决这个问题。我正在为 Roslyn Analyzers 编写它并创建一个 nuget 包。我再次面临同样的问题,即使我将这些库打包在一起。

【问题讨论】:

  • Visual Studio 附带一份 System.Composition,这就是我们不将它们打包的原因。你真正想做什么?您是从我们的分析器模板开始的吗?
  • 是的,我为 roslyn 分析器使用了 VS 模板。我正在尝试在分析器中为我的自定义功能实现 Mef,例如阅读远程放置在公共位置的规则。由于分析器是 pcl,所以我必须创建核心和实现库,即 PCL。通过使用 MEF,我正在从核心库加载实现库。

标签: mef nuget-package roslyn vsix mef2


【解决方案1】:

在 VSIX 对 MEF DLL 的引用中将 Copy Local 设置为 true。

【讨论】:

  • 复制本地设置为真。结果相同。
【解决方案2】:

我找到了解决方案,想到了分享。欢迎大家指正和建议。对于 Vsix 扩展,我将这些库添加为本地资产(VisualStudio.Assembly)。

对于包,Assembly.Load("AssemblyName") 试图从所有可能的位置加载库,例如“C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\PrivateAssemblies”等等。所以我把它放在那里,它正在加载。我知道这不是最好的解决方案。欢迎您提出建议。

【讨论】:

    猜你喜欢
    • 2016-02-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多