Dav*_*New 22 msbuild visual-studio nuget nuget-package visual-studio-2013
我刚刚在一台新机器上创建了一个工作区,从TFS获得了最新的项目,启用了NuGet Restore,我获得了以下(略读)输出:
1>------ Rebuild All started: Project: Caching, Configuration: Debug Any CPU ------
1>  Restoring NuGet packages...
1>  To prevent NuGet from downloading packages during build, open the Visual Studio Options dialog, click on the Package Manager node and uncheck 'Allow NuGet to download missing packages'.
1>  All packages listed in packages.config are already installed.
1>  Caching Framework -> C:\MyProjLocation\Caching\bin\Debug\Caching.dll
2>------ Rebuild All started: Project: Library, Configuration: Debug Any CPU ------
2>C:\Program Files (x86)\MSBuild\12.0\bin\Microsoft.Common.CurrentVersion.targets(1635,5): warning MSB3245: Could not resolve this reference. Could not locate the assembly "LumenWorks.Framework.IO". Check to make sure the assembly exists on disk. If this reference is required by your code, you may get compilation errors.
2>C:\MyProjLocation\Library\SomeClass.cs(2,7,2,17): error CS0246: The type or namespace name 'LumenWorks' could not be found (are you missing a using directive or an assembly reference?)
========== Rebuild All: 1 succeeded, 1 failed, 0 skipped ==========
没有任何NuGet包被恢复(有超过10个 - 为了可读性,我从上面的输出中删除了它们).
看起来NuGet甚至没有尝试恢复第二个项目(库)的包.
我已经尝试将NuGet目标导入移动到Library.csproj文件中的CSharp目标导入下方,如此处所述,但它仍然无法正常工作:
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<Import Project="$(SolutionDir)\.nuget\NuGet.targets" Condition="Exists('$(SolutionDir)\.nuget\NuGet.targets')" />
我在Visual Studio 2013上运行最新版本的NuGet(2.7.41101.371).
编辑:在packages.config存在和NuGet包管理器中有正确的包打勾库项目.
Chr*_* M. 19
在NuGet恢复丢失的包之前,我必须进入Source Control并删除packages文件夹中的所有文件(repositories.config除外).这个想法是你使用包恢复而不是检查你的包到源代码控制.如果它在源代码管理中看到包,则不会下载它们.
我不确定这背后的科学,但是在尝试构建一个刚刚下载的Visual Studio项目之后,它对我有用,并且MSB3245由于缺少引用而得到几个警告,然后是构建失败:
编辑:回到我的TimeSnapper自动截图历史记录(与该工具没有任何关系 - 我只是一个粉丝),看起来管理NuGet包顶部还显示了一条消息,同时还有一个"恢复" "按钮:"此解决方案中缺少某些NuGet软件包.点击从您的在线软件包源恢复."

虽然"恢复"显然是自动发生的,但手动点击该按钮也可以解决丢失的包问题.
我也有同样的问题,也在本地机器上.虽然Package Manager控制台和nuget.exe restore MySolution.sln报告都安装了所有内容,但packages解决方案目录中没有找到任何文件夹,也没有解析对包的引用.
我检查了所有项目文件,他们希望将软件包放在..\packages文件夹中,该文件夹位于解决方案文件本身所在的文件夹中.
我的工作方式是运行:
nuget.exe restore MySolution.sln -PackagesDirectory packages
这迫使nuget.exe将所有包下载到指定的文件夹,并恢复了所有引用.
请记住,从NuGet 2.7开始,不支持目标文件,msbuild假设使用一些集成的方法来恢复软件包,但它经常失败.
事实上,对于我自己的工作,我更喜欢使用Paket,当你习惯它时,它总能起作用.它还支持目标文件和创建NuGet包的好方法.
| 归档时间: | 
 | 
| 查看次数: | 44000 次 | 
| 最近记录: |