错误消息“无法安装或运行该应用程序。 该应用程序在GAC中需要stdole版本7.0.3300.0“

当一个用户尝试运行该应用程序时,我们的ClickOnce应用程序正在报告:

无法安装或运行该应用程序。 该应用程序在GAC中需要stdole版本7.0.3300.0。

有趣的是, GAC (C:\ Windows \ assembly)没有安装stdole。 我如何得到它?

我们正在使用.NET 3.5,并已安装在此计算机上。

尝试转到项目属性中的“ 发布”选项卡,然后select“ 应用程序文件”button。 然后设置下列属性:

  • stdole.dll的文件名
  • 将状态发布包含
  • 将组下载必需

之后,您需要重新发布您的应用程序。

如果引用具有CopyLocal = true,则引用将与应用程序一起发布。 如果引用有CopyLocal = false,则引用将被标记为先决条件。 这意味着在安装ClickOnce应用程序之前,程序集必须安装在客户端的GAC中。

有一些程序集因安装Visual Studio而安装在GAC中,而不是安装.NET Framework。 这可能是你的情况。

所以事实certificate,.NET文件被复制到C:\Program Files\Microsoft.NET\Primary Interop Assemblies\ 。 但是,他们从未在GAC中注册过。

我最终手动将C:\Program Files\Microsoft.NET\Primary Interop Assemblies集中的文件拖到C:\windows\assembly ,并在该问题机器上运行该应用程序。 你也可以使用Gacutil来编程。

所以在安装过程中似乎发生了一些.NET事件,但是这似乎解决了这个问题。 我希望能帮助别人!

我的情况下,我解决了这个问题去项目属性中发布选项卡,然后select应用程序文件button。 然后只是:

注意: 在您应用此解决scheme之前,请确保您已经(像我一样),检查了您的解决scheme的所有项目,并没有发现对stdole.dll程序集的引用。

1 – 位于stdole.dll文件;

2 – 将其发布状态更改为排除

3 – 之后,您需要重新发布您的应用程序

从Visual Studio 2010迁移后,Visual Studio 2012发生此问题。

希望能帮助到你。

我有一个ClickOnce部署相同的问题。

我通过转到项目属性中的“发布”选项卡,然后select“应用程序文件”button来解决问题。

然后我select了选项:

  • “stdole.dll”的“文件名”
  • “发布状态”为“包含”和
  • “下载组”为“必需”。

当我重新发布时,这解决了我的问题。

我希望这可以帮助你:D

我们与使用Interop和Microsoft Office的ClickOnce应用程序有相同的问题。 它只发生在公司的几台电脑上。

我们发现的最好的解决方法是在有问题的计算机上修改MS Office安装(通过“ 程序和function”面板),并确保“.NET可编程性function”(不确定组件的名称 – 我们的Microsoft_Office版本不是英文)为每个MS Office应用程序(Excel,Word,Outlook等)安装。 这似乎不包含在默认安装中。

然后stdole.dll的问题就修复了。

我希望这可能有帮助。

那么,您无法使用ClickOnce安装到GAC。 这是MSDN文章中logging 。

检查你是否真的使用EnvDTE参考。 如果没有,请将其删除并重新编译。

有趣的是,我没有在我的项目中提到stdole,但是我仍然有一个用户仍然收到错误。 我不得不添加参考,然后将设置更改为包含。 希望这会工作。

到H2oRider – 你的应用程序访问GAC中的Oracle dll吗? 我build议你做的是这样的:将dll添加到您的项目,并将生成操作设置为“内容”,并将“复制到输出目录”设置为“始终复制”。

然后将您的引用删除到GAC中的dll。 重新添加引用,但是这次深入到刚刚添加到项目中的引用。

现在发布它。 应用程序将在本地查找dll,并将dll包含在部署中,以便它能够find它。

如果这不起作用,那么可能是您不能使用该dll(如果包含在本地而不是在GAC中)。 对于一些组装来说也是如此,比如Office PIAs。 在这种情况下,部署它的唯一方法是将其包装在设置和部署包中,并使用Bootstrapper清单生成器将其转化为您可以使用ClickOnce部署进行发布的先决条件。

我的解决scheme:我打开解决scheme资源pipe理器中的参考文件夹(显示所有文件),并为每个安装程序抱怨(程序集的名称可能不完全相同程序集的文件名 – 在对象资源pipe理器中,但很容易弄清楚),我将“ 复制本地”更改为“ 真” 。 我结束了每个Microsoft Office / COM相关的程序集。