NuGet/MBuild未在没有HintPath的情况下将二进制文件复制到本地输出文件夹

本文关键字:复制 二进制文件 文件夹 输出 情况下 MBuild HintPath NuGet | 更新日期: 2023-09-27 18:00:13

我编辑了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属性(不想签入repo),所以我想,我应该能够删除HintPath,它会很好地工作。我从.csproj中删除了HintPath行,并从本地bin中删除了Newtonsoft.Json dll。

这一次在构建时,全局nuget包文件夹中的Newtonsoft.Json二进制文件没有复制到本地bin。附近有工作吗?

NuGet/MBuild未在没有HintPath的情况下将二进制文件复制到本地输出文件夹

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

你需要纠正你的设置-永远不要在源代码管理中签入任何bin文件夹。你应该有分支结构,分支下有软件包文件夹,分支中的所有解决方案都可以使用它。你可以签入整个程序包intPath可以包含相对路径,这样您就可以在任何需要的地方使用结构。明天,您可以将分支移动到源代码管理中的不同位置,并且您的相对路径将保持有效。当然-您需要HintPath