【问题标题】:Add reference to same Nuget package but for different targets添加对相同 Nuget 包但针对不同目标的引用
【发布时间】:2015-05-12 11:41:14
【问题描述】:

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

这些项目使用适用于上述所有平台本身的 Nuget 包。

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

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

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

谢谢, 保罗

【问题讨论】:

    标签: nuget nuget-package


    【解决方案1】:

    很遗憾,我认为 NuGet 不支持您的方案。

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

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

    只需创建一个新的共享项目。将所有常用代码添加到其中。然后在您的平台特定项目中,您可以简单地添加共享项目引用。

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

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


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

    【讨论】:

    • 我明白了...非常感谢您!
    猜你喜欢
    • 2016-10-31
    • 1970-01-01
    • 2012-03-14
    • 2016-01-13
    • 1970-01-01
    • 2014-10-25
    • 1970-01-01
    • 1970-01-01
    • 2016-01-22
    相关资源
    最近更新 更多