NuGet、Packages.config、.csproj 和引用

Dar*_*ood 9 .net c# nuget packages.config

我有一个问题,以便我可以更好地理解NuGetpackages.config.csproj文件。

据我了解,默认包管理格式的 NuGet 包管理器 >> 常规中的设置决定了您的项目是否使用packages.config.csproj文件来解析和恢复包。在我的项目中,我们选择了 Packages.config。

编译和运行没问题。因此,我决定测试它是否可以在文件dll中没有引用的情况下运行.csproj,因为据我所知,它不使用或不需要它。这是一个不正确的假设,就好像包在文件中一样packages.config,当我删除文件中的引用时,.csproj我的项目中出现错误,并且项目将无法编译。

我还注意到,如果dll不在参考文献中,Solution Explorer它也无法编译(我假设这些是.csproj参考文献)。

因此,我不清楚包管理格式.csproj文件的作用以及.Packages.configNuGetSolution Explorer

小智 8

区别在于管理 NuGet 引用的方式。

在 VS2017 之前,组装期间要使用的 NuGet 包的信息存储在文件 packages.config 中。

从 VS2017 开始,有一个名为包引用的新选项,它将这些信息存储在项目 (.csproj) 文件中。

https://devblogs.microsoft.com/nuget/migrate-packages-config-to-package-reference/


Jua*_*anG 7

在 VS2017 和 .NET Core 之前,NuGet 并未深度集成到 MSBuild 中,因此它需要一个单独的机制来列出项目中的依赖项:packages.configproject.json. 使用 Visual Studio 解决方案资源管理器的“引用”上下文菜单,开发人员可以.csproj在 NuGet 管理的解决方案范围文件夹中添加对已恢复包的引用。

Visual Studio添加到项目文件的引用.csproj如下所示:

<Reference Include="EntityFramework, Version=6.0.0.0"><HintPath>..\packages\EntityFramework.6.4.4\lib\net45\EntityFramework.dll</HintPath></Reference>

从 VS2017 和 .NET Core 开始,NuGet 成为 MSBuild 中的一等公民。NuGet 包依赖项现在在 SDK 样式项目文件中列为 PackageReference.csproj

参考现在看起来像这样:

<PackageReference Include="EntityFramework" Version="6.4.4" />