如何让Visual Studio在构建时为我的库组件构建NuGet包?
答案 0 :(得分:0)
我正在使用可移植类库作为示例项目。
确保NuGet.exe
文件夹中的.nuget
文件是最新的。
默认值来自AssemblyInfo.cs
,所以要清理它。
如果您没有引用任何内容,请添加NuGet包引用,最好是像JSON.NET这样的简单引用。通常,PCL项目没有外部依赖项,在这种情况下没有NuGet引用,没有任何NuGet引用,所需的MSBuild配置将无法正确设置,因此我们需要添加一个“虚拟”。
启用NuGet包还原。
编辑NuGet.targets文件并确保BuildPackage
为true
。
<!-- 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问题来回答我的新构建方法!