Skip to content
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

report nice error message when dotnet is not installed #5477

Open
wants to merge 4 commits into
base: main
Choose a base branch
from

Conversation

chunyu3
Copy link
Contributor

@chunyu3 chunyu3 commented Jan 3, 2025

Fix #5364

  • add dependency-runtime-missing diagnostic
  • When dotnet is not installed, the generation will fail, emitter report dependency-runtime-missing diagnostic error

@microsoft-github-policy-service microsoft-github-policy-service bot added the emitter:client:csharp Issue for the C# client emitter: @typespec/http-client-csharp label Jan 3, 2025
@azure-sdk
Copy link
Collaborator

API change check

APIView has identified API level changes in this PR and created following API reviews.

@typespec/http-client-csharp

} catch (error: any) {
if (error && "code" in (error as {}) && error["code"] === "ENOENT") {
reportDiagnostic(sdkContext.program, {
code: "dependency-runtime-missing",
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

i think runtime-dependency-missing makes more sense.
Has this code been reviewed?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

update to runtime-dependency-missing. The code is for csharp-emitter only. if needed, we can review by .net arch.

@chunyu3 chunyu3 requested a review from ArcturusZhang January 3, 2025 06:50
throw new Error(`Failed to generate SDK. Exit code: ${result.exitCode}`);
}
} catch (error: any) {
if (error && "code" in (error as {}) && error["code"] === "ENOENT") {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this too general of a condition? Is there a way to make it specific to dotnet being missing?

Copy link
Contributor

@JoshLove-msft JoshLove-msft Jan 7, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Also, don't we need to ensure that .NET 8 is installed? What would happen with the current approach if .NET 6 is installed.
dotnet --list-sdks will output the list of installed SDKs. We should check that they have greater than or equal to the version we use in the global.json.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

hello @JoshLove-msft as discussed before, we will not do runtime time check every time when we generate sdk, we just check the error if it is failed because of missing .NET and give out a nice error message.
And we ask .NET 8 in the message to consistent with the requirement we write in the Readme.md of the library.

Copy link
Contributor Author

@chunyu3 chunyu3 Jan 8, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Discussed in the meeting, we will do runtime check when generation fail, and identify if is because of dotnet missing. I will update it. Thanks

Copy link
Contributor

@JoshLove-msft JoshLove-msft left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Added a few questions

code: "runtime-dependency-missing",
format: {
dotnetMajorVersion: "8",
downloadUrl: "https://dotnet.microsoft.com/en-us/download",
Copy link
Contributor

@JoshLove-msft JoshLove-msft Jan 7, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
downloadUrl: "https://dotnet.microsoft.com/en-us/download",
downloadUrl: "https://dotnet.microsoft.com/download/dotnet/8.0",

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Need to confirm with .NET folks that latest patch from major version is fine (as opposed to matching the version we use in global.json exactly).

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hello @JoshLove-msft We just need user to install .NET 8 or above, (consistent with the requirement written in readme.md), so we provide a url to download .NET , not a dotnet 8 specific.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

After discussion, we decide to suggest user to use the exact version in global.json, and provide the dotnet 8 download uri. Thanks.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
emitter:client:csharp Issue for the C# client emitter: @typespec/http-client-csharp
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[Bug]: C# emitter should explain simply that .NET needs to be installed
5 participants