Skip to content

Conversation

yreynhout
Copy link
Contributor

@yreynhout yreynhout commented Oct 16, 2025

Description

Previously, up until Aspire 9.4 IIRC, one could use F# to author an AppHost. I presume, when support for single file C# applications was integrated, support for .fsproj accidentally got broken. Perhaps there are explicit reasons to not support F# projects for this purpose. If so, I'd like to learn about the motivation for that.

Fixes # (issue)

Checklist

  • Is this feature complete?
    • Yes. Ready to ship.
    • No. Follow-up changes expected.
  • Are you including unit tests for the changes and scenario tests if relevant?
    • Yes
    • No
  • Did you add public API?
    • Yes
      • If yes, did you have an API Review for it?
        • Yes
        • No
      • Did you add <remarks /> and <code /> elements on your triple slash comments?
        • Yes
        • No
    • No
  • Does the change make any security assumptions or guarantees?
    • Yes
      • If yes, have you done a threat model and had a security review?
        • Yes
        • No
    • No
  • Does the change require an update in our Aspire docs?

@dotnet-policy-service dotnet-policy-service bot added the community-contribution Indicates that the PR has been added by a community member label Oct 16, 2025
@github-actions
Copy link
Contributor

github-actions bot commented Oct 16, 2025

🚀 Dogfood this PR with:

⚠️ WARNING: Do not do this without first carefully reviewing the code of this PR to satisfy yourself it is safe.

curl -fsSL https://raw.githubusercontent.com/dotnet/aspire/main/eng/scripts/get-aspire-cli-pr.sh | bash -s -- 12087

Or

  • Run remotely in PowerShell:
iex "& { $(irm https://raw.githubusercontent.com/dotnet/aspire/main/eng/scripts/get-aspire-cli-pr.ps1) } 12087"

@yreynhout yreynhout force-pushed the restore-fsproj-support branch from 58b60e3 to 9fd2606 Compare October 16, 2025 11:31
@yreynhout yreynhout force-pushed the restore-fsproj-support branch from 9fd2606 to d8d2580 Compare October 16, 2025 11:49
Copy link
Member

@JamesNK JamesNK left a comment

Choose a reason for hiding this comment

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

Is it possible to add a test for csproj and fsproj, etc. If this regressed once, then it could regress again.

return projectFile;
}
// Handle .fsproj files
else if (projectFile.Extension.Equals(".fsproj", StringComparison.OrdinalIgnoreCase))
Copy link
Member

Choose a reason for hiding this comment

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

Rather than duplicating the csproj branch, how about having a collection of project file extensions (csproj, fsproj, vbproj) and check whether the extension matches any of them.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Test adjusted, support for the mentioned extensions added.

@yreynhout yreynhout changed the title Restored support for .fsproj project files Support for .fsproj, .vbproj project files next to .csproj Oct 19, 2025
@JamesNK JamesNK enabled auto-merge (squash) October 21, 2025 03:18
@davidfowl davidfowl requested a review from mitchdenny October 21, 2025 03:22

internal sealed class ProjectLocator(ILogger<ProjectLocator> logger, IDotNetCliRunner runner, CliExecutionContext executionContext, IInteractionService interactionService, IConfigurationService configurationService, AspireCliTelemetry telemetry, IFeatures features) : IProjectLocator
{
private static readonly HashSet<string> s_supportedProjectFileExtensions = new HashSet<string>(StringComparer.OrdinalIgnoreCase) { ".csproj", ".fsproj", ".vbproj" };
Copy link
Member

@mitchdenny mitchdenny Oct 21, 2025

Choose a reason for hiding this comment

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

We might need to introduce a FileExtensionHelper.IsSupportedMsBuildFile(...) which encapsulates the check. That way we can reuse it. There are a few other places in the CLI where we make assumptions about using *.csproj files.

@JamesNK JamesNK merged commit ebf2226 into dotnet:main Oct 21, 2025
302 checks passed
@dotnet-policy-service dotnet-policy-service bot added this to the 13.0 milestone Oct 21, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

community-contribution Indicates that the PR has been added by a community member

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants