2016-12-03 67 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