2016-12-03 35 views
0

我在appveyor.yml以下after_build定义:如何使用AppVeyor和GitVersion中的特定版本将项目作为包依赖项引用?

after_build: 
- cmd: nuget pack "%project_file%" -properties "Configuration=%configuration%" -version "%GitVersion_NuGetVersion%" -symbols 
- cmd: nuget pack "%extras_project_file%" -properties "Configuration=%configuration%" -version "%GitVersion_NuGetVersion%" -symbols 

现在,我有这两个.proj -files,其中包含相应的.nuspec -file:

<?xml version="1.0"?> 
<package > 
    <metadata> 
    <id>$id$</id> 
    <version>$version$</version> 
    <authors>$author$</authors> 
    </metadata> 
</package> 

最后,我有一点点增加为extras_project_file

<?xml version="1.0"?> 
<package > 
    <metadata> 
    <id>$id$</id> 
    <version>$version$</version> 
    <authors>$author$</authors> 
    <dependencies> 
     <dependency id="***project_name***" version="$version$" /> 
    </dependencies> 
    </metadata> 
</package> 

实际上,project_name由于简单原因被替换为硬编码值 - 没有使用-properties注入。其次,尽管对于实际包装是强制性的,但任何项目相关要素(例如descriptionauthors)都被忽略以提供中性问题。

project_file被成功地填充:

试图从 'Caliburn.Micro.Contrib.Controller.csproj' 建立包。
MSBuild自动检测:从'C:\ Program Files(x86)\ MSBuild \ 14.0 \ bin'使用msbuild版本'14.0'。
打包来自'C:\ projects \ dotnet-caliburn-micro-contrib-controller \ src \ Caliburn.Micro.Contrib.Controller \ bin \ Release'的文件。
将'Caliburn.Micro.Contrib.Controller.nuspec'用于元数据。
找到packages.config。使用作为依赖关系列出的软件包
已成功创建软件包'C:\ projects \ dotnet-caliburn-micro-contrib-controller \ Caliburn.Micro.Contrib.Controller.0.1.0-unstable0068.nupkg'。

鉴于extras_project_file失败:

试图从 'Caliburn.Micro.Contrib.Controller.Extras.csproj' 建立包。
MSBuild自动检测:从'C:\ Program Files(x86)\ MSBuild \ 14.0 \ bin'使用msbuild版本'14.0'。
打包来自'C:\ projects \ dotnet-caliburn-micro-contrib-controller \ src \ Caliburn.Micro.Contrib.Controller.Extras \ bin \ Release'的文件。
使用'Caliburn.Micro.Contrib.Controller.Extras.nuspec'作为元数据。
找到packages.config。使用列为依赖项的软件包
不支持使用SemVer 2.0.0的版本:0.1.0-unstable.68 + Branch.develop.Sha.7f85e35f315f7fe3ecd35762b65802e5467a57c2。

我甚至不确定此功能(代码替换<dependencies>)是否实际可用。

如果不是,我还能如何将两个.csproj文件打包成两个单独的.nupkg文件,其中一个文件依赖于另一个版本与特定版本(与要构建的包相同的版本)?

回答

0

我已经找到了这种情况的一种方法 - 但它错过%AssemblyInformationalVersion%作为一个属性被加盖在最终的.dll-文件中(所以我需要检查GitVersionInformation-类的实际值)。

我加了assembly-informational-format: '{LegacySemVerPadded}'GitVersion.yml

接下来,我删除了额外的dependencies -element中的.nuspec,所以两者再次匹配(=重置)。

最后,我适应我的after_build

after_build: 
    cmd: nuget pack "%project_file%" -properties "Configuration=%configuration%" -symbols 
    cmd: nuget pack "%extras_project_file%" -properties "Configuration=%configuration%" -IncludeReferencedProjects -symbols 
相关问题