UWP和Xamarin生成失败,无输出

时间:2018-12-20 22:08:01

标签: visual-studio xamarin uwp msbuild

我尝试创建在Visual Studio中利用Xamarin的Android项目和跨平台项目。当我构建甚至是一个空项目时,它似乎立即失败,似乎没有执行任何工作。

没有列出任何错误或警告。

输出窗口具有项目名称和: Build: 0 succeeded, 2 failed, 0 up-to-date, 0 skipped

启动项目时,我收到消息框,警告我有关意外的记录器故障,有时对话框会引用MuxLogger。这是不一致的,消息略有不同,有时根本没有出现。这是一个例子: MuxLogger failure

偶然地,我尝试手动构建以获取更多输出,我得到了:

Unhandled Exception: System.TypeLoadException: Could not load type 'Microsoft.Build.Logging.ProfilerLogger' from assembly 'Microsoft.Build, Version=15.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.
  at System.Signature.GetSignature(Void* pCorSig, Int32 cCorSig, RuntimeFieldHandleInternal fieldHandle, IRuntimeMethodInfo methodHandle, RuntimeType declaringType)
  at System.Reflection.RuntimeMethodInfo.FetchNonReturnParameters()
  at System.Reflection.RuntimeMethodInfo.GetParameters()
  at System.Diagnostics.StackTrace.ToString(TraceFormat traceFormat)
  at System.Environment.GetStackTrace(Exception e, Boolean needFileInfo)
  at System.Exception.GetStackTrace(Boolean needFileInfo)
  at System.Exception.ToString(Boolean needFileLineInfo, Boolean needMessage)
  at System.Exception.ToString()
  at Microsoft.Build.CommandLine.MSBuildApp.Execute(String commandLine)
  at Microsoft.Build.CommandLine.MSBuildApp.Main()

请注意,我可以构建很多其他项目类型,例如Web项目和MonoGame项目。

1 个答案:

答案 0 :(得分:3)

最终,这证明与全局程序集缓存(GAC)中安装的MSBuild的旧版本有关。要进行检查,请首先打开VS2017的Developer Command Prompt实例。然后将GAC中的程序集输出到文件中以便于查看:

gacutil -l >> someFile.txt

查找以Microsoft.Build开头的任何内容,尤其是包含Version=15.X的行(提示,这些行不会按顺序输出,因此请按字母顺序对行进行排序)。

卸载所有以Microsoft.Build开头的内容,其中可能包括Microsoft.Build.Framework,Microsoft.Build等。这不应安装版本<15的Microsoft.Build版本。命令:

gacutil -u Microsoft.Build

gacutil -u Microsoft.Build.Framework

这应该使您的项目能够使用正确版本的MSBuild并成功编译。