2

我有一个使用 NuGet 包LZ4.NET的解决方案。

该包将 dll 存储在内容文件夹中,该文件夹被复制到目标项目根目录。

这已被检入源代码控制 (Git),但项目中的 dll 被排除在外。

目前,packages 文件夹已签入,其中包含 lib 和 content 目录以及所有必要的 dll 文件。

但是在克隆新存储库时,构建项目不会将内容复制到项目中,并且 Visual Studio 会给出缺少 dll 的错误(因为它们已包含在项目中但从源代码管理中排除)。

如何让 nuget 在每次构建时复制内容?还是我应该只将 dll 签入项目?

更新

我已启用 NuGet 包还原。但似乎Nuget 在设计上不支持恢复内容文件。如果是这种情况,似乎我必须检查项目中的 dll。

但是这些dll是按.Net Framework版本组织的,即net35、net40、net45。如果我签入 dll,那么它将被“锁定”到我签入的 .Net 框架版本,而不是依靠 Nuget 为我选择。

4

1 回答 1

1

当一个包安装到项目中时,NuGet 实际上会执行这些操作,

  1. 从源下载包文件;
  2. 将包安装到所谓的packages文件夹中,默认为$(SolutionDir)\packages;
  3. 将包安装到项目中,包括添加对 DLL 的引用、将内容文件复制到项目目录等。

当一个包被恢复时,只执行前两个步骤。这就是为什么项目目录中的 DLL 不会被“恢复”的原因。

目前唯一的解决方案是检查项目目录中的 DLL。

于 2013-10-30T06:21:38.437 回答