Visual Studio显示数千个引用错误,这些错误是混合新旧CSPROJ格式时单个构建错误的结果

时间:2017-12-11 05:26:42

标签: c# visual-studio msbuild visual-studio-2017

我有一个引用多个子项目的项目

MainProject -> Library1
            -> Library2 -> Library3


NetProject  -> Library1
            -> Library2 -> Library3

如果我在库3中输入一个拼写错误,那么对Library2或Library3的每一个引用都显示为“blah”无法找到(你是否缺少using指令或汇编引用?)

一旦我追踪到真正的错误,所有遗失的参考错误都会消失。

有时在Library3中输入一个拼写错误会使Library3从Library2中的引用中消失。当我右键单击“添加引用”时,引用就在那里并勾选但无法看到。删除和添加引用可以解决问题。

所有5个项目参考4.6.1

Library1,2和3使用新的CSPROJ格式。

MainProject是一个WPF项目,使用旧的CSPROJ格式。

WebProject是一个netcore项目(目标是461)并使用新的CSPROJ格式。

以下是library1,2,3

的CSPROJ示例
<Project Sdk="Microsoft.NET.Sdk" ToolsVersion="15.0">
  <PropertyGroup>
    <Deterministic>False</Deterministic>
    <TargetFramework>net461</TargetFramework>

我尝试过多个版本的Visual Studio Enterprise(15.5预览版,15.4等)

为什么我会收到这些链效应构建错误?

为什么引用会消失并需要重新加载?

编辑:如果我将Library1,2,3更改为旧的CSPROJ格式,问题就会消失。它似乎只是混合旧的和新的CSPROJ格式的结果。新的是NETCORE风格的csproj,旧的是旧文件,每个文件必须单独引用等。

3 个答案:

答案 0 :(得分:0)

为什么我会收到这些链效应构建错误?

由于Library3位于依赖树的根目录,即其他项目依赖于此成功构建,因此library3中的任何构建错误都将导致dll无法生成,因此缺少dll编译时错误。

对于问题的第二部分,您可以在此处查看:Reference disappear upon debug/build (C#, VB.NET, VS2010)

答案 1 :(得分:0)

如果项目A,B,C和D依赖于Z并且构建Z失败,那么所有其他项目也将失败。这可能是由于一个错误,但是,现在你将会遇到更多错误,而不仅仅是一个错误。

如果需要,可以使用StopOnFirstBuildError扩展名,以便在项目Z失败时,不会尝试其他任何项目(从属项)。

答案 2 :(得分:0)

  

为什么我会收到这些链效应构建错误?

对于这个问题,那是因为依赖Library3的根中的拼写错误,就像C.Dhruv和CodingYoshi所说的那样。由于拼写错误,项目Library3无法成功构建。 .dll文件ClassLibrary3.dll将无法成功生成,因此引用它的其他项目将引发错误:

> reference could not be found (are you missing a using directive or an
> assembly reference?)

此外,您有多个引用,因此您可能会遇到~4000个构建错误。我想你已经知道了这个问题的答案。现在你的问题应该是:

  

我有~4000个构建错误,我无法找到其中的实际真实错误   噪声。这在我的其他视觉工作室项目中不是正常行为。

虽然错误列表窗口中有~4000个构建错误,但是大多数错误应该是构建错误而不是Intellisense错误(检测拼写错误),所以我们可以在错误列表上使用过滤器Intellisense Only过滤智能感知错误:

enter image description here

希望这有帮助。