簡體   English   中英

是否可以將 OctoPack 與新的 PackageReference NuGet 格式一起使用?

[英]Is it possible to utilize OctoPack with the new PackageReference NuGet format?

我們最近升級了我們的程序集,為 NuGet 依賴項使用PackageReference格式而不是packages.config 執行此操作后,其中一個包OctoPack停止工作。 有什么辦法可以讓OctoPack在仍然使用PackageReference格式的同時工作?

是的,但您必須使用Octo.exe pack (與 ASP.NET Core 應用程序的過程相同)

是的。 最近的 Nuget 版本將為 obj/xxx.csproj.nuget.g.targets 文件中的 MSBuild 任務自動生成導入。

如果沒有...

使用packages.config 時,Nuget 會向您的csproj 添加類似的內容。

<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
<PropertyGroup>
  <ErrorText>This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them.  For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
</PropertyGroup>
<Error Condition="!Exists('..\packages\OctoPack.3.6.4\build\OctoPack.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\OctoPack.3.6.4\build\OctoPack.targets'))" />

<Import Project="..\packages\OctoPack.3.6.4\build\OctoPack.targets" Condition="Exists('..\packages\OctoPack.3.6.4\build\OctoPack.targets')" />

甚至之前,EnsureNuGetPackageBuildImports 目標可能已經存在。

如果你將它添加到你的 csproj(或者保留它,如果你從 packages.config 轉換)它仍然可以工作。 問題是包沒有存儲在“..\\packages”中。

這很容易通過將例如“..\\packages\\OctoPack.3.6.4”替換為“$(NuGetPackageRoot)\\octopack\\3.6.4”來解決。 當然你需要PackageReference來octopack。 將包放在 $(NuGetPackageRoot) 中進行還原操作就足夠了。

YMMV,但它對我有用,無論是在本地還是在 CI (TeamCity)

暫無
暫無

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

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