2016-11-08 102 views
1

我的包构建成功并上传到VSTS中的包饲料,但我似乎无法弄清楚如何编辑包的描述和作者,以便我的设置值显示在包饲料。VSTS自动化构建NuGet包装器/发行商

从我读我把我的的NuGet打包内容下的额外生成属性,当我查看日志文件,我看到这一点:

...NuGet.exe pack "...csproj" -OutputDirectory "..." -Properties Configuration=release;Description="My Description";Authors="Me";Owners="My Company" 

从文档,我相信我这样做是正确的(但显然我没有)。对于“其他构建属性”与NuGet参数之间的关系,似乎有点混淆。

我的目标再次是获得描述和作者,我设置为可从Visual Studio中的NuGet包管理器查看。

回答

1

如果它是建立包,那么有NuGet Packager构建步骤没有问题。两件事情需要改变。

  1. 为了指定的属性,如你正在做必须有相同的目录中使用相同的名称,当然还有* .nuspec文件需要到要检查的解决方案文件标记化* .nuspec文件VSTS/TFS。
  2. 描述的标记名称不能是描述。

有关*的更多详细信息。nuspec文件请参阅这里的解决方案:

Nuget.exe pack WARNING: Description was not specified. Using 'Description'

2

您可以根据.nuspec文件创建一个包。 步骤:

  1. 为您的项目生成.nuspec文件(命令:nugget spec)。

例如:(包括作者和说明令牌)

<?xml version="1.0"?> 
<package > 
    <metadata> 
    <id>CommLib1</id> 
    <version>1.0.0.6</version> 
    <title>CommLib1</title> 
    <authors>$author$</authors> 
    <owners>$author$</owners> 
    <licenseUrl>http://LICENSE_URL_HERE_OR_DELETE_THIS_LINE</licenseUrl> 
    <projectUrl>http://PROJECT_URL_HERE_OR_DELETE_THIS_LINE</projectUrl> 
    <iconUrl>http://ICON_URL_HERE_OR_DELETE_THIS_LINE</iconUrl> 
    <requireLicenseAcceptance>false</requireLicenseAcceptance> 
    <description>$description$</description> 
    <releaseNotes>Summary of changes made in this release of the package.</releaseNotes> 
    <copyright>Copyright 2016</copyright> 
    <tags>Tag1 Tag2</tags> 
    </metadata> 
</package> 
  • 包含该文件到源控制
  • 指定的NuGet参数(标记步骤1)中的NuGet打包构建步骤的 enter image description here
  • UPDATE1:

    一般而言,您只需更新您项目的AssemblyInfo.cs文件(Author => AssemblyCompany;描述=> AssemblyDescription;版本=> AssemblyVersion),它会根据这个数据创建包,除非它不能从你的程序集中检索元数据(我有一个项目有这个问题)。

    因此,步骤:

    1. 确保的NuGet可直接在您的本地/编译机创建通过nuget.exe命令包检索所需的元数据(的NuGet包[XX]的.csproj)

    2. 创建构建定义(1 Visual Studio中建立2的NuGet打包的默认值3的NuGet出版社)

    +0

    我想过这样做,但我不希望有手动更新* .NuSpec文件的版本。我看到你有一个变量“$(v)”,但是有没有办法从AssemblyVersion属性中获取该变量的值?我的解决方案是一个单独的类库,我试图制作一个模板,以便轻松地发布我们常见的内部类库。 – LorneCash

    +0

    @LorneCash是的,你可以在参数中指定版本。 (我在构建定义中使用了一个变量值) –

    +0

    @LorneCash如果可以从程序集中检索元数据,然后通过VSTS构建进行构建,打包和发布,则可以直接更新AssemblyInfo.cs文件。我更新了我的答案。 –