NuGet不尊重packages.config

sya*_*ani 3 c# nuget nuget-package visual-studio-2012

我正在尝试为其他解决方案/项目/等中使用的一对内部C#项目(最终更多,但从这两个开始)生成NuGet包.这两个内部C#项目都引用了其他NuGet包(特别是Enterprise Library Logging).我正在使用Nuget的功能,它允许它从CSPROJ文件构建包,以简化我的生活.问题是Nuget.Exe工具不识别项目引用的包作为依赖项.要提供解决方案的完整布局:

Solution:
   Project 1
       Refs to some NuGet packages off the global repository (Enterprise Library, etc etc).
       (has a packages.config file that explicity lists them all)
   Project 2
       Refs to some NuGet packages off the global repository (Enterprise Library, etc. etc).
       Project ref to Project 1
       (has a packages.config file that explicity lists them all)
Run Code Online (Sandbox Code Playgroud)

我使用的命令行是:

   nuget pack Project2.csproj -IncludeReferencedProjects -verbosity detailed
Run Code Online (Sandbox Code Playgroud)

命令行输出的相关部分是:

Found packages.config. Using packages listed as dependencies

Id: Project2
Version: 1.0.0.0
Authors: abc
Description: abc
Dependencies: Project1 (= 1.0.0.0)

Added file 'lib\net35\project2.dll'.
Run Code Online (Sandbox Code Playgroud)

我原以为"依赖:Project1,Enterprise Libray Logging等等"

*注意:我必须向Project1和Project2添加一个nuspec文件,以使项目间依赖项部分正常工作.除了占位符值之外,nuspec文件基本上是空白的:

<?xml version="1.0"?>
<package >
  <metadata>
    <id>$id$</id>
    <version>$version$</version>
    <title>$title$</title>
    <authors>abc</authors>
    <owners>abc</owners>
    <requireLicenseAcceptance>false</requireLicenseAcceptance>
    <description>defr</description>
    <copyright>Copyright 2013</copyright>
  </metadata>
</package>
Run Code Online (Sandbox Code Playgroud)

我在NuGet问题跟踪器上找到的最接近的东西是http://nuget.codeplex.com/workitem/3097,但这有点不同,并且在那里提出的解决方案似乎都没有用.

有没有人有类似的情况正常工作?

我在Visual Studio 2012中使用NuGet 2.7.

sya*_*ani 8

我最后查看了NuGet源代码,发现了我们遇到的问题.

在我们的案例中,它最终是两个独立的问题:

  • 项目本身在其文件夹中有.sln文件
  • 在我们的构建脚本中执行pack命令之前,我们错误地清空了解决方案级别包文件夹.

这些导致问题的原因是因为NuGet寻找解决方案级别包文件夹来决定引入哪些包依赖项(不太确定如何进行此确定).如果该包文件夹的路径不正确(如果NuGet使用错误的解决方案文件那样),则无法正确解析依赖关系.此外,如果packages文件夹为空,则它也无法正确解析依赖项.