【问题标题】:Xamarin.Forms System.ArgumentException: Illegal characters in pathXamarin.Forms System.ArgumentException:路径中的非法字符
【发布时间】:2019-12-19 01:49:54
【问题描述】:

我是 Xamarin.Forms 项目的新手。我用 VS2019 创建了一个项目,该项目没有以任何方式修改,在 Android 设备管理器中添加了一个 Pixel 2 Pie 9.0 - Api 28 模拟器。当我尝试在 android 模拟器上运行项目时,我无法运行我的应用程序,我的错误列表中有以下异常:

Error       XARDF7004: System.ArgumentException: Illegal characters in path.
   at System.Security.Permissions.FileIOPermission.EmulateFileIOPermissionChecks(String fullPath)
   at System.Security.Permissions.FileIOPermission.QuickDemand(FileIOPermissionAccess access, String fullPath, Boolean checkForDuplicates, Boolean needFullPath)
   at System.IO.Directory.Delete(String fullPath, String userPath, Boolean recursive, Boolean checkHost)
   at Xamarin.Android.Tasks.RemoveDirFixed.RunTask()
   at Xamarin.Android.Tasks.AndroidTask.Execute()   

由于我只是使用VS2019生成的基本项目模板,这必须是微软端的一个错误。我该如何解决他们的错误?

【问题讨论】:

  • 您的项目/解决方案/目录结构是否包含任何非标准字符?
  • @Jason 我不这么认为,但它很长,我可以尝试一条更短的路径,也许可以解决它:C:\Users\david\Dropbox\Projects\Visual Studio\ PriceWatch\PriceWatch\PriceWatchXamarinForms\PriceWatchXamarinForms 这个结构是IDE生成的,不太清楚为什么有些文件夹是多余的。
  • VS 在构建过程中会生成很多文件,我不确定将您的项目放在 Dropbox 文件夹中是否是个好主意。
  • @Jason 将我的解决方案位置更改为 C:\Projects\ 解决了问题。我将它们放在我的 DropBox 文件夹中,因为如果我的 PC 出现问题,我不想丢失我的工作。我应该只使用 U 盘进行备份吗?
  • 学习使用源代码管理。 github 和 Azure 都提供免费的 repos

标签: android xamarin xamarin.forms


【解决方案1】:

这与我的解决方案文件夹的字符长度有关。

C:\Users\david\Dropbox\Projects\Visual Studio\PriceWatch\PriceWatch\PriceWatchXamarinForms\PriceWatchXamarinForms

(这个臃肿的结构是IDE生成的,Visual Studio文件夹之后的一切)

我将其更改为C:\Projects\PriceWatch\PriceWatchXamarinForms,然后它就起作用了。

【讨论】:

  • 感谢分享。不要忘记接受答案。
  • 我一直在研究这个.. 我认为标记大约是 64 个字符。我在几个文件夹中尝试过,操作名称、空格、连字符等。空格似乎不会影响它,但在 64 标记附近的某个地方有:“C:\tmp\TestFolder\AdditionalCharacters\Subfolder\OneMoreFolder\VideoDe “有效。但是,我认为这实际上可能与内部文件有关;继续检查。
  • 我在进一步播放后发现了一个更具体的错误,导致我来到这里:developercommunity.visualstudio.com/content/problem/521034/… 这表示 Windows 上存在 MAX_PATH 问题。
  • 解决上述问题后导致我出现的错误是:“System.IO.PathTooLongException: The specified path, file name, or both are too long. the fullqualified file name must be less超过 260 个字符,并且目录名称必须少于 248 个字符。"
【解决方案2】:

在我们的案例中,原因是我们的一些第三方依赖项(api 程序集)迫使我们设置属性 > Android 选项 > 链接到“Sdk 和用户程序集”而不是“无”。

希望这可以帮助某人... 错误消息。

【讨论】:

    【解决方案3】:

    能够通过启动 adb shell 并进入应用目录来解决此问题:

    /storage/emulated/0/Android/data/com.fips.SorterApp/files
    

    然后

    rm -rf .__override__
    

    部署又成功了

    【讨论】:

      【解决方案4】:

      我最近在 VS 16.9.2 和 16.9.3 中遇到了这种情况。这就是我修复它的方法。

      1. 打开 android SDK 管理器(确保您至少检查了 API 级别 29 或 30)。

      2. 单击平台选项卡旁边的工具选项卡(您将登陆)

      3. 确保已安装以下内容: -> ANDROID SDK 命令行工具、平台工具、构建工具、Android 模拟器和 NDK

      4. 附:下载和安装可能需要一段时间。 成功完成上述步骤后,不要忘记创建您选择的模拟器。

      【讨论】:

        【解决方案5】:

        导致此错误的原因有很多。

        我的问题是由于我的系统 PATH 中的目录无效。删除无效条目并重新启动我的环境(通过杀死并重新启动所有 explorer.exe 进程或重新启动机器)解决了问题。

        【讨论】:

          【解决方案6】:

          对此的解决方案是subst 命令,它会在文件夹位置创建一个“新”驱动器。然后从新驱动器中打开 sln 文件。

           subst e: C:\Users\david\Dropbox\Projects\Visual Studio\PriceWatch\
          
          

          然后在文件资源管理器或打开解决方案对话框中打开 e: 驱动器

          【讨论】:

            猜你喜欢
            • 2010-09-26
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-04-07
            • 2019-08-30
            • 1970-01-01
            相关资源
            最近更新 更多