-
Notifications
You must be signed in to change notification settings - Fork 391
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
FrameworkReference support #4928
Conversation
src/Microsoft.VisualStudio.ProjectSystem.Managed/ProjectSystem/Rules/FrameworkReference.xaml
Show resolved
Hide resolved
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I only reviewed the one commit you mentioned to review in this.
ee29148
to
0644a9a
Compare
Is there a notable performance implication for this? I'd rather not pile onto any existing issues if possible here, and if there's nothing actionable to be done about seeing the child dependencies, I'd be fine with not showing them. If we get feedback about this later, we could revisit.
I think showing Framework is sufficient here, since calling it an SDK is a bit of a misnomer (yes, this is a part of the literal SDK attribute on the project file). I think there was a desire to be rid of
I think so, yes.
Perhaps. But we can iterate on that and chat with some UX folks separately 🙂 |
I'm looking into this. I think it'd be useful and educational to see what's inside. Unless there's a strong reason not to, I'd like to allow this. Though it's lower priority and can slip beyond 16.3 if need be.
I'll do this.
@davkean pointed out that "Extension SDKs" can appear in this node, and so we cannot lose the node altogether. We can, however, look to remove MSBuild SDKs from it, though this will require changes within the SDK itself to stop reporting them, as I don't think the project system can differentiate between the different kinds of SDK in any way. @davkean please correct me if I'm mistaken here. |
Gotcha, makes sense to show Extension SDKs if we have them. I think the desire I was referring to was for first-party "SDKs" (that were really shared framework references). |
As @nguerrera has mentioned, it looks like you're using a very old version of the .NET Core SDK. Current 3.0 previews shouldn't have any
I think it would be a good idea if they expand to show the reference assemblies (mscorlib, System, System.Core, PresentationFramework, etc) coming from the targeting pack. Here's an example of the metadata currently applied to the references resolved from targeting packs:
These
As mentioned, I don't think you should need to do anything special to hide this with the latest SDKs.
No, I think we should not have anything in the SDKs node for .NET Core 3.0 projects. Personally, I think it would be ideal that for prior versions, we would show the implicit
No opinion from me here.
I don't know about the details of these. We also haven't accounted for the profiles of the WindowsDesktop shared framework. The following are valid
Generally, which of these is referenced will depend on whether the It might be nice to show subnodes for WPF and WindowsForms under the Microsoft.WindowsDesktop.App node. On the other hand, it may be a lot simpler if you just get the FrameworkReferences from evaluation, in which case you would normally not have multiple WindowsDesktop FrameworkReferences, and you can just show the full name including WPF or WindowsForms under the Frameworks node. |
Indeed. My PC just arrived from the UK and I didn't realise how old the SDK was on it. Updating gives better results. For project: <Project Sdk="Microsoft.NET.Sdk.WindowsDesktop">
<PropertyGroup>
<OutputType>WinExe</OutputType>
<TargetFramework>netcoreapp3.0</TargetFramework>
<UseWPF>true</UseWPF>
</PropertyGroup>
</Project> The whole tree looks like: The tree doesn't currently change based upon combinations of
That sounds good, though in the example you show the framework is
The intention is to populate all top-level items via evaluation, and disallow adding top-level items in design time builds. What additional data would you expect to be provided by a design time build about a
How would this work exactly? The evaluated item will be |
We're mixing concepts here, MSBuild SDKs are a completely different concept. We don't show them anywhere or do anything with them. You are referring to what I'm going to call "NuGet-based SDKs". We should not touch these at all, we do not show items that they represent elsewhere, the contents are only shown under SDKs. Let's treat this as a very separate concept to lighting up FrameworkReference. |
2535c7a
to
af7b3bd
Compare
This is now ready for review. |
Looks like there is an erroneous file here: https://github.com/drewnoakes/project-system/blob/framework-references/new Also TIL GitHub doesn't allow file level comments |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
...soft.VisualStudio.ProjectSystem.Managed/Tree/Dependencies/Models/FrameworkDependencyModel.cs
Outdated
Show resolved
Hide resolved
...o.ProjectSystem.Managed/Tree/Dependencies/Subscriptions/RuleHandlers/FrameworkRuleHandler.cs
Outdated
Show resolved
Hide resolved
af7b3bd
to
b6068d2
Compare
Fixed. |
b5917b4
to
b6068d2
Compare
...o.ProjectSystem.Managed/ProjectSystem/DesignTimeTargets/Microsoft.Managed.DesignTime.targets
Outdated
Show resolved
Hide resolved
src/Microsoft.VisualStudio.ProjectSystem.Managed/ProjectSystem/Rules/FrameworkReference.xaml
Outdated
Show resolved
Hide resolved
...osoft.VisualStudio.ProjectSystem.Managed/ProjectSystem/Rules/ResolvedFrameworkReference.xaml
Outdated
Show resolved
Hide resolved
dd74834
to
30c6271
Compare
DisplayName="Runtime Pack Version" | ||
ReadOnly="True" /> | ||
|
||
<StringProperty Name="IsImplicitlyDefined" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We're expecting both of these properties (IsImplicitlyDefined/PrivateAssets) to be copied to the ResolvedFrameworkReference, but they aren't currently: https://github.com/dotnet/sdk/pull/3355/files#r297966595.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
dotnet/sdk#3355 was updated to include IsImplicitlyDefined
but not PrivateAssets
. It seems like your conversation with @dsplaisted was unfinished in this regard, and I'm not sure what the better path forward here is. I'll make a note on #4762 to track this.
30c6271
to
1c8ffce
Compare
Removes a few properties, and simplifies the "path" display name.
🎉 |
Relates to #4362 / #4762 / #4444.
Work in progress.
Outstanding questions:
Microsoft.WindowsDesktop.App
SDK and Framework?ResolvedFrameworkReference
rather than re-usingCollectedFrameworkReference
?Outstanding tasks:
FrameworkReference
item browse objects