【发布时间】: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