Visual Studio 在编辑器中显示源代码时正在检测错误,并且在生成用于在调试模式下执行的代码时未发现任何错误
Visual Studio is detecting errors while showing sources in the editor and sees no errors while producing the code for executing in debug mode
我已将我的 WinForms 应用程序(一个相对较大的解决方案,由 10 个相互依赖的项目组成)的目标平台从 x86 更改为 x64。它是一个使用 Comodo 证书签名的 ClickOnce 应用程序;所有程序集也都使用相同的证书签名。一切顺利,在发布模式下没有错误,我可以生成一个工作的可分发文件。但是,仅将解决方案配置切换为调试,我就遇到了很多未定义类型的错误。
找不到类型或命名空间名称“**”(是否缺少 using 指令或程序集引用?)*
显然,Visual Studio 无法正确处理一个引用(可能不止一个)。即使在我删除了 bin 和 obj 目录的内容并清理了所有项目之后,错误仍然存在。奇怪的是我可以在调试模式下启动可执行文件并对其进行广泛测试而没有任何问题。但是,编译器错误仍然存在。换句话说,Visual Studio 在编辑器中显示源代码时正在检测错误,而在生成在调试模式下执行的代码时没有发现任何错误。我在另一台机器上仍然使用的原始 x86 解决方案中不存在该问题。我在更改配置时似乎出了点问题。更明确地说,我制作了 4 个屏幕截图,您可以在此处找到:
- https://www.soascape.com/issues/attachments/INT_001/release.png
- https://www.soascape.com/issues/attachments/INT_001/debug.png
- https://www.soascape.com/issues/attachments/INT_001/references.png
- https://www.soascape.com/issues/attachments/INT_001/FsB-namespace-SoaGui.png
我在从 x86 迁移到 x64 时错过了什么吗?我正在使用 VS Community 2019 版本 16.7.7.
看来您在主项目中引用了几个项目。
作为一个建议,你应该让每个项目的配置是x64
和配置 是 Debug
.
换句话说,你必须确保相同的配置和平台您的主要项目已经在每个引用项目上构建。
我的第一个想法 是您引用的项目没有使用 Debug 构建,并且没有与主项目保持相同的配置和平台项目。所以你的Debug|x64
的主项目找不到对应的输出文件Debug|x64
(这意味着你引用的项目没有这样的文件夹),所以问题就出现了。
在我的记忆中,引用项目的dll只有在Configuration和Platform与主项目相同的情况下才能使用。如果它们不相同,则它们不能永远使用。并确保引用的项目与主项目具有相同的输出文件夹。
例如,如果您使用 Debug|x64
构建了 Reconciler 项目,您应该确保引用的项目具有具有 Debug|x64
模式的输出文件夹。
如果没有帮助,请遵循以下建议:
建议
1)关闭VS,删除每个解决方案文件夹下的.vs
,每个项目的bin
和obj
文件夹
2) 打开每个引用的项目-->使用 Debug|x64
模式构建项目。
3) 当你完成它时,重新打开你的 Reconciler 项目,你就不会看到 Debug|x64
这样的问题。
此外,如果你引用的项目是lib项目,你可以直接引用dll而不是项目。
我已将我的 WinForms 应用程序(一个相对较大的解决方案,由 10 个相互依赖的项目组成)的目标平台从 x86 更改为 x64。它是一个使用 Comodo 证书签名的 ClickOnce 应用程序;所有程序集也都使用相同的证书签名。一切顺利,在发布模式下没有错误,我可以生成一个工作的可分发文件。但是,仅将解决方案配置切换为调试,我就遇到了很多未定义类型的错误。
找不到类型或命名空间名称“**”(是否缺少 using 指令或程序集引用?)*
显然,Visual Studio 无法正确处理一个引用(可能不止一个)。即使在我删除了 bin 和 obj 目录的内容并清理了所有项目之后,错误仍然存在。奇怪的是我可以在调试模式下启动可执行文件并对其进行广泛测试而没有任何问题。但是,编译器错误仍然存在。换句话说,Visual Studio 在编辑器中显示源代码时正在检测错误,而在生成在调试模式下执行的代码时没有发现任何错误。我在另一台机器上仍然使用的原始 x86 解决方案中不存在该问题。我在更改配置时似乎出了点问题。更明确地说,我制作了 4 个屏幕截图,您可以在此处找到:
- https://www.soascape.com/issues/attachments/INT_001/release.png
- https://www.soascape.com/issues/attachments/INT_001/debug.png
- https://www.soascape.com/issues/attachments/INT_001/references.png
- https://www.soascape.com/issues/attachments/INT_001/FsB-namespace-SoaGui.png
我在从 x86 迁移到 x64 时错过了什么吗?我正在使用 VS Community 2019 版本 16.7.7.
看来您在主项目中引用了几个项目。
作为一个建议,你应该让每个项目的配置是x64
和配置 是 Debug
.
换句话说,你必须确保相同的配置和平台您的主要项目已经在每个引用项目上构建。
我的第一个想法 是您引用的项目没有使用 Debug 构建,并且没有与主项目保持相同的配置和平台项目。所以你的Debug|x64
的主项目找不到对应的输出文件Debug|x64
(这意味着你引用的项目没有这样的文件夹),所以问题就出现了。
在我的记忆中,引用项目的dll只有在Configuration和Platform与主项目相同的情况下才能使用。如果它们不相同,则它们不能永远使用。并确保引用的项目与主项目具有相同的输出文件夹。
例如,如果您使用 Debug|x64
构建了 Reconciler 项目,您应该确保引用的项目具有具有 Debug|x64
模式的输出文件夹。
如果没有帮助,请遵循以下建议:
建议
1)关闭VS,删除每个解决方案文件夹下的.vs
,每个项目的bin
和obj
文件夹
2) 打开每个引用的项目-->使用 Debug|x64
模式构建项目。
3) 当你完成它时,重新打开你的 Reconciler 项目,你就不会看到 Debug|x64
这样的问题。
此外,如果你引用的项目是lib项目,你可以直接引用dll而不是项目。