我们开发了一个大型解决方案,包含VS 2010的约35个项目,现在我们正在考虑迁移到VS 2012 Ultimate。 我将解决方案文件转换为VS 2012,一般来说,一切正常。
但是每当我打开解决方案时,我都会对解决方案中的某个项目A发出一些警告: “项目X无法引用” “项目Y不能被引用” ... 其中A有项目引用X和Y. 当我构建解决方案时,我得到错误,无法找到每个相应DLL的元数据。
当我查看解决方案资源管理器中的引用时,它们会标有黄色警告符号。 只要点击参考,警告便会消失,图标看起来正常。然后我可以毫无错误地构建!
每次打开解决方案时都会出现问题,受影响的项目总是一样的。
有没有其他人经历过这种奇怪的行为? 删除和添加项目引用再次没有帮助......
提前谢谢。
编辑:我检查了引用项目的csproj文件,我想知道具有上述问题的所有项目引用GUID都是小写的,其他项目是大写的。
<ProjectReference Include="..\Presentation.Net\Presentation.Net.csproj">
<Project>{04004c6b-76c8-4f2d-9fcf-5a866bb80fd4}</Project>
<Name>CMS.Presentation.Net</Name>
</ProjectReference>
在解决方案中,GUID是大写的:
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Presentation.Net", "Presentation.Net\Presentation.Net.csproj", "{04004C6B-76C8-4F2D-9FCF-5A866BB80FD4}"
有什么想法吗?
答案 0 :(得分:3)
VS 2012放弃了对一些旧项目类型的支持。并非所有VS 2010项目类型都在VS 2012中受支持。例如,MSI安装项目类型已被InstallShield LE项目类型替换。 Check the compatibility list here并查看您的任何失败项目类型是否存在问题。
答案 1 :(得分:3)
这使我指向了正确的方向。 Visual Studio 2012 Randomly reporting: "The referenced component X could not be found"
至少警告会消失。必须检查元数据错误是否会再次发生。
答案 2 :(得分:0)
尝试清理项目/解决方案,然后构建它。
答案 3 :(得分:0)
当我遇到这个问题时,这是由于项目之间的.NET版本不同。您需要确保您尝试引用的项目与当前项目具有兼容的.NET版本。
例如,如果您的目标项目是.NET 4.5.2并且您引用的项目是4.6,那么您可以获得此错误,因为引用的项目正在使用当前项目无法访问的组件。
要解决此问题,只需转到目标项目的属性并选择正确的.NET兼容版本。对于我的解决方案中的所有项目,我为每个项目维护相同的.NET版本,特别是如果它们相互引用的话。