错误消息“无法安装或运行该应用程序。 该应用程序在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相关的程序集。