【问题标题】:Add third party COM reference in nuget package在 nuget 包中添加第三方 COM 引用
【发布时间】:2018-06-25 08:45:15
【问题描述】:

我对整个 NuGet 包的内容相对较新,目前我在包含引用的 COM DLL 方面有点挣扎。

我有一个用于 Autodesk Inventor 的小型实用程序库。所以我包含了 COM 参考。

现在我希望 Visual Studio 自动创建 NuGet 包

所以每次我构建我的项目时,Visual Studio 都会重新创建 .nuspec 文件并生成包,但遗憾的是没有将引用的 Inventor DLL 添加到 NuGet 包内的 lib 文件夹中。我阅读了很多关于手动添加或编辑 .nuspec 文件的内容,但是否有更简单的解决方案让 Visual Studio 为我完成这部分工作?

我正在使用 VS2017

提前致谢

【问题讨论】:

  • 为依赖于 COM 服务器的库构建 nuget 包并不是一个好主意。你不能做任何事情来部署服务器,你不能确定用户安装了什么版本。不,您不应该尝试部署互操作库,“嵌入互操作类型”功能使其变得不必要。您忘记告诉我们出了什么问题,但显然用户需要安装 exact 相同版本的服务器,并且如果您公开任何公共成员中的互操作类型。
  • 感谢您的帮助。我明白你的意思,但这让我回到了根本问题:是否有一种“最佳实践”方式来存储一个库,其中包含我在不同项目中一遍又一遍需要的常用功能?还是回到基本的正确方法,只拥有一个经典的 dll 文件?

标签: c# visual-studio nuget com-interop


【解决方案1】:

我阅读了很多关于手动添加它或编辑 .nuspec 文件的信息,但有没有更简单的解决方案让 Visual Studio 为我完成这部分工作?

正如 Hans 所说,我们不建议您为依赖于 COM 服务器的库构建 nuget 包。但是如果硬要的话,恐怕得手动或者编辑.nuspec文件了。

因为它添加了<COMReference>而不是<PackageReference>,我们不能使用Controlling dependency assets将这些dll文件添加到NuGet包中,并且Visual Studio上没有我们可以包含该COM dll的选项到 nuget 包。

因此,要解决此问题,我们必须手动或编辑 .nuspec 文件,您可以查看以下线程以获取更多详细信息:

Create nuget package from dlls

希望这会有所帮助。

【讨论】:

  • 我也有类似的情况。我有一个从 .NET Standard 2.0 库项目引用的第 3 方 COM 库。在本地编译没问题,但我试图弄清楚我需要做什么才能让它在我们的 CI 构建服务器上编译。这可以使用您提到的在 NuGet 包中手动包含 COM dll 的技术来完成吗?或者是在构建服务器上手动安装 COM 库而不依赖 NuGet 来获得 COM 依赖项的唯一选择?
猜你喜欢
  • 1970-01-01
  • 2012-03-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多