我已经编辑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中。有没有解决的办法?
Bin文件夹(TargetDir)-构建的文件夹,不应成为源代码管理的一部分。您需要HintPath,因为没有它,IDE将首先检查GAC,然后将检查TargetDir,然后再检查...它可能会在驱动器上的某个地方找到版本完全不同的Newtonsoft dll,即错误的文件。
您需要更正现有的设置-永远不要将任何bin文件夹检入源代码管理。您应该具有分支结构,并且在分支下具有packages文件夹,并且分支中的所有解决方案都可以使用它。您可以检入整个程序包文件夹,这样就不必每次都下载解决方案了-可以。但切勿检查输出。请参阅-HintPath可以包含相对路径,以便您可以在所需的任何位置使用结构。明天您可以将分支移动到源代码管理中的其他位置,并且相对路径将保持有效。绝对-您需要HintPath
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句