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.

This was referenced Nov 13, 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