Visual Studio在哪里引用实际的nuget引用的dll?

时间:2018-06-12 10:42:19

标签: visual-studio tfs nuget

我已使用Autofac添加了nuget库,我在参考资料中看到了它,如下所示。

enter image description here

但是当我通过单击检查Autofac的属性[F4]时,它会在Visual Studio中显示空属性框。

enter image description here

另外,我在Autofac文件夹下没有看到packages文件夹。

enter image description here

我在.csproj文件中只看到了包引用。然后它如何定位DLL?实际的dll在哪里?我发现它自动进入 BIN 。它是怎么来的?

enter image description here

主要问题:本地我能够构建解决方案,但同样的解决方案在TFS构建服务器中失败。它无法找到nuget参考。那么我在哪里可以找到dll参考?或者如何将其推送到TFS?

4 个答案:

答案 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 in SDK-style projects

我们只能假设PackageReference在“旧”项目中的集成尚未完全完成(如果有的话)。

用于比较“旧”/非SDK风格项目中的PackageReference:

PackageReference in non-SDK-style/old project

答案 3 :(得分:1)

假设您正在使用TFS 2015,当您添加任务时,NuGet Restore任务名称应为NuGet InstallerPackage

因此,如果您在构建计算机中安装了Nuget,则可以直接使用该任务。 您还可以为TFS 2015构建自定义nuget.exe - 只需指定Path to NuGet.exe

即可

您可以参考Mummy's blog- Custom nuget.exe for TFS 2015 build了解详情。

enter image description here