visual studio在线通用应用

Universal application with visual studio online

我目前正在 Visual Studio 在线 (VSO) 中设置项目,但在设置自动构建时遇到了问题。 我的解决方案包含目标为 Universal Windows 的项目 VSO 使用 msbuild 运行 我的项目。

在构建过程中,我看到奇怪的错误消息,例如:

    Error CS0518: Predefined type 'System.Void' is not defined or imported
    Error CS0518: Predefined type 'System.Object' is not defined or imported
    Error CS0246: The type or namespace name 'Uri' could not be found (are you missing a using directive or an assembly reference?)

msbuild 使用以下参数调用:

    C:\Program Files (x86)\MSBuild.0\bin\amd64\msbuild.exe "C:\a\b0d9e3fd\test\src\Shipping.sln" /nologo /m /nr:false /fl /flp:"logfile=C:\a\b0d9e3fd\test\src\Shipping.sln.log" /dl:CentralLogger,"C:\LR\MMS\Services\Mms\TaskAgentProvisioner\Tools\agent\worker\Microsoft.TeamFoundation.DistributedTask.MSBuild.Logger.dll"*ForwardingLogger,"C:\LR\MMS\Services\Mms\TaskAgentProvisioner\Tools\agent\worker\Microsoft.TeamFoundation.DistributedTask.MSBuild.Logger.dll" /p:Platform=Win32 /p:TargetVersion=”Windows10” /p:TargetPlatformVersion=”10.0.10010.0” /p:platform="any cpu" /p:configuration="release" /p:VisualStudioVersion="14.0"

这是怎么回事?使用 msbuild 构建通用 windows 应用程序是否需要其他任何其他参数?

您的目标是 Windows 10 SDK 吗?如果是这样,请注意它是 not 安装在 TFS 托管构建服务器上。因此,您将无法构建使用 Windows 10 SDK 的应用程序。可以看到the complete list of installed software here.

刚刚找到解决方案。

如果构建 UWP 应用程序,它会从 VS 自动解析 NuGet 依赖项。默认情况下,VS 10 项目使用第 3 版的 NuGet,它没有安装在我们的构建机器上。这就是为什么我们有这样的问题。 通过在构建代理上安装 NuGet 3 并配置在构建前解析 NuGet 包的脚本解决了这个问题。

如果您无法自定义构建代理(又名:免费托管代理)的软件,另一个解决方法是签入您的 project.lock.json 文件。

这是因为 NuGet v2.8.7 可以读取 project.jsonproject.lock.json 文件,但它无法从 project.json 文件生成 project.lock.json 文件。

并且,如果此时 Microsoft 为其默认构建代理更新了 NuGet,您只需将其从源代码管理中删除并让它作为 Nuget -restore 的一部分自动生成。在那之前,只需签入即可。