我正在使用最近发布的 Visual Studio 2015 Preview 以及 Visual Studio 的 Xamarian Studio 5.6.3(或 5.6.2)扩展。
经过数小时下载和安装所有必需的软件(全部成功)后,我开始在 VS2015P 中开发 Android 应用程序,但每次创建空白 Android 应用程序时,我都会收到此错误,没有错误代码:
没有为“MergeApkRecipelists”任务指定所需参数“RecipeFiles”的值。
我正在使用最近发布的 Visual Studio 2015 Preview 以及 Visual Studio 的 Xamarian Studio 5.6.3(或 5.6.2)扩展。
经过数小时下载和安装所有必需的软件(全部成功)后,我开始在 VS2015P 中开发 Android 应用程序,但每次创建空白 Android 应用程序时,我都会收到此错误,没有错误代码:
没有为“MergeApkRecipelists”任务指定所需参数“RecipeFiles”的值。
通过查看 Xamarin 的 .targets 文件发现了这一点。
精简版
您可以:
或者
Import
%PROGRAMFILES(x86)%\MSBuild\Xamarin\Android\Xamarin.Android.Common.After.targets 中定义的元素。请注意,这可能会禁用对向 Xamarin Android 项目添加 C++ 项目引用的支持。完成其中一项操作后,您的 Xamarin Android 项目应该会生成并运行。
长版
首先,注意VS输出窗口中的错误:
C:\Program Files (x86)\MSBuild\Xamarin\Android\Xamarin.Android.Common\ImportAfter\Microsoft.Cpp.Android.targets(54,9): error MSB4044: The "MergeApkRecipelists" task was not given a value for the required parameter "RecipeFiles".
错误中提到的 Microsoft.Cpp.Android.targets 文件看起来都是关于支持对 C++ 项目的项目引用。其中,MergeApkRecipelists
任务的元素如下所示:
<!-- language: lang-xml -->
<MergeApkRecipelists RecipeFiles="@(_NativeAndroidRecipeFiles)">
...
</MergeApkRecipelists>
该NativeAndroidRecipeFiles
变量似乎没有在 .targets 文件中定义,因此推测它正在由构建过程初始化。但由于 .targets 文件似乎旨在支持 C++ 项目引用,因此我尝试将 Android C++ 共享库项目添加到我的解决方案中:
然后我从我的 Xamarin Android 项目中引用了 C++ 项目,瞧!之后的构建和运行是成功的。
但是由于必须引入一个虚拟库非常繁重,我还追踪了 Xamarin 的 Microsoft.Cpp.Android.targets 文件被拉入的位置。这发生在 C:\Program Files (x86)\MSBuild\Xamarin\Android \Xamarin.Android.Common.After.targets 文件,它有一个Import
元素:
<!-- language: lang-xml -->
<Import Project="$(MSBuildThisFileDirectory)\Xamarin.Android.Common\ImportAfter\*"
Condition="Exists('$(MSBuildThisFileDirectory)\Xamarin.Android.Common\ImportAfter')"/>
这会带来 %PROGRAMFILES(x86)\MSBuild\Xamarin\Android\Xamarin.Android.Common\ImportAfter 下的所有内容。由于该目录中唯一的项目是我们要排除的 .targets 文件,因此可以将其注释掉而不会影响其他任何内容。但请注意,由于此 .targets 文件似乎是支持从 Xamarin Android 项目中引用 C++ 项目的一部分,因此将其注释掉可能意味着它将不再正常工作。
Import
注释掉该语句后,Xamarin Android 项目应该在没有任何 C++ 引用的情况下构建和运行。
只需在 C:\Program Files (x86)\MSBuild\Xamarin\Android\Xamarin.Android.Common\ImportAfter\Microsoft.Cpp.Android.targets 的目标文件的第 54 行添加以下条件:
<MergeApkRecipelists RecipeFiles="@(_NativeAndroidRecipeFiles)" Condition="'@(_NativeAndroidRecipeFiles)' != ''">
注意:这个永久修复将很快在 Alpha 通道中发布。
从http://developer.xamarin.com/releases/vs/xamarin.vs_3/xamarin.vs_3.9/更新 Xamarin 我做到了,它可以工作。
尝试将 Xamarin 更新到 3.9。 更新