繁体   English   中英

当混合新旧CSPROJ格式时,Visual Studio显示成千上万个参考错误,这些错误是由于单个生成错误而导致的

[英]Visual Studio shows thousands of reference errors that are the result of a single build error when mixing new and old CSPROJ format

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

MainProject -> Library1
            -> Library2 -> Library3


NetProject  -> Library1
            -> Library2 -> Library3

如果我在库3中犯了一个拼写错误,则找不到对Library2或Library3的每个引用都显示为“ blah”(您是否缺少using指令或程序集引用?)

一旦找到真正的错误,所有丢失的参考错误就会消失。

有时在Library3中进行一次错字操作会使Library3从Library2中的引用中消失。 当我右键单击“添加引用”时,引用已存在并被打勾,但看不到。 删除和添加参考可以解决此问题。

所有5个项目均参考4.6.1

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

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

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

这是库1,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,旧的是较旧的风格,其中每个文件都必须单独引用等。

为什么会出现这些连锁效应构建错误?

由于Library3位于依赖关系树的根部,即其他项目依赖于此树的成功构建,因此library3中的任何构建错误都将导致无法生成dll,从而丢失dll编译时错误。

对于问题的第二部分,您可以在此处查看: 调试/构建后参考消失(C#,VB.NET,VS2010)

如果项目A,B,C和D依赖Z,而建筑物Z失败,则所有其他项目也将失败。 这可能是由于一个错误引起的,但是是的,现在您将遇到的错误不仅仅是一个。

如果需要,可以使用StopOnFirstBuildError扩展,这样,如果项目Z失败,则不会尝试其他任何项目(依赖项)。

为什么会出现这些连锁效应构建错误?

对于这个问题,这是因为依赖项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个构建错误,我在噪声中找不到实际的实际错误。 在我的其他Visual Studio项目中,这不是正常现象。

尽管在错误列表窗口中有大约4000个构建错误,但是这些错误中的大多数应该是构建错误而不是Intellisense错误(检测到拼写错误),因此我们可以在错误列表上使用过滤器Intellisense Only来过滤Intellisense错误:

在此处输入图片说明

希望这可以帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM