我已经升级到Visual Studio 2015的几个VB.Net项目遇到了困难。这些项目已经从Visual Studio 2003到2005年升级到2010年到2012年多年。代码将编译运行没有错误。 Debug.Print语句正确地将值写入立即窗口。但是,如果我启用断点并尝试查看监视窗口中的任何值,那么我会收到类似这样的错误,在监视窗口的值列中报告:
错误BC32208:项目已经有对程序集的引用 '项目名称的.resources'。第二个参考 projectname .resources.dll'无法添加。
同样,如果我闯入代码并将鼠标悬停在变量名称上,那么我不会得到包含变量当前值的弹出窗口。
我没有资源的项目升级没有任何问题。
有没有人遇到过这个问题? 2015年项目中存储资源的方式是否有变化?
答案 0 :(得分:6)
仅供参考,我刚刚为VS 2015 Update 2提供了解决方案(请参阅https://github.com/dotnet/roslyn/commit/e683a8438d42d92a3d142ba53f38b33315c7dea2)。
在此期间,此问题的另一个可能的解决方法是对您的应用程序(以及附属程序集)进行强名称签名。调试器正确地忽略了强名称情况下的多个资源dll,而不是" weak"名称案例。
答案 1 :(得分:2)
我可以重现错误 - 注意:我在英国:
Private Sub Form1_Click(sender As Object, e As EventArgs) Handles Me.Click
Dim test As DateTime = Now
Debugger.Break()
End Sub
运行项目并单击表单 - 监视窗口将显示错误,弹出测试不会显示日期。
我通过删除不必要的本地化来修复我的项目。我想这是在添加英语和英语版本的资源。
编辑:这适用于简单的情况,但我维护的一些项目具有循环依赖性。呸。在这种情况下,构建任何项目都会从引用的项目中获取不需要的资源。为了打破这个循环,我只是在构建之前从引用项目的bin文件夹中删除了不需要的dll,这样它们就不会被复制了。我已经向微软发送了一个皱眉,描述了这个问题。我花了一天半的时间来整理这个烂摊子......
答案 2 :(得分:2)
我想出了如何修复它。我进入了项目属性,在大会下,并设置了中性语言 - 在我的情况下设置为英语 - 美国。
问题解决了!