-
Notifications
You must be signed in to change notification settings - Fork 4.9k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
HostWriter.CodeSign fails when building .NET 6 preview 7 Angular projects with Visual Studio for Mac. #55992
Comments
Tagging subscribers to this area: @vitek-karas, @agocke Issue DetailsDescriptionUnable to build .NET 6 preview 7 Angular projects with Visual Studio for Mac. Creating a new .NET 6 Angular project
A codesign change was added to the runtime recently: This HostWriter.CodeSign method runs /usr/bin/codesign and sets RedirectStandardError to true, but does not set UseShellExecute to false.
Visual Studio for Mac runs on Mono. Mono throws an exception due to this check: dotnet itself does not have a problem with the code as it is. //cc @mateoatr Configurationdotnet --info:
Regression?I believe this worked in .NET 6 preview 6 Other informationFix should be to set UseShellExecute to false in the CodeSignmethod.
|
Thanks. I thought this always defaulted to false (I guess not in mono?). Just put a PR. |
It seems to be true by default in Mono and on Windows (full .NET framework). |
Context: dotnet/roslyn#55564 Context: https://discord.com/channels/732297728826277939/732297837953679412/874959446747533323 Context: dotnet/runtime#55992 Context: dotnet/sdk#19653 (comment) Fix the Java.Interop build when .NET 6 Preview 7 is installed. .NET 6 Preview 7 introduced a C# compiler regression: use of [C#6 string interpolation][0] with `StringBuilder.Append()` when `$(LangVersion)` < 10.0 results in a CS8400 error: error CS8400: Feature 'interpolated string handlers' is not available in C# 8.0. Please use language version 10.0 or greater. Because `azure-pipelines.yaml` specifies `DotNetCoreVersion: 6.0.x`, our CI machines get auto-bumped to .NET 6 Preview 7, causing *all* PR builds to now fail with this CS8400 failure. There are two possible solutions: 1. *Avoid* .NET 6 Preview 7. 2. Remove select use of string interpolation. (1) was initially done on dotnet#865, by using: DotNetCoreVersion: 6.0.100-preview.6.21355.2 However, it's not *all* use of string interpolation which triggers the CS8400 error. It's just use of string interpolation within `StringBuilder.Append()` calls, in 3 locations. Update `RegisterAttr.cs` to use a `(string)` cast with the existing string interpolation use. This works around the CS8400 error. *Additionally*, macOS+Mono builds would fail in `make all` when .NET 6 Preview 7 is present: /usr/local/share/dotnet/sdk/6.0.100-preview.7.21379.14/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Sdk.targets(536,5): error MSB4018: The "CreateAppHost" task failed unexpectedly. /usr/local/share/dotnet/sdk/6.0.100-preview.7.21379.14/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Sdk.targets(536,5): error MSB4018: System.InvalidOperationException: The Process object must have the UseShellExecute property set to false in order to redirect IO streams. /usr/local/share/dotnet/sdk/6.0.100-preview.7.21379.14/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Sdk.targets(536,5): error MSB4018: at System.Diagnostics.Process.StartWithShellExecuteEx (System.Diagnostics.ProcessStartInfo startInfo) /usr/local/share/dotnet/sdk/6.0.100-preview.7.21379.14/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Sdk.targets(536,5): error MSB4018: at System.Diagnostics.Process.Start () /usr/local/share/dotnet/sdk/6.0.100-preview.7.21379.14/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Sdk.targets(536,5): error MSB4018: at (wrapper remoting-invoke-with-check) System.Diagnostics.Process.Start() /usr/local/share/dotnet/sdk/6.0.100-preview.7.21379.14/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Sdk.targets(536,5): error MSB4018: at System.Diagnostics.Process.Start (System.Diagnostics.ProcessStartInfo startInfo) /usr/local/share/dotnet/sdk/6.0.100-preview.7.21379.14/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Sdk.targets(536,5): error MSB4018: at Microsoft.NET.HostModel.AppHost.HostWriter.CodeSign (System.String appHostPath) /usr/local/share/dotnet/sdk/6.0.100-preview.7.21379.14/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Sdk.targets(536,5): error MSB4018: at Microsoft.NET.HostModel.AppHost.HostWriter.CreateAppHost (System.String appHostSourceFilePath, System.String appHostDestinationFilePath, System.String appBinaryFilePath, System.Boolean windowsGraphicalUserInterface, System.String assemblyToCopyResorcesFrom, System.Boolean enableMacOSCodeSign) /usr/local/share/dotnet/sdk/6.0.100-preview.7.21379.14/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Sdk.targets(536,5): error MSB4018: at Microsoft.NET.Build.Tasks.CreateAppHost.ExecuteCore () /usr/local/share/dotnet/sdk/6.0.100-preview.7.21379.14/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Sdk.targets(536,5): error MSB4018: at Microsoft.NET.Build.Tasks.TaskBase.Execute () /usr/local/share/dotnet/sdk/6.0.100-preview.7.21379.14/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Sdk.targets(536,5): error MSB4018: at Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute () /usr/local/share/dotnet/sdk/6.0.100-preview.7.21379.14/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Sdk.targets(536,5): error MSB4018: at Microsoft.Build.BackEnd.TaskBuilder.ExecuteInstantiatedTask (Microsoft.Build.BackEnd.ITaskExecutionHost taskExecutionHost, Microsoft.Build.BackEnd.Logging.TaskLoggingContext taskLoggingContext, Microsoft.Build.BackEnd.TaskHost taskHost, Microsoft.Build.BackEnd.ItemBucket bucket, Microsoft.Build.BackEnd.TaskExecutionMode howToExecuteTask) This was filed as dotnet/runtime#55992, and can be worked around by setting `$(UseAppHost)`=False in the "offending" projects. [0]: https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/tokens/interpolated
Context: dotnet/roslyn#55564 Context: https://discord.com/channels/732297728826277939/732297837953679412/874959446747533323 Context: dotnet/runtime#55992 Context: dotnet/sdk#19653 (comment) Fix the Java.Interop build when .NET 6 Preview 7 is installed. .NET 6 Preview 7 introduced a C# compiler regression: use of [C#6 string interpolation][0] with `StringBuilder.Append()` when `$(LangVersion)` < 10.0 results in a CS8400 error: error CS8400: Feature 'interpolated string handlers' is not available in C# 8.0. Please use language version 10.0 or greater. Because `azure-pipelines.yaml` specifies `DotNetCoreVersion: 6.0.x`, our CI machines get auto-bumped to .NET 6 Preview 7, causing *all* PR builds to now fail with this CS8400 failure. There are two possible solutions: 1. *Avoid* .NET 6 Preview 7. 2. Remove select use of string interpolation. (1) was initially done on dotnet#865, by using: DotNetCoreVersion: 6.0.100-preview.6.21355.2 However, it's not *all* use of string interpolation which triggers the CS8400 error. It's just use of string interpolation within `StringBuilder.Append()` calls, in 3 locations. Update `RegisterAttr.cs` to use a `(string)` cast with the existing string interpolation use. This works around the CS8400 error. *Additionally*, macOS+Mono builds would fail in `make all` when .NET 6 Preview 7 is present: /usr/local/share/dotnet/sdk/6.0.100-preview.7.21379.14/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Sdk.targets(536,5): error MSB4018: The "CreateAppHost" task failed unexpectedly. /usr/local/share/dotnet/sdk/6.0.100-preview.7.21379.14/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Sdk.targets(536,5): error MSB4018: System.InvalidOperationException: The Process object must have the UseShellExecute property set to false in order to redirect IO streams. /usr/local/share/dotnet/sdk/6.0.100-preview.7.21379.14/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Sdk.targets(536,5): error MSB4018: at System.Diagnostics.Process.StartWithShellExecuteEx (System.Diagnostics.ProcessStartInfo startInfo) /usr/local/share/dotnet/sdk/6.0.100-preview.7.21379.14/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Sdk.targets(536,5): error MSB4018: at System.Diagnostics.Process.Start () /usr/local/share/dotnet/sdk/6.0.100-preview.7.21379.14/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Sdk.targets(536,5): error MSB4018: at (wrapper remoting-invoke-with-check) System.Diagnostics.Process.Start() /usr/local/share/dotnet/sdk/6.0.100-preview.7.21379.14/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Sdk.targets(536,5): error MSB4018: at System.Diagnostics.Process.Start (System.Diagnostics.ProcessStartInfo startInfo) /usr/local/share/dotnet/sdk/6.0.100-preview.7.21379.14/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Sdk.targets(536,5): error MSB4018: at Microsoft.NET.HostModel.AppHost.HostWriter.CodeSign (System.String appHostPath) /usr/local/share/dotnet/sdk/6.0.100-preview.7.21379.14/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Sdk.targets(536,5): error MSB4018: at Microsoft.NET.HostModel.AppHost.HostWriter.CreateAppHost (System.String appHostSourceFilePath, System.String appHostDestinationFilePath, System.String appBinaryFilePath, System.Boolean windowsGraphicalUserInterface, System.String assemblyToCopyResorcesFrom, System.Boolean enableMacOSCodeSign) /usr/local/share/dotnet/sdk/6.0.100-preview.7.21379.14/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Sdk.targets(536,5): error MSB4018: at Microsoft.NET.Build.Tasks.CreateAppHost.ExecuteCore () /usr/local/share/dotnet/sdk/6.0.100-preview.7.21379.14/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Sdk.targets(536,5): error MSB4018: at Microsoft.NET.Build.Tasks.TaskBase.Execute () /usr/local/share/dotnet/sdk/6.0.100-preview.7.21379.14/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Sdk.targets(536,5): error MSB4018: at Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute () /usr/local/share/dotnet/sdk/6.0.100-preview.7.21379.14/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Sdk.targets(536,5): error MSB4018: at Microsoft.Build.BackEnd.TaskBuilder.ExecuteInstantiatedTask (Microsoft.Build.BackEnd.ITaskExecutionHost taskExecutionHost, Microsoft.Build.BackEnd.Logging.TaskLoggingContext taskLoggingContext, Microsoft.Build.BackEnd.TaskHost taskHost, Microsoft.Build.BackEnd.ItemBucket bucket, Microsoft.Build.BackEnd.TaskExecutionMode howToExecuteTask) This was filed as dotnet/runtime#55992, and can be worked around by setting `$(UseAppHost)`=False. [0]: https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/tokens/interpolated
Context: dotnet/roslyn#55564 Context: https://discord.com/channels/732297728826277939/732297837953679412/874959446747533323 Context: dotnet/runtime#55992 Context: dotnet/sdk#19653 (comment) Fix the Java.Interop build when .NET 6 Preview 7 is installed. .NET 6 Preview 7 introduced a C# compiler regression: use of [C#6 string interpolation][0] with `StringBuilder.Append()` when `$(LangVersion)` < 10.0 results in a CS8400 error: error CS8400: Feature 'interpolated string handlers' is not available in C# 8.0. Please use language version 10.0 or greater. Because `azure-pipelines.yaml` specifies `DotNetCoreVersion: 6.0.x`, our CI machines get auto-bumped to .NET 6 Preview 7, causing *all* PR builds to now fail with this CS8400 failure. There are two possible solutions: 1. *Avoid* .NET 6 Preview 7. 2. Remove select use of string interpolation. (1) was initially done on #865, by using: DotNetCoreVersion: 6.0.100-preview.6.21355.2 However, it's not *all* use of string interpolation which triggers the CS8400 error. It's just use of string interpolation within `StringBuilder.Append()` calls, in 3 locations. Update `RegisterAttr.cs` to use a `(string)` cast with the existing string interpolation use. This works around the CS8400 error. *Additionally*, macOS+Mono builds would fail in `make all` when .NET 6 Preview 7 is present: /usr/local/share/dotnet/sdk/6.0.100-preview.7.21379.14/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Sdk.targets(536,5): error MSB4018: The "CreateAppHost" task failed unexpectedly. /usr/local/share/dotnet/sdk/6.0.100-preview.7.21379.14/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Sdk.targets(536,5): error MSB4018: System.InvalidOperationException: The Process object must have the UseShellExecute property set to false in order to redirect IO streams. /usr/local/share/dotnet/sdk/6.0.100-preview.7.21379.14/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Sdk.targets(536,5): error MSB4018: at System.Diagnostics.Process.StartWithShellExecuteEx (System.Diagnostics.ProcessStartInfo startInfo) /usr/local/share/dotnet/sdk/6.0.100-preview.7.21379.14/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Sdk.targets(536,5): error MSB4018: at System.Diagnostics.Process.Start () /usr/local/share/dotnet/sdk/6.0.100-preview.7.21379.14/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Sdk.targets(536,5): error MSB4018: at (wrapper remoting-invoke-with-check) System.Diagnostics.Process.Start() /usr/local/share/dotnet/sdk/6.0.100-preview.7.21379.14/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Sdk.targets(536,5): error MSB4018: at System.Diagnostics.Process.Start (System.Diagnostics.ProcessStartInfo startInfo) /usr/local/share/dotnet/sdk/6.0.100-preview.7.21379.14/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Sdk.targets(536,5): error MSB4018: at Microsoft.NET.HostModel.AppHost.HostWriter.CodeSign (System.String appHostPath) /usr/local/share/dotnet/sdk/6.0.100-preview.7.21379.14/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Sdk.targets(536,5): error MSB4018: at Microsoft.NET.HostModel.AppHost.HostWriter.CreateAppHost (System.String appHostSourceFilePath, System.String appHostDestinationFilePath, System.String appBinaryFilePath, System.Boolean windowsGraphicalUserInterface, System.String assemblyToCopyResorcesFrom, System.Boolean enableMacOSCodeSign) /usr/local/share/dotnet/sdk/6.0.100-preview.7.21379.14/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Sdk.targets(536,5): error MSB4018: at Microsoft.NET.Build.Tasks.CreateAppHost.ExecuteCore () /usr/local/share/dotnet/sdk/6.0.100-preview.7.21379.14/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Sdk.targets(536,5): error MSB4018: at Microsoft.NET.Build.Tasks.TaskBase.Execute () /usr/local/share/dotnet/sdk/6.0.100-preview.7.21379.14/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Sdk.targets(536,5): error MSB4018: at Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute () /usr/local/share/dotnet/sdk/6.0.100-preview.7.21379.14/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Sdk.targets(536,5): error MSB4018: at Microsoft.Build.BackEnd.TaskBuilder.ExecuteInstantiatedTask (Microsoft.Build.BackEnd.ITaskExecutionHost taskExecutionHost, Microsoft.Build.BackEnd.Logging.TaskLoggingContext taskLoggingContext, Microsoft.Build.BackEnd.TaskHost taskHost, Microsoft.Build.BackEnd.ItemBucket bucket, Microsoft.Build.BackEnd.TaskExecutionMode howToExecuteTask) This was filed as dotnet/runtime#55992, and can be worked around by setting `$(UseAppHost)`=False. [0]: https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/tokens/interpolated
Description
Unable to build .NET 6 preview 7 Angular projects with Visual Studio for Mac.
Creating a new .NET 6 Angular project
dotnet new angular
and then building that with Visual Studio for Mac fails with the error:A codesign change was added to the runtime recently:
#53913
This HostWriter.CodeSign method runs /usr/bin/codesign and sets RedirectStandardError to true, but does not set UseShellExecute to false.
runtime/src/installer/managed/Microsoft.NET.HostModel/AppHost/HostWriter.cs
Line 253 in 0e5e88c
Visual Studio for Mac runs on Mono. Mono throws an exception due to this check:
https://github.com/mono/mono/blob/78c2b8da29881eccda4c27ca7b2b7e9ed451c55f/mcs/class/System/System.Diagnostics/Process.cs#L593
dotnet itself does not have a problem with the code as it is.
//cc @mateoatr
Configuration
dotnet --info:
Regression?
I believe this worked in .NET 6 preview 6
Other information
Fix should be to set UseShellExecute to false in the CodeSignmethod.
The text was updated successfully, but these errors were encountered: