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


当前回答

我去发布应用程序文件,发现dll抛出错误,将其从“包括(自动)”更改为“包括”。我现在可以发表了。

其他回答

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

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

构建——>重建方案

当我遇到这个问题时,我通过关闭“启用ClickOnce安全设置”来解决它。

菜单:项目|“项目名称”属性…|安全选项卡|“启用ClickOnce安全设置”复选框。

您需要使用密钥对程序集进行签名。进入选项卡签名下的项目属性:

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

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

NuGet

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

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

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

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

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