[英]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.