我已使用Autofac
添加了nuget
库,我在参考资料中看到了它,如下所示。
但是当我通过单击检查Autofac的属性[F4]时,它会在Visual Studio中显示空属性框。
另外,我在Autofac
文件夹下没有看到packages
文件夹。
我在.csproj
文件中只看到了包引用。然后它如何定位DLL?实际的dll在哪里?我发现它自动进入 BIN 。它是怎么来的?
主要问题:本地我能够构建解决方案,但同样的解决方案在TFS构建服务器中失败。它无法找到nuget参考。那么我在哪里可以找到dll参考?或者如何将其推送到TFS?
答案 0 :(得分:2)
您使用NuGet文件获取的新Package Reference获取stored into a cache:
不再使用解决方案本地包文件夹 - 现在是包 在
%userdata%\.nuget
处针对用户的缓存而不是。{ 解决方案特定的包文件夹。这使得PackageReference 通过使用共享文件夹,执行速度更快,占用磁盘空间更少 工作站上的软件包。
答案 1 :(得分:1)
在构建中添加NuGet Restore
任务,以便还原包。
答案 2 :(得分:1)
正如@ magicandre1981已经解释过的那样,PackageReference
样式包引用(与package.config
样式相关),如果你没有这样的话,还可以看this了解更多关于差异的背景知识知道),软件包不是位于每个解决方案的packages-folder中,而是位于一个中心软件包中(默认情况下为%USERPROFILE%\.nuget\packages
)。尽管您可以使用NUGET_PACKAGES
环境变量(也可以作为TFS Build variable)轻松更改位置,因为它们是作为环境变量提供的,用于构建步骤。
此外,在Visual Studio中,您看不到路径,因为DLL的实际路径是在构建时确定的。您可以在<project-dir>\obj\project.assets.json
文件中看到该路径的一部分(在restore
目标/操作期间生成),但是您将只在MSBuild日志中看到的完整路径(例如,在实际调用时csc.exe
可执行文件/ C#编译器或ResolveAssembyReferences
- 任务期间。
请注意,对于.NET Core,即“SDK样式”项目,路径实际上显示在属性中(与“package”节点下的节点中的实际DLL一样。
我们只能假设PackageReference在“旧”项目中的集成尚未完全完成(如果有的话)。
用于比较“旧”/非SDK风格项目中的PackageReference:
答案 3 :(得分:1)
假设您正在使用TFS 2015,当您添加任务时,NuGet Restore任务名称应为NuGet Installer
,Package
。
因此,如果您在构建计算机中安装了Nuget,则可以直接使用该任务。
您还可以为TFS 2015构建自定义nuget.exe
- 只需指定Path to NuGet.exe