【问题标题】:External Component Exception Involving Shadow Copy Folder涉及影子复制文件夹的外部组件异常
【发布时间】:2016-05-30 22:03:38
【问题描述】:

我有一个应用程序在尝试从 C# 到 C++ 通信时抛出“外部组件已抛出异常”错误(更正:这是从 C++ 到 C#)。 C# 解决方案涉及我们认为可能与该问题相关的 VSTO 加载项。只有用户能够复制此问题,并且该问题的临时解决方案是清除其计算机上的“AppData\Local\assembly\dl3”卷影副本文件夹。似乎 VSTO 加载项正在将该文件夹中的 dll 创建为卷影副本和 there does not seem to be a way to prevent it

有人对如何解决这个问题有任何想法吗?

编辑:仅当 C++ 应用程序调用 C# DLL 的网络更新发生并且另一个用户仍然登录时,才会出现此问题。如果由 VSTO 加载项创建的 DLL 的卷影副本不存在,则没有问题。如果卷影副本确实存在,那么这两个产品将无法通信,直到 C# 应用程序发生更新或删除了卷影副本。使用 VSTO 加载项将导致重新创建卷影副本并再次断开连接。

【问题讨论】:

    标签: c# vsto shadow-copy


    【解决方案1】:

    原来问题是调用...

    Assembly.GetExecutingAssembly().Location 
    

    C++ 解决方案称为 C++ DLL,它是我的 C# 解决方案的一部分,它将使用 ... 加载 C# 程序集

    Assembly::LoadFrom(assemblyPathString)
    

    然后,该程序集将进行有问题的调用,该调用将找到不同的影子复制 DLL,而不是原始位置。切换呼叫以使用...

    new Uri(Assembly.GetExecutingAssembly().CodeBase).LocalPath 
    

    ...解决了这个问题。我不确定 Uri 和 LocalPath 部分是必要的还是矫枉过正。

    【讨论】:

      猜你喜欢
      • 2020-09-29
      • 1970-01-01
      • 2010-11-07
      • 2017-04-10
      • 1970-01-01
      • 2021-01-15
      • 2013-04-19
      • 2011-07-16
      • 1970-01-01
      相关资源
      最近更新 更多