【问题标题】:Native .NET NuGet package causes "There may have been missing assembly" warning by .NET compiler本机 .NET NuGet 包导致 .NET 编译器发出“可能缺少程序集”警告
【发布时间】:2023-03-09 17:40:01
【问题描述】:

我有一个通用 Windows 应用程序运行时组件项目,它依赖于 Microsoft.Azure.Devices.Client NuGet 包。这个通用运行时组件随后被另一个用 Visual C++ 编写的项目使用,该项目也是通用 Windows 应用程序项目类型。现在 C# 项目可以自行编译,C++ 项目也是如此,但是在构建从 C# 项目使用 NuGet 包的 C++ 项目引用 C# 项目的解决方案时,编译器会发出以下警告:'Microsoft.Azure.Devices.Client.DeviceClient' was not included in compilation, but was referenced in type 'AzureConnection.Connection'. There may have been a missing assembly. There肯定是缺少程序集,因为程序在尝试调用来自 NuGet 包的任何代码时崩溃。

这基本上意味着在编译时没有正确使用 NuGet 包,因为 Microsoft.Azure.Devices.Client.DeviceClient 类型来自 NuGet 包。我可以从 Visual Studio NuGet 包管理器中看到包 Microsoft.Azure.Devices.Client 已正确安装在我的 C# 运行时组件项目中。尝试为任何平台进行发布构建时都会出现同样的问题。

为什么构建找不到 NuGet 二进制文件,我该如何解决这个问题?

【问题讨论】:

  • 这效果很差。我失去了一个小时的生命试图重击 MSBuild,但只能设法摆脱警告,它仍然无法在运行时激活。该包显然从未在此特定场景中进行过测试,当您从 C# 应用程序中使用它时它可以正常工作。单击 Nuget 包中的“联系所有者”链接以获取作者的帮助。
  • @HansPassant 那么你是说目前没有其他解决方案只能用 C# 编写整个应用程序吗?

标签: c# .net visual-c++ win-universal-app nuget-package


【解决方案1】:

似乎无法在通用运行时组件项目中使用此 NuGet 包,因为该包未正确编译到组件中。我必须通过将我的代码迁移到 NuGet 包编译并正常工作的单个 C# 应用程序来解决这个问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-08-14
    • 2011-09-06
    • 1970-01-01
    • 2018-06-15
    • 2017-09-22
    • 2018-03-18
    • 2010-09-16
    • 2019-06-30
    相关资源
    最近更新 更多