.net tfs build-仅使用nuspec的nuget包项目
我在TFS 2015中有一个构建定义 此生成定义由主控提交触发,应生成项目、运行所有测试并发布包含的.nuspec文件的项目的Nuget包 我的问题是,我只想打包包含.nuspec文件的项目,而不是任何项目 我知道我可以在路径/模式中指定“***.nuspec”,但是我必须显式地指定id、title、version、desc等。。。对于每一个nuspec,我希望它从组件信息中获取 有没有办法得到它.net tfs build-仅使用nuspec的nuget包项目,.net,visual-studio,build,nuget,.net,Visual Studio,Build,Nuget,我在TFS 2015中有一个构建定义 此生成定义由主控提交触发,应生成项目、运行所有测试并发布包含的.nuspec文件的项目的Nuget包 我的问题是,我只想打包包含.nuspec文件的项目,而不是任何项目 我知道我可以在路径/模式中指定“***.nuspec”,但是我必须显式地指定id、title、version、desc等。。。对于每一个nuspec,我希望它从组件信息中获取 有没有办法得到它 Arik。生成时,.nuspec将不获取程序集信息。我们需要修改id、标题、版本等。。。手动 因
Arik。生成时,.nuspec将不获取程序集信息。我们需要修改id、标题、版本等。。。手动
因此,我们只需要直接打包.csproj文件,它将获取生成的包的程序集信息。您可以创建一个命令行任务来手动执行此操作:
for /f "delims=" %%a in ('dir /s/b *.nuspec') do nuget pack %%~dpa%%~na.csproj -IncludeReferencedProjects -Properties Configuration=Release
您还可以使用最小nuspec文件(对于假定为NUGET包的每个项目都相同)来利用AssemblyInfo中的元数据:
<?xml version="1.0"?>
<package >
<metadata>
<id>$id$</id>
<version>$version$</version>
<title>$title$</title>
<authors>Puresharp</authors>
<owners>Puresharp</owners>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<description>$id$.$version$</description>
<releaseNotes></releaseNotes>
<copyright>$copyright$</copyright>
<tags>Puresharp</tags>
</metadata>
</package>
$id$
$version$
$title$
纯净的
纯净的
假的
$id$.$版本$
$版权所有$
纯净的
你的意思是:“知道我可以在路径/模式中指定“***.nuspec”?@JeroenHeier你说得对,我已经解决了。谢谢。使用csproj文件有很多好处(例如自动查找包依赖项)。如果您不想创建自定义/自定义任务,使用项目名称可能更经济。@JeroenHeier所以我应该继续在nuget packager中使用.csproj文件吗?那么我该如何解决我的问题呢?您可以更改您使用的模式和/或使用不同的模式/项目文件添加更多NuGet packager任务,但如果我修改.nuspec文件,我将不得不继续维护每个版本,这不是我所希望的,我希望包信息可以从组装信息中获取,这样我就不必维护它两次。我可以将nuspec创建添加为构建定义的一部分,但这样我就无法决定哪些项目需要作为nuget包,哪些项目不需要,该解决方案的所有项目都将发布到NUGETT。这是当前版本的nuget在为包项目生成nuspec文件时的默认操作。如果您不能决定哪些项目将作为nuget包生成,为什么要为每个项目创建.nuspec文件?