Skip to content

Commit 611cc3f

Browse files
committed
Attempt to fix Windows build.
Windows is failing to build the solution! error BG0000: System.InvalidOperationException: A .xml file must be specified. at Xamarin.Android.Binder.CodeGeneratorOptions.Parse(String[] args) in D:\a\_work\1\s\tools\generator\CodeGeneratorOptions.cs:line 193 at Xamarin.Android.Binder.CodeGenerator.Main(String[] args) in D:\a\_work\1\s\tools\generator\CodeGenerator.cs:line 29 ##[error]build-tools\Java.Interop.Sdk\Sdk\Sdk.targets(147,5): Error MSB3073: The command "dotnet "D:\a\_work\1\s\bin\Release-net8.0\generator.dll" --public --global -o "obj\\Release-net8.0\_ji\mcw\" -L "D:\a\_work\1\s\src\Java.Base\bin\Release\ref\." -L "D:\a\_work\1\s\bin\Release-net8.0\ref\." -L "D:\a\_work\1\s\bin\TestRelease-net8.0\ref\." -L "C:\hostedtoolcache\windows\dotnet\packs\Microsoft.NETCore.App.Ref\8.0.7\ref\net8.0\." -L "C:\Users\cloudtest\.nuget\packages\microsoft.testplatform.testhost\17.5.0-preview-20221003-04\lib\netcoreapp3.1\." -L "C:\Users\cloudtest\.nuget\packages\microsoft.codecoverage\17.5.0-preview-20221003-04\lib\netcoreapp3.1\." -L "C:\Users\cloudtest\.nuget\packages\mono.options\6.12.0.148\lib\netstandard2.0\." -L "C:\Users\cloudtest\.nuget\packages\newtonsoft.json\13.0.1\lib\netstandard2.0\." -L "C:\Users\cloudtest\.nuget\packages\nuget.frameworks\5.11.0\lib\netstandard2.0\." -L "C:\Users\cloudtest\.nuget\packages\nunit\3.13.2\lib\netstandard2.0\." -L "D:\a\_work\1\s\external\xamarin-android-tools\bin\Release\net6.0\ref\." -r "D:\a\_work\1\s\src\Java.Base\bin\Release\ref\Java.Base.dll" --codegen-target=JavaInterop1 "--assembly=Java.Base-Tests" --type-map-report=obj\\Release-net8.0\_ji\mcw\type-mapping.txt --lang-features=nullable-reference-types,default-interface-methods,nested-interface-types,interface-constants --enumdir=obj\\Release-net8.0\_ji\mcw\ obj\\Release-net8.0\_ji\mcw\api.xml " exited with code 1. D:\a\_work\1\s\build-tools\Java.Interop.Sdk\Sdk\Sdk.targets(147,5): error MSB3073: The command "dotnet "D:\a\_work\1\s\bin\Release-net8.0\generator.dll" --public --global -o "obj\\Release-net8.0\_ji\mcw\" -L "D:\a\_work\1\s\src\Java.Base\bin\Release\ref\." -L "D:\a\_work\1\s\bin\Release-net8.0\ref\." -L "D:\a\_work\1\s\bin\TestRelease-net8.0\ref\." -L "C:\hostedtoolcache\windows\dotnet\packs\Microsoft.NETCore.App.Ref\8.0.7\ref\net8.0\." -L "C:\Users\cloudtest\.nuget\packages\microsoft.testplatform.testhost\17.5.0-preview-20221003-04\lib\netcoreapp3.1\." -L "C:\Users\cloudtest\.nuget\packages\microsoft.codecoverage\17.5.0-preview-20221003-04\lib\netcoreapp3.1\." -L "C:\Users\cloudtest\.nuget\packages\mono.options\6.12.0.148\lib\netstandard2.0\." -L "C:\Users\cloudtest\.nuget\packages\newtonsoft.json\13.0.1\lib\netstandard2.0\." -L "C:\Users\cloudtest\.nuget\packages\nuget.frameworks\5.11.0\lib\netstandard2.0\." -L "C:\Users\cloudtest\.nuget\packages\nunit\3.13.2\lib\netstandard2.0\." -L "D:\a\_work\1\s\external\xamarin-android-tools\bin\Release\net6.0\ref\." -r "D:\a\_work\1\s\src\Java.Base\bin\Release\ref\Java.Base.dll" --codegen-target=JavaInterop1 "--assembly=Java.Base-Tests" --type-map-report=obj\\Release-net8.0\_ji\mcw\type-mapping.txt --lang-features=nullable-reference-types,default-interface-methods,nested-interface-types,interface-constants --enumdir=obj\\Release-net8.0\_ji\mcw\ obj\\Release-net8.0\_ji\mcw\api.xml " exited with code 1. [D:\a\_work\1\s\tests\Java.Base-Tests\Java.Base-Tests.csproj] My guess is that because I have `$(_JavaManagedBindingDir)` set to end with `.`, it's "escaping" anything that follows it, e.g. `-o "$(_JavaManagedBindingDir)"` becomes `-o "obj\Release-net8.0\_ji\mcw\"`., and `\"` escapes the `"`. Plausible result: the entire command-line no longer makes sense. Repeat the often repeated "I can't find a good way to trim the trailing `\`" solution by appending a `.` to the end of `$(_JavaManagedBindingDir)` whenever `"` follows; that is, replace: $(_JavaManagedBindingDir)" with $(_JavaManagedBindingDir)." Additionally, ensure that all usage of `$(_JavaManagedBindingDir)` is quoted, in case it ever contains a space. Does It Build™?
1 parent 8b36274 commit 611cc3f

File tree

1 file changed

+2
-2
lines changed

1 file changed

+2
-2
lines changed

build-tools/Java.Interop.Sdk/Sdk/Sdk.targets

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -126,12 +126,12 @@
126126
<PropertyGroup>
127127
<Generator>"$(_GeneratorPath)"</Generator>
128128
<_GenFlags>--public --global</_GenFlags>
129-
<_Out>-o "$(_JavaManagedBindingDir)"</_Out>
129+
<_Out>-o "$(_JavaManagedBindingDir)."</_Out>
130130
<_Codegen>--codegen-target=JavaInterop1</_Codegen>
131131
<_Assembly>"--assembly=$(AssemblyName)"</_Assembly>
132132
<_TypeMap>--type-map-report=$(_JavaManagedBindingDir)type-mapping.txt</_TypeMap>
133133
<_Api>$(_JavaManagedBindingDir)api.xml</_Api>
134-
<_Dirs>--enumdir=$(_JavaManagedBindingDir)</_Dirs>
134+
<_Dirs>"--enumdir=$(_JavaManagedBindingDir)."</_Dirs>
135135
<_FullIntermediateOutputPath>$([System.IO.Path]::GetFullPath('$(_JavaManagedBindingDir)'))</_FullIntermediateOutputPath>
136136
<_LangFeatures>--lang-features=nullable-reference-types,default-interface-methods,nested-interface-types,interface-constants</_LangFeatures>
137137
</PropertyGroup>

0 commit comments

Comments
 (0)