【问题标题】:Nuget: Set one project in solution as unmanaged by Nuget?Nuget:将解决方案中的一个项目设置为不受 Nuget 管理?
【发布时间】:2013-04-07 06:56:09
【问题描述】:

首先,让我先说 Nuget 很棒。我喜欢它。话虽这么说,但我刚刚发现了一件非常烦人的事情。

我们有一个用于几乎所有项目的内部框架。因此,我最近为它创建了一个 Visual Studio 项目模板,以及 VSIX .. 由于 Nuget.. 在此过程中遇到了一些问题。当模板引用框架时,它不会从模板创建新项目。 . 因为框架正在使用 Nuget,它在从模板创建的新项目中找不到 nuget 文件夹。因此,解决方案是从框架项目中删除 nuget,仅将 Nuget 用于其他项目(除框架之外的任何项目)。好的,太好了..这解决了问题!

但是,现在对于我打开的每个 Nuget 托管项目,它会自动将这两行添加回框架的 .csproj 中:

<RestorePackages>true</RestorePackages>

<Import Project="$(SolutionDir)\.nuget\nuget.targets" />

这令人沮丧,因为我们现在要么完全停止使用 Nuget,要么在每次要重建模板时继续从框架的 .csproj 文件中删除这些行。

有什么方法可以告诉 Nuget 忽略解决方案中的一个项目?就我而言,忽略框架项目...

【问题讨论】:

  • 我真的没有设置 Visual Studio 模板的经验,所以我可能会在这里问一些愚蠢的问题:首先,您是否按照文档 (docs.nuget.org/docs/reference/…) 中描述的所有步骤操作在 VS 模板中使用 NuGet 包?而且,你的这个内部框架,你如何将它包含在你所有的其他项目中?这是作为 NuGet 包完成的吗?
  • 嗨。谢谢回复。首先,我的模板中没有包含 nuget 包。虽然有一个packages.xml,所以当我们创建新项目时,我们只是将它设置为由Nuget管理,然后Nuget会自动从xml文件中检测那些丢失的包并自动下载它们......
  • ...第二件事是我们没有引用Nuget的框架(代码库)..它被引用为解决方案中的项目(右键单击,添加现有项目)..哪个当然我们必须在项目创建后重新引用。我需要稍后研究多项目模板来解决这个问题......无论如何......你可能在想......然后只需从项目模板中删除引用。好吧,如果我这样做,是的..我想项目将被创建..但是项目模板将不会构建(缺少 nuget 文件夹问题,因为框架使用 Nuget)...
  • ..再一次..如果我们从框架中删除 Nuget(原始计划),那很好并且它可以工作,但是下次我们打开一个引用框架的不同 nuget 管理的项目(相同解决方案),然后它会自动将框架再次添加到 nuget 管理中......我们又回到了起点。此外,当我们打开框架的解决方案时,它还抱怨缺少 nuget 文件夹,因为 nuget 是从外部解决方案而不是主框架的解决方案启用的。
  • 如果有人想知道为什么我们将代码库添加到解决方案中而不是引用版本化的 DLL...这是因为库在不断变化并随着每个新项目而更新..它每天都会修改.. 所以使用 DLL 对我们来说并不是一个真正的选择

标签: visual-studio visual-studio-2012 nuget


【解决方案1】:

根据 Nailuj 的建议以及我在此处找到的内容:http://samritchie.net/2012/09/17/nuget-packages-in-vs2012-templates/,我尝试了一些我认为可行的方法,但它不能满足我的需求;该方法仅用于将包包含在新项目中,这对我来说没有帮助并且不能解决问题(有关丢失 .nuget 目标文件夹的错误)。所以,我玩了一下,想出了一些不理想但可以接受的东西:

  1. 从用作模板的项目中删除与 Nuget 相关的所有内容。这会导致引用的框架出现问题,因为框架项目期望由 Nuget 管理,而从这个解决方案中它不是,所以会发生错误......所以:
  2. 从解决方案中删除框架项目并仅引用 DLL 以便构建,但不会抱怨缺少 nuget 文件夹
  3. 重建
  4. 导出到模板
  5. 使用导出的模板构建 VSIX
  6. 安装模板
  7. 从新安装的模板创建一个新项目
  8. 在新项目的解决方案中启用 Nuget 包恢复
  9. 打开包管理器控制台
  10. 关于缺少软件包的通知消息并同意下载并安装它们(约 1 分钟)
  11. 删除框架 DLL 引用并替换为实际项目(右键单击,添加现有项目)
  12. 重建并运行
  13. 庆祝!

我希望这可以帮助其他可能陷入这种困境的人。如果有人有更好的想法,请告诉我。赏金仍然开放 6 天,所以我不会将此标记为答案。

【讨论】:

    猜你喜欢
    • 2019-07-29
    • 2013-04-17
    • 1970-01-01
    • 2023-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多