2013-02-12 76 views
4

我遇到了NuGet(最新版本)和VS2012相当奇怪的问题。我有一个启用了NuGet包管理的多项目解决方案,只要我使用Debug | AnyCPU配置,它就会编译并且应用程序正常运行。只要我切换到Release | AnyCPU,似乎所有的Nu​​Get程序集引用都消失了,应用程序显然不能编译。奇怪的是,我可以在NuGet Manager UI中看到所有正确项目的所有参考。NuGet引用在更改为发布版本配置时无效

你曾经历过类似的问题,你知道如何解决它吗?

重建没有帮助。 NuGet引用在设置Debug配置时设置。

回答

5

再次,我回答我的问题...

点是,我正在改变溶液的结构和周围移动的一些项目。这意味着,您在每个项目的.csproj文件中获得无效的相对路径。没关系,只要你不改变结构的深度,我就是这么做的。

对于未知的原因,调试版本很好,无效路径(可能会收集一些其他方式,因为我手动删除bin和obj文件夹和清除解决方案等)。但是对于发布版本,它试图从(错误引用的)软件包/目录中获取程序集。

NuGet进程的任何部分都没有发现/报告过这个问题,并且在所有的UI控制台中,甚至在NuGet PowerShell控制台本身中,一切似乎都没问题。

解决方案很明显。编辑受影响项目的.csproj文件(实际上,我通过过滤警告和发现,只有一些程序集受到影响,而且这些程序集来自主解决方案目录之外),并将程序集引用的路径更改为正确的NuGet程序包夹。

附注:这是NuGet(也可能是VS)参考处理的问题。它试图使用一些相对路径,而不是像$ {SOLUTION_ROOT}或$ {NUGET_ROOT}或$ {PACKAGES_FOLDER}那样添加一些变量。如果是通过变量替换完成的,则可以在多个解决方案中使用相同的项目,而不会破坏NuGet包配置。至少我还没有找到在多个解决方案中共享同一个项目文件夹的方法。

+0

我有同样的问题,但是由.csproj文件的合并引起的。我不得不卸载/编辑项目并删除重复的引用,以便NuGet可以在解决方案中重新加载项目文件后再次管理它们。 – tmgirvin 2016-02-04 23:23:50

2

我能够通过卸载,然后安装我的项目正在使用的Nuget包来解决此问题。

0

晚会晚了,但它可能有助于某人。如果您将nuget repositoryPath(也许通过nuget.config)更改为不同的路径,则可能会出现此问题。

例如

  • 的NuGet最初将拉你的包成默认路径
  • 的NuGet repositoryPath改变。
  • 新软件包将被拉入此路径,但现有路径不会被清除(msbuild clean不会帮助)。
  • 当您构建时,您的提示路径将指向最初的回购路径,并且将构建,因为包仍然存在于该位置。
  • (更糟)现在添加的任何nuget包都会指向新的回购路径。

正如@Baron所述,重新安装将解决所有这些问题。我也建议从工作树中删除所有的bin/obj/packages,以确保你没有任何垃圾。

相关问题