我们最近升级了我们的程序集以使用该PackageReference
格式而不是packages.config
我们的 NuGet 依赖项。执行此操作后,其中一个包 ,OctoPack
停止工作。有什么方法可以OctoPack
在仍然使用该PackageReference
格式的同时开始工作吗?
问问题
440 次
2 回答
1
是的。最近的 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)中都适用于我
于 2020-01-07T17:21:57.673 回答
1
是的,但您必须使用Octo.exe pack
(与 ASP.NET Core 应用程序相同的过程)
于 2019-03-26T12:24:48.447 回答