如何解决Xamarin构建在Windows docker容器内失败_ComputeAndroidResourcePaths失败
我有一个Win docker容器,其中安装了Visual Studio 2019和xamarin组件。 当我运行“ msbuild my-solution.sln” / t:Build / p:Configuration =“ Release” / p:AndroidSdkDirectory =“ C:\ Android” 时,出现以下错误:
"_ComputeAndroidResourcePaths:
Creating directory "obj\Release\100\res\".
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Xamarin\Android\Xamarin.Android.Common.targets(1107,2): error X
ARLP7023: System.IO.DirectoryNotFoundException: Could not find a part of the path 'C:\KDI\src\KDI\KDI\KDI.Android\obj\Release\100\lp\
0\jl\__res_name_case_map.txt'. [C:\KDI\src\KDI\KDI\KDI.Android\KDI.Android.csproj]
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Xamarin\Android\Xamarin.Android.Common.targets(1107,2): error X
ARLP7023: at System.IO.__Error.WinIOError(Int32 errorCode,String maybeFullPath) [C:\KDI\src\KDI\KDI\KDI.Android\KDI.Android.cspro
j]
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Xamarin\Android\Xamarin.Android.Common.targets(1107,2): error X
ARLP7023: at System.IO.File.InternalDelete(String path,Boolean checkHost) [C:\KDI\src\KDI\KDI\KDI.Android\KDI.Android.csproj]
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Xamarin\Android\Xamarin.Android.Common.targets(1107,2): error X
ARLP7023: at System.IO.File.Delete(String path) [C:\KDI\src\KDI\KDI\KDI.Android\KDI.Android.csproj]
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Xamarin\Android\Xamarin.Android.Common.targets(1107,2): error X
ARLP7023: at Xamarin.Android.Tools.Files.CopyIfStreamChanged(Stream stream,String destination) [C:\KDI\src\KDI\KDI\KDI.Android\KD
I.Android.csproj]
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Xamarin\Android\Xamarin.Android.Common.targets(1107,2): error X
ARLP7023: at Xamarin.Android.Tools.Files.ExtractAll(ZipArchive zip,String destination,Action`2 progressCallback,Func`2 modifyCa
llback,Func`2 deleteCallback,Func`2 skipCallback) [C:\KDI\src\KDI\KDI\KDI.Android\KDI.Android.csproj]
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Xamarin\Android\Xamarin.Android.Common.targets(1107,2): error X
ARLP7023: at Xamarin.Android.Tasks.ResolveLibraryProjectImports.Extract(IDictionary`2 jars,ICollection`1 resolvedResourceDirector
ies,ICollection`1 resolvedAssetDirectories,ICollection`1 resolvedEnvironments) [C:\KDI\src\KDI\KDI\KDI.Android\KDI.Android.csproj]
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Xamarin\Android\Xamarin.Android.Common.targets(1107,2): error X
ARLP7023: at Xamarin.Android.Tasks.ResolveLibraryProjectImports.RunTask() [C:\KDI\src\KDI\KDI\KDI.Android\KDI.Android.csproj]
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Xamarin\Android\Xamarin.Android.Common.targets(1107,2): error X
ARLP7023: at Xamarin.Android.Tasks.AndroidTask.Execute() [C:\KDI\src\KDI\KDI\KDI.Android\KDI.Android.csproj]
我检查了路径,似乎缺少__res_name_case_map.txt。
这是dockerfile:
# escape=`
# Use the latest Windows Server Core image with .NET Framework 4.8.
FROM mcr.microsoft.com/dotnet/framework/sdk:3.5-windowsservercore-ltsc2019
# Restore the default Windows shell for correct batch processing.
SHELL ["cmd","/S","/C"]
# Download the Build Tools bootstrapper.
#ADD https://aka.ms/vs/16/release/vs_buildtools.exe C:\TEMP\vs_buildtools.exe
ADD https://download.visualstudio.microsoft.com/download/pr/befdb1f9-8676-4693-b031-65ee44835915/c541feeaa77b97681f7693fc5bed2ff82b331b168c678af1a95bdb1138a99802/vs_Community.exe C:\TEMP\vs2019.exe
RUN C:\TEMP\vs2019.exe --quiet --wait --norestart --nocache --includeRecommended --includeOptional`
--add Microsoft.VisualStudio.Workload.NetCrossPlat `
|| IF "%ERRORLEVEL%"=="3010" EXIT 0
ENTRYPOINT ["powershell.exe","-NoLogo","-ExecutionPolicy","Bypass"]
解决方法
问题是我在容器启动期间映射了项目文件夹(docker run -v project:/ project),也许我机器上的Visual Studio阻止了在构建过程中创建这些文件。现在我在dockerfile中复制并工作。但是,该图像将在gitlab CI中用作基础图像,并且代码将自动添加。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。