0

我遇到了一些问题,我正在处理通过VS2012添加的某些nuget安装包将copylocal值设置为true,而其他人没有设置任何值的情况。nuget包如何指定copylocal

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

在缺少的nupkg文件中是否存在一些缺失的设置?

我看了一下nuget的源代码(简要地),它存在copylocal值,那么它应该设置为true。

例如

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> 

回答

0

我有点想通了。

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

虽然“Newtonsoft.Json”没有copylocal =真在的csproj文件中明确设置,看来当copylocal = TRUE时在Visual Studio自动评估或不。

看来nuget依靠DTE集成来帮助它确定copylocal的值。

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

我想这只会成为一个问题,当一个人想打开一个编译网站的dll不存在于bin例如System.Web.MVC。

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