如何使用使用不同选项构建的 C# 和 C++ 库创建 Nuget 包?

Posted

技术标签:

【中文标题】如何使用使用不同选项构建的 C# 和 C++ 库创建 Nuget 包?【英文标题】:How to create Nuget package with C# and C++ libraries built with different options? 【发布时间】:2015-03-12 13:19:53 【问题描述】:

有一个project that wraps V8 engine into C# library。它的 nuget 包坏了,我想修复它。创建一个包似乎很容易,并且有记录的方法可以为不同的 .NET 版本打包不同的 C# dll。但是,我不知道如何使用 C++ 和 C# 代码打包 .dll,这些代码可以使用不同的选项构建:

x64 或 x86 和 not“任何 CPU” MS Visual C++ 2010/2012/2013 调试或发布 .NET 4.0/...

我找到了this thread,似乎可以使用带有MSBuild 命令的.targets 文件。然后我读到 in the docs 说 MSBuild 方式很旧,不推荐。那我该怎么办?

还有一个问题:如果这个包依赖于MSVC++,如何指定呢?如何让包消费者选择特定版本的 dll(针对 MSVC++2010、2012 或 2013 构建)?我想打包msvcr*.dll不是个好主意。

【问题讨论】:

【参考方案1】:

看看 SQLite 包如何部署它们的 DLL。对于 2.x 和更早版本的 NuGet,您需要编写一些 powershell 代码来检查 Visual Studio 的版本并将您的更改手动应用于项目。

我们正在努力针对要在 NuGet v3 中部署的更新这一确切问题提供更优雅的解决方案

【讨论】:

谢谢,我会看看 SQLite。更优雅的解决方案 - 您是在谈论 CoApp 中的“枢轴”之类的东西吗?

以上是关于如何使用使用不同选项构建的 C# 和 C++ 库创建 Nuget 包?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 C# 编译 C++ 代码。需要开发 C++ IDE [关闭]

在 c++ Eclipse CDT 中使用不同的值构建

如何将 vs2008 c++ OpenCV dll 构建到 vs2008 C#?

当构建器使用不同的选项时,如何在 nrwl nx 中使用单个受影响的构建命令

通过 UDP 的 C++ 类在 C# 中使用,都有哪些选项?

CMake - 构建没有首选 32 位标志的 C#