代码之家  ›  专栏  ›  技术社区  ›  Bob Horn

NuGet Pack-针对nuspec或csproj的不同问题打包

  •  0
  • Bob Horn  · 技术社区  · 8 年前

    我在这里遇到了一点麻烦。我正在使用NuGet和TeamCity。我试过了 NuGet pack 使用nuspec文件,我也尝试过使用csproj文件。每个都有自己的问题:

    在TeamCity,如果我使用 nuspec公司 使用文件 NuGet包 这个 $version$ nuspec文件中的令牌不会更新。

    如果我将TeamCity更改为 NuGet包 使用 项目文件 文件 $版本$ 令牌得到更新,但是生成的包中只有EXE,并且缺少所有依赖程序集。使用nuspec文件时不会出现此问题。

    有没有办法做到两全其美?我想要 $版本$ 要更新的令牌(使用csproj时有效), 和 我希望相关程序集包含在包中(使用nuspec时可以工作)。

    注意:我希望有一个解决方案不涉及创建PowerShell脚本,或者不涉及将代码/项目与构建技术(TeamCity)耦合的东西。

    2 回复  |  直到 8 年前
        1
  •  0
  •   Bob Horn    8 年前

    我能够使用$version$变量并在包中包含依赖程序集来实现。它在nuspec文件中包含了什么:

    <files>
      <file src=".\*.*" target="content" />
    </files>
    

    因此,基本上,bin\release中的所有内容都会保存在包中的content文件夹中。我不确定内容文件夹是否正确,但至少它在那里。如果需要,我可以稍后更改目标。

    总结:
    -TeamCity根据csproj文件构建
    -nuspec文件有$version$,它会得到更新
    -nuspec文件指定要包括的文件(参见上文)

        2
  •  0
  •   rohit21agrawal    8 年前

    正确的方法是针对csproj进行打包,但有一个对应的nuspec文件,其中包含版本nuspec元数据的$version$标记。NuGet更喜欢来自nuspec的元数据值,如果它们是未传递的标记,它将查看程序集元数据以适当地替换它。

    也就是说,如果您发现这不是预期的行为,请在 https://github.com/nuget/home/issues NuGet团队会很乐意帮助您解决问题。