我正在尝试在Visual Studio Community 2017(版本15.9.5)中使用Xamarin.forms创建跨平台移动应用程序。
创建项目后,我更新了NuGet软件包,并收到3个错误和1个警告(注意:我根本没有编写任何代码)。
下面您可以找到我的详细操作过程和详细的错误消息。
我单击文件>新建>项目> Visual C#>跨平台>移动应用程序(Xamarin.Forms)。
我为我的项目命名,并提示我选择一个模板,然后选择“空白应用程序”。
对于平台,我选择全部3种(iOS,Android,UWP),并且作为代码共享策略,我选择“ Shared Project”。
创建项目后,我打开NuGet软件包管理器并更新我的所有软件包,在这里您可以看到它们的最新版本。 更新软件包后,我会收到7条警告和1条错误。我清理并重建了解决方案,但我不断收到这些错误和警告,尽管它们有时会更改,而无需我进行任何更改。
我可能会看到7条警告,没有错误,请关闭项目,然后再次打开它,进行重建,并得到3条错误和1条警告。
这是完整的输出:
1> ------重建全部开始:项目:Bencivenga_Gioele_Bengalino.Android,配置:调试任何CPU ------ 2> ------跳过全部重建:项目:Bencivenga_Gioele_Bengalino.iOS,配置:调试iPhone ------ 2>未选择要为此解决方案配置构建的项目 3> ------重建全部开始:项目:Bencivenga_Gioele_Bengalino.UWP,配置:调试x86 ------ 1> C:\ Program Files(x86)\ Microsoft Visual Studio \ 2017 \ Community \ MSBuild \ Xamarin \ Android \ Xamarin.Android.Common.targets(3064,2):error:指定的路径,文件名或两者都是太长。完全限定的文件名必须少于260个字符,目录名称必须少于248个字符。 1> C:\ Program Files(x86)\ Microsoft Visual Studio \ 2017 \ Community \ MSBuild \ Xamarin \ Android \ Xamarin.Android.Common.targets(1327,2):错误XA4303:从“ C:\ Users \ gioel.nuget \ packages \ xamarin.android.support.compat \ 28.0.0.1 \ lib \ monoandroid81 \ Xamarin.Android.Support.Compat.dll“:System.IO.PathTooLongException:指定的路径,文件名或两者都是太长。完全限定的文件名必须少于260个字符,目录名称必须少于248个字符。 1> C:\ Program Files(x86)\ Microsoft Visual Studio \ 2017 \ Community \ MSBuild \ Xamarin \ Android \ Xamarin.Android.Common.targets(1327,2):错误XA4303:位于System.IO.LongPathHelper.Normalize(字符串路径,UInt32 maxPathLength,布尔值checkInvalidCharacters,布尔值expandShortPaths) 1> C:\ Program Files(x86)\ Microsoft Visual Studio \ 2017 \ Community \ MSBuild \ Xamarin \ Android \ Xamarin.Android.Common.targets(1327,2):错误XA4303:位于System.IO.Path.NewNormalizePath(字符串路径,Int32 maxPathLength,布尔布尔expandShortPaths) 1> C:\ Program Files(x86)\ Microsoft Visual Studio \ 2017 \ Community \ MSBuild \ Xamarin \ Android \ Xamarin.Android.Common.targets(1327,2):错误XA4303:位于System.IO.Path.NormalizePath(字符串路径,布尔型fullCheck,Int32 maxPathLength,布尔型expandShortPaths) 1> C:\ Program Files(x86)\ Microsoft Visual Studio \ 2017 \ Community \ MSBuild \ Xamarin \ Android \ Xamarin.Android.Common.targets(1327,2):错误XA4303:位于System.IO.Path.GetFullPathInternal(字符串路径) 1> C:\ Program Files(x86)\ Microsoft Visual Studio \ 2017 \ Community \ MSBuild \ Xamarin \ Android \ Xamarin.Android.Common.targets(1327,2):错误XA4303:位于Xamarin.Android.Tools.Files。 ExtractAll(ZipArchive邮编,字符串目标,Action
2 progressCallback, Func
2 ModifyCallback,Func2 deleteCallback, Boolean forceUpdate) 1>C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\Xamarin\Android\Xamarin.Android.Common.targets(1327,2): error XA4303: at Xamarin.Android.Tasks.ResolveLibraryProjectImports.Extract(DirectoryAssemblyResolver res, ICollection
1个jar,ICollection1 resolvedResourceDirectories, ICollection
1 resolveAssetDirectories,ICollection`1 resolveEnvironments) 3> Bencivenga_Gioele_Bengalino.UWP-> C:\ Users \ gioel \ Documents \ Repositories \ GitHub \ BengalinoUWP \ Bencivenga_Gioele_BengalinoApp \ Bencivenga_Gioele_Bengalino \ Bencivenga_Gioele_Bengalino \ Bencivenga_x。 3> C:\ Users \ gioel.nuget \ packages \ microsoft.net.uwpcoreruntimesdk \ 2.1.2 \ tools \ CoreRuntime \ Microsoft.Net.CoreRuntime.targets(195,9):错误:框架资源提取失败。指定的路径,文件名或两者都太长。完全限定的文件名必须少于260个字符,目录名称必须少于248个字符。 ===========全部重建:0成功,2失败,1跳过==========
我在网上搜索了一个解决方案,并发现了一些建议使用LongPathTool的旧线程,以消除最大260个字符的问题,但他们的指示是“只要安装它就可以了”,那么,这样做不是。没什么对我有用。
感谢您阅读问题,如果您对这个问题有任何想法或建议,我们将非常感谢。随时询问更多细节。
答案 0 :(得分:2)
将您的项目移至C://
的根目录,通常可以解决该特定错误。
尝试在C:\Users\
中创建一个名为XamarinProjects的文件夹,然后将解决方案放在此处。
经过一番挖掘,我发现了这一点:
<PropertyGroup>
<UseShortFileNames>True</UseShortFileNames>
</PropertyGroup>
如果设置此标志不能解决PathTooLongException错误,另一种方法是通过在项目.csproj文件中设置IntermediateOutputPath为解决方案中的项目指定公共的中间输出根。尝试使用相对较短的路径。例如:
<PropertyGroup>
<IntermediateOutputPath>C:\Projects\MyApp</IntermediateOutputPath>
</PropertyGroup>