在托管 cpp 中使用 c# nuget 包的选项

问题描述 投票:0回答:1

这可能是一个重复的问题,但由于我没有找到正确的解决方案,所以我将其发布在这里。

我想在vs2019中的托管cpp中使用c# nuget包(包含多个dll)。我听到关于直接在 c++/clr 中使用 nuget 包或创建一个 c# 项目并在该项目中包含 nuget 包然后在此之上编写一个包装器的混合答案。选项一听起来不错,但我不知道该怎么做,网上没有足够的信息。当我们有超过 20 个 dll 时,选项二也是可行的,但任务很繁琐。

你们能建议在 vs2019 的托管 cpp 中使用 c# nuget 包的最佳方法是什么吗?

c# c++ visual-studio nuget-package
1个回答
0
投票

如果您正在编写面向 .Net Core 和 .Net 5 或更高版本的 C++/CLI 项目,则自 Visual Studio 2022 版本 17.3 起原生支持 NuGet 包引用

如果您正在编写面向 .Net Framework 4.x 的 C++/CLI 项目,则涉及的内容会更多一些,因为 Microsoft 已决定他们不想在面向 .Net Framework 的 C++/CLI 项目中支持 NuGet 包引用。

    在项目文件夹中创建
  1. packages.config
     文件(
    Microsoft.Extensions.Logging
     的示例):
<?xml version="1.0" encoding="utf-8"?> <packages> <package id="Microsoft.Extensions.Logging" version="8.0.0" targetFramework="net48" /> <package id="Microsoft.Extensions.Logging.Abstractions" version="8.0.0" targetFramework="net48" /> </packages>

  1. packages.config
     文件添加到您的项目并执行 NuGet 恢复。
  2. 将正确的 DLL 版本和平台的引用手动添加到您的
  3. .vcxproj
     文件中:
<ItemGroup> <Reference Include="Microsoft.Extensions.Logging"> <HintPath>$(SolutionDir)packages\Microsoft.Extensions.Logging.8.0.0\lib\net462\Microsoft.Extensions.Logging.dll</HintPath> </Reference> <Reference Include="Microsoft.Extensions.Logging.Abstractions"> <HintPath>$(SolutionDir)packages\Microsoft.Extensions.Logging.Abstractions.8.0.0\lib\net462\Microsoft.Extensions.Logging.Abstractions.dll</HintPath> </Reference> </ItemGroup>
然后您应该能够使用 NuGet 包中的 C# 库。

您提到的另一种包装方法在我看来更糟糕。

© www.soinside.com 2019 - 2024. All rights reserved.