添加对相同Nuget包的引用,但是针对不同的目标

时间:2015-05-12 11:41:15

标签: nuget nuget-package

我在Visual Studio 2013中有一个解决方案,其中包含更多C#项目文件,这些文件具有相同的源代码,但针对不同的平台(.Net,WinRT,.Net Micro Framework等)。 所有csproj文件都在同一目录下。

这些项目使用Nuget包,该包可用于所有上述平台本身。

如果我为其中一个项目(例如.Net)添加此Nuget包,则会创建package.config文件,并且内部引用该目标(例如.Net)。该软件包将下载到packages文件夹中。

如果我尝试将相同的软件包添加到解决方案中的另一个项目的同一个软件包,则UI会告诉我该软件包已经安装。这是真的,因为package.config文件已经存在,但我想为不同的目标使用相同的包。

所以我的问题如下:如何将相同的Nuget包添加到所有不同的项目,但具有不同的目标?

谢谢, 保罗

1 个答案:

答案 0 :(得分:1)

不幸的是,我不认为NuGet支持你的场景。

NuGet希望packages.config文件与.csproj文件位于同一文件夹中。这些文件之间应该存在一对一的关系。您应该为每个项目创建一个单独的文件夹,而不是将所有.csproj文件保存在同一文件夹中。

如果要跨多个项目共享代码,最简单的方法是在Visual Studio中使用新的Shared Project支持。通常这仅适用于Universal Projects,但是您可以安装扩展[1],为所有项目类型启用共享项目。

只需创建一个新的共享项目。添加所有常用代码。然后在您的平台特定项目中,您只需添加共享项目参考。

由于每个项目现在都是独立的,因此NuGet将添加适当的包。

希望这会有所帮助。祝你好运!

[1]共享项目参考经理https://visualstudiogallery.msdn.microsoft.com/315c13a7-2787-4f57-bdf7-adae6ed54450