13

我们使用 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}"

有任何想法吗?

4

4 回答 4

3

VS 2012 放弃了对一些旧项目类型的支持。VS 2012 并不支持所有的 VS 2010 项目类型。例如,MSI 设置项目类型已被 InstallShield LE 项目类型取代。 在此处查看兼容性列表,看看是否有任何失败的项目类型存在问题。

于 2013-02-26T14:28:14.297 回答
3

这为我指明了正确的方向。 Visual Studio 2012 随机报告:“找不到引用的组件 X”

至少警告消失了。必须检查元数据错误是否会再次发生。

于 2013-03-05T10:11:27.123 回答
1

当我遇到这个问题时,这是由于项目之间的 .NET 版本不同。您需要确保您尝试引用的项目具有与当前项目兼容的 .NET 版本。

例如,如果您的目标项目是 .NET 4.5.2 并且您引用的项目是 4.6,您可能会收到此错误,因为引用的项目正在使用您当前项目无法访问的组件。

要解决它,只需转到目标项目的属性并选择正确的 .NET 兼容版本。对于我的解决方案中的所有项目,我为每个项目维护相同的 .NET 版本,尤其是当它们相互引用时。

于 2016-06-03T02:14:53.097 回答
0

尝试清理项目/解决方案,然后构建它。

于 2015-08-28T20:05:04.430 回答