Aracılığıyla paylaş


Android için .NET hata APT2264

Sorun

Araç aapt2 , geçirildiği dosyalardan birini çözümleyemiyor. Bunun nedeni genellikle yolun pencerelerde izin verilen En Fazla Yol uzunluğundan uzun olmasıdır.

Çözüm

Bunu önlemenin en iyi yolu, projenizin klasör yapısının derinlerinde yer almadığından emin olmaktır. Örneğin, tüm projelerinizi gibi klasörlerde oluşturuyorsanız

C:\Users\shelly\Visual Studio 2022\Android\MyProjects\Com.SomeReallyLongCompanyName.MyBrillantApplication\MyBrilliantApplicaiton.Android\

Yalnızca aapt2 değil, Önceden Derleme ile de sorunlarla karşılaşabilirsiniz. Proje adlarınızı ve klasör yapılarınızı kısa tutmak, bu sorunları çözmenize yardımcı olur. Örneğin, yukarıdaki yerine kullanabilirsiniz

C:\Work\Android\MyBrilliantApp

Bu çok daha kısadır ve yol sorunlarıyla karşılaşma olasılığı çok daha düşüktür.

Ancak bu her zaman mümkün değildir. Bazen bir proje veya ortam derin klasör yapıları gerektirir. Windows'ta uzun yol desteğini etkinleştirmek, projenizin çalışmasını sağlamak için yeterli olabilir . Bunun nasıl yapılacağının ayrıntılarını burada bulabilirsiniz.

Uzun yol desteği işe yaramazsa $(BaseIntermediateOutputPath) konumunu değiştirmenin bu sorunların çözülmesine yardımcı olabilir. Bunun çalışması için, HERHANGI bir derleme veya geri yükleme gerçekleşmeden önce ayarın değiştirilmesi GEREKIR. Bunu yapmak için MSBuild Directory.Build.props desteğini kullanabilirsiniz.

Çözüm veya proje dizininizde, $(BaseIntermediateOutputPath)'i sürücünün köküne daha yakın bir yere yeniden tanımlayan bir Directory.Build.props dosyası oluşturmak bu sorunları çözecektir. Aşağıdaki içeriğe sahip bir dosya eklemek, obj dizinini seçtiğiniz farklı bir konumda oluşturacaktır.

<Project>
  <PropertyGroup>
      <BaseIntermediateOutputPath Condition=" '$(OS)' == 'Windows_NT' ">C:\Intermediate\$(ProjectName)</BaseIntermediateOutputPath>
      <BaseIntermediateOutputPath Condition=" '$(OS)' != 'Windows_NT' ">/tmp/Intermediate/$(ProjectName)</BaseIntermediateOutputPath>
  </PropertyGroup>
</Project>

Bu tekniğin kullanılması gibi aapt2çeşitli araçlara gönderilen yolların uzunluklarını azaltır. Bunun genellikle yalnızca bir Windows sorunu olduğunu unutmayın. Bu nedenle Mac veya Linux tabanlı ortamlarda geçersiz kılmaya $(BaseIntermediateOutputPath) gerek yoktur. Ancak tutarlı olması için her yeri geçersiz kılmak isteyebilirsiniz.