如何将共享的C# NuGet依赖项添加到C++/Cli项目中?

22

上下文:一个包含2个程序集(Cs和Cpp)的Visual Studio解决方案。

  • Cs是一个C#/.net45 dll
  • Cpp是一个使用/clr编译的C++/Cli dll,是一个C++ dll。

我有一些来自nuget.org的纯C#项目依赖项。我使用作者提供的原始包。把它们添加到Cs项目中可以正常工作,但添加到Cpp项目中无法正常工作。

如何在C++项目中添加C#包?

由于它是C++/Cli,我可以轻松地使用.net对象,并且我在C++库中使用了来自C#库的东西。但是,某种程度上,nuget只允许我选择C#项目才能添加C#依赖项,而不能选择C++/clr项目。


4
这个NuGet问题相关:https://nuget.codeplex.com/workitem/3665 - Yodan Tauber
1
有进展吗?在VS2017中,这个问题似乎仍然存在,已经持续了4年。 - Malachi
3个回答

1
在你的C++/CLI项目中,只需添加一个引用(菜单-> 引用-> 添加新引用-> 浏览-> 浏览...),引用nuget下载到[solutionfolder] / packages / nlog...文件夹中的nlog.dll。 对我来说似乎可行。

4
这个编码包含了路径(包括确切的版本),需要稍后手动更新。 - Wilbert

-1
我所做的方式是创建一个“nugetmaster”,它引用其他两个项目将使用的所有nuget。首先构建该项目,并在每个项目中手动引用nuget程序集。额外的好处是可以更好地控制版本,只需更新所有其他项目的一个地方。这种方法很容易扩展。
另一种方法类似于上面的方法-创建一个共享的C#程序集,它们都使用它,并且还实现了所有使用nuget程序集的代码。并且只公开包装器。

-2

2
如果我们完全处于C#领域,这将起作用;但是此问题侧重于C++/Cli和C#相互操作。 - Wilbert
如果您有VS项目,它应该可以工作。这个解决方案不依赖于C#,重要的是您的项目引用是否正确,如果您正确使用了项目引用,它应该可以工作... - efaruk
1
基本问题在于C++和C++/Cli项目默认使用本机NuGet包,而C#项目默认使用C# NuGet包。目前NuGet不支持将C#包添加到本机项目中。 - Wilbert

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接