【问题标题】:How does a nuget package specify copylocal一个nuget包如何指定copylocal
【发布时间】:2013-08-28 16:06:10
【问题描述】:

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

nuget 如何知道何时添加 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>

【问题讨论】:

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


    【解决方案1】:

    我有点想通了。

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

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

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2012-04-09
      • 1970-01-01
      • 1970-01-01
      • 2013-08-31
      • 1970-01-01
      • 2011-12-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多