4

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

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

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

<RestorePackages>true</RestorePackages>

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

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

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

4

1 回答 1

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 天,所以我不会将此标记为答案。

于 2013-04-18T15:35:11.493 回答