当我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
答案 0 :(得分:0)
自动将项目依赖关系元数据添加到手动创建的nuspec文件
如果我理解你的错误,恐怕你已经自动将项目依赖关系元数据添加到手动创建的.nuspec
文件中。您只需重建项目并重新打包.nuspec
文件。
当您使用通配符包含引用的文件时,它将包含新添加的项目引用:
<file src="bin\**\*.*" target="bin" />
向项目添加新项目引用,然后重新构建项目,引用项目的dll文件将被复制到\bin
文件夹,因此我们只需要重新打包{{1} } file,引用的项目元数据将包含在新创建的包中。
例如,向.nuspec
项目添加Atest
引用项目,然后重建项目并重新打包。Web.MyApp
文件:
如果我误解你,请免费告诉我。