如何从project.json构建nuget包?

时间:2016-08-15 11:52:22

标签: visual-studio-2015 nuget nuget-package .net-core

我正在寻找从我的来源构建nuget包的最简单方法。我有Visual Studio 2015 Update 3,我的解决方案有一个.NET核心类库项目(基于project.json)。我试图从该项目创建一个包。目前为了能够这样做,我创建了一个.nuspec文件并手动编辑它,即复制了我的project.json文件中列出的所有依赖项。

除了手动创建和编辑.nuspec文件之外,还有更好的方法吗?如果我在project.json中进行更改,我还必须在.nuspec文件中反映它们,这听起来很奇怪。

顺便说一下,这guide对我来说不起作用,因为在构建中没有'生产输出'复选框

虽然安装了Microsoft ASP.NET和Web Tools

enter image description here

我错过了什么吗?

1 个答案:

答案 0 :(得分:2)

这是我们在项目中遵循的生成NuGet包的步骤 -

1.下载Nuget.exe并将其放在.csproj文件所在的文件夹中。

2.打开cmd并键入nuget spec。将创建具有.nuspec扩展名的文件。

3.打开创建的文件并添加标签:

<files> <file src="..\..\SomeRoot\**\*.*" target="libs\net461" /> </files>

4.在cmd中执行nuget pack A.csproj –IncludeReferencedProjects。创建具有.nupkg扩展名的文件。

5.去视觉工作室。在NuGet包管理器设置中,添加“包源”并提供.nupkg.nuspec文件所在的路径。

6.关闭Nuget包管理器并再次打开它。现在,您可以在浏览选项卡下的创建的包源中找到它。

注意:您的.nuspec文件应该是:

<?xml version="1.0"?>
<package  xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <metadata  xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
    <id>ABC.XYZ.FL</id>
    <version>1.0.0.0</version>
    <title>ABC.XYZ.FL</title>
    <authors>ABC</authors>
    <owners>ABC</owners>
    <requireLicenseAcceptance>false</requireLicenseAcceptance>
    <description>Framework that will be used to create objects in XYZ world</description>
    <releaseNotes>Summary of changes made in this release of the package.</releaseNotes>
    <copyright>2016</copyright>
    <tags>ABC.XYZ.FL</tags>
  </metadata>
  <files>
    <file src="bin\Debug\*.dll" target="lib\net461" />
  </files>
</package>

以下链接包含有关创建nuget包并在本地托管的更多详细信息:

https://docs.nuget.org/create/creating-and-publishing-a-package

https://docs.nuget.org/create/hosting-your-own-nuget-feeds

https://docs.nuget.org/consume/nuget-config-file

看看这是否有帮助。

修改

这里有一个dotnet pack命令示例供您参考 -

"scripts": {
  "postcompile": [
    "dotnet pack --no-build --configuration %compile:Configuration%"
  ]
}