更改为发布构建配置时,NuGet引用无效

Mir*_*dak 6 .net visual-studio nuget

我在NuGet(最近的)和VS2012上遇到了一个奇怪的问题.我有一个启用了NuGet包管理的多项目解决方案,只要我使用Debug | AnyCPU配置,它就可以正常编译和运行.一旦我切换到Release | AnyCPU,似乎所有的Nu​​Get程序集引用都消失了,应用程序显然无法编译.奇怪的是,我可以在NuGet Manager UI中看到所有正确项目的所有引用.

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

重建没有帮助.设置了Debug配置时设置了NuGet引用.

Mir*_*dak 7

再一次,我正在回答我自己的问题......

关键是,我正在改变解决方案的结构并移动了一些项目.这意味着,每个项目的.csproj文件中都会出现无效的相对路径.哪个好,只要你不改变我所做的结构深度.

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

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

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

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