繁体   English   中英

NuGet、Packages.config、.csproj 和参考

[英]NuGet, Packages.config, .csproj and references

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

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

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

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

所以我不清楚.csproj文件对于NuGet包的Packages.config管理格式的作用以及Solution Explorer中的引用。

不同之处在于如何管理 NuGet 引用。

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

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

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

在 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 样式的项目文件.csproj中列为 PackageReference

参考现在看起来像这样:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM