繁体   English   中英

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

[英]How do I set Visual Studio to build a NuGet package?

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

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

  • 确保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文件)中提取一个文件,并仔细看看它是如何完成的。

添加这样的构建后事件:

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

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

您可以使用nuget update -self保持.exe的nuget update -self

注意

nuget.exe pack当前存在一个错误,在该错误中它将看到一个packages.config文件,并尝试查找您的解决方案中提到的软件包,但是如果packages文件夹位于一个陌生的地方(例如,如果您的解决方案),则无法找到它们文件不是项目的上一级。

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

repositorypath配置设置似乎对我无济于事。

查看GitHub报告:

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


真有趣 当我采用这种新方法时,我在自动构建构建包的惯常方法上遇到了问题。 因此,当我在这里遇到自己的问题时,我正在寻找一个合适的SO问题来回答我的新的构建后方法!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM