【发布时间】:2009-06-24 15:22:55
【问题描述】:
我在 VS2008 (C#) 中有一个包含多个项目的解决方案。我刚刚为我们的构建过程重新调整了一些 .csproj 文件,突然在编码项目 B 时无法识别类代码中来自项目 A 的引用......想想我创建的变量类型下的红色波浪线。但是,构建解决方案不会产生错误。为什么会这样?
【问题讨论】:
标签: visual-studio
我在 VS2008 (C#) 中有一个包含多个项目的解决方案。我刚刚为我们的构建过程重新调整了一些 .csproj 文件,突然在编码项目 B 时无法识别类代码中来自项目 A 的引用......想想我创建的变量类型下的红色波浪线。但是,构建解决方案不会产生错误。为什么会这样?
【问题讨论】:
标签: visual-studio
我建议您清除 Visual Studio 临时文件 - 它经常会对项目结构感到困惑并需要重新开始。
首先,完全退出VS并重新启动它。如果问题仍然存在,请找到您的 VS 缓存文件夹并将其删除,然后重新构建。
如需帮助查找缓存文件夹,请check this post。
【讨论】:
当 VS 开始出现奇怪的问题并且我找不到合乎逻辑的解决方法时,我终止了 Visual Studio,并通过删除所有 bin/obj 文件夹手动进行“清理”。
我有一个批处理文件,它比我手动完成它更快。我把它放在我的解决方案目录中,我的所有项目都在子目录中。
rem "%%~dpa" says: Give me the (d)drive and (p)path of the (a, %%a) file.
rem However, our dir /a:d will result in only listing folders...
rem The final "%%a" is just appending the 'file' (diretory name) to the
rem drive-and-path string
for /f %%a in ('dir /b /a:d *.*') do call :process "%%~dpa%%a"
pause
goto :eof
:process
echo Looking in %1
cd "%1"
if EXIST "%1\bin" (
echo Found 'bin' - it's gone now.
rd /s /q "%1\bin"
)
if EXIST "%1\obj" (
echo Found 'obj' - it's gone now.
rd /s /q "%1\obj"
)
cd ..
【讨论】:
如果关于清除Visual Studio cache、.NET Cache 和 确保引用有效不起作用,试试这个。
基于来源,并尝试了这个解决方案,我已经成功了。 删除 Visual Studio 解决方案缓存文件夹
.vs 隐藏文件夹。.vs 文件夹。-- Source
【讨论】:
在 B 的项目属性中,确保在依赖项下检查项目 A。
【讨论】:
确保两个项目都在配置管理器中构建
(右键单击解决方案,然后单击“配置管理器”)
您也可以将鼠标悬停在红线上方或重新构建以查看是否获得更多详细信息。 C# 和 VB 都非常擅长告诉你他们为什么不开心。
【讨论】:
我已从项目中删除了无法识别的类的引用并重新添加了此引用。一切都解决了。
【讨论】:
仔细检查您是否公开了您所引用的类。当您创建新课程时,Visual Studio 不会自动执行此操作,我有时会忘记。
【讨论】: