2009-02-17 66 views

回答

26

因此,原来在.NET文件被复制到C:\Program Files\Microsoft.NET\Primary Interop Assemblies\。但是,他们从未在GAC中注册过。

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

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

63

尝试要去发布选项卡在项目属性,然后选择应用程序文件按钮。然后设置以下属性:

  • 文件stdole.dll的名称
  • 发布状态包括
  • 下载集团要求

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

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

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

+1

这种情况并不适用于我。我现在收到错误“应用程序验证未成功,无法继续。”点击“详细信息”按钮后,我会得到“强名称签名对此程序集stdole.dll无效”。我假设这是因为它是一个.NET框架的DLL。 – proudgeekdad 2009-02-17 20:23:54

+5

你不应该重新分配stdole.dll http://msdn.microsoft.com/en-us/library/aa195478(office.11​​).aspx – 2011-10-20 21:38:40

12

我在ClickOnce部署中遇到同样的问题。

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

然后我选择的选项: 'stdole.dll'

  • '发布状态' 的

    • '文件名' 到 '包括' 和
    • '下载集团' 到 '必需的'。

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

    我希望这可以帮助您:d

  • 1

    那么,您无法使用ClickOnce安装到GAC。这在this MSDN article中有记录。

    +0

    马格纳斯,感谢您的文章。但是,.NET的安装很糟糕,核心.NET Dll不在GAC中,因为它们应该是。如果.NET安装不好,ClickOnce将不起作用。 – proudgeekdad 2009-03-10 01:26:11

    +0

    好的,无法使用ClickONce在GAC中安装stdole.dll。但任何安装程序安装stdole.dll? thx – Kiquenet 2010-08-02 16:23:24

    0

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

    0

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

    0

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

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

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

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

    4

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

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

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

    我希望这可能会有所帮助。

    +0

    这对我有用。 – lymber 2015-05-27 01:52:34

    1

    我的解决办法:我打开引用在解决方案资源管理器(显示所有文件)文件夹,并为每个安装抱怨组件(组件的名称可能不完全一样的程序集的文件名 - 中对象资源管理器中,但足够容易弄清楚),我改变了复制本地。我最终需要与每个Microsoft Office/COM相关的程序集来完成此操作。

    21

    我我的情况,我解决了这个问题要去项目属性发布选项卡,然后选择应用程序文件按钮。然后,只需:

    注:之前应用此解决方案,确保你已经(像我一样),检查了所有的解决方案的项目,发现stdole.dll装配的引用。

    1-位于stdole.dll file;

    2 - 改变其发布状态排除

    3 - 之后,你需要发布应用程序

    此问题发生在一个Visual Studio 2012,其迁移后,Visual Studio 2010中

    希望它能帮助。

    相关问题