我试图使用c# 4.0编译我的excel插件,并在Visual Studio中构建我的项目时开始遇到这个问题。重要的是要告诉你,我以前从来没有遇到过这个问题。什么会导致这种情况发生?
当前回答
您的程序集是否正确签名?
要检查这一点,在项目上按Alt+Enter(或右键单击,然后Properties)。点击“签名”。验证复选框“签名程序集”已选中,强名称密钥文件已选中,且“仅延迟签名”未选中。
其他回答
我有这个解决方案与6个项目。 我的一个项目是将命名程序集引用为文件引用。其他人都指向了项目参考。
在这种情况下,我通常会得到不同的错误。
我的解决方案是在引用命名程序集的任何地方删除它,然后再将它添加回来。 一旦我完成了这个项目,这个问题就消失了。 在此之前,我尝试清理解决方案,并确保没有任何项目被签名。
希望它能帮助到某人…
请看这个答案。
转到发布页面,点击“应用程序文件”。从那里您应该会看到DLL的列表。确保那些给你带来麻烦的人的发布状态标记为“包括”而不是“先决条件”。
我也遇到了一些问题,我所要做的就是删除导致错误的.dll(可以在参考中找到),并重新添加它。
效果非常好。
我猜您没有使用强名称程序集。当两个项目引用相同程序集的略有不同的版本,而一个更依赖的项目引用这些项目时,我就犯过这个错误。在我的案例中,解决方案是从.csproj文件中的程序集名称中删除键和版本信息(无论如何这都无关紧要),然后进行干净的构建。
不同程序集版本之间的更改与引用它们的解决方案部分兼容。如果你的情况不是这样,你可能需要做更多的工作来解决这个问题。
NuGet
使用NuGet很容易陷入这种情况,如果:
将包安装到解决方案中的一个项目。 将该包的新版本部署到包源。 将其安装到同一解决方案中的另一个项目。
这将导致解决方案中的两个项目引用该包程序集的不同版本。如果其中一个引用了另一个并且是ClickOnce应用程序,您将会看到这个问题。
要解决这个问题,在Nuget包管理器控制台中发出update-package [package name]命令,将所有内容都提升到一个公平的竞争环境,此时问题就会消失。
您应该在解决方案级别而不是在项目级别管理NuGet包,除非有令人信服的理由不这样做。解决方案级包管理避免了依赖关系的多个版本。在使用管理UI时,如果Consolidated选项卡显示1个或多个包具有多个版本,请考虑将它们合并为一个。
我去发布应用程序文件,发现dll抛出错误,将其从“包括(自动)”更改为“包括”。我现在可以发表了。
推荐文章
- dynamic (c# 4)和var之间的区别是什么?
- Visual Studio: ContextSwitchDeadlock
- Visual Studio:如何打破处理异常?
- VS 2017 Git本地提交数据库。每次提交时锁定错误
- 返回文件在ASP。Net Core Web API
- 自定义HttpClient请求头
- 无法启动IIS Express Web服务器,注册URL失败,访问被拒绝
- 如果我使用OWIN Startup.cs类并将所有配置移动到那里,我是否需要一个Global.asax.cs文件?
- VS2013外部构建错误"error MSB4019: The imported project <path> was not found"
- 从另一个列表id中排序一个列表
- 等待一个无效的异步方法
- 无法加载文件或程序集…参数不正确
- c#中枚举中的方法
- 如何从字符串中删除新的行字符?
- 如何设置一个默认值与Html.TextBoxFor?