【问题标题】:Cannot install assembly to cache?无法将程序集安装到缓存?
【发布时间】:2014-08-25 19:49:24
【问题描述】:

我正在尝试将程序集添加到 Visual Studio 2010 命令提示符上的缓存中。我收到此错误“将程序集添加到缓存失败:尝试安装没有强名称的程序集”。我正在从名为 ListTasks2 的 WCF 服务应用程序中添加一个 ListTasks2.dll 程序集。我从来没有在同名项目中遇到过这个问题,那么为什么现在会引发问题呢?

注意:我尝试在 Visual Studio 中对其进行签名,但仍然无法正常工作。我想知道这是否可能是一个权限问题。我使用了不同的用户凭据并且能够添加程序集。问题是我加载了一个 VS 解决方案,并且该项目签署了程序集。我应该只创建一个密钥对吗?

【问题讨论】:

  • 您是否对您的程序集进行了强名称签名?
  • 请详细说明您在 Visual Studio 和控制台中为将程序安装到 GAC 中所做的步骤。
  • 首先,在 Visual Studio 中,我右键单击项目 ListTasks2,导航到“签名”选项卡,并使用密钥文件对程序集进行签名。 Net,我以管理员身份打开 VS 命令提示符并导航到 ListTasks2.dll 所在的文件夹并输入“gacutil.exe -i ListTasks2.dll”我收到了错误消息。

标签: c# wcf .net-assembly gac strongname


【解决方案1】:

只能将强名称程序集安装到 GAC 中。有关如何创建强名称程序集的信息,请参阅How to: Sign an Assembly with a Strong Name.

【讨论】:

  • 我在 Visual Studio 中签署了程序集,但这似乎不起作用。
  • 我建议您检查 dll 是否已正确签名。您可以按照本文的第一种方法:blog.codingoutloud.com/2010/03/13/… 请告诉结果。
  • 我使用了 IL Disassembler,但找不到公钥。所以它没有强命名。我已经在 Visual Studio 中签署了程序集,所以我想知道问题是什么?
  • 我不确定是什么问题,您的解决方案中有 *.pfx(密钥文件)吗?请检查项目的属性(签名选项卡),您应该看到选择了“签署程序集”和(重要的)选择了强名称密钥文件,是否正确?如果不是,请尝试再次签署您的程序集。可能是密钥文件被删除了,因此 dll 的清单中没有公钥。
【解决方案2】:

这个问题似乎比它需要的更难和更迂回。

我在这里找到了一个真正可行的解决方案:

http://codeingaddiction.blogspot.com/2011/06/how-to-add-strong-name-to-existing-dll_16.html

为了让这个工作更容易,我将目录更改为C:\temp - 这对我来说比直接在提到的文件夹中运行要好得多,可能是因为在这样的地方更容易访问文件权限。

【讨论】:

    【解决方案3】:

    你可以创建SNK或PFX到类libaray,然后通过VS命令提示添加到gacutil

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-05-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多