我试图使用c# 4.0编译我的excel插件,并在Visual Studio中构建我的项目时开始遇到这个问题。重要的是要告诉你,我以前从来没有遇到过这个问题。什么会导致这种情况发生?
当前回答
您需要使用密钥对程序集进行签名。进入选项卡签名下的项目属性:
其他回答
删除DLL(错误发生的地方)并重新构建解决方案解决了我的问题。谢谢
我得到类似的编译器错误。一旦我将dll文件的依赖项目添加到解决方案中,问题就解决了。
我猜您没有使用强名称程序集。当两个项目引用相同程序集的略有不同的版本,而一个更依赖的项目引用这些项目时,我就犯过这个错误。在我的案例中,解决方案是从.csproj文件中的程序集名称中删除键和版本信息(无论如何这都无关紧要),然后进行干净的构建。
不同程序集版本之间的更改与引用它们的解决方案部分兼容。如果你的情况不是这样,你可能需要做更多的工作来解决这个问题。
NuGet
使用NuGet很容易陷入这种情况,如果:
将包安装到解决方案中的一个项目。 将该包的新版本部署到包源。 将其安装到同一解决方案中的另一个项目。
这将导致解决方案中的两个项目引用该包程序集的不同版本。如果其中一个引用了另一个并且是ClickOnce应用程序,您将会看到这个问题。
要解决这个问题,在Nuget包管理器控制台中发出update-package [package name]命令,将所有内容都提升到一个公平的竞争环境,此时问题就会消失。
您应该在解决方案级别而不是在项目级别管理NuGet包,除非有令人信服的理由不这样做。解决方案级包管理避免了依赖关系的多个版本。在使用管理UI时,如果Consolidated选项卡显示1个或多个包具有多个版本,请考虑将它们合并为一个。
我也遇到了一些问题,我所要做的就是删除导致错误的.dll(可以在参考中找到),并重新添加它。
效果非常好。
在尝试了这里的大多数解决方案后,我最终只是从点击一次项目中添加了一个引用,这将它从包括更改为包括(自动),它最终工作了。
推荐文章
- 如何在c#中获得正确的时间戳
- Linq选择列表中存在的对象(A,B,C)
- c# .NET中的App.config是什么?如何使用它?
- c#:如何获得一个字符串的第一个字符?
- String类中的什么方法只返回前N个字符?
- 更好的方法将对象转换为int类型
- 我可以将c#字符串值转换为转义字符串文字吗?
- 在c#中转换char到int
- c#中朋友的对等物是什么?
- 关键字使用virtual+override vs. new
- 在ASP中选择Tag Helper。NET Core MVC
- 如何在没有任何错误或警告的情况下找到构建失败的原因
- 跨线程操作无效:控件“textBox1”从创建它的线程以外的线程访问
- Visual Studio弹出提示:“操作无法完成”
- 否ConcurrentList<T>在。net 4.0?