0

在我工作的公司中,在每个解决方案中,我们都有一个文件夹packages,其中包含所有 dll 依赖项。此文件夹与解决方案的其余部分不在存储库中。

每次我构建一个项目时,文件夹包中的所有文件都会恢复,并且任何丢失的 dll 都会再次出现。这发生在构建开始时,无论构建成功还是失败。即使项目没有 dll 依赖项,中任何丢失的 dll也会被恢复。

我怀疑这是 msbuild 中的一个设置,但我找不到它。有谁知道它可能在哪里,或者是否有 msbuild *.targets 文件的地方?

谢谢你的帮助

4

2 回答 2

2

这是因为 Visual Studio 会还原packages.config文件中定义的包。

您可以在 Visual Studio 中的选项中控制此行为: VS NuGet 选项

于 2018-11-29T14:26:23.803 回答
1

来自关于 Nuget的MS Docs :

MSBuild:使用 msbuild -t:restore 命令恢复项目文件中列出的包包(仅限 PackageReference)。仅在 NuGet 4.x+ 和 MSBuild 15.1+ 中可用,它们包含在 Visual Studio 2017 中。nuget restore 和 dotnet restore 都将此命令用于适用的项目。

再往下,有很多关于以各种方式启用/禁用和修改此行为的内容。

允许 NuGet 下载丢失的包:通过更改 NuGet.Config 文件中的 packageRestore/enabled 设置来控制所有形式的包还原,如下所示(Windows 上的%AppData%\NuGet\NuGet.Config,~/.nuget/NuGet/NuGet .Config 在 Mac/Linux 上)。在 Visual Studio 中,此设置允许解决方案上下文菜单上的“还原 NuGet 包”命令起作用。

似乎更适合您的问题:

在 Visual Studio 中构建期间自动检查丢失的包:通过更改 NuGet.Config 文件中的 packageRestore/automatic 设置来控制自动恢复,如下所示(Windows 上的%AppData%\NuGet\NuGet.Config,~/.nuget/NuGet/ Mac/Linux 上的 NuGet.Config)。设置此选项后,从 Visual Studio 运行生成会自动还原任何丢失的包。该选项不会影响使用 MSBuild 从命令行运行的构建。

于 2018-11-29T14:25:24.343 回答