簡體   English   中英

OctoPack不填充nuspec文件中的占位符

[英]OctoPack not populating placeholders in nuspec file

我有很多項目的解決方案,其中大約有十幾個安裝了Octopack,並且在TeamCity運行msbuild /p:RunOctoPack=true /p:OctoPackEnforceAddingFiles=true時可以正確生成軟件包。 您可能從p:/OctoPackEnforceAddingFiles標志可以看出,每個安裝了Octopack的項目也都有一個nuspec文件。

我們遇到的問題是Octopack不遵守https://docs.microsoft.com/en-gb/nuget/reference/nuspec#replacement-tokens中指定的nuspec占位符。 我們現在要使用的一個是$id$ ,它應該等於要打包的項目的程序集名稱。 相反,當我們運行Octpack時,該$id$令牌為空。

我可以在https://octopus.com/docs/packaging-applications/creating-packages/nuget-packages/using-octopack#UsingOctoPack-Replacement令牌中看到,Octopack允許一個人手動覆蓋這些令牌,但這對我沒有幫助由於Octopack是在解決方案上運行 ,但是我需要打包的項目的名稱。

我該怎么辦才能解決此問題? 目前,我們基本上已經在nuspec文件中硬編碼了項目名稱,但這變得很脆弱和笨拙,我們希望對其進行修復。

我通過將以下內容添加到csproj文件中來進行工作

  <PropertyGroup>
      <OctoPackNuGetProperties>id=$(AssemblyName)</OctoPackNuGetProperties>
  </PropertyGroup>

這會將程序集名稱作為id傳遞給Octo.exe,后者又將通過其-Properties參數將其傳遞給NuGet.exe。

您是否嘗試過完全不在 NuSpec中提供$id$部分? Octopack應該嘗試生成它(它知道將它應用於什么 )?

另一種選擇是使用帶有$(ProjectName)宏的pre-build事件來更新相關的nuspecs。 在您的情況下,根據您的構建過程,可能會堅持使用解決方案范圍的預構建過程來更新所有nuspec。

PS我個人放棄使用Octopack,目前使用Fake(F#Make)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM