如何设置Visual Studio以构建NuGet包?

时间:2014-12-08 19:12:59

标签: visual-studio msbuild nuget

如何让Visual Studio在构建时为我的库组件构建NuGet包?

2 个答案:

答案 0 :(得分:0)

我正在使用可移植类库作为示例项目。

  • 确保NuGet.exe文件夹中的.nuget文件是最新的。

  • 默认值来自AssemblyInfo.cs,所以要清理它。

  • 如果您没有引用任何内容,请添加NuGet包引用,最好是像JSON.NET这样的简单引用。通常,PCL项目没有外部依赖项,在这种情况下没有NuGet引用,没有任何NuGet引用,所需的MSBuild配置将无法正确设置,因此我们需要添加一个“虚拟”。

  • 启用NuGet包还原。

  • 编辑NuGet.targets文件并确保BuildPackagetrue

    <!-- Property that enables building a package from a project -->
    <BuildPackage Condition=" '$(BuildPackage)' == '' ">true</BuildPackage>
    
  • 编辑.csproj文件并将其添加到第一个默认PropertyGroup

    <BuildPackage>true</BuildPackage>
    
  • 重建项目,然后在输出中搜索nupkg并确认包文件的创建和位置。

  • 删除虚拟NuGet包引用并再次构建并检查输出。

  • 要进一步自定义程序包创建,您可以将MyProjectName.nuspec文件粘贴到.csproj文件旁边。

有关NuSpec格式的更多信息,请参阅http://docs.nuget.org/docs/reference/nuspec-reference。你也可以从一个现有的包中取出一个(它只是一个zip文件)并且有一个鼻子,看看它是如何完成的。

答案 1 :(得分:0)

添加如下的构建后事件:

$(SolutionDir)\.nuget\nuget.exe pack "$(MSBuildProjectFullPath)" -p Configuration=Release -o "$(MSBuildProjectDirectory)\bin\Release" -symbols"

然后将nuget.exe下载并放在解决方案文件旁边的.nuget文件夹中。

您可以使用nuget update -self保持.exe新鲜。

注意

nuget.exe pack目前有一个错误,它会看到packages.config文件,并尝试在解决方案中查找它提到的软件包但如果包文件夹位于其中,则无法找到它们一个奇怪的地方,例如如果您的解决方案文件不是项目的升级版。

要解决此问题,请添加另一个帖子构建事件以将packages文件夹复制到项目文件夹中。

repositorypath配置设置似乎对我无效。

请参阅GitHub报告:

https://github.com/NuGet/Home/issues/5316

太好笑了。当我以这种新的方式到达时,我在构建自动构建包的过程中遇到了问题。所以当我在这里遇到我自己的问题时,我找了一个合适的SO问题来回答我的新构建方法!