涉及卷影复制文件夹的外部组件异常

时间:2016-02-18 16:08:14

标签: c# vsto shadow-copy

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

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

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

1 个答案:

答案 0 :(得分:0)

事实证明,这个问题是对......的呼吁。

Assembly.GetExecutingAssembly().Location 

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

Assembly::LoadFrom(assemblyPathString)

然后该程序集将进行违规调用,这会发现不同的阴影复制DLL而不是原始位置。将呼叫切换为使用...

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

......解决了这个问题。我不确定Uri和LocalPath部分是否必要或是否过度。