NuGet / MSBuild不将二进制文件复制到没有HintPath的本地输出文件夹中

安德鲁·潘(Andrew Pham)

我已经编辑Global nuget.config以使用单个程序包文件夹。

我有一个由VS2015创建的新的空白C#控制台项目。我添加了一个NuGet参考,例如Newtonsoft.Json,然后VS创建了packages.config并将Newtonsoft.Json列为软件包。

这将添加到.csproj文件中。

<Reference Include="Newtonsoft.Json, Version=9.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL"> <HintPath>..\..\..\CxCache\Newtonsoft.Json.9.0.1\lib\net45\Newtonsoft.Json.dll</HintPath> <Private>True</Private> </Reference>

生成项目时,Newtonsoft.Json二进制文件将复制到本地bin文件夹中。如果我从本地bin中删除Newtonsoft.Json dll,它将在构建后重新复制。

但是我不想在csproj中使用HintPath属性(不想检入存储库),所以我想,我应该能够删除HintPath并且它可以正常工作。我从.csproj中删除了HintPath行,并从本地bin中删除了Newtonsoft.Json dll。

这次构建时,全局nuget包文件夹中的Newtonsoft.Json二进制文件不会复制到本地bin中。有没有解决的办法?

TS

Bin文件夹(TargetDir)-构建的文件夹,不应成为源代码管理的一部分。您需要HintPath,因为没有它,IDE将首先检查GAC,然后将检查TargetDir,然后再检查...它可能会在驱动器上的某个地方找到版本完全不同的Newtonsoft dll,即错误的文件。

您需要更正现有的设置-永远不要将任何bin文件夹检入源代码管理。您应该具有分支结构,并且在分支下具有packages文件夹,并且分支中的所有解决方案都可以使用它。您可以检入整个程序包文件夹,这样就不必每次都下载解决方案了-可以。但切勿检查输出。请参阅-HintPath可以包含相对路径,以便您可以在所需的任何位置使用结构。明天您可以将分支移动到源代码管理中的其他位置,并且相对路径将保持有效。绝对-您需要HintPath

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

NuGet pack命令不将文件复制到输出

有没有办法从项目的输出文件夹中删除NuGet dll?

如何防止二进制文件夹也被复制到输出目录?

Nuget将文件从程序包文件夹复制到项目目录

使用.csproj和dotnet pack命令中的MsBuild将文件从Nuget包复制到输出目录

让NuGet包输出文件

为什么Nuget Javascript包会复制到Scripts文件夹

没有文件夹的NUGET恢复包?

如何将所有依赖项的 NuGet 包检索到本地文件夹?

在本地编译时如何在.nuget文件夹中安装NuGet

如何通过 Nuget 将特定文件夹从 Razor 类库复制到目的地?

如何为引用的nuget包指定输出文件夹?

如何确定NuGet包中二进制文件的行为

尽管被标记为 PrivateAssets,但 nuget 包中的项目依赖项仍被复制到应用程序 bin 文件夹中

使用MSBuild属性函数时无法将nuget文件复制到目标位置

csproj参考本地nuget包文件夹

从本地文件夹自动更新nuget包

如何在 MVC 的文件夹中实现没有 NuGet 的 angularJS

如何设置NuGet包以将内容文件复制到输出构建目录?

MSBuild将文件复制到没有文件层次结构的单个文件夹中

无法找到 nuget 文件夹

什么是uwp的nuget lib文件夹

.nuget文件夹是否多余

Nuget 目标,如何将重命名的内容文件发送到解决方案输出文件夹?

NuGet文件标签中的可选或条件文件夹?

如何重定向.nuget文件夹?和nuget包与SDK nuget包的区别

NuGet软件包目标-如何在构建时将文件复制到目标目录的子文件夹?

Nuget安装的文件列表

%HOMEPATH%\。nuget \ packages文件夹有什么用?