nuget包如何指定copylocal

时间:2013-08-28 16:06:11

标签: visual-studio-2012 nuget nuget-package nugetgallery nuget-spec

我遇到的问题是通过VS2012添加的某些nuget安装包将copylocal值设置为true,而其他人没有设置任何值。

nuget如何知道何时添加copylocal而不是?

我缺少的nupkg文件中是否缺少某些设置?

我查看了nuget的源代码(简要说明),并且它存在copylocal值,然后应该设置为true。

e.g。

Install-Package System.Web.Mvc

解析为

    <Reference Include="System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
  <Private>True</Private>
  <HintPath>..\packages\Microsoft.AspNet.Mvc.4.0.30506.0\lib\net40\System.Web.Mvc.dll</HintPath>
</Reference>

然而

Install-Package Newtonsoft.Json

解析为

    <Reference Include="Newtonsoft.Json">
  <HintPath>..\packages\Newtonsoft.Json.5.0.6\lib\net45\Newtonsoft.Json.dll</HintPath>
</Reference>

1 个答案:

答案 0 :(得分:0)

我有点想通了。

答案部分在于: http://msdn.microsoft.com/en-us/library/vslangproj.reference.copylocal

虽然“Newtonsoft.Json”没有在csproj文件中明确设置copylocal = true,但是当设置了copylocal = true时,visual studio似乎会自动评估。

似乎nuget依赖于DTE集成来帮助它确定copylocal的价值。

我通过从VS2012运行msbuild测试了这一点,从GAC中删除System.Web.MVC并将其复制到bin目录。

我想这只会成为一个问题,当人们想要打开一个已编译的网站时,垃圾箱中不存在dll,例如System.Web.MVC。

VS在这种情况下不知道它应该在GAC中查看。