我在NuGet(最近的)和VS2012上遇到了一个奇怪的问题。我有一个启用了NuGet包管理的多项目解决方案,只要我使用Debug | AnyCPU配置,它就可以正常编译和运行。一旦我切换到Release | AnyCPU,似乎所有的NuGet程序集引用都消失了,应用程序显然无法编译。奇怪的是,我可以在NuGet Manager UI中看到所有正确项目的所有引用。
您是否曾经历过类似的问题而且您知道如何解决这个问题吗?
重建没有帮助。在设置调试配置时设置了NuGet引用。
答案 0 :(得分:7)
再一次,我正在回答我自己的问题......
重点是,我正在改变解决方案的结构并移动了一些项目。这意味着,每个项目的.csproj文件中都会出现无效的相对路径。哪个好,只要你不改变我所做的结构深度。
对于未知原因,调试版本在无效路径下运行得很好(可能会以其他方式收集程序集,因为我手动删除了bin和obj文件夹并清除了解决方案等...)。但是对于发布版本,它试图从(错误引用的)packages /目录中获取程序集。
NuGet流程的任何部分都没有发现/报告此问题,并且在所有UI控制台中,甚至在NuGet PowerShell控制台本身中,一切似乎都没问题。
解决方案很明显。编辑受影响项目的.csproj文件(我实际上是通过过滤警告并查明,只有一些程序集受到影响而且这些程序来自主解决方案目录之外)来引导问题,并将程序集引用的路径更改为正确的NuGet程序包文件夹中。
旁注:这是NuGet(可能还有VS)引用处理的问题。它试图使用一些相对路径而不是添加一些变量,如$ {SOLUTION_ROOT}或$ {NUGET_ROOT}或$ {PACKAGES_FOLDER}。如果它是通过变量替换完成的,那么可以在多个解决方案中使用相同的项目,而不会破坏NuGet包配置。至少我没有找到在多个解决方案中共享同一项目文件夹的方法。
答案 1 :(得分:2)
我能够通过卸载,然后安装我的项目正在使用的Nuget包来解决这个问题。
答案 2 :(得分:0)
晚会,但它可能会帮助某人。如果您将nuget repositoryPath
(可能通过nuget.config)更改为其他路径,项目中期,则会发生此问题。
e.g。
如@Baron所述,重新安装将解决所有这些混乱。我还建议从工作树中删除所有bin / obj / packages,以确保没有任何问题。