[英]Consuming nuget package containing .targets file via PackageReference
[英]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.