Xamarin vstool build 找不到 NuGet MSBuild 目标

Xamarin vstool build cannot find NuGet MSBuild targets

背景

我最近将我的 Xamarin.Forms 应用程序从 PCL 转换为 Net Standard 格式。 我的所有项目现在都在 csproj 文件中使用 PackageReference。这意味着不再有 package.configpackage.json.

我们使用 TFS 2015 来构建、签名和打包我们的 .ipa.apk 文件。转换后,默认的 MSBUILD 构建步骤不起作用,因为它们会寻找 mdtool,而新的 Visual Studio 有 vstool。因此,我更新了构建步骤以通过命令行使用新工具。

我现在所有的项目都是 NetStandard(包括 iOS 和 Android)。

问题

我可以在 Mac 构建服务器上使用 restore MySolution.sln -force 成功恢复 NuGet 包。但是当我 运行 vstool build MySolution.sln 之后,我得到这个错误:

error: NuGet packages need to be restored before building. NuGet MSBuild targets are missing and are needed for building. The NuGet MSBuild targets are generated when the NuGet packages are restored.

我能够 成功地 运行 nuget restorevstool build 在本地构建机器上。但只有当 TFS 运行 通过代理发送命令时,它才会显示该错误消息。

设置

构建:TFS 2015 on Mac agent 运行ning Visual Studio 7.5

根据错误和您的描述,您还需要检查您的构建代理是否具有相应的能力来支持vsbuild。

看看这个相关问题 MacOS - Visual Studio Support 并尝试使用此解决方法:

As a work around we set the Xamarin.iOS variable manually in the build agent and changed the mdtool path in the Xamarin iOS Build step to "/Applications/Visual Studio.app/Contents/MacOS/vstool".

此外,您也可以尝试使用上面评论中 Matt 的建议。

好的。我终于能够在 Mac 服务器上成功构建 iOS。这是有效的设置,

  • 在 iOS .csproj
  • 中使用 PackageReference
  • 没有 package.configproject.jsonAssemblyInfo.cs 文件。
  • 运行 nuget restore .sln 在构建 iOS 项目之前。
  • 使用 <path-to-vstool>\vstool build .sln -c:<configuration>
  • 构建解决方案

现在,我正在 Windows 机器上进行 Android 设置。一旦我开始工作,我将 post 我的发现在这里。