无法安装或运行应用程序:单击一次

时间:2012-07-16 13:35:32

标签: .net clickonce

我使用ClickOnce发布了我的.net应用程序,所有用户在尝试打开程序时都收到以下错误消息:

“无法安装或运行应用程序。应用程序要求首先在全局程序集缓存(GAC)中安装程序集Telerik.Windows.Data Version 2012.1.215.40”。

我在我的应用程序中实际使用的版本比错误消息中提到的版本更新。我在用于开发应用程序的机器上也没有这个问题。我想知道它为什么要寻找旧版本的DLL。我无法找到我的应用程序引用它的位置。

你能帮帮我吗?

5 个答案:

答案 0 :(得分:37)

我在这里找到了解决方案:

http://ablogontech.wordpress.com/2009/01/02/unable-to-install-or-run-the-application-the-application-requires-that-the-assembly-be-installed-in-the-global-assembly-cache-gac-first/

摘自wordpress链接:

  

我在编译我的第一个C#生产时收到了这个错误   应用。我必须在Visual Studio中执行以下操作   项目:

     
      
  1. 在“解决方案资源管理器”中,展开“引用”节点,然后单击错误中列出的程序集。确保在“属性”网格中复制“本地”   设置为“True”。
  2.   
  3. 在项目的属性中,发布| “应用程序文件”选项卡,确保设置了错误中列出的程序集的“发布状态”   “包括”
  4.   

答案 1 :(得分:3)

就我而言,导致此错误消息的问题是库发布配置不正确。

当我设置我的库属性 CopyLocal = false ,然后在项目发布应用程序文件中将发布状态设置为包含时,一切正常项目重建和下次发布后。

因此,我们告诉ClickOnce编译器,默认情况下不向应用程序发布此库,并将发布状态从先决条件更改为包含告诉ClickOnce,而不是搜索此 GAC 中的图书馆。

答案 2 :(得分:1)

您还应该检查app.config文件中的程序集绑定重定向是否错误。寻找一个类似的节点:

  <dependentAssembly>
    <assemblyIdentity name="Telerik.Windows.Data" publicKeyToken="--SomePublicToken--" culture="neutral"/>
    <bindingRedirect oldVersion="0.0.0.0-3.0.2.0" newVersion="3.0.2.0"/>
  </dependentAssembly>

并确保范围oldnew有意义或简单,这个节点完全有意义。我的第一次尝试是简单地删除它并再次检查。可能会发生一些NuGet程序包在旧版本中混乱配置文件,并且这个节点不再需要更新一次(并且它不会自动删除)。

答案 3 :(得分:1)

如果在依赖项目中引用了同一个dll的两个版本,则这将是错误的根本原因之一。

这件事发生在我身上,抱怨NLog.dll,我发现我的应用程序引用了一个版本的Nlog.dll,而我的库项目引用了另一个版本的Nlog.dll,并且清单中列出了一个依赖项(安装),依赖关系的另一个版本(必要条件,即甚至需要将它存在于系统中,甚至复制到本地,设置为true)。

答案 4 :(得分:0)

当我忘记将解决方案配置从Visual Studio中的“Debug”更改为“Release”时,我遇到了同样的错误。