“GenerateJavaStubs”任务失败

16

目前我因为这个问题而感到十分苦恼,错误导致我无法构建和运行我的应用程序。它是一个PCL项目。

   Error The "GenerateJavaStubs" task failed unexpectedly.
   System.IO.PathTooLongException: The specified path, file name, or both are  too long. The fully qualified file name must be less than 260 characters, and the directory name must be less than 248 characters.
   at System.IO.PathHelper.GetFullPathName()
   at System.IO.Path.NormalizePath(String path, Boolean fullCheck, Int32 maxPathLength, Boolean expandShortPaths)
   at System.IO.Path.GetFullPathInternal(String path)
   at System.IO.Path.GetFullPath(String path)
   at Xamarin.Android.Tasks.GenerateJavaStubs.Run()
   at Xamarin.Android.Tasks.GenerateJavaStubs.Execute()
   at Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute()
   at Microsoft.Build.BackEnd.TaskBuilder.<ExecuteInstantiatedTask>d__26.MoveNext() ConstructionMobileApp.Droid C:\Program Files (x86)\MSBuild\Xamarin\Android\Xamarin.Android.Common.targets   1574    

我的PCL程序集信息:

using System.Resources;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;

[assembly: AssemblyTitle("ConstructionMobileApp")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("ConstructionMobileApp")]
[assembly: AssemblyCopyright("Copyright ©  2014")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
[assembly: NeutralResourcesLanguage("en")]

[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]

Android 汇编信息:

using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using Android.App;


[assembly: AssemblyTitle("ConstructionMobileApp.Droid")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("ConstructionMobileApp.Droid")]
[assembly: AssemblyCopyright("Copyright ©  2014")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
[assembly: ComVisible(false)]

[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]

[assembly: UsesPermission(Android.Manifest.Permission.Internet)]
[assembly: UsesPermission(Android.Manifest.Permission.WriteExternalStorage)]

3
你试图编译的项目路径是什么?Windows对路径名有限制,因此尝试将项目移动到更短的路径。例如,如果你正在使用默认的项目路径C:\ Users \ YourUserName \ Documents \ VisualStudio2015 \ Projects \ something,那么可以将其复制到c:\ Dev。 - JimBobBennett
谢谢!我只是将我的项目复制到一个新位置并打开它,错误就消失了。本来会将其标记为答案的。 - zen_1991
2个回答

28

您尝试编译的项目路径是什么?

Windows对文件路径名称有限制,因此请尝试将项目移动到一个更短的路径中。
例如,如果您使用的是默认项目路径 C:\Users\YourUserName\Documents\VisualStudio2015\Projects\something,则可以将其复制到C:\Dev


这对我的帮助很大!谢谢你。 - GvSharma

9

试着在你的项目中添加这个msbuild属性,它能缩短obj目录下的文件/文件夹名称。

注:本文参考自此处

<PropertyGroup>
    <UseShortFileNames>True</UseShortFileNames>
</PropertyGroup>

或者使用以下方法将输出文件夹更改为更靠近 C:\ 的一个文件夹

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
    <IntermediateOutputPath>C:\MyFolder\MyProj</IntermediateOutputPath>
</PropertyGroup>

希望这能帮到你。

1
这应该是被接受的答案。 - Jan C. de Graaf
2
添加IntermediateOutputPath完美运行。使用ShortFileName没有。 - E. A. Bagby

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接