繁体   English   中英

为什么将 Xamarin Android.csproj 加载到 Microsoft.Build.Evaluation.Project 中会由于 missing.targets 文件而抛出 InvalidPropectFileException?

[英]Why does loading a Xamarin Android .csproj into a Microsoft.Build.Evaluation.Project throw InvalidPropectFileException due to missing .targets file?

我正在尝试使用Microsoft.Build.Evaluation.Project的实例在 .NET 5.0 控制台应用程序中打开 Xamarin Android.csproj 文件。 此外,我还尝试对 .NET Framework 4.6.1 项目执行相同的操作。

加载代码为:

var fileName = @"C:\Users\vchel\source\repos\BlankAndroid\BlankAndroid\BlankAndroid.csproj";
var project = new global::Microsoft.Build.Evaluation.Project(fileName, null, null, new ProjectCollection());

当我尝试实例化Project object 时,出现以下异常:

Microsoft.Build.Exceptions.InvalidProjectFileException: 
The imported project "C:\Users\vchel\source\repos\ProjectLoadTest\ProjectLoadTest\bin\Debug\net5.0\Xamarin\Android\Xamarin.Android.CSharp.targets" was not found.
Confirm that the expression in the Import declaration "C:\Users\vchel\source\repos\ProjectLoadTest\ProjectLoadTest\bin\Debug\net5.0\Xamarin\Android\Xamarin.Android.CSharp.targets" is correct, and that the file exists on disk.  C:\Users\vchel\source\repos\BlankAndroid\BlankAndroid\BlankAndroid.csproj

上面错误中引用的 Xamarin.Android.CSharp.targets 文件出现在我正在加载的 .csproj 中,如以下代码片段所示:

  <Import Project="$(MSBuildExtensionsPath)\Xamarin\Android\Xamarin.Android.CSharp.targets" />

请注意,.csproj 引用带有$(MSBuildExtensionPath)前缀的 Xamarin.Android.CSharp.targtets 文件,但在运行时,它与正在运行的控制台 application.exe 的位置交换,而不是

我尝试加载的 Android 项目在 Visual Studio 中正确打开并且编译/运行没有问题。

为什么这个 Android 项目在 Visual Studio 中打开没有任何问题,但在Microsoft.Build.Evaluation.Project object 中尝试打开时却失败了?

看来我之前确实遇到过同样的问题,但它不在 Android 项目中,所以我将把这个问题留在这里以解决特定于 Android 的问题。

一般的问题在这里讨论:

如何使用 MSBuild NuGet 将.csproj 文件加载到 .NET Core 3.0

总结是——.target 文件与正在安装的 nuget 包是分开的,而且项目 class 似乎无法解析 $(MSBuildExtensionsPath)。 因此,要解决此问题,应将相关的.targets文件添加到项目中并复制到output(bin)文件夹中。

在我的机器上,可以在以下位置找到原始文件:

C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Xamarin\Android

我必须将以下文件添加到我的应用程序中。 请注意,它们已添加到Xamarin/Android/文件夹中:

在此处输入图像描述

如果较新,项目可以标记为复制

在此处输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM