Nuget:如何将解决方案中的一个项目设置为不受Nuget管理?

4
首先,让我说一下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模板方面确实没有经验,所以我可能会在这里问一些愚蠢的问题:首先,您是否按照文档(http://docs.nuget.org/docs/reference/packages-in-visual-studio-templates)中描述的所有步骤使用NuGet包来创建VS模板?此外,您的内部框架如何包含在所有其他项目中?这是作为NuGet包完成的吗? - Julian
嗨。感谢回复。首先,我在模板中不包含Nuget包。虽然有一个packages.xml文件,但当我们创建新项目时,我们只需将其设置为由Nuget管理,然后Nuget将自动从xml文件中检测到这些缺失的包并自动下载它们... - Matt
第二件事是我们不通过Nuget引用框架(代码库)...它作为解决方案中的项目被引用(右键单击,添加现有项目)...当然,在创建项目后我们必须重新引用。我需要稍后研究多项目模板来解决这个问题...无论如何...您可能会想...那么只需从项目模板中删除引用即可。嗯,如果我这样做,是的...我想项目会被创建...但是,然后项目模板将无法构建(缺少nuget文件夹问题,因为框架使用了Nuget)。 - Matt
如果我们从框架中移除Nuget(原始计划),那么这很好并且可以工作,但是下一次我们打开一个引用框架的不同Nuget管理项目(同一解决方案),那么它会自动将框架添加到Nuget管理中...然后我们又回到了起点。此外,当我们打开框架的解决方案时,它还会抱怨缺少Nuget文件夹,因为Nuget是从外部解决方案启用的,而不是主框架的解决方案。 - Matt
如果有人想知道为什么我们将代码库添加到解决方案中而不是引用带版本号的DLL...那是因为该库在每个新项目中都在不断变化和更新..它每天都在修改..所以对我们来说使用DLL并不是一个真正的选择。 - Matt
@Nailuj,我刚刚看了你的链接,同时我也找到了这个:http://samritchie.net/2012/09/17/nuget-packages-in-vs2012-templates/。它可能真的能解决问题。稍后我会试一下,看看会发生什么。 - Matt
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. 打开Package Manager控制台
  10. 注意缺少软件包的消息并同意下载和安装它们(约1分钟)
  11. 删除框架DLL引用并替换为实际项目(右键单击,添加现有项目)
  12. 重新构建和运行
  13. 庆祝!

我希望这能帮助到其他可能遇到这种困境的人。如果有更好的想法,请告诉我。赏金还剩6天,所以我不会将其标记为答案。


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