【发布时间】:2022-01-19 00:17:49
【问题描述】:
我想在 c++/cli 项目中使用托管 nuget 包。有没有办法做到这一点?
比如我的场景差不多是这样的:
我创建了一个 C# 项目(MainProject)并将 EntityFramework nuget 包添加到该项目中。
我又创建了一个 C# 项目 (TestCSProject) 并添加了 MainProject 作为对该项目的引用。然后在references中自动添加entityframework
我创建了一个 C++/CLI 项目 (TestCLIProject) 并添加了 MainProject 作为对该项目的引用,以便我想看看我是否可以使用实体框架。
但这并没有发生。
所以我想知道如何在 c++/cli 项目中使用托管 nuget 包
【问题讨论】:
-
是的,我在我的 C++/CLI 项目中添加了 using namespace System::Data::Entity(Presented in EntityFraneowrk.dll)。它显示错误,说它不存在。
-
Nuget 不支持 C++/CLI 项目,C++ 项目的包管理器是 vcpkg。不要打扰。您可以使用的一个技巧是向解决方案添加一个虚拟 C# 项目并使用其 Nuget 支持来获取库。您所做的,确保构建 C# 项目,以便您可以使用 Project > Add Reference > Browse 选择库。
-
意味着将 Nuget 包添加到虚拟 c# 项目,然后手动添加对 c++/cli 项目的所有引用?如果 nuget 包依赖于更多的 nuget 包并且如果我们有这么多的 dll 可以参考,那将会很麻烦? @HansPassant
-
它是C++,如果它不笨重,那么每个人都会使用它。请记住,C++/CLI 的主要目的是使与本机代码的互操作变得容易,这与使用数据库做任何事情相距一百万英里。将非互操作相关的代码移入 C# 库是明智之举。
-
这里我以EntityFramework为例。我的 C++/CLI 与任何数据库操作无关。在 C++/CLI 项目中,我需要使用托管 nuget 包中的程序集中存在的类