在TFS中,我添加了一个“Nuget Packager”步骤。该项目构建正常,但是当我解压缩nupkg文件时,它包含项目文件( .csproj, .cs,* .config文件)。我只期望二进制文件(例如bin \ Release * .dll文件)。我在构建定义中遗漏了什么?
答案 0 :(得分:1)
<强>更新强>
建议您使用路径指向csproj或nuspec文件中的.csproj
代替**\*.nuspec
来打包NuGet任务 。这将在TFS中获得与本地相同的结果。
使用nuget spec命令自动创建.nuspec
包清单。 XML清单文件如下所示:
<metadata>
<id>C:\Users\xx\Source\Workspaces\Workspace\TestNuGetPackager\TestNuGetPackager\xx.csproj</id>
<version>1.0.0</version>
<authors>xxx</authors>
<owners>xxx</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>Package description</description>
<releaseNotes>Summary of changes made in this release of the package.</releaseNotes>
<copyright>Copyright 2017</copyright>
<tags>Tag1 Tag2</tags>
<dependencies>
<dependency id="SampleDependency" version="1.0" />
</dependencies>
</metadata>
</package>
您需要手动更改.nuspec
文件的值,如下所示,包括详细信息和硬编码信息
<package >
<metadata>
<id>TestNuGetPackager</id>
<version>1.0.0</version>
<authors>Test</authors>
<owners>Test</owners>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<description>Package description</description>
<releaseNotes>Summary of changes made in this release of the package.</releaseNotes>
<copyright>Copyright 2017</copyright>
<tags>Tag1 Tag2</tags>
</metadata>
<files>
<file src="bin\Release\TestNuGetPackager.dll" target="lib\46"/>
</files>
</package>
在此之后,您将获得唯一的二进制文件,否则使用系统自动生成的.nuspec
文件,您将打包包括项目文件。需要将修改后的.nuspec
文件签入TFS并再次触发构建。
有关如何使用.nuspec文件的更多详细信息,请参阅本教程:The role and structure of the .nuspec file