Msbuild 是否可以将OctoPack与新的PackageReference NuGet格式一起使用?
我们最近升级了程序集,以使用Msbuild 是否可以将OctoPack与新的PackageReference NuGet格式一起使用?,msbuild,nuget,octopack,packagereference,Msbuild,Nuget,Octopack,Packagereference,我们最近升级了程序集,以使用PackageReference格式,而不是packages.config作为我们的NuGet依赖项。其中一个软件包,OctoPack,在执行此操作后停止工作。在仍然使用PackageReference格式的情况下,是否有办法让OctoPack工作?是的,但您必须使用Octo.exe pack(与ASP.NET核心应用程序的过程相同)是的。最新的Nuget版本将在obj/xxx.csproj.Nuget.g.targets文件中自动生成MSBuild任务的导入 如果没
PackageReference
格式,而不是packages.config
作为我们的NuGet依赖项。其中一个软件包,OctoPack
,在执行此操作后停止工作。在仍然使用PackageReference
格式的情况下,是否有办法让OctoPack
工作?是的,但您必须使用Octo.exe pack
(与ASP.NET核心应用程序的过程相同)是的。最新的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'))" />
此项目引用此计算机上缺少的NuGet包。启用NuGet软件包还原以下载它们。有关详细信息,请参阅http://go.microsoft.com/fwlink/?LinkID=322105. 缺少的文件是{0}。
及
EnsureRenugetPackageBuildImports目标很可能已经存在,甚至更早
如果你把它添加到你的csproj中(或者保留它,如果你从packages.config转换过来的话),它仍然可以工作。问题是包未存储在“.\packages”中
通过将“.\packages\OctoPack.3.6.4”替换为“$(NuGetPackageRoot)\OctoPack\3.6.4”,可以轻松解决此问题。当然,您需要使用PackageReference到octopack。将包放入$(NuGetPackageRoot)中进行恢复操作就足够了
YMMV,但它对我有效,无论是在本地还是在CI(TeamCity)
<Import Project="..\packages\OctoPack.3.6.4\build\OctoPack.targets" Condition="Exists('..\packages\OctoPack.3.6.4\build\OctoPack.targets')" />