【问题标题】:csproj keeps losing referenced project references in VS2017 using new csproj formatcsproj 使用新的 csproj 格式在 VS2017 中不断丢失引用的项目引用
【发布时间】:2018-04-10 19:22:47
【问题描述】:

我的 csproj 有以下几行:

<Project Sdk="Microsoft.NET.Sdk" ToolsVersion="15.0">
  <PropertyGroup>
    <Deterministic>False</Deterministic>

  <ItemGroup>
    <ProjectReference Include="..\blah.Common\blah.Common.csproj" />
    <ProjectReference Include="..\blah.Model\blah.Model.csproj" />
  </ItemGroup>

引用的项目构建良好。但是在 VS 树中,这两个项目会从 Dependencies 树中随机消失,并且 VS 将引用报告为丢失并且构建通过。

重新加载/重建/清理/重新启动/删除然后以不特定顺序再次添加项目通常可以修复它。在另一个项目中出现合法的构建错误后,问题又出现了。

我正在使用 Resharper 和 VS2017

我尝试过 dotnet restore 但没有成功。任何想法为什么这个特定项目不断失去其参考?

编辑:我刚刚意识到我错误地将构建称为失败。它不会失败并成功构建,但是我的项目中出现了红色错误和警告说引用丢失。成功构建后,红色警告/错误消失,然后随机再次出现。

有时项目从引用树中消失,有时它们是可见的。但是,当右键单击“添加参考”时,该项目已被勾选。卸载项目并重新加载或进行完全重建修复了“错误”,只是为了让它在某个时候回来。

即使“错误列表”中充满了缺失的参考错误,一个干净且完整的构建也不会产生任何错误并创建一个成功的构建。

【问题讨论】:

  • 您能否使用新创建的项目包含一个最小的 repo,或者您是否能够共享构建日志? (msbuilddotnet 命令的/bl 参数 > msbuild.binlog 文件 - 但将包含所涉及文件的名称以及系统的路径和环境变量)
  • 下次出现问题时我会创建一个构建日志。
  • 如何通过 VS 2017 将 /bl 添加到构建环境中?我找不到在哪里指定自定义 msbuild 参数。
  • 您需要从命令行构建(开发人员命令提示符 > msbuild /bl 在解决方案目录中)执行此操作。如果它没有出现在命令行构建中,它可能会更奇怪
  • @MartinUllrich 我有一些构建日志,但我无法将它们公开。如果您能够提供任何见解,我将向您发送指向它们的链接,我们将不胜感激。怎么联系你?

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


【解决方案1】:

您是否检查了这 3 个项目所针对的 .NET 框架版本?

框架版本之间的不兼容性允许添加引用,但会导致在构建/运行时缺少引用。要验证这是否确实是问题所在,您可以检查 Visual Studio 在构建解决方案时产生的警告。找到问题根本原因的另一种方法是将其中一个项目添加为 DLL 引用,同时将另一个保留为项目引用。如果 DLL 引用不起作用,则意味着源项目和目标项目之间存在一些配置不匹配(例如 .NET 框架版本)。如果 DLL 版本有效,则说明项目引用已损坏,此时您可以检查提供的路径是否正确。

【讨论】:

  • 我会尝试这些事情并报告
  • 我对那些消失的引用感到疯狂......你会认为 VS 会给你一个理由......同样发生在 VS 2019
猜你喜欢
  • 2019-06-26
  • 1970-01-01
  • 1970-01-01
  • 2023-03-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多