自动将项目依赖关系元数据添加到手动创建的nuspec文件

时间:2018-06-08 15:57:48

标签: visual-studio nuget nuget-package build-automation nuspec

当我nuget打包一个Web项目时,我想为内容指定自定义解压缩位置并维护项目依赖关系元数据。

鉴于以下手动创建的示例nuspec文件:

<?xml version="1.0"?>
<package>
<metadata>
    <id>Web.MyApp</id>
    <version>1.0</version>
    <title>Web.MyApp</title>
    <authors>Chris</authors>
    <requireLicenseAcceptance>false</requireLicenseAcceptance>
    <description>Nuget package containing files for Web.MyApp</description>
    <releaseNotes>release notes</releaseNotes>
    <copyright>Copyright Chris 2017</copyright>
    <tags />
    <dependencies />
</metadata>
<files>
    <file src="bin\**\*.*" target="bin" />
    <file src="views\**\*.*" target="views" />
    <file src="content\" target="content" />
    <file src="scripts\" target="scripts" />
    <file src="Global.asax" target="" />
    <file src="*.config" target="" />
</files>
</package>

这允许我为bin,内容,sprint文件夹等指定自定义解压缩位置,但我希望自动维护项目依赖关系元数据。每次引用新的依赖项时,我都不想编辑nupsec。

作为尝试解决此问题,我尝试nuget打包csproj文件而不是nuspec。这维护了依赖关系元数据,但它使指定内容解压缩位置变得更加棘手。我可以做到以下几点:

<Content Include="Content\dist\images\brand-logo.svg">
  <Pack>true</Pack>
  <PackagePath>Content\Content\dist</PackagePath>
</Content>

但我无法找到bin文件夹的优雅解决方案。我只是觉得我做了一些根本错误的事情。

所以我的问题是,在从手动创建的nuspec文件创建nuget包时,如何自动维护项目依赖关系元数据?

我正在使用的包命令:

..\tools\nuget\nuget.exe pack $project + ".nuspec" -IncludeReferencedProjects -    
Properties Configuration=Release -Verbosity quiet -NonInteractive - 
OutputDirectory "$packagedirectory" -Version $buildVersion -Symbols

1 个答案:

答案 0 :(得分:0)

  

自动将项目依赖关系元数据添加到手动创建的nuspec文件

如果我理解你的错误,恐怕你已经自动将项目依赖关系元数据添加到手动创建的.nuspec文件中。您只需重建项目并重新打包.nuspec文件。

当您使用通配符包含引用的文件时,它将包含新添加的项目引用:

<file src="bin\**\*.*" target="bin" />

向项目添加新项目引用,然后重新构建项目,引用项目的dll文件将被复制到\bin文件夹,因此我们只需要重新打包{{1} } file,引用的项目元数据将包含在新创建的包中。

例如,向.nuspec项目添加Atest引用项目,然后重建项目并重新打包。Web.MyApp文件:

enter image description here

如果我误解你,请免费告诉我。