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

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

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

有趣的是,GAC(C:\ Windows \ assembly)中没有安装stdole。 我如何到达那里?

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

proudgeekdad asked 2019-11-08T16:08:28Z
10个解决方案
67 votes

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

  • stdole.dll的文件名
  • 发布状态以包括
  • 下载组到必需

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

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

由于Visual Studio安装而不是.NET Framework安装,有些程序集已安装到GAC中。 这可能是您的情况。

Darin Dimitrov answered 2019-11-08T16:09:30Z
27 votes

因此,事实证明.NET文件已复制到C:\Program Files\Microsoft.NET\Primary Interop Assemblies\。但是,它们从未在GAC中注册。

我最终手动将C:\Program Files\Microsoft.NET\Primary Interop Assemblies中的文件拖到C:\windows\assembly中,该应用程序在该问题机器上正常工作。 您也可以使用Gacutil以编程方式执行此操作。

因此,似乎在安装过程中.NET发生了某些情况,但这似乎可以解决问题。 我希望这可以帮助其他人!

proudgeekdad answered 2019-11-08T16:10:10Z
22 votes

就我而言,我解决了该问题,请转到项目属性中的“发布”选项卡,然后选择“应用程序文件”按钮。 然后:

注意:在应用此解决方案之前,请确保您已经(如我所做的那样),检查了所有解决方案的项目并没有找到对stdole.dll程序集的引用。

1-找到stdole.dll文件;

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

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

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

希望能帮助到你。

Julio Nobre answered 2019-11-08T16:11:14Z
13 votes

对于ClickOnce部署,我遇到了同样的问题。

通过转到项目属性中的“发布”选项卡,然后选择“应用程序文件”按钮,我解决了该问题。

然后,我选择了以下选项:

  • 'stdole.dll'的'文件名'
  • 将“发布状态”更改为“包含”,然后
  • 将“下载组”更改为“必需”。

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

希望对您有所帮助:D

rpf answered 2019-11-08T16:12:32Z
5 votes

对于与Microsoft Office一起使用Interop的ClickOnce应用程序,我们遇到了同样的问题。 它仅在公司的几台计算机上发生。

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

然后,解决了stdole.dll的问题。

我希望这会有所帮助。

Benlitz answered 2019-11-08T16:13:24Z
1 votes

好吧,您无法使用ClickOnce安装到GAC。 此MSDN文章中对此进行了记录。

Magnus Johansson answered 2019-11-08T16:13:50Z
1 votes

我的解决方案:我在解决方案资源管理器中打开了references文件夹(显示所有文件),对于安装程序抱怨的每个程序集(程序集的名称可能与程序集的文件名不完全相同-在对象浏览器中,但是 很容易找出来),我将“本地复制”更改为True。 我最终需要对每个与Microsoft Office / COM相关的程序集执行此操作。

user1422348 answered 2019-11-08T16:14:18Z
0 votes

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

answered 2019-11-08T16:14:46Z
0 votes

有趣的是,我的项目中没有任何到stdole的引用,但是我的用户仍然收到该错误。 我必须添加参考,然后将设置更改为包括。 希望这会起作用。

Mike answered 2019-11-08T16:15:13Z
0 votes

致H2oRider-您的应用程序是否访问GAC中的Oracle dll? 我建议您执行以下操作:将dll添加到您的项目中,并将生成操作设置为“内容”,并将“复制到输出目录”设置为“始终复制”。

然后删除您对GAC中dll的引用。 重新添加参考,但是这次向下钻取到您刚刚添加到项目中的参考。

现在发布它。 该应用程序将在本地查找dll,并且该dll包含在部署中,因此可以找到它。

如果此方法不起作用,则可能是因为如果包含在本地而不是GAC中,则不能使用该dll。 对于某些程序集(例如Office PIA),情况就是如此。 在这种情况下,部署它的唯一方法是将其包装在设置和部署程序包中,并使用Bootstrapper清单生成器将其转变为可以通过ClickOnce部署发布的先决条件。

RobinDotNet answered 2019-11-08T16:16:04Z
translate from https://stackoverflow.com:/questions/558361/error-message-unable-to-install-or-run-the-application-the-application-require