我试图使用c# 4.0编译我的excel插件,并在Visual Studio中构建我的项目时开始遇到这个问题。重要的是要告诉你,我以前从来没有遇到过这个问题。什么会导致这种情况发生?


当前回答

您的程序集是否正确签名?

要检查这一点,在项目上按Alt+Enter(或右键单击,然后Properties)。点击“签名”。验证复选框“签名程序集”已选中,强名称密钥文件已选中,且“仅延迟签名”未选中。

其他回答

我得到类似的编译器错误。一旦我将dll文件的依赖项目添加到解决方案中,问题就解决了。

我有这个解决方案与6个项目。 我的一个项目是将命名程序集引用为文件引用。其他人都指向了项目参考。

在这种情况下,我通常会得到不同的错误。

我的解决方案是在引用命名程序集的任何地方删除它,然后再将它添加回来。 一旦我完成了这个项目,这个问题就消失了。 在此之前,我尝试清理解决方案,并确保没有任何项目被签名。

希望它能帮助到某人…

我猜您没有使用强名称程序集。当两个项目引用相同程序集的略有不同的版本,而一个更依赖的项目引用这些项目时,我就犯过这个错误。在我的案例中,解决方案是从.csproj文件中的程序集名称中删除键和版本信息(无论如何这都无关紧要),然后进行干净的构建。

不同程序集版本之间的更改与引用它们的解决方案部分兼容。如果你的情况不是这样,你可能需要做更多的工作来解决这个问题。

NuGet

使用NuGet很容易陷入这种情况,如果:

将包安装到解决方案中的一个项目。 将该包的新版本部署到包源。 将其安装到同一解决方案中的另一个项目。

这将导致解决方案中的两个项目引用该包程序集的不同版本。如果其中一个引用了另一个并且是ClickOnce应用程序,您将会看到这个问题。

要解决这个问题,在Nuget包管理器控制台中发出update-package [package name]命令,将所有内容都提升到一个公平的竞争环境,此时问题就会消失。

您应该在解决方案级别而不是在项目级别管理NuGet包,除非有令人信服的理由不这样做。解决方案级包管理避免了依赖关系的多个版本。在使用管理UI时,如果Consolidated选项卡显示1个或多个包具有多个版本,请考虑将它们合并为一个。

当我在更新WindowsAPICodePack后遇到这种情况时,我只是重新构建了解决方案。

构建——>重建方案

尝试update-package -重装-ignoredependencies