【问题标题】:visual studio 2017 professional - references not resolving (on some machines)Visual Studio 2017 Professional - 引用无法解析(在某些机器上)
【发布时间】:2018-03-29 22:03:08
【问题描述】:

它始于一个开发人员需要解决一些版本控制问题。他更改了标准定义中的一些System.xxx 引用,现在指向“包”文件夹。我们使用 FW 4.7.1,这是 Web Api 项目。

<Reference Include="System.Runtime">
  <HintPath>..\..\..\packages\System.Runtime.4.3.0\lib\net462\System.Runtime.dll</HintPath>
  <Private>True</Private>
</Reference>

通常这样的引用以这种形式出现

<Reference Include="System.Runtime" />

问题:参考旁边的黄色警告标志。查看属性窗口 - 未找到任何信息。但是,项目编译。显然,针对其他一些 DLL,而不是来自 hintPath 的 DLL。问题是,即使它编译,它也不会将 DLL 复制到 bin 并且应用程序无法运行。

这是环境问题,因为我们有 2 台 Server 2016 机器正在运行。 1 Win10 也是如此。但是其他Win10机器就不行了。

我想使用 MsBuild 来查看是否可以正确构建。但是无论是 MsBuild 还是 Devenv 命令行都没有工作。这表明该问题对于特定的操作系统和 VS 安装更为普遍。它编译的原因是因为 Devenv 和 MsBuild 擅长遍历 GAC 和目录,直到找到合适的 DLL。

【问题讨论】:

  • System.Runtime 是一个框架程序集,.NET Framework 的框架程序集不是来自包,因此您有 2 个对 System.Runtime 的引用,具有不同的版本。不应在项目文件中手动拉取框架程序集,它们会由构建目标自动拉取。您真的需要该框架程序集的不同版本吗?
  • @JoséPedro Jose,您应该在发表此类声明之前进行研究。看这里nuget.org/packages/System.Runtime。不,我两者都没有。仅包版本 4.3.0。我认为,这现在是转向 .net 标准的一部分。这个包派生的 system.runtime 对 fw4.7.1 和 .net core2.0 都有好处。它取代了仅固件版本。同样,相同的项目适用于其他机器。我不明白我缺少什么。
  • 您可能会尝试使用 MSBuild 诊断日志记录来检查在编译时如何解析引用。这可能会给你更多的提示,而不仅仅是 VS 中的黄色箭头。
  • @T.S.,你的目标框架版本是什么,.net 4.7.1?你的项目类型是什么?确实,4.7.1 中存在一个错误——它附带了错误的组件版本,但它仍然需要其中一些组件 system.* 作为间隔。 github.com/dotnet/standard/issues/567
  • @LeoLiu-MSFT 是 4.7.1。这是 web api FW web 项目。好吧,它适用于 2 台服务器 '16 和 2 台 win10 机器。我注意到一件事。我的 VS 是 15.6,它工作的机器不迟于 15.4。那么,最新的更新会破坏它吗?明天又有一个“破家伙”会报告他的VS版本。走着瞧。谢谢

标签: .net reference visual-studio-2017 nuget-package


【解决方案1】:

经过一番研究,我发现了问题所在。这是VS中的一个错误。我向 VS 开发团队提交了工单,现在“正在考虑中”

如果我在项目文件中将引用设置为包文件夹,并且此引用是“System.[name]”或“Microsoft.[name]”,例如“System.Runtime”,则此类引用无法解析。该项目可以构建,但特定的引用没有被复制到“bin”文件夹中

这在 VS2017 v15.5 之后开始发生。安装 v15.2-15.4 可以很好地解析引用。

该分辨率随 VS2017 update7 一起提供。 v15.7 及更高版本解决了这个问题

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多